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