blob: 1fc1bc66456a0062c3c69275f9979c77736cd7d1 [file] [log] [blame]
Konstantin Porotchkinaed83152016-12-08 12:22:29 +02001The pinctrl driver enables Marvell Armada 8K SoCs to configure the multi-purpose
2pins (mpp) to a specific function.
3A Marvell SoC pin configuration node is a node of a group of pins which can
4be used for a specific device or function. Each node requires one or more
5mpp pins or group of pins and a mpp function common to all pins.
6
7Required properties for the pinctrl driver:
8- compatible: "marvell,mvebu-pinctrl",
Evan Wang14143862018-05-25 14:20:51 +08009 "marvell,ap806-pinctrl",
10 "marvell,armada-7k-pinctrl",
11 "marvell,armada-8k-cpm-pinctrl",
12 "marvell,armada-8k-cps-pinctrl"
Konstantin Porotchkinaed83152016-12-08 12:22:29 +020013- bank-name: A string defining the pinc controller bank name
14- reg: A pair of values defining the pin controller base address
15 and the address space
16- pin-count: Numeric value defining the amount of multi purpose pins
17 included in this bank
18- max-func: Numeric value defining the maximum function value for
19 pins in this bank
20- pin-func: Array of pin function values for every pin in the bank.
21 When the function value for a specific pin equal 0xFF,
22 the pin configuration is skipped and a default function
23 value is used for this pin.
24
25The A8K is a hybrid SoC that contains several silicon dies interconnected in
26a single package. Each such die may have a separate pin controller.
27
28Example:
29/ {
30 ap806 {
31 config-space {
32 pinctl: pinctl@6F4000 {
33 compatible = "marvell,mvebu-pinctrl",
Evan Wang14143862018-05-25 14:20:51 +080034 "marvell,ap806-pinctrl";
Konstantin Porotchkinaed83152016-12-08 12:22:29 +020035 bank-name ="apn-806";
36 reg = <0x6F4000 0x10>;
37 pin-count = <20>;
38 max-func = <3>;
39 /* MPP Bus:
Konstantin Porotchkinff80bd72016-12-08 12:22:30 +020040 * SPI0 [0-3]
41 * I2C0 [4-5]
42 * UART0 [11,19]
43 */
Konstantin Porotchkinaed83152016-12-08 12:22:29 +020044 /* 0 1 2 3 4 5 6 7 8 9 */
45 pin-func = < 3 3 3 3 3 3 0 0 0 0
46 0 3 0 0 0 0 0 0 0 3>;
47 };
48 };
49 };
50
51 cp110-master {
52 config-space {
53 cpm_pinctl: pinctl@44000 {
54 compatible = "marvell,mvebu-pinctrl",
Evan Wang14143862018-05-25 14:20:51 +080055 "marvell,armada-7k-pinctrl",
56 "marvell,armada-8k-cpm-pinctrl";
Konstantin Porotchkinaed83152016-12-08 12:22:29 +020057 bank-name ="cp0-110";
58 reg = <0x440000 0x20>;
59 pin-count = <63>;
60 max-func = <0xf>;
61 /* MPP Bus:
Konstantin Porotchkinff80bd72016-12-08 12:22:30 +020062 * [0-31] = 0xff: Keep default CP0_shared_pins:
63 * [11] CLKOUT_MPP_11 (out)
64 * [23] LINK_RD_IN_CP2CP (in)
65 * [25] CLKOUT_MPP_25 (out)
66 * [29] AVS_FB_IN_CP2CP (in)
67 * [32,34] SMI
68 * [31] GPIO: push button/Wake
69 * [35-36] GPIO
70 * [37-38] I2C
71 * [40-41] SATA[0/1]_PRESENT_ACTIVEn
72 * [42-43] XSMI
73 * [44-55] RGMII1
74 * [56-62] SD
75 */
Konstantin Porotchkinaed83152016-12-08 12:22:29 +020076 /* 0 1 2 3 4 5 6 7 8 9 */
77 pin-func = < 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff
78 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff
79 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff
80 0xff 0 7 0 7 0 0 2 2 0
81 0 0 8 8 1 1 1 1 1 1
82 1 1 1 1 1 1 0xE 0xE 0xE 0xE
83 0xE 0xE 0xE>;
84 };
85 };
86 };
87
88 cp110-slave {
89 config-space {
90 cps_pinctl: pinctl@44000 {
91 compatible = "marvell,mvebu-pinctrl",
Evan Wang14143862018-05-25 14:20:51 +080092 "marvell,armada-8k-cps-pinctrl";
Konstantin Porotchkinaed83152016-12-08 12:22:29 +020093 bank-name ="cp1-110";
94 reg = <0x440000 0x20>;
95 pin-count = <63>;
96 max-func = <0xf>;
97 /* MPP Bus:
Konstantin Porotchkinff80bd72016-12-08 12:22:30 +020098 * [0-11] RGMII0
99 * [27,31] GE_MDIO/MDC
100 * [32-62] = 0xff: Keep default CP1_shared_pins:
101 */
Konstantin Porotchkinaed83152016-12-08 12:22:29 +0200102 /* 0 1 2 3 4 5 6 7 8 9 */
103 pin-func = < 0x3 0x3 0x3 0x3 0x3 0x3 0x3 0x3 0x3 0x3
104 0x3 0x3 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff
105 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0x8 0xff 0xff
106 0xff 0x8 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff
107 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff
108 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff
109 0xff 0xff 0xff>;
110 };
111 };
112 };
113}