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