]>
Commit | Line | Data |
---|---|---|
83d290c5 | 1 | // SPDX-License-Identifier: GPL-2.0+ |
e4410e82 | 2 | /* |
4e3d8406 MY |
3 | * Copyright (C) 2015-2016 Socionext Inc. |
4 | * Author: Masahiro Yamada <[email protected]> | |
e4410e82 MY |
5 | */ |
6 | ||
4af0d7e8 | 7 | #include <common.h> |
9d922450 | 8 | #include <dm.h> |
e4410e82 MY |
9 | #include <dm/pinctrl.h> |
10 | ||
11 | #include "pinctrl-uniphier.h" | |
12 | ||
e4410e82 | 13 | static const unsigned emmc_pins[] = {21, 22, 23, 24, 25, 26, 27}; |
5e25b9d5 | 14 | static const int emmc_muxvals[] = {0, 1, 1, 1, 1, 1, 1}; |
e4410e82 | 15 | static const unsigned emmc_dat8_pins[] = {28, 29, 30, 31}; |
5e25b9d5 | 16 | static const int emmc_dat8_muxvals[] = {1, 1, 1, 1}; |
fc9da85c MY |
17 | static const unsigned ether_mii_pins[] = {32, 33, 34, 35, 36, 37, 38, 39, 40, |
18 | 41, 42, 43, 136, 137, 138, 139, 140, | |
19 | 141, 142}; | |
20 | static const int ether_mii_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | |
21 | 4, 4, 4, 4, 4, 4, 4}; | |
22 | static const unsigned ether_rmii_pins[] = {32, 33, 34, 35, 36, 37, 38, 39, 40, | |
23 | 41, 42, 43}; | |
24 | static const int ether_rmii_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; | |
e4410e82 | 25 | static const unsigned i2c0_pins[] = {102, 103}; |
5e25b9d5 | 26 | static const int i2c0_muxvals[] = {0, 0}; |
e4410e82 | 27 | static const unsigned i2c1_pins[] = {104, 105}; |
5e25b9d5 | 28 | static const int i2c1_muxvals[] = {0, 0}; |
e4410e82 | 29 | static const unsigned i2c2_pins[] = {108, 109}; |
5e25b9d5 | 30 | static const int i2c2_muxvals[] = {2, 2}; |
e4410e82 | 31 | static const unsigned i2c3_pins[] = {108, 109}; |
5e25b9d5 | 32 | static const int i2c3_muxvals[] = {3, 3}; |
e4410e82 MY |
33 | static const unsigned nand_pins[] = {24, 25, 26, 27, 28, 29, 30, 31, 158, 159, |
34 | 160, 161, 162, 163, 164}; | |
5e25b9d5 | 35 | static const int nand_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; |
e4410e82 | 36 | static const unsigned nand_cs1_pins[] = {22, 23}; |
5e25b9d5 | 37 | static const int nand_cs1_muxvals[] = {0, 0}; |
e4410e82 | 38 | static const unsigned sd_pins[] = {44, 45, 46, 47, 48, 49, 50, 51, 52}; |
5e25b9d5 | 39 | static const int sd_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0}; |
d5381853 KH |
40 | static const unsigned spi0_pins[] = {135, 136, 137, 138}; |
41 | static const int spi0_muxvals[] = {12, 12, 12, 12}; | |
865a39a2 MY |
42 | static const unsigned system_bus_pins[] = {16, 17, 18, 19, 20, 165, 166, 167, |
43 | 168, 169, 170, 171, 172, 173}; | |
44 | static const int system_bus_muxvals[] = {0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, | |
45 | -1, -1, -1}; | |
46 | static const unsigned system_bus_cs0_pins[] = {155}; | |
47 | static const int system_bus_cs0_muxvals[] = {1}; | |
48 | static const unsigned system_bus_cs1_pins[] = {174}; | |
49 | static const int system_bus_cs1_muxvals[] = {-1}; | |
50 | static const unsigned system_bus_cs2_pins[] = {64}; | |
51 | static const int system_bus_cs2_muxvals[] = {1}; | |
52 | static const unsigned system_bus_cs3_pins[] = {156}; | |
53 | static const int system_bus_cs3_muxvals[] = {1}; | |
e4410e82 | 54 | static const unsigned uart0_pins[] = {85, 88}; |
5e25b9d5 | 55 | static const int uart0_muxvals[] = {1, 1}; |
e4410e82 | 56 | static const unsigned uart1_pins[] = {155, 156}; |
5e25b9d5 | 57 | static const int uart1_muxvals[] = {13, 13}; |
e4410e82 | 58 | static const unsigned uart1b_pins[] = {69, 70}; |
5e25b9d5 | 59 | static const int uart1b_muxvals[] = {23, 23}; |
e4410e82 | 60 | static const unsigned uart2_pins[] = {128, 129}; |
5e25b9d5 | 61 | static const int uart2_muxvals[] = {13, 13}; |
e4410e82 | 62 | static const unsigned uart3_pins[] = {110, 111}; |
5e25b9d5 | 63 | static const int uart3_muxvals[] = {1, 1}; |
e4410e82 | 64 | static const unsigned usb0_pins[] = {53, 54}; |
5e25b9d5 | 65 | static const int usb0_muxvals[] = {0, 0}; |
e4410e82 | 66 | static const unsigned usb1_pins[] = {55, 56}; |
5e25b9d5 | 67 | static const int usb1_muxvals[] = {0, 0}; |
e4410e82 | 68 | static const unsigned usb2_pins[] = {155, 156}; |
5e25b9d5 | 69 | static const int usb2_muxvals[] = {4, 4}; |
e4410e82 | 70 | static const unsigned usb2b_pins[] = {67, 68}; |
5e25b9d5 | 71 | static const int usb2b_muxvals[] = {23, 23}; |
e4410e82 | 72 | |
ac13ce49 | 73 | static const struct uniphier_pinctrl_group uniphier_ld4_groups[] = { |
64c1cc4c MY |
74 | UNIPHIER_PINCTRL_GROUP_SPL(emmc), |
75 | UNIPHIER_PINCTRL_GROUP_SPL(emmc_dat8), | |
fc9da85c MY |
76 | UNIPHIER_PINCTRL_GROUP(ether_mii), |
77 | UNIPHIER_PINCTRL_GROUP(ether_rmii), | |
e4410e82 MY |
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), | |
d5381853 | 85 | UNIPHIER_PINCTRL_GROUP(spi0), |
865a39a2 MY |
86 | UNIPHIER_PINCTRL_GROUP(system_bus), |
87 | UNIPHIER_PINCTRL_GROUP(system_bus_cs0), | |
88 | UNIPHIER_PINCTRL_GROUP(system_bus_cs1), | |
89 | UNIPHIER_PINCTRL_GROUP(system_bus_cs2), | |
90 | UNIPHIER_PINCTRL_GROUP(system_bus_cs3), | |
64c1cc4c MY |
91 | UNIPHIER_PINCTRL_GROUP_SPL(uart0), |
92 | UNIPHIER_PINCTRL_GROUP_SPL(uart1), | |
93 | UNIPHIER_PINCTRL_GROUP_SPL(uart1b), | |
94 | UNIPHIER_PINCTRL_GROUP_SPL(uart2), | |
95 | UNIPHIER_PINCTRL_GROUP_SPL(uart3), | |
e4410e82 MY |
96 | UNIPHIER_PINCTRL_GROUP(usb0), |
97 | UNIPHIER_PINCTRL_GROUP(usb1), | |
98 | UNIPHIER_PINCTRL_GROUP(usb2), | |
99 | UNIPHIER_PINCTRL_GROUP(usb2b), | |
100 | }; | |
101 | ||
ac13ce49 | 102 | static const char * const uniphier_ld4_functions[] = { |
64c1cc4c | 103 | UNIPHIER_PINMUX_FUNCTION_SPL(emmc), |
fc9da85c MY |
104 | UNIPHIER_PINMUX_FUNCTION(ether_mii), |
105 | UNIPHIER_PINMUX_FUNCTION(ether_rmii), | |
64c1cc4c MY |
106 | UNIPHIER_PINMUX_FUNCTION(i2c0), |
107 | UNIPHIER_PINMUX_FUNCTION(i2c1), | |
108 | UNIPHIER_PINMUX_FUNCTION(i2c2), | |
109 | UNIPHIER_PINMUX_FUNCTION(i2c3), | |
110 | UNIPHIER_PINMUX_FUNCTION(nand), | |
111 | UNIPHIER_PINMUX_FUNCTION(sd), | |
d5381853 | 112 | UNIPHIER_PINMUX_FUNCTION(spi0), |
865a39a2 | 113 | UNIPHIER_PINMUX_FUNCTION(system_bus), |
64c1cc4c MY |
114 | UNIPHIER_PINMUX_FUNCTION_SPL(uart0), |
115 | UNIPHIER_PINMUX_FUNCTION_SPL(uart1), | |
116 | UNIPHIER_PINMUX_FUNCTION_SPL(uart2), | |
117 | UNIPHIER_PINMUX_FUNCTION_SPL(uart3), | |
118 | UNIPHIER_PINMUX_FUNCTION(usb0), | |
119 | UNIPHIER_PINMUX_FUNCTION(usb1), | |
120 | UNIPHIER_PINMUX_FUNCTION(usb2), | |
e4410e82 MY |
121 | }; |
122 | ||
ac13ce49 | 123 | static struct uniphier_pinctrl_socdata uniphier_ld4_pinctrl_socdata = { |
ac13ce49 MY |
124 | .groups = uniphier_ld4_groups, |
125 | .groups_count = ARRAY_SIZE(uniphier_ld4_groups), | |
126 | .functions = uniphier_ld4_functions, | |
127 | .functions_count = ARRAY_SIZE(uniphier_ld4_functions), | |
e4410e82 MY |
128 | }; |
129 | ||
ac13ce49 | 130 | static int uniphier_ld4_pinctrl_probe(struct udevice *dev) |
e4410e82 | 131 | { |
ac13ce49 | 132 | return uniphier_pinctrl_probe(dev, &uniphier_ld4_pinctrl_socdata); |
e4410e82 MY |
133 | } |
134 | ||
ac13ce49 | 135 | static const struct udevice_id uniphier_ld4_pinctrl_match[] = { |
186c1334 | 136 | { .compatible = "socionext,uniphier-ld4-pinctrl" }, |
e4410e82 MY |
137 | { /* sentinel */ } |
138 | }; | |
139 | ||
ac13ce49 MY |
140 | U_BOOT_DRIVER(uniphier_ld4_pinctrl) = { |
141 | .name = "uniphier-ld4-pinctrl", | |
e4410e82 | 142 | .id = UCLASS_PINCTRL, |
ac13ce49 MY |
143 | .of_match = of_match_ptr(uniphier_ld4_pinctrl_match), |
144 | .probe = uniphier_ld4_pinctrl_probe, | |
41575d8e | 145 | .priv_auto = sizeof(struct uniphier_pinctrl_priv), |
e4410e82 MY |
146 | .ops = &uniphier_pinctrl_ops, |
147 | }; |