|
@@ -111,6 +111,7 @@ enum emac_variant {
|
|
|
H3_EMAC,
|
|
|
A64_EMAC,
|
|
|
R40_GMAC,
|
|
|
+ H6_EMAC,
|
|
|
};
|
|
|
|
|
|
struct emac_dma_desc {
|
|
@@ -300,9 +301,9 @@ static int sun8i_emac_set_syscon(struct sun8i_eth_pdata *pdata,
|
|
|
if (priv->variant == R40_GMAC) {
|
|
|
/* Select RGMII for R40 */
|
|
|
reg = readl(priv->sysctl_reg + 0x164);
|
|
|
- reg |= CCM_GMAC_CTRL_TX_CLK_SRC_INT_RGMII |
|
|
|
- CCM_GMAC_CTRL_GPIT_RGMII |
|
|
|
- CCM_GMAC_CTRL_TX_CLK_DELAY(CONFIG_GMAC_TX_DELAY);
|
|
|
+ reg |= SC_ETCS_INT_GMII |
|
|
|
+ SC_EPIT |
|
|
|
+ (CONFIG_GMAC_TX_DELAY << SC_ETXDC_OFFSET);
|
|
|
|
|
|
writel(reg, priv->sysctl_reg + 0x164);
|
|
|
return 0;
|
|
@@ -310,14 +311,16 @@ static int sun8i_emac_set_syscon(struct sun8i_eth_pdata *pdata,
|
|
|
|
|
|
reg = readl(priv->sysctl_reg + 0x30);
|
|
|
|
|
|
- if (priv->variant == H3_EMAC) {
|
|
|
+ if (priv->variant == H3_EMAC || priv->variant == H6_EMAC) {
|
|
|
ret = sun8i_emac_set_syscon_ephy(priv, ®);
|
|
|
if (ret)
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
|
reg &= ~(SC_ETCS_MASK | SC_EPIT);
|
|
|
- if (priv->variant == H3_EMAC || priv->variant == A64_EMAC)
|
|
|
+ if (priv->variant == H3_EMAC ||
|
|
|
+ priv->variant == A64_EMAC ||
|
|
|
+ priv->variant == H6_EMAC)
|
|
|
reg &= ~SC_RMII_EN;
|
|
|
|
|
|
switch (priv->interface) {
|
|
@@ -329,7 +332,8 @@ static int sun8i_emac_set_syscon(struct sun8i_eth_pdata *pdata,
|
|
|
break;
|
|
|
case PHY_INTERFACE_MODE_RMII:
|
|
|
if (priv->variant == H3_EMAC ||
|
|
|
- priv->variant == A64_EMAC) {
|
|
|
+ priv->variant == A64_EMAC ||
|
|
|
+ priv->variant == H6_EMAC) {
|
|
|
reg |= SC_RMII_EN | SC_ETCS_EXT_GMII;
|
|
|
break;
|
|
|
}
|
|
@@ -535,7 +539,7 @@ static int parse_phy_pins(struct udevice *dev)
|
|
|
|
|
|
if (priv->variant == H3_EMAC)
|
|
|
sunxi_gpio_set_cfgpin(pin, SUN8I_IOMUX_H3);
|
|
|
- else if (priv->variant == R40_GMAC)
|
|
|
+ else if (priv->variant == R40_GMAC || priv->variant == H6_EMAC)
|
|
|
sunxi_gpio_set_cfgpin(pin, SUN8I_IOMUX_R40);
|
|
|
else
|
|
|
sunxi_gpio_set_cfgpin(pin, SUN8I_IOMUX);
|
|
@@ -1032,6 +1036,8 @@ static const struct udevice_id sun8i_emac_eth_ids[] = {
|
|
|
.data = (uintptr_t)A83T_EMAC },
|
|
|
{.compatible = "allwinner,sun8i-r40-gmac",
|
|
|
.data = (uintptr_t)R40_GMAC },
|
|
|
+ {.compatible = "allwinner,sun50i-h6-emac",
|
|
|
+ .data = (uintptr_t)H6_EMAC },
|
|
|
{ }
|
|
|
};
|
|
|
|