1*4882a593Smuzhiyun# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2*4882a593Smuzhiyun%YAML 1.2 3*4882a593Smuzhiyun--- 4*4882a593Smuzhiyun$id: http://devicetree.org/schemas/net/ti,cpsw-switch.yaml# 5*4882a593Smuzhiyun$schema: http://devicetree.org/meta-schemas/core.yaml# 6*4882a593Smuzhiyun 7*4882a593Smuzhiyuntitle: TI SoC Ethernet Switch Controller (CPSW) Device Tree Bindings 8*4882a593Smuzhiyun 9*4882a593Smuzhiyunmaintainers: 10*4882a593Smuzhiyun - Grygorii Strashko <grygorii.strashko@ti.com> 11*4882a593Smuzhiyun - Sekhar Nori <nsekhar@ti.com> 12*4882a593Smuzhiyun 13*4882a593Smuzhiyundescription: 14*4882a593Smuzhiyun The 3-port switch gigabit ethernet subsystem provides ethernet packet 15*4882a593Smuzhiyun communication and can be configured as an ethernet switch. It provides the 16*4882a593Smuzhiyun gigabit media independent interface (GMII),reduced gigabit media 17*4882a593Smuzhiyun independent interface (RGMII), reduced media independent interface (RMII), 18*4882a593Smuzhiyun the management data input output (MDIO) for physical layer device (PHY) 19*4882a593Smuzhiyun management. 20*4882a593Smuzhiyun 21*4882a593Smuzhiyunproperties: 22*4882a593Smuzhiyun compatible: 23*4882a593Smuzhiyun oneOf: 24*4882a593Smuzhiyun - const: ti,cpsw-switch 25*4882a593Smuzhiyun - items: 26*4882a593Smuzhiyun - const: ti,am335x-cpsw-switch 27*4882a593Smuzhiyun - const: ti,cpsw-switch 28*4882a593Smuzhiyun - items: 29*4882a593Smuzhiyun - const: ti,am4372-cpsw-switch 30*4882a593Smuzhiyun - const: ti,cpsw-switch 31*4882a593Smuzhiyun - items: 32*4882a593Smuzhiyun - const: ti,dra7-cpsw-switch 33*4882a593Smuzhiyun - const: ti,cpsw-switch 34*4882a593Smuzhiyun 35*4882a593Smuzhiyun reg: 36*4882a593Smuzhiyun maxItems: 1 37*4882a593Smuzhiyun description: 38*4882a593Smuzhiyun The physical base address and size of full the CPSW module IO range 39*4882a593Smuzhiyun 40*4882a593Smuzhiyun '#address-cells': 41*4882a593Smuzhiyun const: 1 42*4882a593Smuzhiyun 43*4882a593Smuzhiyun '#size-cells': 44*4882a593Smuzhiyun const: 1 45*4882a593Smuzhiyun 46*4882a593Smuzhiyun ranges: true 47*4882a593Smuzhiyun 48*4882a593Smuzhiyun clocks: 49*4882a593Smuzhiyun maxItems: 1 50*4882a593Smuzhiyun description: CPSW functional clock 51*4882a593Smuzhiyun 52*4882a593Smuzhiyun clock-names: 53*4882a593Smuzhiyun items: 54*4882a593Smuzhiyun - const: fck 55*4882a593Smuzhiyun 56*4882a593Smuzhiyun interrupts: 57*4882a593Smuzhiyun items: 58*4882a593Smuzhiyun - description: RX_THRESH interrupt 59*4882a593Smuzhiyun - description: RX interrupt 60*4882a593Smuzhiyun - description: TX interrupt 61*4882a593Smuzhiyun - description: MISC interrupt 62*4882a593Smuzhiyun 63*4882a593Smuzhiyun interrupt-names: 64*4882a593Smuzhiyun items: 65*4882a593Smuzhiyun - const: "rx_thresh" 66*4882a593Smuzhiyun - const: "rx" 67*4882a593Smuzhiyun - const: "tx" 68*4882a593Smuzhiyun - const: "misc" 69*4882a593Smuzhiyun 70*4882a593Smuzhiyun pinctrl-names: true 71*4882a593Smuzhiyun 72*4882a593Smuzhiyun syscon: 73*4882a593Smuzhiyun $ref: /schemas/types.yaml#definitions/phandle 74*4882a593Smuzhiyun description: 75*4882a593Smuzhiyun Phandle to the system control device node which provides access to 76*4882a593Smuzhiyun efuse IO range with MAC addresses 77*4882a593Smuzhiyun 78*4882a593Smuzhiyun ethernet-ports: 79*4882a593Smuzhiyun type: object 80*4882a593Smuzhiyun properties: 81*4882a593Smuzhiyun '#address-cells': 82*4882a593Smuzhiyun const: 1 83*4882a593Smuzhiyun '#size-cells': 84*4882a593Smuzhiyun const: 0 85*4882a593Smuzhiyun 86*4882a593Smuzhiyun patternProperties: 87*4882a593Smuzhiyun "^port@[0-9]+$": 88*4882a593Smuzhiyun type: object 89*4882a593Smuzhiyun description: CPSW external ports 90*4882a593Smuzhiyun 91*4882a593Smuzhiyun allOf: 92*4882a593Smuzhiyun - $ref: ethernet-controller.yaml# 93*4882a593Smuzhiyun 94*4882a593Smuzhiyun properties: 95*4882a593Smuzhiyun reg: 96*4882a593Smuzhiyun items: 97*4882a593Smuzhiyun - enum: [1, 2] 98*4882a593Smuzhiyun description: CPSW port number 99*4882a593Smuzhiyun 100*4882a593Smuzhiyun phys: 101*4882a593Smuzhiyun maxItems: 1 102*4882a593Smuzhiyun description: phandle on phy-gmii-sel PHY 103*4882a593Smuzhiyun 104*4882a593Smuzhiyun label: 105*4882a593Smuzhiyun description: label associated with this port 106*4882a593Smuzhiyun 107*4882a593Smuzhiyun ti,dual-emac-pvid: 108*4882a593Smuzhiyun $ref: /schemas/types.yaml#/definitions/uint32 109*4882a593Smuzhiyun minimum: 1 110*4882a593Smuzhiyun maximum: 1024 111*4882a593Smuzhiyun description: 112*4882a593Smuzhiyun Specifies default PORT VID to be used to segregate 113*4882a593Smuzhiyun ports. Default value - CPSW port number. 114*4882a593Smuzhiyun 115*4882a593Smuzhiyun required: 116*4882a593Smuzhiyun - reg 117*4882a593Smuzhiyun - phys 118*4882a593Smuzhiyun 119*4882a593Smuzhiyun cpts: 120*4882a593Smuzhiyun type: object 121*4882a593Smuzhiyun description: 122*4882a593Smuzhiyun The Common Platform Time Sync (CPTS) module 123*4882a593Smuzhiyun 124*4882a593Smuzhiyun properties: 125*4882a593Smuzhiyun clocks: 126*4882a593Smuzhiyun maxItems: 1 127*4882a593Smuzhiyun description: CPTS reference clock 128*4882a593Smuzhiyun 129*4882a593Smuzhiyun clock-names: 130*4882a593Smuzhiyun items: 131*4882a593Smuzhiyun - const: cpts 132*4882a593Smuzhiyun 133*4882a593Smuzhiyun cpts_clock_mult: 134*4882a593Smuzhiyun $ref: /schemas/types.yaml#/definitions/uint32 135*4882a593Smuzhiyun description: 136*4882a593Smuzhiyun Numerator to convert input clock ticks into ns 137*4882a593Smuzhiyun 138*4882a593Smuzhiyun cpts_clock_shift: 139*4882a593Smuzhiyun $ref: /schemas/types.yaml#/definitions/uint32 140*4882a593Smuzhiyun description: 141*4882a593Smuzhiyun Denominator to convert input clock ticks into ns. 142*4882a593Smuzhiyun Mult and shift will be calculated basing on CPTS rftclk frequency if 143*4882a593Smuzhiyun both cpts_clock_shift and cpts_clock_mult properties are not provided. 144*4882a593Smuzhiyun 145*4882a593Smuzhiyun required: 146*4882a593Smuzhiyun - clocks 147*4882a593Smuzhiyun - clock-names 148*4882a593Smuzhiyun 149*4882a593SmuzhiyunpatternProperties: 150*4882a593Smuzhiyun "^mdio@": 151*4882a593Smuzhiyun type: object 152*4882a593Smuzhiyun description: 153*4882a593Smuzhiyun CPSW MDIO bus. 154*4882a593Smuzhiyun $ref: "ti,davinci-mdio.yaml#" 155*4882a593Smuzhiyun 156*4882a593Smuzhiyun 157*4882a593Smuzhiyunrequired: 158*4882a593Smuzhiyun - compatible 159*4882a593Smuzhiyun - reg 160*4882a593Smuzhiyun - ranges 161*4882a593Smuzhiyun - clocks 162*4882a593Smuzhiyun - clock-names 163*4882a593Smuzhiyun - interrupts 164*4882a593Smuzhiyun - interrupt-names 165*4882a593Smuzhiyun - '#address-cells' 166*4882a593Smuzhiyun - '#size-cells' 167*4882a593Smuzhiyun 168*4882a593SmuzhiyunadditionalProperties: false 169*4882a593Smuzhiyun 170*4882a593Smuzhiyunexamples: 171*4882a593Smuzhiyun - | 172*4882a593Smuzhiyun #include <dt-bindings/interrupt-controller/irq.h> 173*4882a593Smuzhiyun #include <dt-bindings/interrupt-controller/arm-gic.h> 174*4882a593Smuzhiyun #include <dt-bindings/clock/dra7.h> 175*4882a593Smuzhiyun 176*4882a593Smuzhiyun mac_sw: switch@0 { 177*4882a593Smuzhiyun compatible = "ti,dra7-cpsw-switch","ti,cpsw-switch"; 178*4882a593Smuzhiyun reg = <0x0 0x4000>; 179*4882a593Smuzhiyun ranges = <0 0 0x4000>; 180*4882a593Smuzhiyun clocks = <&gmac_main_clk>; 181*4882a593Smuzhiyun clock-names = "fck"; 182*4882a593Smuzhiyun #address-cells = <1>; 183*4882a593Smuzhiyun #size-cells = <1>; 184*4882a593Smuzhiyun syscon = <&scm_conf>; 185*4882a593Smuzhiyun 186*4882a593Smuzhiyun interrupts = <GIC_SPI 334 IRQ_TYPE_LEVEL_HIGH>, 187*4882a593Smuzhiyun <GIC_SPI 335 IRQ_TYPE_LEVEL_HIGH>, 188*4882a593Smuzhiyun <GIC_SPI 336 IRQ_TYPE_LEVEL_HIGH>, 189*4882a593Smuzhiyun <GIC_SPI 337 IRQ_TYPE_LEVEL_HIGH>; 190*4882a593Smuzhiyun interrupt-names = "rx_thresh", "rx", "tx", "misc"; 191*4882a593Smuzhiyun 192*4882a593Smuzhiyun ethernet-ports { 193*4882a593Smuzhiyun #address-cells = <1>; 194*4882a593Smuzhiyun #size-cells = <0>; 195*4882a593Smuzhiyun 196*4882a593Smuzhiyun cpsw_port1: port@1 { 197*4882a593Smuzhiyun reg = <1>; 198*4882a593Smuzhiyun label = "port1"; 199*4882a593Smuzhiyun mac-address = [ 00 00 00 00 00 00 ]; 200*4882a593Smuzhiyun phys = <&phy_gmii_sel 1>; 201*4882a593Smuzhiyun phy-handle = <ðphy0_sw>; 202*4882a593Smuzhiyun phy-mode = "rgmii"; 203*4882a593Smuzhiyun ti,dual-emac-pvid = <1>; 204*4882a593Smuzhiyun }; 205*4882a593Smuzhiyun 206*4882a593Smuzhiyun cpsw_port2: port@2 { 207*4882a593Smuzhiyun reg = <2>; 208*4882a593Smuzhiyun label = "wan"; 209*4882a593Smuzhiyun mac-address = [ 00 00 00 00 00 00 ]; 210*4882a593Smuzhiyun phys = <&phy_gmii_sel 2>; 211*4882a593Smuzhiyun phy-handle = <ðphy1_sw>; 212*4882a593Smuzhiyun phy-mode = "rgmii"; 213*4882a593Smuzhiyun ti,dual-emac-pvid = <2>; 214*4882a593Smuzhiyun }; 215*4882a593Smuzhiyun }; 216*4882a593Smuzhiyun 217*4882a593Smuzhiyun davinci_mdio_sw: mdio@1000 { 218*4882a593Smuzhiyun compatible = "ti,cpsw-mdio","ti,davinci_mdio"; 219*4882a593Smuzhiyun reg = <0x1000 0x100>; 220*4882a593Smuzhiyun clocks = <&gmac_clkctrl DRA7_GMAC_GMAC_CLKCTRL 0>; 221*4882a593Smuzhiyun clock-names = "fck"; 222*4882a593Smuzhiyun #address-cells = <1>; 223*4882a593Smuzhiyun #size-cells = <0>; 224*4882a593Smuzhiyun bus_freq = <1000000>; 225*4882a593Smuzhiyun 226*4882a593Smuzhiyun ethphy0_sw: ethernet-phy@0 { 227*4882a593Smuzhiyun reg = <0>; 228*4882a593Smuzhiyun }; 229*4882a593Smuzhiyun 230*4882a593Smuzhiyun ethphy1_sw: ethernet-phy@1 { 231*4882a593Smuzhiyun reg = <1>; 232*4882a593Smuzhiyun }; 233*4882a593Smuzhiyun }; 234*4882a593Smuzhiyun 235*4882a593Smuzhiyun cpts { 236*4882a593Smuzhiyun clocks = <&gmac_clkctrl DRA7_GMAC_GMAC_CLKCTRL 25>; 237*4882a593Smuzhiyun clock-names = "cpts"; 238*4882a593Smuzhiyun }; 239*4882a593Smuzhiyun }; 240