| TI SoC Ethernet Switch Controller Device Tree Bindings | |
| ------------------------------------------------------ | |
| Required properties: | |
| - compatible : Should be one of the below:- | |
| "ti,cpsw" for backward compatible | |
| "ti,am335x-cpsw" for AM335x controllers | |
| "ti,am4372-cpsw" for AM437x controllers | |
| "ti,dra7-cpsw" for DRA7x controllers | |
| - reg : physical base address and size of the cpsw | |
| registers map | |
| - interrupts : property with a value describing the interrupt | |
| number | |
| - cpdma_channels : Specifies number of channels in CPDMA | |
| - ale_entries : Specifies No of entries ALE can hold | |
| - bd_ram_size : Specifies internal descriptor RAM size | |
| - mac_control : Specifies Default MAC control register content | |
| for the specific platform | |
| - slaves : Specifies number for slaves | |
| - active_slave : Specifies the slave to use for time stamping, | |
| ethtool and SIOCGMIIPHY | |
| - cpsw-phy-sel : Specifies the phandle to the CPSW phy mode selection | |
| device. See also cpsw-phy-sel.txt for its binding. | |
| Note that in legacy cases cpsw-phy-sel may be | |
| a child device instead of a phandle | |
| (DEPRECATED, use phys property instead). | |
| Optional properties: | |
| - ti,hwmods : Must be "cpgmac0" | |
| - dual_emac : Specifies Switch to act as Dual EMAC | |
| - syscon : Phandle to the system control device node, which is | |
| the control module device of the am33x | |
| - mode-gpios : Should be added if one/multiple gpio lines are | |
| required to be driven so that cpsw data lines | |
| can be connected to the phy via selective mux. | |
| For example in dra72x-evm, pcf gpio has to be | |
| driven low so that cpsw slave 0 and phy data | |
| lines are connected via mux. | |
| - cpts_clock_mult : Numerator to convert input clock ticks into nanoseconds | |
| - cpts_clock_shift : Denominator to convert input clock ticks into nanoseconds | |
| Mult and shift will be calculated basing on CPTS | |
| rftclk frequency if both cpts_clock_shift and | |
| cpts_clock_mult properties are not provided. | |
| Slave Properties: | |
| Required properties: | |
| - phy-mode : See ethernet.txt file in the same directory | |
| - phys : phandle on phy-gmii-sel PHY (see phy/ti-phy-gmii-sel.txt) | |
| Optional properties: | |
| - dual_emac_res_vlan : Specifies VID to be used to segregate the ports | |
| - phy_id : Specifies slave phy id (deprecated, use phy-handle) | |
| - phy-handle : See ethernet.txt file in the same directory | |
| The MAC address will be determined using the optional properties | |
| defined in ethernet.txt. | |
| Slave sub-nodes: | |
| - fixed-link : See fixed-link.txt file in the same directory | |
| Note: Exactly one of phy_id, phy-handle, or fixed-link must be specified. | |
| Note: "ti,hwmods" field is used to fetch the base address and irq | |
| resources from TI, omap hwmod data base during device registration. | |
| Future plan is to migrate hwmod data base contents into device tree | |
| blob so that, all the required data will be used from device tree dts | |
| file. | |
| Examples: | |
| mac: ethernet@4a100000 { | |
| compatible = "ti,cpsw"; | |
| reg = <0x4A100000 0x1000>; | |
| interrupts = <55 0x4>; | |
| interrupt-parent = <&intc>; | |
| cpdma_channels = <8>; | |
| ale_entries = <1024>; | |
| bd_ram_size = <0x2000>; | |
| rx_descs = <64>; | |
| mac_control = <0x20>; | |
| slaves = <2>; | |
| active_slave = <0>; | |
| cpts_clock_mult = <0x80000000>; | |
| cpts_clock_shift = <29>; | |
| syscon = <&cm>; | |
| cpsw-phy-sel = <&phy_sel>; | |
| cpsw_emac0: slave@0 { | |
| phy_id = <&davinci_mdio>, <0>; | |
| phy-mode = "rgmii-txid"; | |
| /* Filled in by U-Boot */ | |
| mac-address = [ 00 00 00 00 00 00 ]; | |
| phys = <&phy_gmii_sel 1 0>; | |
| }; | |
| cpsw_emac1: slave@1 { | |
| phy_id = <&davinci_mdio>, <1>; | |
| phy-mode = "rgmii-txid"; | |
| /* Filled in by U-Boot */ | |
| mac-address = [ 00 00 00 00 00 00 ]; | |
| phys = <&phy_gmii_sel 2 0>; | |
| }; | |
| }; | |
| (or) | |
| mac: ethernet@4a100000 { | |
| compatible = "ti,cpsw"; | |
| ti,hwmods = "cpgmac0"; | |
| cpdma_channels = <8>; | |
| ale_entries = <1024>; | |
| bd_ram_size = <0x2000>; | |
| rx_descs = <64>; | |
| mac_control = <0x20>; | |
| slaves = <2>; | |
| active_slave = <0>; | |
| cpts_clock_mult = <0x80000000>; | |
| cpts_clock_shift = <29>; | |
| syscon = <&cm>; | |
| cpsw-phy-sel = <&phy_sel>; | |
| cpsw_emac0: slave@0 { | |
| phy_id = <&davinci_mdio>, <0>; | |
| phy-mode = "rgmii-txid"; | |
| /* Filled in by U-Boot */ | |
| mac-address = [ 00 00 00 00 00 00 ]; | |
| phys = <&phy_gmii_sel 1 0>; | |
| }; | |
| cpsw_emac1: slave@1 { | |
| phy_id = <&davinci_mdio>, <1>; | |
| phy-mode = "rgmii-txid"; | |
| /* Filled in by U-Boot */ | |
| mac-address = [ 00 00 00 00 00 00 ]; | |
| phys = <&phy_gmii_sel 2 0>; | |
| }; | |
| }; |