| * Allwinner sun8i GMAC ethernet controller |
| |
| This device is a platform glue layer for stmmac. |
| Please see stmmac.txt for the other unchanged properties. |
| |
| Required properties: |
| - compatible: must be one of the following string: |
| "allwinner,sun8i-a83t-emac" |
| "allwinner,sun8i-h3-emac" |
| "allwinner,sun8i-r40-gmac" |
| "allwinner,sun8i-v3s-emac" |
| "allwinner,sun50i-a64-emac" |
| - reg: address and length of the register for the device. |
| - interrupts: interrupt for the device |
| - interrupt-names: must be "macirq" |
| - clocks: A phandle to the reference clock for this device |
| - clock-names: must be "stmmaceth" |
| - resets: A phandle to the reset control for this device |
| - reset-names: must be "stmmaceth" |
| - phy-mode: See ethernet.txt |
| - phy-handle: See ethernet.txt |
| - syscon: A phandle to the device containing the EMAC or GMAC clock register |
| |
| Optional properties: |
| - allwinner,tx-delay-ps: TX clock delay chain value in ps. |
| Range is 0-700. Default is 0. |
| Unavailable for allwinner,sun8i-r40-gmac |
| - allwinner,rx-delay-ps: RX clock delay chain value in ps. |
| Range is 0-3100. Default is 0. |
| Range is 0-700 for allwinner,sun8i-r40-gmac |
| Both delay properties need to be a multiple of 100. They control the |
| clock delay for external RGMII PHY. They do not apply to the internal |
| PHY or external non-RGMII PHYs. |
| |
| Optional properties for the following compatibles: |
| - "allwinner,sun8i-h3-emac", |
| - "allwinner,sun8i-v3s-emac": |
| - allwinner,leds-active-low: EPHY LEDs are active low |
| |
| Required child node of emac: |
| - mdio bus node: should be named mdio with compatible "snps,dwmac-mdio" |
| |
| Required properties of the mdio node: |
| - #address-cells: shall be 1 |
| - #size-cells: shall be 0 |
| |
| The device node referenced by "phy" or "phy-handle" must be a child node |
| of the mdio node. See phy.txt for the generic PHY bindings. |
| |
| The following compatibles require that the emac node have a mdio-mux child |
| node called "mdio-mux": |
| - "allwinner,sun8i-h3-emac" |
| - "allwinner,sun8i-v3s-emac": |
| Required properties for the mdio-mux node: |
| - compatible = "allwinner,sun8i-h3-mdio-mux" |
| - mdio-parent-bus: a phandle to EMAC mdio |
| - one child mdio for the integrated mdio with the compatible |
| "allwinner,sun8i-h3-mdio-internal" |
| - one child mdio for the external mdio if present (V3s have none) |
| Required properties for the mdio-mux children node: |
| - reg: 1 for internal MDIO bus, 2 for external MDIO bus |
| |
| The following compatibles require a PHY node representing the integrated |
| PHY, under the integrated MDIO bus node if an mdio-mux node is used: |
| - "allwinner,sun8i-h3-emac", |
| - "allwinner,sun8i-v3s-emac": |
| |
| Additional information regarding generic multiplexer properties can be found |
| at Documentation/devicetree/bindings/net/mdio-mux.txt |
| |
| Required properties of the integrated phy node: |
| - clocks: a phandle to the reference clock for the EPHY |
| - resets: a phandle to the reset control for the EPHY |
| - Must be a child of the integrated mdio |
| |
| Example with integrated PHY: |
| emac: ethernet@1c0b000 { |
| compatible = "allwinner,sun8i-h3-emac"; |
| syscon = <&syscon>; |
| reg = <0x01c0b000 0x104>; |
| interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>; |
| interrupt-names = "macirq"; |
| resets = <&ccu RST_BUS_EMAC>; |
| reset-names = "stmmaceth"; |
| clocks = <&ccu CLK_BUS_EMAC>; |
| clock-names = "stmmaceth"; |
| |
| phy-handle = <&int_mii_phy>; |
| phy-mode = "mii"; |
| allwinner,leds-active-low; |
| |
| mdio: mdio { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| compatible = "snps,dwmac-mdio"; |
| }; |
| |
| mdio-mux { |
| compatible = "mdio-mux", "allwinner,sun8i-h3-mdio-mux"; |
| #address-cells = <1>; |
| #size-cells = <0>; |
| |
| mdio-parent-bus = <&mdio>; |
| |
| int_mdio: mdio@1 { |
| compatible = "allwinner,sun8i-h3-mdio-internal"; |
| reg = <1>; |
| #address-cells = <1>; |
| #size-cells = <0>; |
| int_mii_phy: ethernet-phy@1 { |
| reg = <1>; |
| clocks = <&ccu CLK_BUS_EPHY>; |
| resets = <&ccu RST_BUS_EPHY>; |
| phy-is-integrated; |
| }; |
| }; |
| ext_mdio: mdio@2 { |
| reg = <2>; |
| #address-cells = <1>; |
| #size-cells = <0>; |
| }; |
| }; |
| }; |
| |
| Example with external PHY: |
| emac: ethernet@1c0b000 { |
| compatible = "allwinner,sun8i-h3-emac"; |
| syscon = <&syscon>; |
| reg = <0x01c0b000 0x104>; |
| interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>; |
| interrupt-names = "macirq"; |
| resets = <&ccu RST_BUS_EMAC>; |
| reset-names = "stmmaceth"; |
| clocks = <&ccu CLK_BUS_EMAC>; |
| clock-names = "stmmaceth"; |
| |
| phy-handle = <&ext_rgmii_phy>; |
| phy-mode = "rgmii"; |
| allwinner,leds-active-low; |
| |
| mdio: mdio { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| compatible = "snps,dwmac-mdio"; |
| }; |
| |
| mdio-mux { |
| compatible = "allwinner,sun8i-h3-mdio-mux"; |
| #address-cells = <1>; |
| #size-cells = <0>; |
| |
| mdio-parent-bus = <&mdio>; |
| |
| int_mdio: mdio@1 { |
| compatible = "allwinner,sun8i-h3-mdio-internal"; |
| reg = <1>; |
| #address-cells = <1>; |
| #size-cells = <0>; |
| int_mii_phy: ethernet-phy@1 { |
| reg = <1>; |
| clocks = <&ccu CLK_BUS_EPHY>; |
| resets = <&ccu RST_BUS_EPHY>; |
| }; |
| }; |
| ext_mdio: mdio@2 { |
| reg = <2>; |
| #address-cells = <1>; |
| #size-cells = <0>; |
| ext_rgmii_phy: ethernet-phy@1 { |
| reg = <1>; |
| }; |
| }: |
| }; |
| }; |
| |
| Example with SoC without integrated PHY |
| |
| emac: ethernet@1c0b000 { |
| compatible = "allwinner,sun8i-a83t-emac"; |
| syscon = <&syscon>; |
| reg = <0x01c0b000 0x104>; |
| interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>; |
| interrupt-names = "macirq"; |
| resets = <&ccu RST_BUS_EMAC>; |
| reset-names = "stmmaceth"; |
| clocks = <&ccu CLK_BUS_EMAC>; |
| clock-names = "stmmaceth"; |
| |
| phy-handle = <&ext_rgmii_phy>; |
| phy-mode = "rgmii"; |
| |
| mdio: mdio { |
| compatible = "snps,dwmac-mdio"; |
| #address-cells = <1>; |
| #size-cells = <0>; |
| ext_rgmii_phy: ethernet-phy@1 { |
| reg = <1>; |
| }; |
| }; |
| }; |