1*4882a593SmuzhiyunAtheros AR9331 built-in switch 2*4882a593Smuzhiyun============================= 3*4882a593Smuzhiyun 4*4882a593SmuzhiyunIt is a switch built-in to Atheros AR9331 WiSoC and addressable over internal 5*4882a593SmuzhiyunMDIO bus. All PHYs are built-in as well. 6*4882a593Smuzhiyun 7*4882a593SmuzhiyunRequired properties: 8*4882a593Smuzhiyun 9*4882a593Smuzhiyun - compatible: should be: "qca,ar9331-switch" 10*4882a593Smuzhiyun - reg: Address on the MII bus for the switch. 11*4882a593Smuzhiyun - resets : Must contain an entry for each entry in reset-names. 12*4882a593Smuzhiyun - reset-names : Must include the following entries: "switch" 13*4882a593Smuzhiyun - interrupt-parent: Phandle to the parent interrupt controller 14*4882a593Smuzhiyun - interrupts: IRQ line for the switch 15*4882a593Smuzhiyun - interrupt-controller: Indicates the switch is itself an interrupt 16*4882a593Smuzhiyun controller. This is used for the PHY interrupts. 17*4882a593Smuzhiyun - #interrupt-cells: must be 1 18*4882a593Smuzhiyun - mdio: Container of PHY and devices on the switches MDIO bus. 19*4882a593Smuzhiyun 20*4882a593SmuzhiyunSee Documentation/devicetree/bindings/net/dsa/dsa.txt for a list of additional 21*4882a593Smuzhiyunrequired and optional properties. 22*4882a593SmuzhiyunExamples: 23*4882a593Smuzhiyun 24*4882a593Smuzhiyuneth0: ethernet@19000000 { 25*4882a593Smuzhiyun compatible = "qca,ar9330-eth"; 26*4882a593Smuzhiyun reg = <0x19000000 0x200>; 27*4882a593Smuzhiyun interrupts = <4>; 28*4882a593Smuzhiyun 29*4882a593Smuzhiyun resets = <&rst 9>, <&rst 22>; 30*4882a593Smuzhiyun reset-names = "mac", "mdio"; 31*4882a593Smuzhiyun clocks = <&pll ATH79_CLK_AHB>, <&pll ATH79_CLK_AHB>; 32*4882a593Smuzhiyun clock-names = "eth", "mdio"; 33*4882a593Smuzhiyun 34*4882a593Smuzhiyun phy-mode = "mii"; 35*4882a593Smuzhiyun phy-handle = <&phy_port4>; 36*4882a593Smuzhiyun}; 37*4882a593Smuzhiyun 38*4882a593Smuzhiyuneth1: ethernet@1a000000 { 39*4882a593Smuzhiyun compatible = "qca,ar9330-eth"; 40*4882a593Smuzhiyun reg = <0x1a000000 0x200>; 41*4882a593Smuzhiyun interrupts = <5>; 42*4882a593Smuzhiyun resets = <&rst 13>, <&rst 23>; 43*4882a593Smuzhiyun reset-names = "mac", "mdio"; 44*4882a593Smuzhiyun clocks = <&pll ATH79_CLK_AHB>, <&pll ATH79_CLK_AHB>; 45*4882a593Smuzhiyun clock-names = "eth", "mdio"; 46*4882a593Smuzhiyun 47*4882a593Smuzhiyun phy-mode = "gmii"; 48*4882a593Smuzhiyun 49*4882a593Smuzhiyun fixed-link { 50*4882a593Smuzhiyun speed = <1000>; 51*4882a593Smuzhiyun full-duplex; 52*4882a593Smuzhiyun }; 53*4882a593Smuzhiyun 54*4882a593Smuzhiyun mdio { 55*4882a593Smuzhiyun #address-cells = <1>; 56*4882a593Smuzhiyun #size-cells = <0>; 57*4882a593Smuzhiyun 58*4882a593Smuzhiyun switch10: switch@10 { 59*4882a593Smuzhiyun #address-cells = <1>; 60*4882a593Smuzhiyun #size-cells = <0>; 61*4882a593Smuzhiyun 62*4882a593Smuzhiyun compatible = "qca,ar9331-switch"; 63*4882a593Smuzhiyun reg = <0x10>; 64*4882a593Smuzhiyun resets = <&rst 8>; 65*4882a593Smuzhiyun reset-names = "switch"; 66*4882a593Smuzhiyun 67*4882a593Smuzhiyun interrupt-parent = <&miscintc>; 68*4882a593Smuzhiyun interrupts = <12>; 69*4882a593Smuzhiyun 70*4882a593Smuzhiyun interrupt-controller; 71*4882a593Smuzhiyun #interrupt-cells = <1>; 72*4882a593Smuzhiyun 73*4882a593Smuzhiyun ports { 74*4882a593Smuzhiyun #address-cells = <1>; 75*4882a593Smuzhiyun #size-cells = <0>; 76*4882a593Smuzhiyun 77*4882a593Smuzhiyun switch_port0: port@0 { 78*4882a593Smuzhiyun reg = <0x0>; 79*4882a593Smuzhiyun label = "cpu"; 80*4882a593Smuzhiyun ethernet = <ð1>; 81*4882a593Smuzhiyun 82*4882a593Smuzhiyun phy-mode = "gmii"; 83*4882a593Smuzhiyun 84*4882a593Smuzhiyun fixed-link { 85*4882a593Smuzhiyun speed = <1000>; 86*4882a593Smuzhiyun full-duplex; 87*4882a593Smuzhiyun }; 88*4882a593Smuzhiyun }; 89*4882a593Smuzhiyun 90*4882a593Smuzhiyun switch_port1: port@1 { 91*4882a593Smuzhiyun reg = <0x1>; 92*4882a593Smuzhiyun phy-handle = <&phy_port0>; 93*4882a593Smuzhiyun phy-mode = "internal"; 94*4882a593Smuzhiyun }; 95*4882a593Smuzhiyun 96*4882a593Smuzhiyun switch_port2: port@2 { 97*4882a593Smuzhiyun reg = <0x2>; 98*4882a593Smuzhiyun phy-handle = <&phy_port1>; 99*4882a593Smuzhiyun phy-mode = "internal"; 100*4882a593Smuzhiyun }; 101*4882a593Smuzhiyun 102*4882a593Smuzhiyun switch_port3: port@3 { 103*4882a593Smuzhiyun reg = <0x3>; 104*4882a593Smuzhiyun phy-handle = <&phy_port2>; 105*4882a593Smuzhiyun phy-mode = "internal"; 106*4882a593Smuzhiyun }; 107*4882a593Smuzhiyun 108*4882a593Smuzhiyun switch_port4: port@4 { 109*4882a593Smuzhiyun reg = <0x4>; 110*4882a593Smuzhiyun phy-handle = <&phy_port3>; 111*4882a593Smuzhiyun phy-mode = "internal"; 112*4882a593Smuzhiyun }; 113*4882a593Smuzhiyun }; 114*4882a593Smuzhiyun 115*4882a593Smuzhiyun mdio { 116*4882a593Smuzhiyun #address-cells = <1>; 117*4882a593Smuzhiyun #size-cells = <0>; 118*4882a593Smuzhiyun 119*4882a593Smuzhiyun interrupt-parent = <&switch10>; 120*4882a593Smuzhiyun 121*4882a593Smuzhiyun phy_port0: phy@0 { 122*4882a593Smuzhiyun reg = <0x0>; 123*4882a593Smuzhiyun interrupts = <0>; 124*4882a593Smuzhiyun }; 125*4882a593Smuzhiyun 126*4882a593Smuzhiyun phy_port1: phy@1 { 127*4882a593Smuzhiyun reg = <0x1>; 128*4882a593Smuzhiyun interrupts = <0>; 129*4882a593Smuzhiyun }; 130*4882a593Smuzhiyun 131*4882a593Smuzhiyun phy_port2: phy@2 { 132*4882a593Smuzhiyun reg = <0x2>; 133*4882a593Smuzhiyun interrupts = <0>; 134*4882a593Smuzhiyun }; 135*4882a593Smuzhiyun 136*4882a593Smuzhiyun phy_port3: phy@3 { 137*4882a593Smuzhiyun reg = <0x3>; 138*4882a593Smuzhiyun interrupts = <0>; 139*4882a593Smuzhiyun }; 140*4882a593Smuzhiyun 141*4882a593Smuzhiyun phy_port4: phy@4 { 142*4882a593Smuzhiyun reg = <0x4>; 143*4882a593Smuzhiyun interrupts = <0>; 144*4882a593Smuzhiyun }; 145*4882a593Smuzhiyun }; 146*4882a593Smuzhiyun }; 147*4882a593Smuzhiyun }; 148*4882a593Smuzhiyun}; 149