]>
Commit | Line | Data |
---|---|---|
06b2ae58 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_sld8_pins[] = { | |
13 | UNIPHIER_PINCTRL_PIN(32, 8), | |
14 | UNIPHIER_PINCTRL_PIN(33, 8), | |
15 | UNIPHIER_PINCTRL_PIN(34, 8), | |
16 | UNIPHIER_PINCTRL_PIN(35, 8), | |
17 | UNIPHIER_PINCTRL_PIN(36, 8), | |
18 | UNIPHIER_PINCTRL_PIN(37, 8), | |
19 | UNIPHIER_PINCTRL_PIN(38, 8), | |
20 | UNIPHIER_PINCTRL_PIN(39, 8), | |
21 | UNIPHIER_PINCTRL_PIN(40, 9), | |
22 | UNIPHIER_PINCTRL_PIN(41, 0), | |
23 | UNIPHIER_PINCTRL_PIN(42, 0), | |
24 | UNIPHIER_PINCTRL_PIN(43, 0), | |
25 | UNIPHIER_PINCTRL_PIN(44, 0), | |
26 | UNIPHIER_PINCTRL_PIN(70, 0), | |
27 | UNIPHIER_PINCTRL_PIN(71, 0), | |
28 | UNIPHIER_PINCTRL_PIN(102, 10), | |
29 | UNIPHIER_PINCTRL_PIN(103, 10), | |
30 | UNIPHIER_PINCTRL_PIN(104, 11), | |
31 | UNIPHIER_PINCTRL_PIN(105, 11), | |
32 | UNIPHIER_PINCTRL_PIN(108, 13), | |
33 | UNIPHIER_PINCTRL_PIN(109, 13), | |
34 | UNIPHIER_PINCTRL_PIN(112, 0), | |
35 | UNIPHIER_PINCTRL_PIN(113, 0), | |
36 | UNIPHIER_PINCTRL_PIN(114, 0), | |
37 | UNIPHIER_PINCTRL_PIN(115, 0), | |
38 | }; | |
39 | ||
40 | static const unsigned emmc_pins[] = {21, 22, 23, 24, 25, 26, 27}; | |
41 | static const unsigned emmc_muxvals[] = {1, 1, 1, 1, 1, 1, 1}; | |
42 | static const unsigned emmc_dat8_pins[] = {28, 29, 30, 31}; | |
43 | static const unsigned emmc_dat8_muxvals[] = {1, 1, 1, 1}; | |
44 | static const unsigned i2c0_pins[] = {102, 103}; | |
45 | static const unsigned i2c0_muxvals[] = {0, 0}; | |
46 | static const unsigned i2c1_pins[] = {104, 105}; | |
47 | static const unsigned i2c1_muxvals[] = {0, 0}; | |
48 | static const unsigned i2c2_pins[] = {108, 109}; | |
49 | static const unsigned i2c2_muxvals[] = {2, 2}; | |
50 | static const unsigned i2c3_pins[] = {108, 109}; | |
51 | static const unsigned i2c3_muxvals[] = {3, 3}; | |
52 | static const unsigned nand_pins[] = {15, 16, 17, 18, 19, 20, 21, 24, 25, 26, | |
53 | 27, 28, 29, 30, 31}; | |
54 | static const unsigned nand_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | |
55 | 0, 0}; | |
56 | static const unsigned nand_cs1_pins[] = {22, 23}; | |
57 | static const unsigned nand_cs1_muxvals[] = {0, 0}; | |
58 | static const unsigned sd_pins[] = {32, 33, 34, 35, 36, 37, 38, 39, 40}; | |
59 | static const unsigned sd_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0}; | |
60 | static const unsigned uart0_pins[] = {70, 71}; | |
61 | static const unsigned uart0_muxvals[] = {3, 3}; | |
62 | static const unsigned uart1_pins[] = {114, 115}; | |
63 | static const unsigned uart1_muxvals[] = {0, 0}; | |
64 | static const unsigned uart2_pins[] = {112, 113}; | |
65 | static const unsigned uart2_muxvals[] = {1, 1}; | |
66 | static const unsigned uart3_pins[] = {110, 111}; | |
67 | static const unsigned uart3_muxvals[] = {1, 1}; | |
68 | static const unsigned usb0_pins[] = {41, 42}; | |
69 | static const unsigned usb0_muxvals[] = {0, 0}; | |
70 | static const unsigned usb1_pins[] = {43, 44}; | |
71 | static const unsigned usb1_muxvals[] = {0, 0}; | |
72 | static const unsigned usb2_pins[] = {114, 115}; | |
73 | static const unsigned usb2_muxvals[] = {1, 1}; | |
74 | ||
75 | static const struct uniphier_pinctrl_group ph1_sld8_groups[] = { | |
76 | UNIPHIER_PINCTRL_GROUP(emmc), | |
77 | UNIPHIER_PINCTRL_GROUP(emmc_dat8), | |
78 | UNIPHIER_PINCTRL_GROUP(i2c0), | |
79 | UNIPHIER_PINCTRL_GROUP(i2c1), | |
80 | UNIPHIER_PINCTRL_GROUP(i2c2), | |
81 | UNIPHIER_PINCTRL_GROUP(i2c3), | |
82 | UNIPHIER_PINCTRL_GROUP(nand), | |
83 | UNIPHIER_PINCTRL_GROUP(nand_cs1), | |
84 | UNIPHIER_PINCTRL_GROUP(sd), | |
85 | UNIPHIER_PINCTRL_GROUP(uart0), | |
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_sld8_functions[] = { | |
95 | "emmc", | |
96 | "i2c0", | |
97 | "i2c1", | |
98 | "i2c2", | |
99 | "i2c3", | |
100 | "nand", | |
101 | "sd", | |
102 | "uart0", | |
103 | "uart1", | |
104 | "uart2", | |
105 | "uart3", | |
106 | "usb0", | |
107 | "usb1", | |
108 | "usb2", | |
109 | }; | |
110 | ||
111 | static struct uniphier_pinctrl_socdata ph1_sld8_pinctrl_socdata = { | |
112 | .pins = ph1_sld8_pins, | |
113 | .pins_count = ARRAY_SIZE(ph1_sld8_pins), | |
114 | .groups = ph1_sld8_groups, | |
115 | .groups_count = ARRAY_SIZE(ph1_sld8_groups), | |
116 | .functions = ph1_sld8_functions, | |
117 | .functions_count = ARRAY_SIZE(ph1_sld8_functions), | |
06b2ae58 MY |
118 | }; |
119 | ||
120 | static int ph1_sld8_pinctrl_probe(struct udevice *dev) | |
121 | { | |
122 | return uniphier_pinctrl_probe(dev, &ph1_sld8_pinctrl_socdata); | |
123 | } | |
124 | ||
125 | static const struct udevice_id ph1_sld8_pinctrl_match[] = { | |
126 | { .compatible = "socionext,ph1-sld8-pinctrl" }, | |
127 | { /* sentinel */ } | |
128 | }; | |
129 | ||
130 | U_BOOT_DRIVER(ph1_sld8_pinctrl) = { | |
131 | .name = "ph1-sld8-pinctrl", | |
132 | .id = UCLASS_PINCTRL, | |
133 | .of_match = of_match_ptr(ph1_sld8_pinctrl_match), | |
134 | .probe = ph1_sld8_pinctrl_probe, | |
135 | .remove = uniphier_pinctrl_remove, | |
136 | .priv_auto_alloc_size = sizeof(struct uniphier_pinctrl_priv), | |
137 | .ops = &uniphier_pinctrl_ops, | |
138 | }; |