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