net: stmmac: sun8i: add support for Allwinner H6 EMAC
authorIcenowy Zheng <icenowy@aosc.io>
Thu, 20 Jun 2019 13:47:43 +0000 (15:47 +0200)
committerDavid S. Miller <davem@davemloft.net>
Mon, 24 Jun 2019 20:25:11 +0000 (13:25 -0700)
The EMAC on Allwinner H6 is just like the one on A64. The "internal PHY" on
H6 is on a co-packaged AC200 chip, and it's not really internal (it's
connected via RMII at PA GPIO bank).

Add support for the Allwinner H6 EMAC in the dwmac-sun8i driver.

Signed-off-by: Icenowy Zheng <icenowy@aosc.io>
Signed-off-by: Ondrej Jirman <megous@megous.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c

index b15c6d5dbd38d4a360b1f8ab53c9d92b2893d9ce..c3e94104474ff43708d1e2f43d6382c1f3f282a5 100644 (file)
@@ -138,6 +138,20 @@ static const struct emac_variant emac_variant_a64 = {
        .tx_delay_max = 7,
 };
 
+static const struct emac_variant emac_variant_h6 = {
+       .default_syscon_value = 0x50000,
+       .syscon_field = &sun8i_syscon_reg_field,
+       /* The "Internal PHY" of H6 is not on the die. It's on the
+        * co-packaged AC200 chip instead.
+        */
+       .soc_has_internal_phy = false,
+       .support_mii = true,
+       .support_rmii = true,
+       .support_rgmii = true,
+       .rx_delay_max = 31,
+       .tx_delay_max = 7,
+};
+
 #define EMAC_BASIC_CTL0 0x00
 #define EMAC_BASIC_CTL1 0x04
 #define EMAC_INT_STA    0x08
@@ -1216,6 +1230,8 @@ static const struct of_device_id sun8i_dwmac_match[] = {
                .data = &emac_variant_r40 },
        { .compatible = "allwinner,sun50i-a64-emac",
                .data = &emac_variant_a64 },
+       { .compatible = "allwinner,sun50i-h6-emac",
+               .data = &emac_variant_h6 },
        { }
 };
 MODULE_DEVICE_TABLE(of, sun8i_dwmac_match);