forked from Minki/linux
186172f465
The Allwinner H6 SoC features a Ethernet MAC that is similar to the one in A64. Add a compatible string for it with A64 fallback compatible string, in this case the A64 driver can be used. The "internal" PHY is not internal from the perspective of the H6 main die, instead it's on the co-packaged AC200 chip, and connected to the main die with RMII at the in-package Port A PIO bank. So from the SoC driver side it needs no special treatment. Signed-off-by: Icenowy Zheng <icenowy@aosc.io> Acked-by: Rob Herring <robh@kernel.org> Reviewed-by: Chen-Yu Tsai <wens@csie.org> Signed-off-by: Maxime Ripard <maxime.ripard@bootlin.com>
202 lines
5.5 KiB
Plaintext
202 lines
5.5 KiB
Plaintext
* 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"
|
|
"allwinner,sun50i-h6-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>;
|
|
};
|
|
};
|
|
};
|