]>
Commit | Line | Data |
---|---|---|
06b2ae58 | 1 | /* |
4e3d8406 MY |
2 | * Copyright (C) 2015-2016 Socionext Inc. |
3 | * Author: Masahiro Yamada <yamada.masahiro@socionext.com> | |
06b2ae58 MY |
4 | * |
5 | * SPDX-License-Identifier: GPL-2.0+ | |
6 | */ | |
7 | ||
4af0d7e8 | 8 | #include <common.h> |
9d922450 | 9 | #include <dm.h> |
06b2ae58 MY |
10 | #include <dm/pinctrl.h> |
11 | ||
12 | #include "pinctrl-uniphier.h" | |
13 | ||
06b2ae58 | 14 | static const unsigned emmc_pins[] = {21, 22, 23, 24, 25, 26, 27}; |
5e25b9d5 | 15 | static const int emmc_muxvals[] = {1, 1, 1, 1, 1, 1, 1}; |
06b2ae58 | 16 | static const unsigned emmc_dat8_pins[] = {28, 29, 30, 31}; |
5e25b9d5 | 17 | static const int emmc_dat8_muxvals[] = {1, 1, 1, 1}; |
fc9da85c MY |
18 | static const unsigned ether_mii_pins[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 13, 14, |
19 | 61, 63, 64, 65, 66, 67, 68}; | |
20 | static const int ether_mii_muxvals[] = {13, 13, 13, 13, 13, 13, 13, 13, 13, 13, | |
21 | 13, 13, 27, 27, 27, 27, 27, 27, 27}; | |
22 | static const unsigned ether_rmii_pins[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 13, | |
23 | 14}; | |
24 | static const int ether_rmii_muxvals[] = {13, 13, 13, 13, 13, 13, 13, 13, 13, | |
25 | 13, 13, 13}; | |
06b2ae58 | 26 | static const unsigned i2c0_pins[] = {102, 103}; |
5e25b9d5 | 27 | static const int i2c0_muxvals[] = {0, 0}; |
06b2ae58 | 28 | static const unsigned i2c1_pins[] = {104, 105}; |
5e25b9d5 | 29 | static const int i2c1_muxvals[] = {0, 0}; |
06b2ae58 | 30 | static const unsigned i2c2_pins[] = {108, 109}; |
5e25b9d5 | 31 | static const int i2c2_muxvals[] = {2, 2}; |
06b2ae58 | 32 | static const unsigned i2c3_pins[] = {108, 109}; |
5e25b9d5 | 33 | static const int i2c3_muxvals[] = {3, 3}; |
06b2ae58 MY |
34 | static const unsigned nand_pins[] = {15, 16, 17, 18, 19, 20, 21, 24, 25, 26, |
35 | 27, 28, 29, 30, 31}; | |
5e25b9d5 | 36 | static const int nand_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; |
06b2ae58 | 37 | static const unsigned nand_cs1_pins[] = {22, 23}; |
5e25b9d5 | 38 | static const int nand_cs1_muxvals[] = {0, 0}; |
06b2ae58 | 39 | static const unsigned sd_pins[] = {32, 33, 34, 35, 36, 37, 38, 39, 40}; |
5e25b9d5 | 40 | static const int sd_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0}; |
865a39a2 MY |
41 | static const unsigned system_bus_pins[] = {136, 137, 138, 139, 140, 141, 142, |
42 | 143, 144, 145, 146, 147, 148, 149}; | |
43 | static const int system_bus_muxvals[] = {-1, -1, -1, -1, -1, -1, -1, -1, -1, | |
44 | -1, -1, -1, -1, -1}; | |
45 | static const unsigned system_bus_cs1_pins[] = {150}; | |
46 | static const int system_bus_cs1_muxvals[] = {-1}; | |
47 | static const unsigned system_bus_cs2_pins[] = {10}; | |
48 | static const int system_bus_cs2_muxvals[] = {1}; | |
49 | static const unsigned system_bus_cs3_pins[] = {11}; | |
50 | static const int system_bus_cs3_muxvals[] = {1}; | |
51 | static const unsigned system_bus_cs4_pins[] = {12}; | |
52 | static const int system_bus_cs4_muxvals[] = {1}; | |
53 | static const unsigned system_bus_cs5_pins[] = {13}; | |
54 | static const int system_bus_cs5_muxvals[] = {1}; | |
06b2ae58 | 55 | static const unsigned uart0_pins[] = {70, 71}; |
5e25b9d5 | 56 | static const int uart0_muxvals[] = {3, 3}; |
06b2ae58 | 57 | static const unsigned uart1_pins[] = {114, 115}; |
5e25b9d5 | 58 | static const int uart1_muxvals[] = {0, 0}; |
06b2ae58 | 59 | static const unsigned uart2_pins[] = {112, 113}; |
5e25b9d5 | 60 | static const int uart2_muxvals[] = {1, 1}; |
06b2ae58 | 61 | static const unsigned uart3_pins[] = {110, 111}; |
5e25b9d5 | 62 | static const int uart3_muxvals[] = {1, 1}; |
06b2ae58 | 63 | static const unsigned usb0_pins[] = {41, 42}; |
5e25b9d5 | 64 | static const int usb0_muxvals[] = {0, 0}; |
06b2ae58 | 65 | static const unsigned usb1_pins[] = {43, 44}; |
5e25b9d5 | 66 | static const int usb1_muxvals[] = {0, 0}; |
06b2ae58 | 67 | static const unsigned usb2_pins[] = {114, 115}; |
5e25b9d5 | 68 | static const int usb2_muxvals[] = {1, 1}; |
06b2ae58 | 69 | |
ac13ce49 | 70 | static const struct uniphier_pinctrl_group uniphier_sld8_groups[] = { |
64c1cc4c MY |
71 | UNIPHIER_PINCTRL_GROUP_SPL(emmc), |
72 | UNIPHIER_PINCTRL_GROUP_SPL(emmc_dat8), | |
fc9da85c MY |
73 | UNIPHIER_PINCTRL_GROUP(ether_mii), |
74 | UNIPHIER_PINCTRL_GROUP(ether_rmii), | |
06b2ae58 MY |
75 | UNIPHIER_PINCTRL_GROUP(i2c0), |
76 | UNIPHIER_PINCTRL_GROUP(i2c1), | |
77 | UNIPHIER_PINCTRL_GROUP(i2c2), | |
78 | UNIPHIER_PINCTRL_GROUP(i2c3), | |
79 | UNIPHIER_PINCTRL_GROUP(nand), | |
80 | UNIPHIER_PINCTRL_GROUP(nand_cs1), | |
81 | UNIPHIER_PINCTRL_GROUP(sd), | |
865a39a2 MY |
82 | UNIPHIER_PINCTRL_GROUP(system_bus), |
83 | UNIPHIER_PINCTRL_GROUP(system_bus_cs1), | |
84 | UNIPHIER_PINCTRL_GROUP(system_bus_cs2), | |
85 | UNIPHIER_PINCTRL_GROUP(system_bus_cs3), | |
86 | UNIPHIER_PINCTRL_GROUP(system_bus_cs4), | |
87 | UNIPHIER_PINCTRL_GROUP(system_bus_cs5), | |
64c1cc4c MY |
88 | UNIPHIER_PINCTRL_GROUP_SPL(uart0), |
89 | UNIPHIER_PINCTRL_GROUP_SPL(uart1), | |
90 | UNIPHIER_PINCTRL_GROUP_SPL(uart2), | |
91 | UNIPHIER_PINCTRL_GROUP_SPL(uart3), | |
06b2ae58 MY |
92 | UNIPHIER_PINCTRL_GROUP(usb0), |
93 | UNIPHIER_PINCTRL_GROUP(usb1), | |
94 | UNIPHIER_PINCTRL_GROUP(usb2), | |
95 | }; | |
96 | ||
ac13ce49 | 97 | static const char * const uniphier_sld8_functions[] = { |
64c1cc4c | 98 | UNIPHIER_PINMUX_FUNCTION_SPL(emmc), |
fc9da85c MY |
99 | UNIPHIER_PINMUX_FUNCTION(ether_mii), |
100 | UNIPHIER_PINMUX_FUNCTION(ether_rmii), | |
64c1cc4c MY |
101 | UNIPHIER_PINMUX_FUNCTION(i2c0), |
102 | UNIPHIER_PINMUX_FUNCTION(i2c1), | |
103 | UNIPHIER_PINMUX_FUNCTION(i2c2), | |
104 | UNIPHIER_PINMUX_FUNCTION(i2c3), | |
105 | UNIPHIER_PINMUX_FUNCTION(nand), | |
106 | UNIPHIER_PINMUX_FUNCTION(sd), | |
865a39a2 | 107 | UNIPHIER_PINMUX_FUNCTION(system_bus), |
64c1cc4c MY |
108 | UNIPHIER_PINMUX_FUNCTION_SPL(uart0), |
109 | UNIPHIER_PINMUX_FUNCTION_SPL(uart1), | |
110 | UNIPHIER_PINMUX_FUNCTION_SPL(uart2), | |
111 | UNIPHIER_PINMUX_FUNCTION_SPL(uart3), | |
112 | UNIPHIER_PINMUX_FUNCTION(usb0), | |
113 | UNIPHIER_PINMUX_FUNCTION(usb1), | |
114 | UNIPHIER_PINMUX_FUNCTION(usb2), | |
06b2ae58 MY |
115 | }; |
116 | ||
ac13ce49 | 117 | static struct uniphier_pinctrl_socdata uniphier_sld8_pinctrl_socdata = { |
ac13ce49 MY |
118 | .groups = uniphier_sld8_groups, |
119 | .groups_count = ARRAY_SIZE(uniphier_sld8_groups), | |
120 | .functions = uniphier_sld8_functions, | |
121 | .functions_count = ARRAY_SIZE(uniphier_sld8_functions), | |
06b2ae58 MY |
122 | }; |
123 | ||
ac13ce49 | 124 | static int uniphier_sld8_pinctrl_probe(struct udevice *dev) |
06b2ae58 | 125 | { |
ac13ce49 | 126 | return uniphier_pinctrl_probe(dev, &uniphier_sld8_pinctrl_socdata); |
06b2ae58 MY |
127 | } |
128 | ||
ac13ce49 | 129 | static const struct udevice_id uniphier_sld8_pinctrl_match[] = { |
186c1334 | 130 | { .compatible = "socionext,uniphier-sld8-pinctrl" }, |
06b2ae58 MY |
131 | { /* sentinel */ } |
132 | }; | |
133 | ||
ac13ce49 MY |
134 | U_BOOT_DRIVER(uniphier_sld8_pinctrl) = { |
135 | .name = "uniphier-sld8-pinctrl", | |
06b2ae58 | 136 | .id = UCLASS_PINCTRL, |
ac13ce49 MY |
137 | .of_match = of_match_ptr(uniphier_sld8_pinctrl_match), |
138 | .probe = uniphier_sld8_pinctrl_probe, | |
06b2ae58 MY |
139 | .priv_auto_alloc_size = sizeof(struct uniphier_pinctrl_priv), |
140 | .ops = &uniphier_pinctrl_ops, | |
141 | }; |