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,armada-ap806-pinctrl",
		"marvell,a70x0-pinctrl",
		"marvell,a80x0-cp0-pinctrl",
		"marvell,a80x0-cp1-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,armada-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,a70x0-pinctrl",
					     "marvell,a80x0-cp0-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,a80x0-cp1-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>;
			};
		};
	};
}
