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