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