]>
Commit | Line | Data |
---|---|---|
080b7a5b 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_ld6b_pins[] = { | |
13 | UNIPHIER_PINCTRL_PIN(113, 0), | |
14 | UNIPHIER_PINCTRL_PIN(114, 0), | |
15 | UNIPHIER_PINCTRL_PIN(115, 0), | |
16 | UNIPHIER_PINCTRL_PIN(116, 0), | |
17 | UNIPHIER_PINCTRL_PIN(217, 0), | |
18 | UNIPHIER_PINCTRL_PIN(218, 0), | |
19 | UNIPHIER_PINCTRL_PIN(219, 0), | |
20 | UNIPHIER_PINCTRL_PIN(220, 0), | |
21 | }; | |
22 | ||
23 | static const unsigned emmc_pins[] = {36, 37, 38, 39, 40, 41, 42}; | |
24 | static const unsigned emmc_muxvals[] = {1, 1, 1, 1, 1, 1, 1}; | |
25 | static const unsigned emmc_dat8_pins[] = {43, 44, 45, 46}; | |
26 | static const unsigned emmc_dat8_muxvals[] = {1, 1, 1, 1}; | |
27 | static const unsigned i2c0_pins[] = {109, 110}; | |
28 | static const unsigned i2c0_muxvals[] = {0, 0}; | |
29 | static const unsigned i2c1_pins[] = {111, 112}; | |
30 | static const unsigned i2c1_muxvals[] = {0, 0}; | |
31 | static const unsigned i2c2_pins[] = {115, 116}; | |
32 | static const unsigned i2c2_muxvals[] = {1, 1}; | |
33 | static const unsigned i2c3_pins[] = {118, 119}; | |
34 | static const unsigned i2c3_muxvals[] = {1, 1}; | |
35 | static const unsigned nand_pins[] = {30, 31, 32, 33, 34, 35, 36, 39, 40, 41, | |
36 | 42, 43, 44, 45, 46}; | |
37 | static const unsigned nand_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | |
38 | 0, 0}; | |
39 | static const unsigned nand_cs1_pins[] = {37, 38}; | |
40 | static const unsigned nand_cs1_muxvals[] = {0, 0}; | |
41 | static const unsigned sd_pins[] = {47, 48, 49, 50, 51, 52, 53, 54, 55}; | |
42 | static const unsigned sd_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0}; | |
43 | static const unsigned uart0_pins[] = {135, 136}; | |
44 | static const unsigned uart0_muxvals[] = {3, 3}; | |
45 | static const unsigned uart0b_pins[] = {11, 12}; | |
46 | static const unsigned uart0b_muxvals[] = {2, 2}; | |
47 | static const unsigned uart1_pins[] = {115, 116}; | |
48 | static const unsigned uart1_muxvals[] = {0, 0}; | |
49 | static const unsigned uart1b_pins[] = {113, 114}; | |
50 | static const unsigned uart1b_muxvals[] = {1, 1}; | |
51 | static const unsigned uart2_pins[] = {113, 114}; | |
52 | static const unsigned uart2_muxvals[] = {2, 2}; | |
53 | static const unsigned uart2b_pins[] = {86, 87}; | |
54 | static const unsigned uart2b_muxvals[] = {1, 1}; | |
55 | static const unsigned usb0_pins[] = {56, 57}; | |
56 | static const unsigned usb0_muxvals[] = {0, 0}; | |
57 | static const unsigned usb1_pins[] = {58, 59}; | |
58 | static const unsigned usb1_muxvals[] = {0, 0}; | |
59 | static const unsigned usb2_pins[] = {60, 61}; | |
60 | static const unsigned usb2_muxvals[] = {0, 0}; | |
61 | static const unsigned usb3_pins[] = {62, 63}; | |
62 | static const unsigned usb3_muxvals[] = {0, 0}; | |
63 | ||
64 | static const struct uniphier_pinctrl_group ph1_ld6b_groups[] = { | |
65 | UNIPHIER_PINCTRL_GROUP(emmc), | |
66 | UNIPHIER_PINCTRL_GROUP(emmc_dat8), | |
67 | UNIPHIER_PINCTRL_GROUP(i2c0), | |
68 | UNIPHIER_PINCTRL_GROUP(i2c1), | |
69 | UNIPHIER_PINCTRL_GROUP(i2c2), | |
70 | UNIPHIER_PINCTRL_GROUP(i2c3), | |
71 | UNIPHIER_PINCTRL_GROUP(nand), | |
72 | UNIPHIER_PINCTRL_GROUP(nand_cs1), | |
73 | UNIPHIER_PINCTRL_GROUP(sd), | |
74 | UNIPHIER_PINCTRL_GROUP(uart0), | |
75 | UNIPHIER_PINCTRL_GROUP(uart0b), | |
76 | UNIPHIER_PINCTRL_GROUP(uart1), | |
77 | UNIPHIER_PINCTRL_GROUP(uart1b), | |
78 | UNIPHIER_PINCTRL_GROUP(uart2), | |
79 | UNIPHIER_PINCTRL_GROUP(uart2b), | |
80 | UNIPHIER_PINCTRL_GROUP(usb0), | |
81 | UNIPHIER_PINCTRL_GROUP(usb1), | |
82 | UNIPHIER_PINCTRL_GROUP(usb2), | |
83 | UNIPHIER_PINCTRL_GROUP(usb3), | |
84 | }; | |
85 | ||
86 | static const char * const ph1_ld6b_functions[] = { | |
87 | "emmc", | |
88 | "i2c0", | |
89 | "i2c1", | |
90 | "i2c2", | |
91 | "i2c3", | |
92 | "nand", | |
93 | "sd", | |
94 | "uart0", | |
95 | "uart1", | |
96 | "uart2", | |
97 | "usb0", | |
98 | "usb1", | |
99 | "usb2", | |
100 | "usb3", | |
101 | }; | |
102 | ||
103 | static struct uniphier_pinctrl_socdata ph1_ld6b_pinctrl_socdata = { | |
104 | .pins = ph1_ld6b_pins, | |
105 | .pins_count = ARRAY_SIZE(ph1_ld6b_pins), | |
106 | .groups = ph1_ld6b_groups, | |
107 | .groups_count = ARRAY_SIZE(ph1_ld6b_groups), | |
108 | .functions = ph1_ld6b_functions, | |
109 | .functions_count = ARRAY_SIZE(ph1_ld6b_functions), | |
080b7a5b MY |
110 | }; |
111 | ||
112 | static int ph1_ld6b_pinctrl_probe(struct udevice *dev) | |
113 | { | |
114 | return uniphier_pinctrl_probe(dev, &ph1_ld6b_pinctrl_socdata); | |
115 | } | |
116 | ||
117 | static const struct udevice_id ph1_ld6b_pinctrl_match[] = { | |
118 | { .compatible = "socionext,ph1-ld6b-pinctrl" }, | |
119 | { /* sentinel */ } | |
120 | }; | |
121 | ||
122 | U_BOOT_DRIVER(ph1_ld6b_pinctrl) = { | |
123 | .name = "ph1-ld6b-pinctrl", | |
124 | .id = UCLASS_PINCTRL, | |
125 | .of_match = of_match_ptr(ph1_ld6b_pinctrl_match), | |
126 | .probe = ph1_ld6b_pinctrl_probe, | |
127 | .remove = uniphier_pinctrl_remove, | |
128 | .priv_auto_alloc_size = sizeof(struct uniphier_pinctrl_priv), | |
129 | .ops = &uniphier_pinctrl_ops, | |
130 | }; |