xref: /rk3399_rockchip-uboot/drivers/pinctrl/uniphier/pinctrl-uniphier-ld11.c (revision fc9da85c6059fa204498c55c61b7dfa2ebf7fff8)
13379987eSMasahiro Yamada /*
23379987eSMasahiro Yamada  * Copyright (C) 2016 Socionext Inc.
33379987eSMasahiro Yamada  *   Author: Masahiro Yamada <yamada.masahiro@socionext.com>
43379987eSMasahiro Yamada  *
53379987eSMasahiro Yamada  * SPDX-License-Identifier:	GPL-2.0+
63379987eSMasahiro Yamada  */
73379987eSMasahiro Yamada 
83379987eSMasahiro Yamada #include <dm/device.h>
93379987eSMasahiro Yamada #include <dm/pinctrl.h>
103379987eSMasahiro Yamada 
113379987eSMasahiro Yamada #include "pinctrl-uniphier.h"
123379987eSMasahiro Yamada 
133379987eSMasahiro Yamada static const unsigned emmc_pins[] = {18, 19, 20, 21, 22, 23, 24, 25};
145e25b9d5SMasahiro Yamada static const int emmc_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0};
153379987eSMasahiro Yamada static const unsigned emmc_dat8_pins[] = {26, 27, 28, 29};
165e25b9d5SMasahiro Yamada static const int emmc_dat8_muxvals[] = {0, 0, 0, 0};
17*fc9da85cSMasahiro Yamada static const unsigned ether_rmii_pins[] = {6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
18*fc9da85cSMasahiro Yamada 					   16, 17};
19*fc9da85cSMasahiro Yamada static const int ether_rmii_muxvals[] = {4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4};
203379987eSMasahiro Yamada static const unsigned i2c0_pins[] = {63, 64};
215e25b9d5SMasahiro Yamada static const int i2c0_muxvals[] = {0, 0};
223379987eSMasahiro Yamada static const unsigned i2c1_pins[] = {65, 66};
235e25b9d5SMasahiro Yamada static const int i2c1_muxvals[] = {0, 0};
243379987eSMasahiro Yamada static const unsigned i2c3_pins[] = {67, 68};
255e25b9d5SMasahiro Yamada static const int i2c3_muxvals[] = {1, 1};
263379987eSMasahiro Yamada static const unsigned i2c4_pins[] = {61, 62};
275e25b9d5SMasahiro Yamada static const int i2c4_muxvals[] = {1, 1};
283379987eSMasahiro Yamada static const unsigned nand_pins[] = {3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
293379987eSMasahiro Yamada 				     15, 16, 17};
305e25b9d5SMasahiro Yamada static const int nand_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
313379987eSMasahiro Yamada static const unsigned uart0_pins[] = {54, 55};
325e25b9d5SMasahiro Yamada static const int uart0_muxvals[] = {0, 0};
333379987eSMasahiro Yamada static const unsigned uart1_pins[] = {58, 59};
345e25b9d5SMasahiro Yamada static const int uart1_muxvals[] = {1, 1};
353379987eSMasahiro Yamada static const unsigned uart2_pins[] = {90, 91};
365e25b9d5SMasahiro Yamada static const int uart2_muxvals[] = {1, 1};
373379987eSMasahiro Yamada static const unsigned uart3_pins[] = {94, 95};
385e25b9d5SMasahiro Yamada static const int uart3_muxvals[] = {1, 1};
393379987eSMasahiro Yamada static const unsigned usb0_pins[] = {46, 47};
405e25b9d5SMasahiro Yamada static const int usb0_muxvals[] = {0, 0};
413379987eSMasahiro Yamada static const unsigned usb1_pins[] = {48, 49};
425e25b9d5SMasahiro Yamada static const int usb1_muxvals[] = {0, 0};
433379987eSMasahiro Yamada static const unsigned usb2_pins[] = {50, 51};
445e25b9d5SMasahiro Yamada static const int usb2_muxvals[] = {0, 0};
453379987eSMasahiro Yamada 
463379987eSMasahiro Yamada static const struct uniphier_pinctrl_group uniphier_ld11_groups[] = {
473379987eSMasahiro Yamada 	UNIPHIER_PINCTRL_GROUP(emmc),
483379987eSMasahiro Yamada 	UNIPHIER_PINCTRL_GROUP(emmc_dat8),
49*fc9da85cSMasahiro Yamada 	UNIPHIER_PINCTRL_GROUP(ether_rmii),
503379987eSMasahiro Yamada 	UNIPHIER_PINCTRL_GROUP(i2c0),
513379987eSMasahiro Yamada 	UNIPHIER_PINCTRL_GROUP(i2c1),
523379987eSMasahiro Yamada 	UNIPHIER_PINCTRL_GROUP(i2c3),
533379987eSMasahiro Yamada 	UNIPHIER_PINCTRL_GROUP(i2c4),
543379987eSMasahiro Yamada 	UNIPHIER_PINCTRL_GROUP(nand),
5564c1cc4cSMasahiro Yamada 	UNIPHIER_PINCTRL_GROUP_SPL(uart0),
5664c1cc4cSMasahiro Yamada 	UNIPHIER_PINCTRL_GROUP_SPL(uart1),
5764c1cc4cSMasahiro Yamada 	UNIPHIER_PINCTRL_GROUP_SPL(uart2),
5864c1cc4cSMasahiro Yamada 	UNIPHIER_PINCTRL_GROUP_SPL(uart3),
593379987eSMasahiro Yamada 	UNIPHIER_PINCTRL_GROUP(usb0),
603379987eSMasahiro Yamada 	UNIPHIER_PINCTRL_GROUP(usb1),
613379987eSMasahiro Yamada 	UNIPHIER_PINCTRL_GROUP(usb2),
623379987eSMasahiro Yamada };
633379987eSMasahiro Yamada 
643379987eSMasahiro Yamada static const char * const uniphier_ld11_functions[] = {
6564c1cc4cSMasahiro Yamada 	UNIPHIER_PINMUX_FUNCTION(emmc),
66*fc9da85cSMasahiro Yamada 	UNIPHIER_PINMUX_FUNCTION(ether_rmii),
6764c1cc4cSMasahiro Yamada 	UNIPHIER_PINMUX_FUNCTION(i2c0),
6864c1cc4cSMasahiro Yamada 	UNIPHIER_PINMUX_FUNCTION(i2c1),
6964c1cc4cSMasahiro Yamada 	UNIPHIER_PINMUX_FUNCTION(i2c3),
7064c1cc4cSMasahiro Yamada 	UNIPHIER_PINMUX_FUNCTION(i2c4),
7164c1cc4cSMasahiro Yamada 	UNIPHIER_PINMUX_FUNCTION(nand),
7264c1cc4cSMasahiro Yamada 	UNIPHIER_PINMUX_FUNCTION_SPL(uart0),
7364c1cc4cSMasahiro Yamada 	UNIPHIER_PINMUX_FUNCTION_SPL(uart1),
7464c1cc4cSMasahiro Yamada 	UNIPHIER_PINMUX_FUNCTION_SPL(uart2),
7564c1cc4cSMasahiro Yamada 	UNIPHIER_PINMUX_FUNCTION_SPL(uart3),
7664c1cc4cSMasahiro Yamada 	UNIPHIER_PINMUX_FUNCTION(usb0),
7764c1cc4cSMasahiro Yamada 	UNIPHIER_PINMUX_FUNCTION(usb1),
7864c1cc4cSMasahiro Yamada 	UNIPHIER_PINMUX_FUNCTION(usb2),
793379987eSMasahiro Yamada };
803379987eSMasahiro Yamada 
813379987eSMasahiro Yamada static struct uniphier_pinctrl_socdata uniphier_ld11_pinctrl_socdata = {
823379987eSMasahiro Yamada 	.groups = uniphier_ld11_groups,
833379987eSMasahiro Yamada 	.groups_count = ARRAY_SIZE(uniphier_ld11_groups),
843379987eSMasahiro Yamada 	.functions = uniphier_ld11_functions,
853379987eSMasahiro Yamada 	.functions_count = ARRAY_SIZE(uniphier_ld11_functions),
863379987eSMasahiro Yamada 	.caps = UNIPHIER_PINCTRL_CAPS_PERPIN_IECTRL,
873379987eSMasahiro Yamada };
883379987eSMasahiro Yamada 
893379987eSMasahiro Yamada static int uniphier_ld11_pinctrl_probe(struct udevice *dev)
903379987eSMasahiro Yamada {
913379987eSMasahiro Yamada 	return uniphier_pinctrl_probe(dev, &uniphier_ld11_pinctrl_socdata);
923379987eSMasahiro Yamada }
933379987eSMasahiro Yamada 
943379987eSMasahiro Yamada static const struct udevice_id uniphier_ld11_pinctrl_match[] = {
953379987eSMasahiro Yamada 	{ .compatible = "socionext,uniphier-ld11-pinctrl" },
963379987eSMasahiro Yamada 	{ /* sentinel */ }
973379987eSMasahiro Yamada };
983379987eSMasahiro Yamada 
993379987eSMasahiro Yamada U_BOOT_DRIVER(uniphier_ld11_pinctrl) = {
1003379987eSMasahiro Yamada 	.name = "uniphier-ld11-pinctrl",
1013379987eSMasahiro Yamada 	.id = UCLASS_PINCTRL,
1023379987eSMasahiro Yamada 	.of_match = of_match_ptr(uniphier_ld11_pinctrl_match),
1033379987eSMasahiro Yamada 	.probe = uniphier_ld11_pinctrl_probe,
1043379987eSMasahiro Yamada 	.remove = uniphier_pinctrl_remove,
1053379987eSMasahiro Yamada 	.priv_auto_alloc_size = sizeof(struct uniphier_pinctrl_priv),
1063379987eSMasahiro Yamada 	.ops = &uniphier_pinctrl_ops,
1073379987eSMasahiro Yamada };
108