]>
Commit | Line | Data |
---|---|---|
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 | ||
12 | static const struct uniphier_pinctrl_pin ph1_pro5_pins[] = { | |
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 | ||
25 | static const unsigned emmc_pins[] = {36, 37, 38, 39, 40, 41, 42}; | |
26 | static const unsigned emmc_muxvals[] = {0, 0, 0, 0, 0, 0, 0}; | |
27 | static const unsigned emmc_dat8_pins[] = {43, 44, 45, 46}; | |
28 | static const unsigned emmc_dat8_muxvals[] = {0, 0, 0, 0}; | |
29 | static const unsigned i2c0_pins[] = {112, 113}; | |
30 | static const unsigned i2c0_muxvals[] = {0, 0}; | |
31 | static const unsigned i2c1_pins[] = {114, 115}; | |
32 | static const unsigned i2c1_muxvals[] = {0, 0}; | |
33 | static const unsigned i2c2_pins[] = {116, 117}; | |
34 | static const unsigned i2c2_muxvals[] = {0, 0}; | |
35 | static const unsigned i2c3_pins[] = {118, 119}; | |
36 | static const unsigned i2c3_muxvals[] = {0, 0}; | |
37 | static const unsigned i2c5_pins[] = {87, 88}; | |
38 | static const unsigned i2c5_muxvals[] = {2, 2}; | |
39 | static const unsigned i2c5b_pins[] = {196, 197}; | |
40 | static const unsigned i2c5b_muxvals[] = {2, 2}; | |
41 | static const unsigned i2c5c_pins[] = {215, 216}; | |
42 | static const unsigned i2c5c_muxvals[] = {2, 2}; | |
43 | static const unsigned i2c6_pins[] = {101, 102}; | |
44 | static const unsigned i2c6_muxvals[] = {2, 2}; | |
45 | static const unsigned nand_pins[] = {19, 20, 21, 22, 23, 24, 25, 28, 29, 30, | |
46 | 31, 32, 33, 34, 35}; | |
47 | static const unsigned nand_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | |
48 | 0, 0}; | |
49 | static const unsigned nand_cs1_pins[] = {26, 27}; | |
50 | static const unsigned nand_cs1_muxvals[] = {0, 0}; | |
51 | static const unsigned sd_pins[] = {250, 251, 252, 253, 254, 255, 256, 257, 258}; | |
52 | static const unsigned sd_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0}; | |
53 | static const unsigned uart0_pins[] = {47, 48}; | |
54 | static const unsigned uart0_muxvals[] = {0, 0}; | |
55 | static const unsigned uart0b_pins[] = {227, 228}; | |
56 | static const unsigned uart0b_muxvals[] = {3, 3}; | |
57 | static const unsigned uart1_pins[] = {49, 50}; | |
58 | static const unsigned uart1_muxvals[] = {0, 0}; | |
59 | static const unsigned uart2_pins[] = {51, 52}; | |
60 | static const unsigned uart2_muxvals[] = {0, 0}; | |
61 | static const unsigned uart3_pins[] = {53, 54}; | |
62 | static const unsigned uart3_muxvals[] = {0, 0}; | |
63 | static const unsigned usb0_pins[] = {124, 125}; | |
64 | static const unsigned usb0_muxvals[] = {0, 0}; | |
65 | static const unsigned usb1_pins[] = {126, 127}; | |
66 | static const unsigned usb1_muxvals[] = {0, 0}; | |
67 | static const unsigned usb2_pins[] = {128, 129}; | |
68 | static const unsigned usb2_muxvals[] = {0, 0}; | |
69 | ||
70 | static const struct uniphier_pinctrl_group ph1_pro5_groups[] = { | |
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 | ||
94 | static const char * const ph1_pro5_functions[] = { | |
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 | ||
113 | static struct uniphier_pinctrl_socdata ph1_pro5_pinctrl_socdata = { | |
114 | .pins = ph1_pro5_pins, | |
115 | .pins_count = ARRAY_SIZE(ph1_pro5_pins), | |
116 | .groups = ph1_pro5_groups, | |
117 | .groups_count = ARRAY_SIZE(ph1_pro5_groups), | |
118 | .functions = ph1_pro5_functions, | |
119 | .functions_count = ARRAY_SIZE(ph1_pro5_functions), | |
8cc92b99 | 120 | .caps = UNIPHIER_PINCTRL_CAPS_DBGMUX_SEPARATE, |
b82ca82e MY |
121 | }; |
122 | ||
123 | static int ph1_pro5_pinctrl_probe(struct udevice *dev) | |
124 | { | |
125 | return uniphier_pinctrl_probe(dev, &ph1_pro5_pinctrl_socdata); | |
126 | } | |
127 | ||
128 | static const struct udevice_id ph1_pro5_pinctrl_match[] = { | |
129 | { .compatible = "socionext,ph1-pro5-pinctrl" }, | |
130 | { /* sentinel */ } | |
131 | }; | |
132 | ||
133 | U_BOOT_DRIVER(ph1_pro5_pinctrl) = { | |
134 | .name = "ph1-pro5-pinctrl", | |
135 | .id = UCLASS_PINCTRL, | |
136 | .of_match = of_match_ptr(ph1_pro5_pinctrl_match), | |
137 | .probe = ph1_pro5_pinctrl_probe, | |
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 | }; |