* [PATCH net-next 0/2] net: stmmac: add Allwinner H616 EMAC1 support
@ 2026-09-15 19:03 James Hilliard
2026-09-15 19:03 ` [PATCH net-next 1/2] dt-bindings: net: allwinner: add H616 EMAC1 James Hilliard
2026-09-15 19:03 ` [PATCH net-next 2/2] net: stmmac: sun8i: add support for Allwinner " James Hilliard
0 siblings, 2 replies; 6+ messages in thread
From: James Hilliard @ 2026-09-15 19:03 UTC (permalink / raw)
To: Richard Genoud, Andrew Lunn, David S. Miller, Eric Dumazet,
Jakub Kicinski, Paolo Abeni, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Chen-Yu Tsai, Jernej Skrabec, Samuel Holland,
Alexandre Torgue, Giuseppe Cavallaro, Jose Abreu,
Maxime Chevallier, Maxime Coquelin
Cc: Maxime Ripard, netdev, devicetree, linux-arm-kernel, linux-sunxi,
linux-kernel, linux-stm32, James Hilliard
The H616 secondary EMAC supports RMII at 10/100 Mbps and uses a separate
system-control clock register at offset 0x34. Add its binding and a
sun8i stmmac variant using that register. A distinct compatible without
an older fallback prevents the driver from using EMAC0's clock register.
The PHY commonly connected to EMAC1 is in an AC200 or AC300 companion
package, not the H616 die. Leave its initialization to the PHY driver
instead of using the H3 internal-PHY controls. Retain the supported TX
and RX delay settings through the shared syscon setup.
The AC200/AC300 EPHY driver and package bindings are already in
net-next. This series separates the H616 EMAC1 MAC driver and binding
support from the earlier combined series. PWM, MFD and device-tree
enablement are being handled separately.
Signed-off-by: James Hilliard <james.hilliard1@gmail.com>
---
James Hilliard (2):
dt-bindings: net: allwinner: add H616 EMAC1
net: stmmac: sun8i: add support for Allwinner H616 EMAC1
.../bindings/net/allwinner,sun8i-a83t-emac.yaml | 18 ++++++++++++++++--
.../devicetree/bindings/net/snps,dwmac.yaml | 2 ++
drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c | 21 +++++++++++++++++++++
3 files changed, 39 insertions(+), 2 deletions(-)
---
base-commit: b8e9e7d82e7eefd5d2d528469d94ec20e96b38c3
change-id: 20260914-submit-h616-emac1-v1-143703842abb
Best regards,
--
James Hilliard <james.hilliard1@gmail.com>
^ permalink raw reply [flat|nested] 6+ messages in thread* [PATCH net-next 1/2] dt-bindings: net: allwinner: add H616 EMAC1 2026-09-15 19:03 [PATCH net-next 0/2] net: stmmac: add Allwinner H616 EMAC1 support James Hilliard @ 2026-09-15 19:03 ` James Hilliard 2026-09-15 20:33 ` Maxime Chevallier 2026-09-15 19:03 ` [PATCH net-next 2/2] net: stmmac: sun8i: add support for Allwinner " James Hilliard 1 sibling, 1 reply; 6+ messages in thread From: James Hilliard @ 2026-09-15 19:03 UTC (permalink / raw) To: Richard Genoud, Andrew Lunn, David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Chen-Yu Tsai, Jernej Skrabec, Samuel Holland, Alexandre Torgue, Giuseppe Cavallaro, Jose Abreu, Maxime Chevallier, Maxime Coquelin Cc: Maxime Ripard, netdev, devicetree, linux-arm-kernel, linux-sunxi, linux-kernel, linux-stm32, James Hilliard The H616 secondary EMAC uses a separate system-control clock register and supports only RMII at 10/100 Mbps. Add its distinct compatible without an older fallback, since using the primary EMAC clock register would not work. Constrain the PHY interface mode to RMII, matching the hardware. The EMAC1 clock register also retains the three-bit TX and five-bit RX delay chains, so allow the existing Allwinner delay properties for this compatible. Signed-off-by: Richard Genoud <richard.genoud@bootlin.com> Signed-off-by: James Hilliard <james.hilliard1@gmail.com> --- .../bindings/net/allwinner,sun8i-a83t-emac.yaml | 18 ++++++++++++++++-- Documentation/devicetree/bindings/net/snps,dwmac.yaml | 2 ++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/Documentation/devicetree/bindings/net/allwinner,sun8i-a83t-emac.yaml b/Documentation/devicetree/bindings/net/allwinner,sun8i-a83t-emac.yaml index 323a669fa982..34def84e6c21 100644 --- a/Documentation/devicetree/bindings/net/allwinner,sun8i-a83t-emac.yaml +++ b/Documentation/devicetree/bindings/net/allwinner,sun8i-a83t-emac.yaml @@ -21,6 +21,7 @@ select: - allwinner,sun8i-r40-gmac - allwinner,sun8i-v3s-emac - allwinner,sun50i-a64-emac + - allwinner,sun50i-h616-emac1 - allwinner,sun55i-a523-gmac200 required: - compatible @@ -33,6 +34,7 @@ properties: - const: allwinner,sun8i-r40-gmac - const: allwinner,sun8i-v3s-emac - const: allwinner,sun50i-a64-emac + - const: allwinner,sun50i-h616-emac1 - items: - enum: - allwinner,sun20i-d1-emac @@ -91,6 +93,17 @@ required: allOf: - $ref: snps,dwmac.yaml# + - if: + properties: + compatible: + contains: + const: allwinner,sun50i-h616-emac1 + + then: + properties: + phy-mode: + const: rmii + - if: properties: compatible: @@ -100,6 +113,7 @@ allOf: - allwinner,sun8i-h3-emac - allwinner,sun8i-v3s-emac - allwinner,sun50i-a64-emac + - allwinner,sun50i-h616-emac1 then: properties: @@ -109,7 +123,7 @@ allOf: maximum: 700 multipleOf: 100 description: - External RGMII PHY TX clock delay chain value in ps. + PHY interface TX clock delay chain value in ps. allwinner,rx-delay-ps: default: 0 @@ -117,7 +131,7 @@ allOf: maximum: 3100 multipleOf: 100 description: - External RGMII PHY TX clock delay chain value in ps. + PHY interface RX clock delay chain value in ps. - if: properties: diff --git a/Documentation/devicetree/bindings/net/snps,dwmac.yaml b/Documentation/devicetree/bindings/net/snps,dwmac.yaml index 2ed4564ae99d..b20149c3e850 100644 --- a/Documentation/devicetree/bindings/net/snps,dwmac.yaml +++ b/Documentation/devicetree/bindings/net/snps,dwmac.yaml @@ -57,6 +57,7 @@ properties: - allwinner,sun8i-r40-gmac - allwinner,sun8i-v3s-emac - allwinner,sun50i-a64-emac + - allwinner,sun50i-h616-emac1 - amlogic,meson6-dwmac - amlogic,meson8b-dwmac - amlogic,meson8m2-dwmac @@ -623,6 +624,7 @@ allOf: - allwinner,sun8i-r40-gmac - allwinner,sun8i-v3s-emac - allwinner,sun50i-a64-emac + - allwinner,sun50i-h616-emac1 - loongson,ls2k-dwmac - loongson,ls7a-dwmac - ingenic,jz4775-mac -- 2.53.0 ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH net-next 1/2] dt-bindings: net: allwinner: add H616 EMAC1 2026-09-15 19:03 ` [PATCH net-next 1/2] dt-bindings: net: allwinner: add H616 EMAC1 James Hilliard @ 2026-09-15 20:33 ` Maxime Chevallier 2026-09-15 21:56 ` Andrew Lunn 2026-09-16 3:12 ` James Hilliard 0 siblings, 2 replies; 6+ messages in thread From: Maxime Chevallier @ 2026-09-15 20:33 UTC (permalink / raw) To: James Hilliard, Richard Genoud, Andrew Lunn, David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Chen-Yu Tsai, Jernej Skrabec, Samuel Holland, Alexandre Torgue, Giuseppe Cavallaro, Jose Abreu, Maxime Coquelin Cc: Maxime Ripard, netdev, devicetree, linux-arm-kernel, linux-sunxi, linux-kernel, linux-stm32 Hi James, On 9/15/26 21:03, James Hilliard wrote: > The H616 secondary EMAC uses a separate system-control clock register > and supports only RMII at 10/100 Mbps. Add its distinct compatible > without an older fallback, since using the primary EMAC clock register > would not work. > > Constrain the PHY interface mode to RMII, matching the hardware. The > EMAC1 clock register also retains the three-bit TX and five-bit RX delay > chains, so allow the existing Allwinner delay properties for this > compatible. I don't think there's such a thing as RMII delays. RMII has a single clock, contrary to RGMII that has a TX and a RX clock with a 2ns delay between clock and data. I think it's just a leftover in this IP from the other variants that can do RGMII ? You should just be able to drop the comment changes here, and same goes for the dwmac patch. Maxime ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH net-next 1/2] dt-bindings: net: allwinner: add H616 EMAC1 2026-09-15 20:33 ` Maxime Chevallier @ 2026-09-15 21:56 ` Andrew Lunn 2026-09-16 3:12 ` James Hilliard 1 sibling, 0 replies; 6+ messages in thread From: Andrew Lunn @ 2026-09-15 21:56 UTC (permalink / raw) To: Maxime Chevallier Cc: James Hilliard, Richard Genoud, Andrew Lunn, David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Chen-Yu Tsai, Jernej Skrabec, Samuel Holland, Alexandre Torgue, Giuseppe Cavallaro, Jose Abreu, Maxime Coquelin, Maxime Ripard, netdev, devicetree, linux-arm-kernel, linux-sunxi, linux-kernel, linux-stm32 On Tue, Sep 15, 2026 at 10:33:12PM +0200, Maxime Chevallier wrote: > Hi James, > > On 9/15/26 21:03, James Hilliard wrote: > > The H616 secondary EMAC uses a separate system-control clock register > > and supports only RMII at 10/100 Mbps. Add its distinct compatible > > without an older fallback, since using the primary EMAC clock register > > would not work. > > > > Constrain the PHY interface mode to RMII, matching the hardware. The > > EMAC1 clock register also retains the three-bit TX and five-bit RX delay > > chains, so allow the existing Allwinner delay properties for this > > compatible. > > I don't think there's such a thing as RMII delays. RMII has a single > clock, contrary to RGMII that has a TX and a RX clock with a 2ns delay > between clock and data. > > I think it's just a leftover in this IP from the other variants that > can do RGMII ? You should just be able to drop the comment changes here, > and same goes for the dwmac patch. That was my thinking as well. Andrew ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH net-next 1/2] dt-bindings: net: allwinner: add H616 EMAC1 2026-09-15 20:33 ` Maxime Chevallier 2026-09-15 21:56 ` Andrew Lunn @ 2026-09-16 3:12 ` James Hilliard 1 sibling, 0 replies; 6+ messages in thread From: James Hilliard @ 2026-09-16 3:12 UTC (permalink / raw) To: Maxime Chevallier Cc: Richard Genoud, Andrew Lunn, David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Chen-Yu Tsai, Jernej Skrabec, Samuel Holland, Alexandre Torgue, Giuseppe Cavallaro, Jose Abreu, Maxime Coquelin, Maxime Ripard, netdev, devicetree, linux-arm-kernel, linux-sunxi, linux-kernel, linux-stm32 On Tue, Sep 15, 2026 at 2:33 PM Maxime Chevallier <maxime.chevallier@bootlin.com> wrote: > > Hi James, > > On 9/15/26 21:03, James Hilliard wrote: > > The H616 secondary EMAC uses a separate system-control clock register > > and supports only RMII at 10/100 Mbps. Add its distinct compatible > > without an older fallback, since using the primary EMAC clock register > > would not work. > > > > Constrain the PHY interface mode to RMII, matching the hardware. The > > EMAC1 clock register also retains the three-bit TX and five-bit RX delay > > chains, so allow the existing Allwinner delay properties for this > > compatible. > > I don't think there's such a thing as RMII delays. RMII has a single > clock, contrary to RGMII that has a TX and a RX clock with a 2ns delay > between clock and data. > > I think it's just a leftover in this IP from the other variants that > can do RGMII ? You should just be able to drop the comment changes here, > and same goes for the dwmac patch. Yeah, looks like most but not all vendor driver variants had RMII delays configured here, I did test and it doesn't seem to be needed so I went ahead and dropped the delays in my v2. So yeah, seems to have been just a leftover config. > > Maxime > ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH net-next 2/2] net: stmmac: sun8i: add support for Allwinner H616 EMAC1 2026-09-15 19:03 [PATCH net-next 0/2] net: stmmac: add Allwinner H616 EMAC1 support James Hilliard 2026-09-15 19:03 ` [PATCH net-next 1/2] dt-bindings: net: allwinner: add H616 EMAC1 James Hilliard @ 2026-09-15 19:03 ` James Hilliard 1 sibling, 0 replies; 6+ messages in thread From: James Hilliard @ 2026-09-15 19:03 UTC (permalink / raw) To: Richard Genoud, Andrew Lunn, David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Chen-Yu Tsai, Jernej Skrabec, Samuel Holland, Alexandre Torgue, Giuseppe Cavallaro, Jose Abreu, Maxime Chevallier, Maxime Coquelin Cc: Maxime Ripard, netdev, devicetree, linux-arm-kernel, linux-sunxi, linux-kernel, linux-stm32, James Hilliard The H616 secondary EMAC uses a separate system-control clock register and supports only RMII at 10/100 Mbps. Its EPHY is provided by a companion AC200 or AC300 package rather than an internal PHY block. Add an EMAC1 variant using the dedicated register and mark the PHY as external. The register retains the standard five-bit RX and three-bit TX clock delay chains, so expose their supported ranges to the shared syscon setup. Co-developed-by: Richard Genoud <richard.genoud@bootlin.com> Signed-off-by: Richard Genoud <richard.genoud@bootlin.com> Signed-off-by: James Hilliard <james.hilliard1@gmail.com> --- drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c index 48c52eb96233..fdc0c3384af8 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,18 @@ 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 "internal PHY" is in a companion AC200 or AC300 package, + * rather than on the H616 die. + */ + .soc_has_internal_phy = false, + .support_rmii = true, + .rx_delay_max = 31, + .tx_delay_max = 7, +}; + #define EMAC_BASIC_CTL0 0x00 #define EMAC_BASIC_CTL1 0x04 #define EMAC_INT_STA 0x08 @@ -1278,6 +1297,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); -- 2.53.0 ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2026-09-16 3:12 UTC | newest] Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2026-09-15 19:03 [PATCH net-next 0/2] net: stmmac: add Allwinner H616 EMAC1 support James Hilliard 2026-09-15 19:03 ` [PATCH net-next 1/2] dt-bindings: net: allwinner: add H616 EMAC1 James Hilliard 2026-09-15 20:33 ` Maxime Chevallier 2026-09-15 21:56 ` Andrew Lunn 2026-09-16 3:12 ` James Hilliard 2026-09-15 19:03 ` [PATCH net-next 2/2] net: stmmac: sun8i: add support for Allwinner " James Hilliard
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®