]>
Commit | Line | Data |
---|---|---|
83d290c5 | 1 | // SPDX-License-Identifier: GPL-2.0+ |
833de5fa | 2 | /* |
4e3d8406 MY |
3 | * Copyright (C) 2015-2016 Socionext Inc. |
4 | * Author: Masahiro Yamada <yamada.masahiro@socionext.com> | |
833de5fa MY |
5 | */ |
6 | ||
d678a59d | 7 | #include <common.h> |
9d922450 | 8 | #include <dm.h> |
833de5fa MY |
9 | #include <dm/pinctrl.h> |
10 | ||
11 | #include "pinctrl-uniphier.h" | |
12 | ||
833de5fa | 13 | static const unsigned emmc_pins[] = {36, 37, 38, 39, 40, 41, 42}; |
5e25b9d5 | 14 | static const int emmc_muxvals[] = {9, 9, 9, 9, 9, 9, 9}; |
833de5fa | 15 | static const unsigned emmc_dat8_pins[] = {43, 44, 45, 46}; |
5e25b9d5 | 16 | static const int emmc_dat8_muxvals[] = {9, 9, 9, 9}; |
fc9da85c MY |
17 | static const unsigned ether_mii_pins[] = {143, 144, 145, 146, 147, 148, 149, |
18 | 150, 151, 152, 153, 154, 155, 156, | |
19 | 158, 159, 199, 200, 201, 202}; | |
20 | static const int ether_mii_muxvals[] = {8, 8, 8, 8, 10, 10, 10, 10, 10, 10, 10, | |
21 | 10, 10, 10, 10, 10, 12, 12, 12, 12}; | |
22 | static const unsigned ether_rgmii_pins[] = {143, 144, 145, 146, 147, 148, 149, | |
23 | 150, 151, 152, 153, 154, 155, 156, | |
24 | 157, 158}; | |
25 | static const int ether_rgmii_muxvals[] = {8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, | |
26 | 8, 8, 8, 8}; | |
27 | static const unsigned ether_rmii_pins[] = {143, 144, 145, 146, 147, 148, 149, | |
28 | 150, 152, 154, 155, 158}; | |
29 | static const int ether_rmii_muxvals[] = {8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9}; | |
833de5fa | 30 | static const unsigned i2c0_pins[] = {109, 110}; |
5e25b9d5 | 31 | static const int i2c0_muxvals[] = {8, 8}; |
833de5fa | 32 | static const unsigned i2c1_pins[] = {111, 112}; |
5e25b9d5 | 33 | static const int i2c1_muxvals[] = {8, 8}; |
833de5fa | 34 | static const unsigned i2c2_pins[] = {171, 172}; |
5e25b9d5 | 35 | static const int i2c2_muxvals[] = {8, 8}; |
833de5fa | 36 | static const unsigned i2c3_pins[] = {159, 160}; |
5e25b9d5 | 37 | static const int i2c3_muxvals[] = {8, 8}; |
833de5fa | 38 | static const unsigned i2c5_pins[] = {183, 184}; |
5e25b9d5 | 39 | static const int i2c5_muxvals[] = {11, 11}; |
833de5fa | 40 | static const unsigned i2c6_pins[] = {185, 186}; |
5e25b9d5 | 41 | static const int i2c6_muxvals[] = {11, 11}; |
833de5fa MY |
42 | static const unsigned nand_pins[] = {30, 31, 32, 33, 34, 35, 36, 39, 40, 41, |
43 | 42, 43, 44, 45, 46}; | |
5e25b9d5 | 44 | static const int nand_muxvals[] = {8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8}; |
833de5fa | 45 | static const unsigned nand_cs1_pins[] = {37, 38}; |
5e25b9d5 | 46 | static const int nand_cs1_muxvals[] = {8, 8}; |
833de5fa | 47 | static const unsigned sd_pins[] = {47, 48, 49, 50, 51, 52, 53, 54, 55}; |
5e25b9d5 | 48 | static const int sd_muxvals[] = {8, 8, 8, 8, 8, 8, 8, 8, 8}; |
d5381853 KH |
49 | static const unsigned spi0_pins[] = {199, 200, 201, 202}; |
50 | static const int spi0_muxvals[] = {8, 8, 8, 8}; | |
51 | static const unsigned spi1_pins[] = {93, 94, 95, 96}; | |
52 | static const int spi1_muxvals[] = {1, 1, 1, 1}; | |
865a39a2 MY |
53 | static const unsigned system_bus_pins[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, |
54 | 11, 12, 13}; | |
55 | static const int system_bus_muxvals[] = {8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, | |
56 | 8}; | |
57 | static const unsigned system_bus_cs1_pins[] = {14}; | |
58 | static const int system_bus_cs1_muxvals[] = {8}; | |
833de5fa | 59 | static const unsigned uart0_pins[] = {217, 218}; |
5e25b9d5 | 60 | static const int uart0_muxvals[] = {8, 8}; |
833de5fa | 61 | static const unsigned uart0b_pins[] = {179, 180}; |
5e25b9d5 | 62 | static const int uart0b_muxvals[] = {10, 10}; |
833de5fa | 63 | static const unsigned uart1_pins[] = {115, 116}; |
5e25b9d5 | 64 | static const int uart1_muxvals[] = {8, 8}; |
833de5fa | 65 | static const unsigned uart2_pins[] = {113, 114}; |
5e25b9d5 | 66 | static const int uart2_muxvals[] = {8, 8}; |
833de5fa | 67 | static const unsigned uart3_pins[] = {219, 220}; |
5e25b9d5 | 68 | static const int uart3_muxvals[] = {8, 8}; |
833de5fa | 69 | static const unsigned uart3b_pins[] = {181, 182}; |
5e25b9d5 | 70 | static const int uart3b_muxvals[] = {10, 10}; |
833de5fa | 71 | static const unsigned usb0_pins[] = {56, 57}; |
5e25b9d5 | 72 | static const int usb0_muxvals[] = {8, 8}; |
833de5fa | 73 | static const unsigned usb1_pins[] = {58, 59}; |
5e25b9d5 | 74 | static const int usb1_muxvals[] = {8, 8}; |
833de5fa | 75 | static const unsigned usb2_pins[] = {60, 61}; |
5e25b9d5 | 76 | static const int usb2_muxvals[] = {8, 8}; |
833de5fa | 77 | static const unsigned usb3_pins[] = {62, 63}; |
5e25b9d5 | 78 | static const int usb3_muxvals[] = {8, 8}; |
833de5fa | 79 | |
ac13ce49 | 80 | static const struct uniphier_pinctrl_group uniphier_pxs2_groups[] = { |
64c1cc4c MY |
81 | UNIPHIER_PINCTRL_GROUP_SPL(emmc), |
82 | UNIPHIER_PINCTRL_GROUP_SPL(emmc_dat8), | |
fc9da85c MY |
83 | UNIPHIER_PINCTRL_GROUP(ether_mii), |
84 | UNIPHIER_PINCTRL_GROUP(ether_rgmii), | |
85 | UNIPHIER_PINCTRL_GROUP(ether_rmii), | |
833de5fa MY |
86 | UNIPHIER_PINCTRL_GROUP(i2c0), |
87 | UNIPHIER_PINCTRL_GROUP(i2c1), | |
88 | UNIPHIER_PINCTRL_GROUP(i2c2), | |
89 | UNIPHIER_PINCTRL_GROUP(i2c3), | |
90 | UNIPHIER_PINCTRL_GROUP(i2c5), | |
91 | UNIPHIER_PINCTRL_GROUP(i2c6), | |
92 | UNIPHIER_PINCTRL_GROUP(nand), | |
93 | UNIPHIER_PINCTRL_GROUP(nand_cs1), | |
94 | UNIPHIER_PINCTRL_GROUP(sd), | |
d5381853 KH |
95 | UNIPHIER_PINCTRL_GROUP(spi0), |
96 | UNIPHIER_PINCTRL_GROUP(spi1), | |
865a39a2 MY |
97 | UNIPHIER_PINCTRL_GROUP(system_bus), |
98 | UNIPHIER_PINCTRL_GROUP(system_bus_cs1), | |
64c1cc4c MY |
99 | UNIPHIER_PINCTRL_GROUP_SPL(uart0), |
100 | UNIPHIER_PINCTRL_GROUP_SPL(uart0b), | |
101 | UNIPHIER_PINCTRL_GROUP_SPL(uart1), | |
102 | UNIPHIER_PINCTRL_GROUP_SPL(uart2), | |
103 | UNIPHIER_PINCTRL_GROUP_SPL(uart3), | |
104 | UNIPHIER_PINCTRL_GROUP_SPL(uart3b), | |
833de5fa MY |
105 | UNIPHIER_PINCTRL_GROUP(usb0), |
106 | UNIPHIER_PINCTRL_GROUP(usb1), | |
107 | UNIPHIER_PINCTRL_GROUP(usb2), | |
108 | UNIPHIER_PINCTRL_GROUP(usb3), | |
109 | }; | |
110 | ||
ac13ce49 | 111 | static const char * const uniphier_pxs2_functions[] = { |
64c1cc4c | 112 | UNIPHIER_PINMUX_FUNCTION_SPL(emmc), |
fc9da85c MY |
113 | UNIPHIER_PINMUX_FUNCTION(ether_mii), |
114 | UNIPHIER_PINMUX_FUNCTION(ether_rgmii), | |
115 | UNIPHIER_PINMUX_FUNCTION(ether_rmii), | |
64c1cc4c MY |
116 | UNIPHIER_PINMUX_FUNCTION(i2c0), |
117 | UNIPHIER_PINMUX_FUNCTION(i2c1), | |
118 | UNIPHIER_PINMUX_FUNCTION(i2c2), | |
119 | UNIPHIER_PINMUX_FUNCTION(i2c3), | |
120 | UNIPHIER_PINMUX_FUNCTION(i2c5), | |
121 | UNIPHIER_PINMUX_FUNCTION(i2c6), | |
122 | UNIPHIER_PINMUX_FUNCTION(nand), | |
123 | UNIPHIER_PINMUX_FUNCTION(sd), | |
d5381853 KH |
124 | UNIPHIER_PINMUX_FUNCTION(spi0), |
125 | UNIPHIER_PINMUX_FUNCTION(spi1), | |
865a39a2 | 126 | UNIPHIER_PINMUX_FUNCTION(system_bus), |
64c1cc4c MY |
127 | UNIPHIER_PINMUX_FUNCTION_SPL(uart0), |
128 | UNIPHIER_PINMUX_FUNCTION_SPL(uart1), | |
129 | UNIPHIER_PINMUX_FUNCTION_SPL(uart2), | |
130 | UNIPHIER_PINMUX_FUNCTION_SPL(uart3), | |
131 | UNIPHIER_PINMUX_FUNCTION(usb0), | |
132 | UNIPHIER_PINMUX_FUNCTION(usb1), | |
133 | UNIPHIER_PINMUX_FUNCTION(usb2), | |
134 | UNIPHIER_PINMUX_FUNCTION(usb3), | |
833de5fa MY |
135 | }; |
136 | ||
ac13ce49 | 137 | static struct uniphier_pinctrl_socdata uniphier_pxs2_pinctrl_socdata = { |
ac13ce49 MY |
138 | .groups = uniphier_pxs2_groups, |
139 | .groups_count = ARRAY_SIZE(uniphier_pxs2_groups), | |
140 | .functions = uniphier_pxs2_functions, | |
141 | .functions_count = ARRAY_SIZE(uniphier_pxs2_functions), | |
6a6b9d5d | 142 | .caps = UNIPHIER_PINCTRL_CAPS_PUPD_SIMPLE, |
833de5fa MY |
143 | }; |
144 | ||
ac13ce49 | 145 | static int uniphier_pxs2_pinctrl_probe(struct udevice *dev) |
833de5fa | 146 | { |
ac13ce49 | 147 | return uniphier_pinctrl_probe(dev, &uniphier_pxs2_pinctrl_socdata); |
833de5fa MY |
148 | } |
149 | ||
ac13ce49 | 150 | static const struct udevice_id uniphier_pxs2_pinctrl_match[] = { |
186c1334 | 151 | { .compatible = "socionext,uniphier-pxs2-pinctrl" }, |
833de5fa MY |
152 | { /* sentinel */ } |
153 | }; | |
154 | ||
ac13ce49 MY |
155 | U_BOOT_DRIVER(uniphier_pxs2_pinctrl) = { |
156 | .name = "uniphier-pxs2-pinctrl", | |
833de5fa | 157 | .id = UCLASS_PINCTRL, |
ac13ce49 MY |
158 | .of_match = of_match_ptr(uniphier_pxs2_pinctrl_match), |
159 | .probe = uniphier_pxs2_pinctrl_probe, | |
41575d8e | 160 | .priv_auto = sizeof(struct uniphier_pinctrl_priv), |
833de5fa MY |
161 | .ops = &uniphier_pinctrl_ops, |
162 | }; |