xref: /rk3399_rockchip-uboot/drivers/pinctrl/uniphier/pinctrl-uniphier-pro4.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_pro4_pins[] = {
13ea65c980SMasahiro Yamada };
14ea65c980SMasahiro Yamada 
15ea65c980SMasahiro Yamada static const unsigned emmc_pins[] = {40, 41, 42, 43, 51, 52, 53};
16ea65c980SMasahiro Yamada static const unsigned emmc_muxvals[] = {1, 1, 1, 1, 1, 1, 1};
17ea65c980SMasahiro Yamada static const unsigned emmc_dat8_pins[] = {44, 45, 46, 47};
18ea65c980SMasahiro Yamada static const unsigned emmc_dat8_muxvals[] = {1, 1, 1, 1};
19ea65c980SMasahiro Yamada static const unsigned i2c0_pins[] = {142, 143};
20ea65c980SMasahiro Yamada static const unsigned i2c0_muxvals[] = {0, 0};
21ea65c980SMasahiro Yamada static const unsigned i2c1_pins[] = {144, 145};
22ea65c980SMasahiro Yamada static const unsigned i2c1_muxvals[] = {0, 0};
23ea65c980SMasahiro Yamada static const unsigned i2c2_pins[] = {146, 147};
24ea65c980SMasahiro Yamada static const unsigned i2c2_muxvals[] = {0, 0};
25ea65c980SMasahiro Yamada static const unsigned i2c3_pins[] = {148, 149};
26ea65c980SMasahiro Yamada static const unsigned i2c3_muxvals[] = {0, 0};
27ea65c980SMasahiro Yamada static const unsigned i2c6_pins[] = {308, 309};
28ea65c980SMasahiro Yamada static const unsigned i2c6_muxvals[] = {6, 6};
29ea65c980SMasahiro Yamada static const unsigned nand_pins[] = {40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
30ea65c980SMasahiro Yamada 				     50, 51, 52, 53, 54};
31ea65c980SMasahiro Yamada static const unsigned nand_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
32ea65c980SMasahiro Yamada 					0, 0};
33ea65c980SMasahiro Yamada static const unsigned nand_cs1_pins[] = {131, 132};
34ea65c980SMasahiro Yamada static const unsigned nand_cs1_muxvals[] = {1, 1};
35ea65c980SMasahiro Yamada static const unsigned sd_pins[] = {150, 151, 152, 153, 154, 155, 156, 157, 158};
36ea65c980SMasahiro Yamada static const unsigned sd_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
37ea65c980SMasahiro Yamada static const unsigned sd1_pins[] = {319, 320, 321, 322, 323, 324, 325, 326,
38ea65c980SMasahiro Yamada 				    327};
39ea65c980SMasahiro Yamada static const unsigned sd1_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
40ea65c980SMasahiro Yamada static const unsigned uart0_pins[] = {127, 128};
41ea65c980SMasahiro Yamada static const unsigned uart0_muxvals[] = {0, 0};
42ea65c980SMasahiro Yamada static const unsigned uart1_pins[] = {129, 130};
43ea65c980SMasahiro Yamada static const unsigned uart1_muxvals[] = {0, 0};
44ea65c980SMasahiro Yamada static const unsigned uart2_pins[] = {131, 132};
45ea65c980SMasahiro Yamada static const unsigned uart2_muxvals[] = {0, 0};
46ea65c980SMasahiro Yamada static const unsigned uart3_pins[] = {88, 89};
47ea65c980SMasahiro Yamada static const unsigned uart3_muxvals[] = {2, 2};
48ea65c980SMasahiro Yamada static const unsigned usb0_pins[] = {180, 181};
49ea65c980SMasahiro Yamada static const unsigned usb0_muxvals[] = {0, 0};
50ea65c980SMasahiro Yamada static const unsigned usb1_pins[] = {182, 183};
51ea65c980SMasahiro Yamada static const unsigned usb1_muxvals[] = {0, 0};
52ea65c980SMasahiro Yamada static const unsigned usb2_pins[] = {184, 185};
53ea65c980SMasahiro Yamada static const unsigned usb2_muxvals[] = {0, 0};
54ea65c980SMasahiro Yamada static const unsigned usb3_pins[] = {186, 187};
55ea65c980SMasahiro Yamada static const unsigned usb3_muxvals[] = {0, 0};
56ea65c980SMasahiro Yamada 
57*ac13ce49SMasahiro Yamada static const struct uniphier_pinctrl_group uniphier_pro4_groups[] = {
58ea65c980SMasahiro Yamada 	UNIPHIER_PINCTRL_GROUP(emmc),
59ea65c980SMasahiro Yamada 	UNIPHIER_PINCTRL_GROUP(emmc_dat8),
60ea65c980SMasahiro Yamada 	UNIPHIER_PINCTRL_GROUP(i2c0),
61ea65c980SMasahiro Yamada 	UNIPHIER_PINCTRL_GROUP(i2c1),
62ea65c980SMasahiro Yamada 	UNIPHIER_PINCTRL_GROUP(i2c2),
63ea65c980SMasahiro Yamada 	UNIPHIER_PINCTRL_GROUP(i2c3),
64ea65c980SMasahiro Yamada 	UNIPHIER_PINCTRL_GROUP(i2c6),
65ea65c980SMasahiro Yamada 	UNIPHIER_PINCTRL_GROUP(nand),
66ea65c980SMasahiro Yamada 	UNIPHIER_PINCTRL_GROUP(nand_cs1),
67ea65c980SMasahiro Yamada 	UNIPHIER_PINCTRL_GROUP(sd),
68ea65c980SMasahiro Yamada 	UNIPHIER_PINCTRL_GROUP(sd1),
69ea65c980SMasahiro Yamada 	UNIPHIER_PINCTRL_GROUP(uart0),
70ea65c980SMasahiro Yamada 	UNIPHIER_PINCTRL_GROUP(uart1),
71ea65c980SMasahiro Yamada 	UNIPHIER_PINCTRL_GROUP(uart2),
72ea65c980SMasahiro Yamada 	UNIPHIER_PINCTRL_GROUP(uart3),
73ea65c980SMasahiro Yamada 	UNIPHIER_PINCTRL_GROUP(usb0),
74ea65c980SMasahiro Yamada 	UNIPHIER_PINCTRL_GROUP(usb1),
75ea65c980SMasahiro Yamada 	UNIPHIER_PINCTRL_GROUP(usb2),
76ea65c980SMasahiro Yamada 	UNIPHIER_PINCTRL_GROUP(usb3),
77ea65c980SMasahiro Yamada };
78ea65c980SMasahiro Yamada 
79*ac13ce49SMasahiro Yamada static const char * const uniphier_pro4_functions[] = {
80ea65c980SMasahiro Yamada 	"emmc",
81ea65c980SMasahiro Yamada 	"i2c0",
82ea65c980SMasahiro Yamada 	"i2c1",
83ea65c980SMasahiro Yamada 	"i2c2",
84ea65c980SMasahiro Yamada 	"i2c3",
85ea65c980SMasahiro Yamada 	"i2c6",
86ea65c980SMasahiro Yamada 	"nand",
87ea65c980SMasahiro Yamada 	"sd",
88ea65c980SMasahiro Yamada 	"sd1",
89ea65c980SMasahiro Yamada 	"uart0",
90ea65c980SMasahiro Yamada 	"uart1",
91ea65c980SMasahiro Yamada 	"uart2",
92ea65c980SMasahiro Yamada 	"uart3",
93ea65c980SMasahiro Yamada 	"usb0",
94ea65c980SMasahiro Yamada 	"usb1",
95ea65c980SMasahiro Yamada 	"usb2",
96ea65c980SMasahiro Yamada 	"usb3",
97ea65c980SMasahiro Yamada };
98ea65c980SMasahiro Yamada 
99*ac13ce49SMasahiro Yamada static struct uniphier_pinctrl_socdata uniphier_pro4_pinctrl_socdata = {
100*ac13ce49SMasahiro Yamada 	.pins = uniphier_pro4_pins,
101*ac13ce49SMasahiro Yamada 	.pins_count = ARRAY_SIZE(uniphier_pro4_pins),
102*ac13ce49SMasahiro Yamada 	.groups = uniphier_pro4_groups,
103*ac13ce49SMasahiro Yamada 	.groups_count = ARRAY_SIZE(uniphier_pro4_groups),
104*ac13ce49SMasahiro Yamada 	.functions = uniphier_pro4_functions,
105*ac13ce49SMasahiro Yamada 	.functions_count = ARRAY_SIZE(uniphier_pro4_functions),
1068cc92b99SMasahiro Yamada 	.caps = UNIPHIER_PINCTRL_CAPS_DBGMUX_SEPARATE,
107ea65c980SMasahiro Yamada };
108ea65c980SMasahiro Yamada 
109*ac13ce49SMasahiro Yamada static int uniphier_pro4_pinctrl_probe(struct udevice *dev)
110ea65c980SMasahiro Yamada {
111*ac13ce49SMasahiro Yamada 	return uniphier_pinctrl_probe(dev, &uniphier_pro4_pinctrl_socdata);
112ea65c980SMasahiro Yamada }
113ea65c980SMasahiro Yamada 
114*ac13ce49SMasahiro Yamada static const struct udevice_id uniphier_pro4_pinctrl_match[] = {
115ea65c980SMasahiro Yamada 	{ .compatible = "socionext,ph1-pro4-pinctrl" },
116ea65c980SMasahiro Yamada 	{ /* sentinel */ }
117ea65c980SMasahiro Yamada };
118ea65c980SMasahiro Yamada 
119*ac13ce49SMasahiro Yamada U_BOOT_DRIVER(uniphier_pro4_pinctrl) = {
120*ac13ce49SMasahiro Yamada 	.name = "uniphier-pro4-pinctrl",
121ea65c980SMasahiro Yamada 	.id = UCLASS_PINCTRL,
122*ac13ce49SMasahiro Yamada 	.of_match = of_match_ptr(uniphier_pro4_pinctrl_match),
123*ac13ce49SMasahiro Yamada 	.probe = uniphier_pro4_pinctrl_probe,
124ea65c980SMasahiro Yamada 	.remove = uniphier_pinctrl_remove,
125ea65c980SMasahiro Yamada 	.priv_auto_alloc_size = sizeof(struct uniphier_pinctrl_priv),
126ea65c980SMasahiro Yamada 	.ops = &uniphier_pinctrl_ops,
127ea65c980SMasahiro Yamada 	.flags = DM_FLAG_PRE_RELOC,
128ea65c980SMasahiro Yamada };
129