114 lines
3.6 KiB
Plaintext
114 lines
3.6 KiB
Plaintext
|
The pinctrl driver enables Marvell Armada 8K SoCs to configure the multi-purpose
|
||
|
pins (mpp) to a specific function.
|
||
|
A Marvell SoC pin configuration node is a node of a group of pins which can
|
||
|
be used for a specific device or function. Each node requires one or more
|
||
|
mpp pins or group of pins and a mpp function common to all pins.
|
||
|
|
||
|
Required properties for the pinctrl driver:
|
||
|
- compatible: "marvell,mvebu-pinctrl",
|
||
|
"marvell,ap806-pinctrl",
|
||
|
"marvell,armada-7k-pinctrl",
|
||
|
"marvell,armada-8k-cpm-pinctrl",
|
||
|
"marvell,armada-8k-cps-pinctrl"
|
||
|
- bank-name: A string defining the pinc controller bank name
|
||
|
- reg: A pair of values defining the pin controller base address
|
||
|
and the address space
|
||
|
- pin-count: Numeric value defining the amount of multi purpose pins
|
||
|
included in this bank
|
||
|
- max-func: Numeric value defining the maximum function value for
|
||
|
pins in this bank
|
||
|
- pin-func: Array of pin function values for every pin in the bank.
|
||
|
When the function value for a specific pin equal 0xFF,
|
||
|
the pin configuration is skipped and a default function
|
||
|
value is used for this pin.
|
||
|
|
||
|
The A8K is a hybrid SoC that contains several silicon dies interconnected in
|
||
|
a single package. Each such die may have a separate pin controller.
|
||
|
|
||
|
Example:
|
||
|
/ {
|
||
|
ap806 {
|
||
|
config-space {
|
||
|
pinctl: pinctl@6F4000 {
|
||
|
compatible = "marvell,mvebu-pinctrl",
|
||
|
"marvell,ap806-pinctrl";
|
||
|
bank-name ="apn-806";
|
||
|
reg = <0x6F4000 0x10>;
|
||
|
pin-count = <20>;
|
||
|
max-func = <3>;
|
||
|
/* MPP Bus:
|
||
|
* SPI0 [0-3]
|
||
|
* I2C0 [4-5]
|
||
|
* UART0 [11,19]
|
||
|
*/
|
||
|
/* 0 1 2 3 4 5 6 7 8 9 */
|
||
|
pin-func = < 3 3 3 3 3 3 0 0 0 0
|
||
|
0 3 0 0 0 0 0 0 0 3>;
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
|
||
|
cp110-master {
|
||
|
config-space {
|
||
|
cpm_pinctl: pinctl@44000 {
|
||
|
compatible = "marvell,mvebu-pinctrl",
|
||
|
"marvell,armada-7k-pinctrl",
|
||
|
"marvell,armada-8k-cpm-pinctrl";
|
||
|
bank-name ="cp0-110";
|
||
|
reg = <0x440000 0x20>;
|
||
|
pin-count = <63>;
|
||
|
max-func = <0xf>;
|
||
|
/* MPP Bus:
|
||
|
* [0-31] = 0xff: Keep default CP0_shared_pins:
|
||
|
* [11] CLKOUT_MPP_11 (out)
|
||
|
* [23] LINK_RD_IN_CP2CP (in)
|
||
|
* [25] CLKOUT_MPP_25 (out)
|
||
|
* [29] AVS_FB_IN_CP2CP (in)
|
||
|
* [32,34] SMI
|
||
|
* [31] GPIO: push button/Wake
|
||
|
* [35-36] GPIO
|
||
|
* [37-38] I2C
|
||
|
* [40-41] SATA[0/1]_PRESENT_ACTIVEn
|
||
|
* [42-43] XSMI
|
||
|
* [44-55] RGMII1
|
||
|
* [56-62] SD
|
||
|
*/
|
||
|
/* 0 1 2 3 4 5 6 7 8 9 */
|
||
|
pin-func = < 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff
|
||
|
0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff
|
||
|
0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff
|
||
|
0xff 0 7 0 7 0 0 2 2 0
|
||
|
0 0 8 8 1 1 1 1 1 1
|
||
|
1 1 1 1 1 1 0xE 0xE 0xE 0xE
|
||
|
0xE 0xE 0xE>;
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
|
||
|
cp110-slave {
|
||
|
config-space {
|
||
|
cps_pinctl: pinctl@44000 {
|
||
|
compatible = "marvell,mvebu-pinctrl",
|
||
|
"marvell,armada-8k-cps-pinctrl";
|
||
|
bank-name ="cp1-110";
|
||
|
reg = <0x440000 0x20>;
|
||
|
pin-count = <63>;
|
||
|
max-func = <0xf>;
|
||
|
/* MPP Bus:
|
||
|
* [0-11] RGMII0
|
||
|
* [27,31] GE_MDIO/MDC
|
||
|
* [32-62] = 0xff: Keep default CP1_shared_pins:
|
||
|
*/
|
||
|
/* 0 1 2 3 4 5 6 7 8 9 */
|
||
|
pin-func = < 0x3 0x3 0x3 0x3 0x3 0x3 0x3 0x3 0x3 0x3
|
||
|
0x3 0x3 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff
|
||
|
0xff 0xff 0xff 0xff 0xff 0xff 0xff 0x8 0xff 0xff
|
||
|
0xff 0x8 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff
|
||
|
0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff
|
||
|
0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff
|
||
|
0xff 0xff 0xff>;
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
}
|