xref: /rk3399_rockchip-uboot/drivers/pinctrl/uniphier/pinctrl-uniphier-pro5.c (revision ac13ce49a4cb9e7629d6c151b754bb15b2ba33da)
1ea65c980SMasahiro Yamada /*
2ea65c980SMasahiro Yamada  * Copyright (C) 2015 Masahiro Yamada <yamada.masahiro@socionext.com>
3ea65c980SMasahiro Yamada  *
4ea65c980SMasahiro Yamada  * SPDX-License-Identifier:	GPL-2.0+
5ea65c980SMasahiro Yamada  */
6ea65c980SMasahiro Yamada 
7ea65c980SMasahiro Yamada #include <dm/device.h>
8ea65c980SMasahiro Yamada #include <dm/pinctrl.h>
9ea65c980SMasahiro Yamada 
10ea65c980SMasahiro Yamada #include "pinctrl-uniphier.h"
11ea65c980SMasahiro Yamada 
12*ac13ce49SMasahiro Yamada static const struct uniphier_pinctrl_pin uniphier_pro5_pins[] = {
13ea65c980SMasahiro Yamada 	UNIPHIER_PINCTRL_PIN(47, 0),
14ea65c980SMasahiro Yamada 	UNIPHIER_PINCTRL_PIN(48, 0),
15ea65c980SMasahiro Yamada 	UNIPHIER_PINCTRL_PIN(49, 0),
16ea65c980SMasahiro Yamada 	UNIPHIER_PINCTRL_PIN(50, 0),
17ea65c980SMasahiro Yamada 	UNIPHIER_PINCTRL_PIN(53, 0),
18ea65c980SMasahiro Yamada 	UNIPHIER_PINCTRL_PIN(54, 0),
19ea65c980SMasahiro Yamada 	UNIPHIER_PINCTRL_PIN(87, 0),
20ea65c980SMasahiro Yamada 	UNIPHIER_PINCTRL_PIN(88, 0),
21ea65c980SMasahiro Yamada 	UNIPHIER_PINCTRL_PIN(101, 0),
22ea65c980SMasahiro Yamada 	UNIPHIER_PINCTRL_PIN(102, 0),
23ea65c980SMasahiro Yamada };
24ea65c980SMasahiro Yamada 
25ea65c980SMasahiro Yamada static const unsigned emmc_pins[] = {36, 37, 38, 39, 40, 41, 42};
26ea65c980SMasahiro Yamada static const unsigned emmc_muxvals[] = {0, 0, 0, 0, 0, 0, 0};
27ea65c980SMasahiro Yamada static const unsigned emmc_dat8_pins[] = {43, 44, 45, 46};
28ea65c980SMasahiro Yamada static const unsigned emmc_dat8_muxvals[] = {0, 0, 0, 0};
29ea65c980SMasahiro Yamada static const unsigned i2c0_pins[] = {112, 113};
30ea65c980SMasahiro Yamada static const unsigned i2c0_muxvals[] = {0, 0};
31ea65c980SMasahiro Yamada static const unsigned i2c1_pins[] = {114, 115};
32ea65c980SMasahiro Yamada static const unsigned i2c1_muxvals[] = {0, 0};
33ea65c980SMasahiro Yamada static const unsigned i2c2_pins[] = {116, 117};
34ea65c980SMasahiro Yamada static const unsigned i2c2_muxvals[] = {0, 0};
35ea65c980SMasahiro Yamada static const unsigned i2c3_pins[] = {118, 119};
36ea65c980SMasahiro Yamada static const unsigned i2c3_muxvals[] = {0, 0};
37ea65c980SMasahiro Yamada static const unsigned i2c5_pins[] = {87, 88};
38ea65c980SMasahiro Yamada static const unsigned i2c5_muxvals[] = {2, 2};
39ea65c980SMasahiro Yamada static const unsigned i2c5b_pins[] = {196, 197};
40ea65c980SMasahiro Yamada static const unsigned i2c5b_muxvals[] = {2, 2};
41ea65c980SMasahiro Yamada static const unsigned i2c5c_pins[] = {215, 216};
42ea65c980SMasahiro Yamada static const unsigned i2c5c_muxvals[] = {2, 2};
43ea65c980SMasahiro Yamada static const unsigned i2c6_pins[] = {101, 102};
44ea65c980SMasahiro Yamada static const unsigned i2c6_muxvals[] = {2, 2};
45ea65c980SMasahiro Yamada static const unsigned nand_pins[] = {19, 20, 21, 22, 23, 24, 25, 28, 29, 30,
46ea65c980SMasahiro Yamada 				     31, 32, 33, 34, 35};
47ea65c980SMasahiro Yamada static const unsigned nand_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
48ea65c980SMasahiro Yamada 					0, 0};
49ea65c980SMasahiro Yamada static const unsigned nand_cs1_pins[] = {26, 27};
50ea65c980SMasahiro Yamada static const unsigned nand_cs1_muxvals[] = {0, 0};
51ea65c980SMasahiro Yamada static const unsigned sd_pins[] = {250, 251, 252, 253, 254, 255, 256, 257, 258};
52ea65c980SMasahiro Yamada static const unsigned sd_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
53ea65c980SMasahiro Yamada static const unsigned uart0_pins[] = {47, 48};
54ea65c980SMasahiro Yamada static const unsigned uart0_muxvals[] = {0, 0};
55ea65c980SMasahiro Yamada static const unsigned uart0b_pins[] = {227, 228};
56ea65c980SMasahiro Yamada static const unsigned uart0b_muxvals[] = {3, 3};
57ea65c980SMasahiro Yamada static const unsigned uart1_pins[] = {49, 50};
58ea65c980SMasahiro Yamada static const unsigned uart1_muxvals[] = {0, 0};
59ea65c980SMasahiro Yamada static const unsigned uart2_pins[] = {51, 52};
60ea65c980SMasahiro Yamada static const unsigned uart2_muxvals[] = {0, 0};
61ea65c980SMasahiro Yamada static const unsigned uart3_pins[] = {53, 54};
62ea65c980SMasahiro Yamada static const unsigned uart3_muxvals[] = {0, 0};
63ea65c980SMasahiro Yamada static const unsigned usb0_pins[] = {124, 125};
64ea65c980SMasahiro Yamada static const unsigned usb0_muxvals[] = {0, 0};
65ea65c980SMasahiro Yamada static const unsigned usb1_pins[] = {126, 127};
66ea65c980SMasahiro Yamada static const unsigned usb1_muxvals[] = {0, 0};
67ea65c980SMasahiro Yamada static const unsigned usb2_pins[] = {128, 129};
68ea65c980SMasahiro Yamada static const unsigned usb2_muxvals[] = {0, 0};
69ea65c980SMasahiro Yamada 
70*ac13ce49SMasahiro Yamada static const struct uniphier_pinctrl_group uniphier_pro5_groups[] = {
71ea65c980SMasahiro Yamada 	UNIPHIER_PINCTRL_GROUP(emmc),
72ea65c980SMasahiro Yamada 	UNIPHIER_PINCTRL_GROUP(emmc_dat8),
73ea65c980SMasahiro Yamada 	UNIPHIER_PINCTRL_GROUP(i2c0),
74ea65c980SMasahiro Yamada 	UNIPHIER_PINCTRL_GROUP(i2c1),
75ea65c980SMasahiro Yamada 	UNIPHIER_PINCTRL_GROUP(i2c2),
76ea65c980SMasahiro Yamada 	UNIPHIER_PINCTRL_GROUP(i2c3),
77ea65c980SMasahiro Yamada 	UNIPHIER_PINCTRL_GROUP(i2c5),
78ea65c980SMasahiro Yamada 	UNIPHIER_PINCTRL_GROUP(i2c5b),
79ea65c980SMasahiro Yamada 	UNIPHIER_PINCTRL_GROUP(i2c5c),
80ea65c980SMasahiro Yamada 	UNIPHIER_PINCTRL_GROUP(i2c6),
81ea65c980SMasahiro Yamada 	UNIPHIER_PINCTRL_GROUP(nand),
82ea65c980SMasahiro Yamada 	UNIPHIER_PINCTRL_GROUP(nand_cs1),
83ea65c980SMasahiro Yamada 	UNIPHIER_PINCTRL_GROUP(sd),
84ea65c980SMasahiro Yamada 	UNIPHIER_PINCTRL_GROUP(uart0),
85ea65c980SMasahiro Yamada 	UNIPHIER_PINCTRL_GROUP(uart0b),
86ea65c980SMasahiro Yamada 	UNIPHIER_PINCTRL_GROUP(uart1),
87ea65c980SMasahiro Yamada 	UNIPHIER_PINCTRL_GROUP(uart2),
88ea65c980SMasahiro Yamada 	UNIPHIER_PINCTRL_GROUP(uart3),
89ea65c980SMasahiro Yamada 	UNIPHIER_PINCTRL_GROUP(usb0),
90ea65c980SMasahiro Yamada 	UNIPHIER_PINCTRL_GROUP(usb1),
91ea65c980SMasahiro Yamada 	UNIPHIER_PINCTRL_GROUP(usb2),
92ea65c980SMasahiro Yamada };
93ea65c980SMasahiro Yamada 
94*ac13ce49SMasahiro Yamada static const char * const uniphier_pro5_functions[] = {
95ea65c980SMasahiro Yamada 	"emmc",
96ea65c980SMasahiro Yamada 	"i2c0",
97ea65c980SMasahiro Yamada 	"i2c1",
98ea65c980SMasahiro Yamada 	"i2c2",
99ea65c980SMasahiro Yamada 	"i2c3",
100ea65c980SMasahiro Yamada 	"i2c5",
101ea65c980SMasahiro Yamada 	"i2c6",
102ea65c980SMasahiro Yamada 	"nand",
103ea65c980SMasahiro Yamada 	"sd",
104ea65c980SMasahiro Yamada 	"uart0",
105ea65c980SMasahiro Yamada 	"uart1",
106ea65c980SMasahiro Yamada 	"uart2",
107ea65c980SMasahiro Yamada 	"uart3",
108ea65c980SMasahiro Yamada 	"usb0",
109ea65c980SMasahiro Yamada 	"usb1",
110ea65c980SMasahiro Yamada 	"usb2",
111ea65c980SMasahiro Yamada };
112ea65c980SMasahiro Yamada 
113*ac13ce49SMasahiro Yamada static struct uniphier_pinctrl_socdata uniphier_pro5_pinctrl_socdata = {
114*ac13ce49SMasahiro Yamada 	.pins = uniphier_pro5_pins,
115*ac13ce49SMasahiro Yamada 	.pins_count = ARRAY_SIZE(uniphier_pro5_pins),
116*ac13ce49SMasahiro Yamada 	.groups = uniphier_pro5_groups,
117*ac13ce49SMasahiro Yamada 	.groups_count = ARRAY_SIZE(uniphier_pro5_groups),
118*ac13ce49SMasahiro Yamada 	.functions = uniphier_pro5_functions,
119*ac13ce49SMasahiro Yamada 	.functions_count = ARRAY_SIZE(uniphier_pro5_functions),
1208cc92b99SMasahiro Yamada 	.caps = UNIPHIER_PINCTRL_CAPS_DBGMUX_SEPARATE,
121ea65c980SMasahiro Yamada };
122ea65c980SMasahiro Yamada 
123*ac13ce49SMasahiro Yamada static int uniphier_pro5_pinctrl_probe(struct udevice *dev)
124ea65c980SMasahiro Yamada {
125*ac13ce49SMasahiro Yamada 	return uniphier_pinctrl_probe(dev, &uniphier_pro5_pinctrl_socdata);
126ea65c980SMasahiro Yamada }
127ea65c980SMasahiro Yamada 
128*ac13ce49SMasahiro Yamada static const struct udevice_id uniphier_pro5_pinctrl_match[] = {
129ea65c980SMasahiro Yamada 	{ .compatible = "socionext,ph1-pro5-pinctrl" },
130ea65c980SMasahiro Yamada 	{ /* sentinel */ }
131ea65c980SMasahiro Yamada };
132ea65c980SMasahiro Yamada 
133*ac13ce49SMasahiro Yamada U_BOOT_DRIVER(uniphier_pro5_pinctrl) = {
134*ac13ce49SMasahiro Yamada 	.name = "uniphier-pro5-pinctrl",
135ea65c980SMasahiro Yamada 	.id = UCLASS_PINCTRL,
136*ac13ce49SMasahiro Yamada 	.of_match = of_match_ptr(uniphier_pro5_pinctrl_match),
137*ac13ce49SMasahiro Yamada 	.probe = uniphier_pro5_pinctrl_probe,
138ea65c980SMasahiro Yamada 	.remove = uniphier_pinctrl_remove,
139ea65c980SMasahiro Yamada 	.priv_auto_alloc_size = sizeof(struct uniphier_pinctrl_priv),
140ea65c980SMasahiro Yamada 	.ops = &uniphier_pinctrl_ops,
141ea65c980SMasahiro Yamada 	.flags = DM_FLAG_PRE_RELOC,
142ea65c980SMasahiro Yamada };
143