blob: cfec877588686d57dfe403226ab9773c8fa1cd54 [file] [log] [blame]
Masahiro Yamadaa39e94c2015-09-11 20:17:37 +09001/*
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
Masahiro Yamada8721b512016-04-21 14:43:10 +090012static const struct uniphier_pinctrl_pin uniphier_pxs2_pins[] = {
Masahiro Yamadaa39e94c2015-09-11 20:17:37 +090013 UNIPHIER_PINCTRL_PIN(113, 0),
14 UNIPHIER_PINCTRL_PIN(114, 0),
15 UNIPHIER_PINCTRL_PIN(115, 0),
16 UNIPHIER_PINCTRL_PIN(116, 0),
17};
18
19static const unsigned emmc_pins[] = {36, 37, 38, 39, 40, 41, 42};
20static const unsigned emmc_muxvals[] = {9, 9, 9, 9, 9, 9, 9};
21static const unsigned emmc_dat8_pins[] = {43, 44, 45, 46};
22static const unsigned emmc_dat8_muxvals[] = {9, 9, 9, 9};
23static const unsigned i2c0_pins[] = {109, 110};
24static const unsigned i2c0_muxvals[] = {8, 8};
25static const unsigned i2c1_pins[] = {111, 112};
26static const unsigned i2c1_muxvals[] = {8, 8};
27static const unsigned i2c2_pins[] = {171, 172};
28static const unsigned i2c2_muxvals[] = {8, 8};
29static const unsigned i2c3_pins[] = {159, 160};
30static const unsigned i2c3_muxvals[] = {8, 8};
31static const unsigned i2c5_pins[] = {183, 184};
32static const unsigned i2c5_muxvals[] = {11, 11};
33static const unsigned i2c6_pins[] = {185, 186};
34static const unsigned i2c6_muxvals[] = {11, 11};
35static const unsigned nand_pins[] = {30, 31, 32, 33, 34, 35, 36, 39, 40, 41,
36 42, 43, 44, 45, 46};
37static const unsigned nand_muxvals[] = {8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
38 8, 8};
39static const unsigned nand_cs1_pins[] = {37, 38};
40static const unsigned nand_cs1_muxvals[] = {8, 8};
41static const unsigned sd_pins[] = {47, 48, 49, 50, 51, 52, 53, 54, 55};
42static const unsigned sd_muxvals[] = {8, 8, 8, 8, 8, 8, 8, 8, 8};
43static const unsigned uart0_pins[] = {217, 218};
44static const unsigned uart0_muxvals[] = {8, 8};
45static const unsigned uart0b_pins[] = {179, 180};
46static const unsigned uart0b_muxvals[] = {10, 10};
47static const unsigned uart1_pins[] = {115, 116};
48static const unsigned uart1_muxvals[] = {8, 8};
49static const unsigned uart2_pins[] = {113, 114};
50static const unsigned uart2_muxvals[] = {8, 8};
51static const unsigned uart3_pins[] = {219, 220};
52static const unsigned uart3_muxvals[] = {8, 8};
53static const unsigned uart3b_pins[] = {181, 182};
54static const unsigned uart3b_muxvals[] = {10, 10};
55static const unsigned usb0_pins[] = {56, 57};
56static const unsigned usb0_muxvals[] = {8, 8};
57static const unsigned usb1_pins[] = {58, 59};
58static const unsigned usb1_muxvals[] = {8, 8};
59static const unsigned usb2_pins[] = {60, 61};
60static const unsigned usb2_muxvals[] = {8, 8};
61static const unsigned usb3_pins[] = {62, 63};
62static const unsigned usb3_muxvals[] = {8, 8};
63
Masahiro Yamada8721b512016-04-21 14:43:10 +090064static const struct uniphier_pinctrl_group uniphier_pxs2_groups[] = {
Masahiro Yamadaa39e94c2015-09-11 20:17:37 +090065 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(i2c5),
72 UNIPHIER_PINCTRL_GROUP(i2c6),
73 UNIPHIER_PINCTRL_GROUP(nand),
74 UNIPHIER_PINCTRL_GROUP(nand_cs1),
75 UNIPHIER_PINCTRL_GROUP(sd),
76 UNIPHIER_PINCTRL_GROUP(uart0),
77 UNIPHIER_PINCTRL_GROUP(uart0b),
78 UNIPHIER_PINCTRL_GROUP(uart1),
79 UNIPHIER_PINCTRL_GROUP(uart2),
80 UNIPHIER_PINCTRL_GROUP(uart3),
81 UNIPHIER_PINCTRL_GROUP(uart3b),
82 UNIPHIER_PINCTRL_GROUP(usb0),
83 UNIPHIER_PINCTRL_GROUP(usb1),
84 UNIPHIER_PINCTRL_GROUP(usb2),
85 UNIPHIER_PINCTRL_GROUP(usb3),
86};
87
Masahiro Yamada8721b512016-04-21 14:43:10 +090088static const char * const uniphier_pxs2_functions[] = {
Masahiro Yamadaa39e94c2015-09-11 20:17:37 +090089 "emmc",
90 "i2c0",
91 "i2c1",
92 "i2c2",
93 "i2c3",
94 "i2c5",
95 "i2c6",
96 "nand",
97 "sd",
98 "uart0",
99 "uart0b",
100 "uart1",
101 "uart2",
102 "uart3",
103 "uart3b",
104 "usb0",
105 "usb1",
106 "usb2",
107 "usb3",
108};
109
Masahiro Yamada8721b512016-04-21 14:43:10 +0900110static struct uniphier_pinctrl_socdata uniphier_pxs2_pinctrl_socdata = {
111 .pins = uniphier_pxs2_pins,
112 .pins_count = ARRAY_SIZE(uniphier_pxs2_pins),
113 .groups = uniphier_pxs2_groups,
114 .groups_count = ARRAY_SIZE(uniphier_pxs2_groups),
115 .functions = uniphier_pxs2_functions,
116 .functions_count = ARRAY_SIZE(uniphier_pxs2_functions),
Masahiro Yamadaa39e94c2015-09-11 20:17:37 +0900117};
118
Masahiro Yamada8721b512016-04-21 14:43:10 +0900119static int uniphier_pxs2_pinctrl_probe(struct udevice *dev)
Masahiro Yamadaa39e94c2015-09-11 20:17:37 +0900120{
Masahiro Yamada8721b512016-04-21 14:43:10 +0900121 return uniphier_pinctrl_probe(dev, &uniphier_pxs2_pinctrl_socdata);
Masahiro Yamadaa39e94c2015-09-11 20:17:37 +0900122}
123
Masahiro Yamada8721b512016-04-21 14:43:10 +0900124static const struct udevice_id uniphier_pxs2_pinctrl_match[] = {
Masahiro Yamadaa39e94c2015-09-11 20:17:37 +0900125 { .compatible = "socionext,proxstream2-pinctrl" },
126 { /* sentinel */ }
127};
128
Masahiro Yamada8721b512016-04-21 14:43:10 +0900129U_BOOT_DRIVER(uniphier_pxs2_pinctrl) = {
130 .name = "uniphier-pxs2-pinctrl",
Masahiro Yamadaa39e94c2015-09-11 20:17:37 +0900131 .id = UCLASS_PINCTRL,
Masahiro Yamada8721b512016-04-21 14:43:10 +0900132 .of_match = of_match_ptr(uniphier_pxs2_pinctrl_match),
133 .probe = uniphier_pxs2_pinctrl_probe,
Masahiro Yamadaa39e94c2015-09-11 20:17:37 +0900134 .remove = uniphier_pinctrl_remove,
135 .priv_auto_alloc_size = sizeof(struct uniphier_pinctrl_priv),
136 .ops = &uniphier_pinctrl_ops,
137};