Re: [PATCH net-next v3 3/3] net: stmmac: sun8i: add support for Allwinner H616 EMAC1
From: Maxime Chevallier
Date: Fri Sep 18 2026 - 02:33:22 EST
Hi,
On 9/17/26 19:55, James Hilliard wrote:
> The H616 secondary EMAC uses a separate system-control clock register
> and supports only RMII at 10/100 Mbps. It connects internally to the
> co-packaged AC200 or AC300 EPHY and has no external PHY pins.
>
> Add an EMAC1 variant using the dedicated register and enable only RMII.
> Leave PHY initialization to the PHY driver instead of using the H3
> internal-PHY controls. No RX or TX clock delays are configured for this
> RMII-only variant.
>
> Co-developed-by: Richard Genoud <richard.genoud@xxxxxxxxxxx>
> Signed-off-by: Richard Genoud <richard.genoud@xxxxxxxxxxx>
> Signed-off-by: James Hilliard <james.hilliard1@xxxxxxxxx>
Reviewed-by: Maxime Chevallier <maxime.chevallier@xxxxxxxxxxx>
Thanks :)
Maxime
> ---
> drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c | 16 ++++++++++++++++
> 1 file changed, 16 insertions(+)
>
> diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c
> index 4523a14f5e0c..1020168f1c3a 100644
> --- a/drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c
> +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c
> @@ -81,6 +81,13 @@ static const struct reg_field sun8i_syscon_reg_field = {
> .msb = 31,
> };
>
> +/* EMAC1 clock register @ 0x34 in the "system control" address range */
> +static const struct reg_field sun8i_syscon_reg_field_emac1 = {
> + .reg = 0x34,
> + .lsb = 0,
> + .msb = 31,
> +};
> +
> /* EMAC clock register @ 0x164 in the CCU address range */
> static const struct reg_field sun8i_ccu_reg_field = {
> .reg = 0x164,
> @@ -143,6 +150,13 @@ static const struct emac_variant emac_variant_h6 = {
> .tx_delay_max = 7,
> };
>
> +static const struct emac_variant emac_variant_h616_emac1 = {
> + .syscon_field = &sun8i_syscon_reg_field_emac1,
> + /* The co-packaged AC200/AC300 PHY does not use the H3 PHY controls. */
> + .soc_has_internal_phy = false,
> + .support_rmii = true,
> +};
> +
> #define EMAC_BASIC_CTL0 0x00
> #define EMAC_BASIC_CTL1 0x04
> #define EMAC_INT_STA 0x08
> @@ -1276,6 +1290,8 @@ static const struct of_device_id sun8i_dwmac_match[] = {
> .data = &emac_variant_a64 },
> { .compatible = "allwinner,sun50i-h6-emac",
> .data = &emac_variant_h6 },
> + { .compatible = "allwinner,sun50i-h616-emac1",
> + .data = &emac_variant_h616_emac1 },
> { }
> };
> MODULE_DEVICE_TABLE(of, sun8i_dwmac_match);
>