]> git.ipfire.org Git - people/ms/u-boot.git/blame - drivers/pinctrl/uniphier/pinctrl-uniphier-pro5.c
ARM: dts: uniphier: sync Device Trees with upstream Linux
[people/ms/u-boot.git] / drivers / pinctrl / uniphier / pinctrl-uniphier-pro5.c
CommitLineData
b82ca82e
MY
1/*
2 * Copyright (C) 2015 Masahiro Yamada <yamada.masahiro@socionext.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0+
5 */
6
7#include <dm/device.h>
8#include <dm/pinctrl.h>
9
10#include "pinctrl-uniphier.h"
11
ac13ce49 12static const struct uniphier_pinctrl_pin uniphier_pro5_pins[] = {
b82ca82e
MY
13 UNIPHIER_PINCTRL_PIN(47, 0),
14 UNIPHIER_PINCTRL_PIN(48, 0),
15 UNIPHIER_PINCTRL_PIN(49, 0),
16 UNIPHIER_PINCTRL_PIN(50, 0),
17 UNIPHIER_PINCTRL_PIN(53, 0),
18 UNIPHIER_PINCTRL_PIN(54, 0),
19 UNIPHIER_PINCTRL_PIN(87, 0),
20 UNIPHIER_PINCTRL_PIN(88, 0),
21 UNIPHIER_PINCTRL_PIN(101, 0),
22 UNIPHIER_PINCTRL_PIN(102, 0),
23};
24
25static const unsigned emmc_pins[] = {36, 37, 38, 39, 40, 41, 42};
26static const unsigned emmc_muxvals[] = {0, 0, 0, 0, 0, 0, 0};
27static const unsigned emmc_dat8_pins[] = {43, 44, 45, 46};
28static const unsigned emmc_dat8_muxvals[] = {0, 0, 0, 0};
29static const unsigned i2c0_pins[] = {112, 113};
30static const unsigned i2c0_muxvals[] = {0, 0};
31static const unsigned i2c1_pins[] = {114, 115};
32static const unsigned i2c1_muxvals[] = {0, 0};
33static const unsigned i2c2_pins[] = {116, 117};
34static const unsigned i2c2_muxvals[] = {0, 0};
35static const unsigned i2c3_pins[] = {118, 119};
36static const unsigned i2c3_muxvals[] = {0, 0};
37static const unsigned i2c5_pins[] = {87, 88};
38static const unsigned i2c5_muxvals[] = {2, 2};
39static const unsigned i2c5b_pins[] = {196, 197};
40static const unsigned i2c5b_muxvals[] = {2, 2};
41static const unsigned i2c5c_pins[] = {215, 216};
42static const unsigned i2c5c_muxvals[] = {2, 2};
43static const unsigned i2c6_pins[] = {101, 102};
44static const unsigned i2c6_muxvals[] = {2, 2};
45static const unsigned nand_pins[] = {19, 20, 21, 22, 23, 24, 25, 28, 29, 30,
46 31, 32, 33, 34, 35};
47static const unsigned nand_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
48 0, 0};
49static const unsigned nand_cs1_pins[] = {26, 27};
50static const unsigned nand_cs1_muxvals[] = {0, 0};
51static const unsigned sd_pins[] = {250, 251, 252, 253, 254, 255, 256, 257, 258};
52static const unsigned sd_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
53static const unsigned uart0_pins[] = {47, 48};
54static const unsigned uart0_muxvals[] = {0, 0};
55static const unsigned uart0b_pins[] = {227, 228};
56static const unsigned uart0b_muxvals[] = {3, 3};
57static const unsigned uart1_pins[] = {49, 50};
58static const unsigned uart1_muxvals[] = {0, 0};
59static const unsigned uart2_pins[] = {51, 52};
60static const unsigned uart2_muxvals[] = {0, 0};
61static const unsigned uart3_pins[] = {53, 54};
62static const unsigned uart3_muxvals[] = {0, 0};
63static const unsigned usb0_pins[] = {124, 125};
64static const unsigned usb0_muxvals[] = {0, 0};
65static const unsigned usb1_pins[] = {126, 127};
66static const unsigned usb1_muxvals[] = {0, 0};
67static const unsigned usb2_pins[] = {128, 129};
68static const unsigned usb2_muxvals[] = {0, 0};
69
ac13ce49 70static const struct uniphier_pinctrl_group uniphier_pro5_groups[] = {
b82ca82e
MY
71 UNIPHIER_PINCTRL_GROUP(emmc),
72 UNIPHIER_PINCTRL_GROUP(emmc_dat8),
73 UNIPHIER_PINCTRL_GROUP(i2c0),
74 UNIPHIER_PINCTRL_GROUP(i2c1),
75 UNIPHIER_PINCTRL_GROUP(i2c2),
76 UNIPHIER_PINCTRL_GROUP(i2c3),
77 UNIPHIER_PINCTRL_GROUP(i2c5),
78 UNIPHIER_PINCTRL_GROUP(i2c5b),
79 UNIPHIER_PINCTRL_GROUP(i2c5c),
80 UNIPHIER_PINCTRL_GROUP(i2c6),
81 UNIPHIER_PINCTRL_GROUP(nand),
82 UNIPHIER_PINCTRL_GROUP(nand_cs1),
83 UNIPHIER_PINCTRL_GROUP(sd),
84 UNIPHIER_PINCTRL_GROUP(uart0),
85 UNIPHIER_PINCTRL_GROUP(uart0b),
86 UNIPHIER_PINCTRL_GROUP(uart1),
87 UNIPHIER_PINCTRL_GROUP(uart2),
88 UNIPHIER_PINCTRL_GROUP(uart3),
89 UNIPHIER_PINCTRL_GROUP(usb0),
90 UNIPHIER_PINCTRL_GROUP(usb1),
91 UNIPHIER_PINCTRL_GROUP(usb2),
92};
93
ac13ce49 94static const char * const uniphier_pro5_functions[] = {
b82ca82e
MY
95 "emmc",
96 "i2c0",
97 "i2c1",
98 "i2c2",
99 "i2c3",
100 "i2c5",
101 "i2c6",
102 "nand",
103 "sd",
104 "uart0",
105 "uart1",
106 "uart2",
107 "uart3",
108 "usb0",
109 "usb1",
110 "usb2",
111};
112
ac13ce49
MY
113static struct uniphier_pinctrl_socdata uniphier_pro5_pinctrl_socdata = {
114 .pins = uniphier_pro5_pins,
115 .pins_count = ARRAY_SIZE(uniphier_pro5_pins),
116 .groups = uniphier_pro5_groups,
117 .groups_count = ARRAY_SIZE(uniphier_pro5_groups),
118 .functions = uniphier_pro5_functions,
119 .functions_count = ARRAY_SIZE(uniphier_pro5_functions),
8cc92b99 120 .caps = UNIPHIER_PINCTRL_CAPS_DBGMUX_SEPARATE,
b82ca82e
MY
121};
122
ac13ce49 123static int uniphier_pro5_pinctrl_probe(struct udevice *dev)
b82ca82e 124{
ac13ce49 125 return uniphier_pinctrl_probe(dev, &uniphier_pro5_pinctrl_socdata);
b82ca82e
MY
126}
127
ac13ce49 128static const struct udevice_id uniphier_pro5_pinctrl_match[] = {
b82ca82e
MY
129 { .compatible = "socionext,ph1-pro5-pinctrl" },
130 { /* sentinel */ }
131};
132
ac13ce49
MY
133U_BOOT_DRIVER(uniphier_pro5_pinctrl) = {
134 .name = "uniphier-pro5-pinctrl",
b82ca82e 135 .id = UCLASS_PINCTRL,
ac13ce49
MY
136 .of_match = of_match_ptr(uniphier_pro5_pinctrl_match),
137 .probe = uniphier_pro5_pinctrl_probe,
b82ca82e
MY
138 .remove = uniphier_pinctrl_remove,
139 .priv_auto_alloc_size = sizeof(struct uniphier_pinctrl_priv),
140 .ops = &uniphier_pinctrl_ops,
141 .flags = DM_FLAG_PRE_RELOC,
142};