* [PATCH net-next v3 0/5] net: stmmac: dwmac-rk: Add GMAC support for RK3528
@ 2025-03-19 21:44 Jonas Karlman
2025-03-19 21:44 ` [PATCH net-next v3 1/5] dt-bindings: net: rockchip-dwmac: Add compatible string " Jonas Karlman
` (5 more replies)
0 siblings, 6 replies; 15+ messages in thread
From: Jonas Karlman @ 2025-03-19 21:44 UTC (permalink / raw)
To: Heiko Stuebner, Andrew Lunn, David S . Miller, Eric Dumazet,
Jakub Kicinski, Paolo Abeni
Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, David Wu, Yao Zi,
netdev, devicetree, linux-rockchip, linux-arm-kernel,
linux-kernel, Jonas Karlman
The Rockchip RK3528 has two Ethernet controllers, one 100/10 MAC to be
used with the integrated PHY and a second 1000/100/10 MAC to be used
with an external Ethernet PHY.
This series add initial support for the Ethernet controllers found in
RK3528 and initial support to power up/down the integrated PHY.
Changes in v3:
- Rebase on latest net-next/main
- Collect r-b tag on dt-bindings patch
Link to v2: https://lore.kernel.org/r/20250309232622.1498084-1-jonas@kwiboo.se
Changes in v2:
- Restrict the minItems: 4 change to rockchip,rk3528-gmac
- Add initial support to power up/down the integrated PHY in RK3528
- Split device tree changes into a separate series
Link to v1: https://lore.kernel.org/r/20250306221402.1704196-1-jonas@kwiboo.se
David Wu (1):
net: stmmac: dwmac-rk: Add GMAC support for RK3528
Jonas Karlman (4):
dt-bindings: net: rockchip-dwmac: Add compatible string for RK3528
net: stmmac: dwmac-rk: Move integrated_phy_powerup/down functions
net: stmmac: dwmac-rk: Add integrated_phy_powerdown operation
net: stmmac: dwmac-rk: Add initial support for RK3528 integrated PHY
.../bindings/net/rockchip-dwmac.yaml | 16 +-
.../net/ethernet/stmicro/stmmac/dwmac-rk.c | 277 ++++++++++++++----
2 files changed, 242 insertions(+), 51 deletions(-)
--
2.49.0
^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH net-next v3 1/5] dt-bindings: net: rockchip-dwmac: Add compatible string for RK3528
2025-03-19 21:44 [PATCH net-next v3 0/5] net: stmmac: dwmac-rk: Add GMAC support for RK3528 Jonas Karlman
@ 2025-03-19 21:44 ` Jonas Karlman
2025-03-19 21:44 ` [PATCH net-next v3 2/5] net: stmmac: dwmac-rk: Add GMAC support " Jonas Karlman
` (4 subsequent siblings)
5 siblings, 0 replies; 15+ messages in thread
From: Jonas Karlman @ 2025-03-19 21:44 UTC (permalink / raw)
To: Heiko Stuebner, Andrew Lunn, David S . Miller, Eric Dumazet,
Jakub Kicinski, Paolo Abeni, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, David Wu
Cc: Yao Zi, netdev, devicetree, linux-rockchip, linux-arm-kernel,
linux-kernel, Jonas Karlman
Rockchip RK3528 has two Ethernet controllers based on Synopsys DWC
Ethernet QoS IP.
Add compatible string for the RK3528 variant.
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Rob Herring (Arm) <robh@kernel.org>
---
Changes in v3:
- Rebase on latest net-next/main
- Collect r-b tag
Changes in v2:
- Restrict the minItems: 4 change to rockchip,rk3528-gmac
The enum will be extended in a future patch, Pending RK3562 and a future
RK3506 variant also only have 4 clocks.
Because snps,dwmac-4.20a is already listed in snps,dwmac.yaml adding the
rockchip,rk3528-gmac compatible did not seem necessary.
---
.../devicetree/bindings/net/rockchip-dwmac.yaml | 16 +++++++++++++++-
1 file changed, 15 insertions(+), 1 deletion(-)
diff --git a/Documentation/devicetree/bindings/net/rockchip-dwmac.yaml b/Documentation/devicetree/bindings/net/rockchip-dwmac.yaml
index 63ee0cc7a8f8..0ac7c4b47d6b 100644
--- a/Documentation/devicetree/bindings/net/rockchip-dwmac.yaml
+++ b/Documentation/devicetree/bindings/net/rockchip-dwmac.yaml
@@ -24,6 +24,7 @@ select:
- rockchip,rk3366-gmac
- rockchip,rk3368-gmac
- rockchip,rk3399-gmac
+ - rockchip,rk3528-gmac
- rockchip,rk3568-gmac
- rockchip,rk3576-gmac
- rockchip,rk3588-gmac
@@ -49,6 +50,7 @@ properties:
- rockchip,rv1108-gmac
- items:
- enum:
+ - rockchip,rk3528-gmac
- rockchip,rk3568-gmac
- rockchip,rk3576-gmac
- rockchip,rk3588-gmac
@@ -66,7 +68,7 @@ properties:
- const: eth_wake_irq
clocks:
- minItems: 5
+ minItems: 4
maxItems: 8
clock-names:
@@ -140,6 +142,18 @@ allOf:
properties:
rockchip,php-grf: false
+ - if:
+ not:
+ properties:
+ compatible:
+ contains:
+ enum:
+ - rockchip,rk3528-gmac
+ then:
+ properties:
+ clocks:
+ minItems: 5
+
unevaluatedProperties: false
examples:
--
2.49.0
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH net-next v3 2/5] net: stmmac: dwmac-rk: Add GMAC support for RK3528
2025-03-19 21:44 [PATCH net-next v3 0/5] net: stmmac: dwmac-rk: Add GMAC support for RK3528 Jonas Karlman
2025-03-19 21:44 ` [PATCH net-next v3 1/5] dt-bindings: net: rockchip-dwmac: Add compatible string " Jonas Karlman
@ 2025-03-19 21:44 ` Jonas Karlman
2025-03-19 21:44 ` [PATCH net-next v3 3/5] net: stmmac: dwmac-rk: Move integrated_phy_powerup/down functions Jonas Karlman
` (3 subsequent siblings)
5 siblings, 0 replies; 15+ messages in thread
From: Jonas Karlman @ 2025-03-19 21:44 UTC (permalink / raw)
To: Heiko Stuebner, Andrew Lunn, David S . Miller, Eric Dumazet,
Jakub Kicinski, Paolo Abeni, Maxime Coquelin, Alexandre Torgue
Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, David Wu, Yao Zi,
netdev, devicetree, linux-rockchip, linux-arm-kernel,
linux-kernel, Jonas Karlman, linux-stm32
From: David Wu <david.wu@rock-chips.com>
Rockchip RK3528 has two Ethernet controllers based on Synopsys DWC
Ethernet QoS IP.
Add initial support for the RK3528 GMAC variant.
Signed-off-by: David Wu <david.wu@rock-chips.com>
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
---
Changes in v3:
- No change
Changes in v2:
- No change
Power up/down of the integrated PHY is added in a separate patch.
---
.../net/ethernet/stmicro/stmmac/dwmac-rk.c | 132 ++++++++++++++++++
1 file changed, 132 insertions(+)
diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c
index c404017bc1da..dfb4668db4ee 100644
--- a/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c
+++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c
@@ -828,6 +828,137 @@ static const struct rk_gmac_ops rk3399_ops = {
.set_rmii_speed = rk3399_set_rmii_speed,
};
+#define RK3528_VO_GRF_GMAC_CON 0x0018
+#define RK3528_VO_GRF_MACPHY_CON0 0x001c
+#define RK3528_VO_GRF_MACPHY_CON1 0x0020
+#define RK3528_VPU_GRF_GMAC_CON5 0x0018
+#define RK3528_VPU_GRF_GMAC_CON6 0x001c
+
+#define RK3528_GMAC_RXCLK_DLY_ENABLE GRF_BIT(15)
+#define RK3528_GMAC_RXCLK_DLY_DISABLE GRF_CLR_BIT(15)
+#define RK3528_GMAC_TXCLK_DLY_ENABLE GRF_BIT(14)
+#define RK3528_GMAC_TXCLK_DLY_DISABLE GRF_CLR_BIT(14)
+
+#define RK3528_GMAC_CLK_RX_DL_CFG(val) HIWORD_UPDATE(val, 0xFF, 8)
+#define RK3528_GMAC_CLK_TX_DL_CFG(val) HIWORD_UPDATE(val, 0xFF, 0)
+
+#define RK3528_GMAC0_PHY_INTF_SEL_RMII GRF_BIT(1)
+#define RK3528_GMAC1_PHY_INTF_SEL_RGMII GRF_CLR_BIT(8)
+#define RK3528_GMAC1_PHY_INTF_SEL_RMII GRF_BIT(8)
+
+#define RK3528_GMAC1_CLK_SELECT_CRU GRF_CLR_BIT(12)
+#define RK3528_GMAC1_CLK_SELECT_IO GRF_BIT(12)
+
+#define RK3528_GMAC0_CLK_RMII_DIV2 GRF_BIT(3)
+#define RK3528_GMAC0_CLK_RMII_DIV20 GRF_CLR_BIT(3)
+#define RK3528_GMAC1_CLK_RMII_DIV2 GRF_BIT(10)
+#define RK3528_GMAC1_CLK_RMII_DIV20 GRF_CLR_BIT(10)
+
+#define RK3528_GMAC1_CLK_RGMII_DIV1 (GRF_CLR_BIT(11) | GRF_CLR_BIT(10))
+#define RK3528_GMAC1_CLK_RGMII_DIV5 (GRF_BIT(11) | GRF_BIT(10))
+#define RK3528_GMAC1_CLK_RGMII_DIV50 (GRF_BIT(11) | GRF_CLR_BIT(10))
+
+#define RK3528_GMAC0_CLK_RMII_GATE GRF_BIT(2)
+#define RK3528_GMAC0_CLK_RMII_NOGATE GRF_CLR_BIT(2)
+#define RK3528_GMAC1_CLK_RMII_GATE GRF_BIT(9)
+#define RK3528_GMAC1_CLK_RMII_NOGATE GRF_CLR_BIT(9)
+
+static void rk3528_set_to_rgmii(struct rk_priv_data *bsp_priv,
+ int tx_delay, int rx_delay)
+{
+ regmap_write(bsp_priv->grf, RK3528_VPU_GRF_GMAC_CON5,
+ RK3528_GMAC1_PHY_INTF_SEL_RGMII);
+
+ regmap_write(bsp_priv->grf, RK3528_VPU_GRF_GMAC_CON5,
+ DELAY_ENABLE(RK3528, tx_delay, rx_delay));
+
+ regmap_write(bsp_priv->grf, RK3528_VPU_GRF_GMAC_CON6,
+ RK3528_GMAC_CLK_RX_DL_CFG(rx_delay) |
+ RK3528_GMAC_CLK_TX_DL_CFG(tx_delay));
+}
+
+static void rk3528_set_to_rmii(struct rk_priv_data *bsp_priv)
+{
+ if (bsp_priv->id == 1)
+ regmap_write(bsp_priv->grf, RK3528_VPU_GRF_GMAC_CON5,
+ RK3528_GMAC1_PHY_INTF_SEL_RMII);
+ else
+ regmap_write(bsp_priv->grf, RK3528_VO_GRF_GMAC_CON,
+ RK3528_GMAC0_PHY_INTF_SEL_RMII |
+ RK3528_GMAC0_CLK_RMII_DIV2);
+}
+
+static void rk3528_set_rgmii_speed(struct rk_priv_data *bsp_priv, int speed)
+{
+ struct device *dev = &bsp_priv->pdev->dev;
+
+ if (speed == 10)
+ regmap_write(bsp_priv->grf, RK3528_VPU_GRF_GMAC_CON5,
+ RK3528_GMAC1_CLK_RGMII_DIV50);
+ else if (speed == 100)
+ regmap_write(bsp_priv->grf, RK3528_VPU_GRF_GMAC_CON5,
+ RK3528_GMAC1_CLK_RGMII_DIV5);
+ else if (speed == 1000)
+ regmap_write(bsp_priv->grf, RK3528_VPU_GRF_GMAC_CON5,
+ RK3528_GMAC1_CLK_RGMII_DIV1);
+ else
+ dev_err(dev, "unknown speed value for RGMII! speed=%d", speed);
+}
+
+static void rk3528_set_rmii_speed(struct rk_priv_data *bsp_priv, int speed)
+{
+ struct device *dev = &bsp_priv->pdev->dev;
+ unsigned int reg, val;
+
+ if (speed == 10)
+ val = bsp_priv->id == 1 ? RK3528_GMAC1_CLK_RMII_DIV20 :
+ RK3528_GMAC0_CLK_RMII_DIV20;
+ else if (speed == 100)
+ val = bsp_priv->id == 1 ? RK3528_GMAC1_CLK_RMII_DIV2 :
+ RK3528_GMAC0_CLK_RMII_DIV2;
+ else {
+ dev_err(dev, "unknown speed value for RMII! speed=%d", speed);
+ return;
+ }
+
+ reg = bsp_priv->id == 1 ? RK3528_VPU_GRF_GMAC_CON5 :
+ RK3528_VO_GRF_GMAC_CON;
+
+ regmap_write(bsp_priv->grf, reg, val);
+}
+
+static void rk3528_set_clock_selection(struct rk_priv_data *bsp_priv,
+ bool input, bool enable)
+{
+ unsigned int val;
+
+ if (bsp_priv->id == 1) {
+ val = input ? RK3528_GMAC1_CLK_SELECT_IO :
+ RK3528_GMAC1_CLK_SELECT_CRU;
+ val |= enable ? RK3528_GMAC1_CLK_RMII_NOGATE :
+ RK3528_GMAC1_CLK_RMII_GATE;
+ regmap_write(bsp_priv->grf, RK3528_VPU_GRF_GMAC_CON5, val);
+ } else {
+ val = enable ? RK3528_GMAC0_CLK_RMII_NOGATE :
+ RK3528_GMAC0_CLK_RMII_GATE;
+ regmap_write(bsp_priv->grf, RK3528_VO_GRF_GMAC_CON, val);
+ }
+}
+
+static const struct rk_gmac_ops rk3528_ops = {
+ .set_to_rgmii = rk3528_set_to_rgmii,
+ .set_to_rmii = rk3528_set_to_rmii,
+ .set_rgmii_speed = rk3528_set_rgmii_speed,
+ .set_rmii_speed = rk3528_set_rmii_speed,
+ .set_clock_selection = rk3528_set_clock_selection,
+ .regs_valid = true,
+ .regs = {
+ 0xffbd0000, /* gmac0 */
+ 0xffbe0000, /* gmac1 */
+ 0x0, /* sentinel */
+ },
+};
+
#define RK3568_GRF_GMAC0_CON0 0x0380
#define RK3568_GRF_GMAC0_CON1 0x0384
#define RK3568_GRF_GMAC1_CON0 0x0388
@@ -1819,6 +1950,7 @@ static const struct of_device_id rk_gmac_dwmac_match[] = {
{ .compatible = "rockchip,rk3366-gmac", .data = &rk3366_ops },
{ .compatible = "rockchip,rk3368-gmac", .data = &rk3368_ops },
{ .compatible = "rockchip,rk3399-gmac", .data = &rk3399_ops },
+ { .compatible = "rockchip,rk3528-gmac", .data = &rk3528_ops },
{ .compatible = "rockchip,rk3568-gmac", .data = &rk3568_ops },
{ .compatible = "rockchip,rk3576-gmac", .data = &rk3576_ops },
{ .compatible = "rockchip,rk3588-gmac", .data = &rk3588_ops },
--
2.49.0
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH net-next v3 3/5] net: stmmac: dwmac-rk: Move integrated_phy_powerup/down functions
2025-03-19 21:44 [PATCH net-next v3 0/5] net: stmmac: dwmac-rk: Add GMAC support for RK3528 Jonas Karlman
2025-03-19 21:44 ` [PATCH net-next v3 1/5] dt-bindings: net: rockchip-dwmac: Add compatible string " Jonas Karlman
2025-03-19 21:44 ` [PATCH net-next v3 2/5] net: stmmac: dwmac-rk: Add GMAC support " Jonas Karlman
@ 2025-03-19 21:44 ` Jonas Karlman
2025-03-19 22:39 ` Andrew Lunn
2025-03-19 21:44 ` [PATCH net-next v3 4/5] net: stmmac: dwmac-rk: Add integrated_phy_powerdown operation Jonas Karlman
` (2 subsequent siblings)
5 siblings, 1 reply; 15+ messages in thread
From: Jonas Karlman @ 2025-03-19 21:44 UTC (permalink / raw)
To: Heiko Stuebner, Andrew Lunn, David S . Miller, Eric Dumazet,
Jakub Kicinski, Paolo Abeni, Maxime Coquelin, Alexandre Torgue,
Philipp Zabel
Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, David Wu, Yao Zi,
netdev, devicetree, linux-rockchip, linux-arm-kernel,
linux-kernel, Jonas Karlman, linux-stm32
Rockchip RK3528 (and RV1106) has a different integrated PHY compared to
the integrated PHY on RK3228/RK3328. Current powerup/down operation is
not compatible with the integrated PHY found in these SoCs.
Move the rk_gmac_integrated_phy_powerup/down functions to top of the
file to prepare for them to be called directly by a GMAC variant
specific powerup/down operation.
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
---
Changes in v3:
- No change
Changes in v2:
- New patch
---
.../net/ethernet/stmicro/stmmac/dwmac-rk.c | 88 +++++++++----------
1 file changed, 44 insertions(+), 44 deletions(-)
diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c
index dfb4668db4ee..0321befed0d3 100644
--- a/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c
+++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c
@@ -92,6 +92,50 @@ struct rk_priv_data {
(((tx) ? soc##_GMAC_TXCLK_DLY_ENABLE : soc##_GMAC_TXCLK_DLY_DISABLE) | \
((rx) ? soc##_GMAC_RXCLK_DLY_ENABLE : soc##_GMAC_RXCLK_DLY_DISABLE))
+#define RK_GRF_MACPHY_CON0 0xb00
+#define RK_GRF_MACPHY_CON1 0xb04
+#define RK_GRF_MACPHY_CON2 0xb08
+#define RK_GRF_MACPHY_CON3 0xb0c
+
+#define RK_MACPHY_ENABLE GRF_BIT(0)
+#define RK_MACPHY_DISABLE GRF_CLR_BIT(0)
+#define RK_MACPHY_CFG_CLK_50M GRF_BIT(14)
+#define RK_GMAC2PHY_RMII_MODE (GRF_BIT(6) | GRF_CLR_BIT(7))
+#define RK_GRF_CON2_MACPHY_ID HIWORD_UPDATE(0x1234, 0xffff, 0)
+#define RK_GRF_CON3_MACPHY_ID HIWORD_UPDATE(0x35, 0x3f, 0)
+
+static void rk_gmac_integrated_phy_powerup(struct rk_priv_data *priv)
+{
+ if (priv->ops->integrated_phy_powerup)
+ priv->ops->integrated_phy_powerup(priv);
+
+ regmap_write(priv->grf, RK_GRF_MACPHY_CON0, RK_MACPHY_CFG_CLK_50M);
+ regmap_write(priv->grf, RK_GRF_MACPHY_CON0, RK_GMAC2PHY_RMII_MODE);
+
+ regmap_write(priv->grf, RK_GRF_MACPHY_CON2, RK_GRF_CON2_MACPHY_ID);
+ regmap_write(priv->grf, RK_GRF_MACPHY_CON3, RK_GRF_CON3_MACPHY_ID);
+
+ if (priv->phy_reset) {
+ /* PHY needs to be disabled before trying to reset it */
+ regmap_write(priv->grf, RK_GRF_MACPHY_CON0, RK_MACPHY_DISABLE);
+ if (priv->phy_reset)
+ reset_control_assert(priv->phy_reset);
+ usleep_range(10, 20);
+ if (priv->phy_reset)
+ reset_control_deassert(priv->phy_reset);
+ usleep_range(10, 20);
+ regmap_write(priv->grf, RK_GRF_MACPHY_CON0, RK_MACPHY_ENABLE);
+ msleep(30);
+ }
+}
+
+static void rk_gmac_integrated_phy_powerdown(struct rk_priv_data *priv)
+{
+ regmap_write(priv->grf, RK_GRF_MACPHY_CON0, RK_MACPHY_DISABLE);
+ if (priv->phy_reset)
+ reset_control_assert(priv->phy_reset);
+}
+
#define PX30_GRF_GMAC_CON1 0x0904
/* PX30_GRF_GMAC_CON1 */
@@ -1463,50 +1507,6 @@ static const struct rk_gmac_ops rv1126_ops = {
.set_rmii_speed = rv1126_set_rmii_speed,
};
-#define RK_GRF_MACPHY_CON0 0xb00
-#define RK_GRF_MACPHY_CON1 0xb04
-#define RK_GRF_MACPHY_CON2 0xb08
-#define RK_GRF_MACPHY_CON3 0xb0c
-
-#define RK_MACPHY_ENABLE GRF_BIT(0)
-#define RK_MACPHY_DISABLE GRF_CLR_BIT(0)
-#define RK_MACPHY_CFG_CLK_50M GRF_BIT(14)
-#define RK_GMAC2PHY_RMII_MODE (GRF_BIT(6) | GRF_CLR_BIT(7))
-#define RK_GRF_CON2_MACPHY_ID HIWORD_UPDATE(0x1234, 0xffff, 0)
-#define RK_GRF_CON3_MACPHY_ID HIWORD_UPDATE(0x35, 0x3f, 0)
-
-static void rk_gmac_integrated_phy_powerup(struct rk_priv_data *priv)
-{
- if (priv->ops->integrated_phy_powerup)
- priv->ops->integrated_phy_powerup(priv);
-
- regmap_write(priv->grf, RK_GRF_MACPHY_CON0, RK_MACPHY_CFG_CLK_50M);
- regmap_write(priv->grf, RK_GRF_MACPHY_CON0, RK_GMAC2PHY_RMII_MODE);
-
- regmap_write(priv->grf, RK_GRF_MACPHY_CON2, RK_GRF_CON2_MACPHY_ID);
- regmap_write(priv->grf, RK_GRF_MACPHY_CON3, RK_GRF_CON3_MACPHY_ID);
-
- if (priv->phy_reset) {
- /* PHY needs to be disabled before trying to reset it */
- regmap_write(priv->grf, RK_GRF_MACPHY_CON0, RK_MACPHY_DISABLE);
- if (priv->phy_reset)
- reset_control_assert(priv->phy_reset);
- usleep_range(10, 20);
- if (priv->phy_reset)
- reset_control_deassert(priv->phy_reset);
- usleep_range(10, 20);
- regmap_write(priv->grf, RK_GRF_MACPHY_CON0, RK_MACPHY_ENABLE);
- msleep(30);
- }
-}
-
-static void rk_gmac_integrated_phy_powerdown(struct rk_priv_data *priv)
-{
- regmap_write(priv->grf, RK_GRF_MACPHY_CON0, RK_MACPHY_DISABLE);
- if (priv->phy_reset)
- reset_control_assert(priv->phy_reset);
-}
-
static int rk_gmac_clk_init(struct plat_stmmacenet_data *plat)
{
struct rk_priv_data *bsp_priv = plat->bsp_priv;
--
2.49.0
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH net-next v3 4/5] net: stmmac: dwmac-rk: Add integrated_phy_powerdown operation
2025-03-19 21:44 [PATCH net-next v3 0/5] net: stmmac: dwmac-rk: Add GMAC support for RK3528 Jonas Karlman
` (2 preceding siblings ...)
2025-03-19 21:44 ` [PATCH net-next v3 3/5] net: stmmac: dwmac-rk: Move integrated_phy_powerup/down functions Jonas Karlman
@ 2025-03-19 21:44 ` Jonas Karlman
2025-03-20 13:19 ` Andrew Lunn
2025-03-19 21:44 ` [PATCH net-next v3 5/5] net: stmmac: dwmac-rk: Add initial support for RK3528 integrated PHY Jonas Karlman
2025-03-25 15:10 ` [PATCH net-next v3 0/5] net: stmmac: dwmac-rk: Add GMAC support for RK3528 patchwork-bot+netdevbpf
5 siblings, 1 reply; 15+ messages in thread
From: Jonas Karlman @ 2025-03-19 21:44 UTC (permalink / raw)
To: Heiko Stuebner, Andrew Lunn, David S . Miller, Eric Dumazet,
Jakub Kicinski, Paolo Abeni, Maxime Coquelin, Alexandre Torgue
Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, David Wu, Yao Zi,
netdev, devicetree, linux-rockchip, linux-arm-kernel,
linux-kernel, Jonas Karlman, linux-stm32
Rockchip RK3528 (and RV1106) has a different integrated PHY compared to
the integrated PHY on RK3228/RK3328. Current powerup/down operation is
not compatible with the integrated PHY found in these newer SoCs.
Add a new integrated_phy_powerdown operation and change the call chain
for integrated_phy_powerup to prepare support for the integrated PHY
found in these newer SoCs.
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
---
Changes in v3:
- No change
Changes in v2:
- New patch
---
.../net/ethernet/stmicro/stmmac/dwmac-rk.c | 26 +++++++++++--------
1 file changed, 15 insertions(+), 11 deletions(-)
diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c
index 0321befed0d3..3673abd65302 100644
--- a/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c
+++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c
@@ -33,6 +33,7 @@ struct rk_gmac_ops {
void (*set_clock_selection)(struct rk_priv_data *bsp_priv, bool input,
bool enable);
void (*integrated_phy_powerup)(struct rk_priv_data *bsp_priv);
+ void (*integrated_phy_powerdown)(struct rk_priv_data *bsp_priv);
bool php_grf_required;
bool regs_valid;
u32 regs[];
@@ -104,11 +105,8 @@ struct rk_priv_data {
#define RK_GRF_CON2_MACPHY_ID HIWORD_UPDATE(0x1234, 0xffff, 0)
#define RK_GRF_CON3_MACPHY_ID HIWORD_UPDATE(0x35, 0x3f, 0)
-static void rk_gmac_integrated_phy_powerup(struct rk_priv_data *priv)
+static void rk_gmac_integrated_ephy_powerup(struct rk_priv_data *priv)
{
- if (priv->ops->integrated_phy_powerup)
- priv->ops->integrated_phy_powerup(priv);
-
regmap_write(priv->grf, RK_GRF_MACPHY_CON0, RK_MACPHY_CFG_CLK_50M);
regmap_write(priv->grf, RK_GRF_MACPHY_CON0, RK_GMAC2PHY_RMII_MODE);
@@ -129,7 +127,7 @@ static void rk_gmac_integrated_phy_powerup(struct rk_priv_data *priv)
}
}
-static void rk_gmac_integrated_phy_powerdown(struct rk_priv_data *priv)
+static void rk_gmac_integrated_ephy_powerdown(struct rk_priv_data *priv)
{
regmap_write(priv->grf, RK_GRF_MACPHY_CON0, RK_MACPHY_DISABLE);
if (priv->phy_reset)
@@ -368,6 +366,8 @@ static void rk3228_integrated_phy_powerup(struct rk_priv_data *priv)
{
regmap_write(priv->grf, RK3228_GRF_CON_MUX,
RK3228_GRF_CON_MUX_GMAC_INTEGRATED_PHY);
+
+ rk_gmac_integrated_ephy_powerup(priv);
}
static const struct rk_gmac_ops rk3228_ops = {
@@ -375,7 +375,8 @@ static const struct rk_gmac_ops rk3228_ops = {
.set_to_rmii = rk3228_set_to_rmii,
.set_rgmii_speed = rk3228_set_rgmii_speed,
.set_rmii_speed = rk3228_set_rmii_speed,
- .integrated_phy_powerup = rk3228_integrated_phy_powerup,
+ .integrated_phy_powerup = rk3228_integrated_phy_powerup,
+ .integrated_phy_powerdown = rk_gmac_integrated_ephy_powerdown,
};
#define RK3288_GRF_SOC_CON1 0x0248
@@ -601,6 +602,8 @@ static void rk3328_integrated_phy_powerup(struct rk_priv_data *priv)
{
regmap_write(priv->grf, RK3328_GRF_MACPHY_CON1,
RK3328_MACPHY_RMII_MODE);
+
+ rk_gmac_integrated_ephy_powerup(priv);
}
static const struct rk_gmac_ops rk3328_ops = {
@@ -608,7 +611,8 @@ static const struct rk_gmac_ops rk3328_ops = {
.set_to_rmii = rk3328_set_to_rmii,
.set_rgmii_speed = rk3328_set_rgmii_speed,
.set_rmii_speed = rk3328_set_rmii_speed,
- .integrated_phy_powerup = rk3328_integrated_phy_powerup,
+ .integrated_phy_powerup = rk3328_integrated_phy_powerup,
+ .integrated_phy_powerdown = rk_gmac_integrated_ephy_powerdown,
};
#define RK3366_GRF_SOC_CON6 0x0418
@@ -1802,16 +1806,16 @@ static int rk_gmac_powerup(struct rk_priv_data *bsp_priv)
pm_runtime_get_sync(dev);
- if (bsp_priv->integrated_phy)
- rk_gmac_integrated_phy_powerup(bsp_priv);
+ if (bsp_priv->integrated_phy && bsp_priv->ops->integrated_phy_powerup)
+ bsp_priv->ops->integrated_phy_powerup(bsp_priv);
return 0;
}
static void rk_gmac_powerdown(struct rk_priv_data *gmac)
{
- if (gmac->integrated_phy)
- rk_gmac_integrated_phy_powerdown(gmac);
+ if (gmac->integrated_phy && gmac->ops->integrated_phy_powerdown)
+ gmac->ops->integrated_phy_powerdown(gmac);
pm_runtime_put_sync(&gmac->pdev->dev);
--
2.49.0
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH net-next v3 5/5] net: stmmac: dwmac-rk: Add initial support for RK3528 integrated PHY
2025-03-19 21:44 [PATCH net-next v3 0/5] net: stmmac: dwmac-rk: Add GMAC support for RK3528 Jonas Karlman
` (3 preceding siblings ...)
2025-03-19 21:44 ` [PATCH net-next v3 4/5] net: stmmac: dwmac-rk: Add integrated_phy_powerdown operation Jonas Karlman
@ 2025-03-19 21:44 ` Jonas Karlman
2025-03-19 23:27 ` Andrew Lunn
2025-03-20 13:20 ` Andrew Lunn
2025-03-25 15:10 ` [PATCH net-next v3 0/5] net: stmmac: dwmac-rk: Add GMAC support for RK3528 patchwork-bot+netdevbpf
5 siblings, 2 replies; 15+ messages in thread
From: Jonas Karlman @ 2025-03-19 21:44 UTC (permalink / raw)
To: Heiko Stuebner, Andrew Lunn, David S . Miller, Eric Dumazet,
Jakub Kicinski, Paolo Abeni, Maxime Coquelin, Alexandre Torgue,
Philipp Zabel
Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, David Wu, Yao Zi,
netdev, devicetree, linux-rockchip, linux-arm-kernel,
linux-kernel, Jonas Karlman, linux-stm32
Rockchip RK3528 (and RV1106) has a different integrated PHY compared to
the integrated PHY on RK3228/RK3328. Current powerup/down operation is
not compatible with the integrated PHY found in these newer SoCs.
Add operations to powerup/down the integrated PHY found in RK3528.
Use helpers that can be used by other GMAC variants in the future.
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
---
Changes in v3:
- No change
Changes in v2:
- New patch
This is enough to power up the integrated PHY on RK3528 for MDIO/MII.
However, a PHY driver is still missing and I do not have any RK3528
board that make use of this MAC and PHY, so something that can be
improved upon in the future.
---
.../net/ethernet/stmicro/stmmac/dwmac-rk.c | 41 +++++++++++++++++++
1 file changed, 41 insertions(+)
diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c
index 3673abd65302..700858ff6f7c 100644
--- a/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c
+++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c
@@ -134,6 +134,35 @@ static void rk_gmac_integrated_ephy_powerdown(struct rk_priv_data *priv)
reset_control_assert(priv->phy_reset);
}
+#define RK_FEPHY_SHUTDOWN GRF_BIT(1)
+#define RK_FEPHY_POWERUP GRF_CLR_BIT(1)
+#define RK_FEPHY_INTERNAL_RMII_SEL GRF_BIT(6)
+#define RK_FEPHY_24M_CLK_SEL (GRF_BIT(8) | GRF_BIT(9))
+#define RK_FEPHY_PHY_ID GRF_BIT(11)
+
+static void rk_gmac_integrated_fephy_powerup(struct rk_priv_data *priv,
+ unsigned int reg)
+{
+ reset_control_assert(priv->phy_reset);
+ usleep_range(20, 30);
+
+ regmap_write(priv->grf, reg,
+ RK_FEPHY_POWERUP |
+ RK_FEPHY_INTERNAL_RMII_SEL |
+ RK_FEPHY_24M_CLK_SEL |
+ RK_FEPHY_PHY_ID);
+ usleep_range(10000, 12000);
+
+ reset_control_deassert(priv->phy_reset);
+ usleep_range(50000, 60000);
+}
+
+static void rk_gmac_integrated_fephy_powerdown(struct rk_priv_data *priv,
+ unsigned int reg)
+{
+ regmap_write(priv->grf, reg, RK_FEPHY_SHUTDOWN);
+}
+
#define PX30_GRF_GMAC_CON1 0x0904
/* PX30_GRF_GMAC_CON1 */
@@ -993,12 +1022,24 @@ static void rk3528_set_clock_selection(struct rk_priv_data *bsp_priv,
}
}
+static void rk3528_integrated_phy_powerup(struct rk_priv_data *bsp_priv)
+{
+ rk_gmac_integrated_fephy_powerup(bsp_priv, RK3528_VO_GRF_MACPHY_CON0);
+}
+
+static void rk3528_integrated_phy_powerdown(struct rk_priv_data *bsp_priv)
+{
+ rk_gmac_integrated_fephy_powerdown(bsp_priv, RK3528_VO_GRF_MACPHY_CON0);
+}
+
static const struct rk_gmac_ops rk3528_ops = {
.set_to_rgmii = rk3528_set_to_rgmii,
.set_to_rmii = rk3528_set_to_rmii,
.set_rgmii_speed = rk3528_set_rgmii_speed,
.set_rmii_speed = rk3528_set_rmii_speed,
.set_clock_selection = rk3528_set_clock_selection,
+ .integrated_phy_powerup = rk3528_integrated_phy_powerup,
+ .integrated_phy_powerdown = rk3528_integrated_phy_powerdown,
.regs_valid = true,
.regs = {
0xffbd0000, /* gmac0 */
--
2.49.0
^ permalink raw reply related [flat|nested] 15+ messages in thread
* Re: [PATCH net-next v3 3/5] net: stmmac: dwmac-rk: Move integrated_phy_powerup/down functions
2025-03-19 21:44 ` [PATCH net-next v3 3/5] net: stmmac: dwmac-rk: Move integrated_phy_powerup/down functions Jonas Karlman
@ 2025-03-19 22:39 ` Andrew Lunn
2025-03-19 23:00 ` Jonas Karlman
0 siblings, 1 reply; 15+ messages in thread
From: Andrew Lunn @ 2025-03-19 22:39 UTC (permalink / raw)
To: Jonas Karlman
Cc: Heiko Stuebner, Andrew Lunn, David S . Miller, Eric Dumazet,
Jakub Kicinski, Paolo Abeni, Maxime Coquelin, Alexandre Torgue,
Philipp Zabel, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
David Wu, Yao Zi, netdev, devicetree, linux-rockchip,
linux-arm-kernel, linux-kernel, linux-stm32
On Wed, Mar 19, 2025 at 09:44:07PM +0000, Jonas Karlman wrote:
> Rockchip RK3528 (and RV1106) has a different integrated PHY compared to
> the integrated PHY on RK3228/RK3328. Current powerup/down operation is
> not compatible with the integrated PHY found in these SoCs.
>
> Move the rk_gmac_integrated_phy_powerup/down functions to top of the
> file to prepare for them to be called directly by a GMAC variant
> specific powerup/down operation.
>
> Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
> +#define RK_GRF_CON2_MACPHY_ID HIWORD_UPDATE(0x1234, 0xffff, 0)
> +#define RK_GRF_CON3_MACPHY_ID HIWORD_UPDATE(0x35, 0x3f, 0)
> +
> +static void rk_gmac_integrated_phy_powerup(struct rk_priv_data *priv)
> +{
> + if (priv->ops->integrated_phy_powerup)
> + priv->ops->integrated_phy_powerup(priv);
> +
> + regmap_write(priv->grf, RK_GRF_MACPHY_CON0, RK_MACPHY_CFG_CLK_50M);
> + regmap_write(priv->grf, RK_GRF_MACPHY_CON0, RK_GMAC2PHY_RMII_MODE);
> +
> + regmap_write(priv->grf, RK_GRF_MACPHY_CON2, RK_GRF_CON2_MACPHY_ID);
> + regmap_write(priv->grf, RK_GRF_MACPHY_CON3, RK_GRF_CON3_MACPHY_ID);
I know you are just moving code around....
Do you know what these MACPHY_ID are? I hope it is not what you get
when you read PHY registers 2 and 3?
Andrew
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH net-next v3 3/5] net: stmmac: dwmac-rk: Move integrated_phy_powerup/down functions
2025-03-19 22:39 ` Andrew Lunn
@ 2025-03-19 23:00 ` Jonas Karlman
2025-03-19 23:22 ` Andrew Lunn
0 siblings, 1 reply; 15+ messages in thread
From: Jonas Karlman @ 2025-03-19 23:00 UTC (permalink / raw)
To: Andrew Lunn
Cc: Heiko Stuebner, Andrew Lunn, David S . Miller, Eric Dumazet,
Jakub Kicinski, Paolo Abeni, Maxime Coquelin, Alexandre Torgue,
Philipp Zabel, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
David Wu, Yao Zi, netdev, devicetree, linux-rockchip,
linux-arm-kernel, linux-kernel, linux-stm32
Hi Andrew,
On 2025-03-19 23:39, Andrew Lunn wrote:
> On Wed, Mar 19, 2025 at 09:44:07PM +0000, Jonas Karlman wrote:
>> Rockchip RK3528 (and RV1106) has a different integrated PHY compared to
>> the integrated PHY on RK3228/RK3328. Current powerup/down operation is
>> not compatible with the integrated PHY found in these SoCs.
>>
>> Move the rk_gmac_integrated_phy_powerup/down functions to top of the
>> file to prepare for them to be called directly by a GMAC variant
>> specific powerup/down operation.
>>
>> Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
>
> Reviewed-by: Andrew Lunn <andrew@lunn.ch>
>
>> +#define RK_GRF_CON2_MACPHY_ID HIWORD_UPDATE(0x1234, 0xffff, 0)
>> +#define RK_GRF_CON3_MACPHY_ID HIWORD_UPDATE(0x35, 0x3f, 0)
>> +
>> +static void rk_gmac_integrated_phy_powerup(struct rk_priv_data *priv)
>> +{
>> + if (priv->ops->integrated_phy_powerup)
>> + priv->ops->integrated_phy_powerup(priv);
>> +
>> + regmap_write(priv->grf, RK_GRF_MACPHY_CON0, RK_MACPHY_CFG_CLK_50M);
>> + regmap_write(priv->grf, RK_GRF_MACPHY_CON0, RK_GMAC2PHY_RMII_MODE);
>> +
>> + regmap_write(priv->grf, RK_GRF_MACPHY_CON2, RK_GRF_CON2_MACPHY_ID);
>> + regmap_write(priv->grf, RK_GRF_MACPHY_CON3, RK_GRF_CON3_MACPHY_ID);
>
> I know you are just moving code around....
>
> Do you know what these MACPHY_ID are? I hope it is not what you get
> when you read PHY registers 2 and 3?
I think it may be:
GRF_MACPHY_CON2
15:0 macphy_id / PHY ID Number, macphy_cfg_phy_id[15:0]
GRF_MACPHY_CON3
15:12 macphy_cfg_rev_nr / Manufacturer's Revision Number
11:6 macphy_model_nr / Manufacturer's Model Number
5:0 macphy_id / PHY ID Number, macphy_cfg_phy_id[21:16]
and
MACPHY_PHY_IDENTIFIER1 - Address: 02
15:0 PHY ID number / default:cfg_phy_id[15:0]
MACPHY_PHY_IDENTIFIER2 - Address: 03
15:10 PHY ID number / default:cfg_phy_id[21:16]
9:4 Model number / default:cfg_model_nr[5:0]
3:0 Revision number / default:cfg_rev_nr[3:0]
So likely what you get when you read PHY registers 2 and 3.
Regards,
Jonas
>
> Andrew
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH net-next v3 3/5] net: stmmac: dwmac-rk: Move integrated_phy_powerup/down functions
2025-03-19 23:00 ` Jonas Karlman
@ 2025-03-19 23:22 ` Andrew Lunn
0 siblings, 0 replies; 15+ messages in thread
From: Andrew Lunn @ 2025-03-19 23:22 UTC (permalink / raw)
To: Jonas Karlman
Cc: Heiko Stuebner, Andrew Lunn, David S . Miller, Eric Dumazet,
Jakub Kicinski, Paolo Abeni, Maxime Coquelin, Alexandre Torgue,
Philipp Zabel, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
David Wu, Yao Zi, netdev, devicetree, linux-rockchip,
linux-arm-kernel, linux-kernel, linux-stm32
> > Do you know what these MACPHY_ID are? I hope it is not what you get
> > when you read PHY registers 2 and 3?
>
> I think it may be:
>
> GRF_MACPHY_CON2
> 15:0 macphy_id / PHY ID Number, macphy_cfg_phy_id[15:0]
>
> GRF_MACPHY_CON3
> 15:12 macphy_cfg_rev_nr / Manufacturer's Revision Number
> 11:6 macphy_model_nr / Manufacturer's Model Number
> 5:0 macphy_id / PHY ID Number, macphy_cfg_phy_id[21:16]
>
> and
>
> MACPHY_PHY_IDENTIFIER1 - Address: 02
> 15:0 PHY ID number / default:cfg_phy_id[15:0]
>
> MACPHY_PHY_IDENTIFIER2 - Address: 03
> 15:10 PHY ID number / default:cfg_phy_id[21:16]
> 9:4 Model number / default:cfg_model_nr[5:0]
> 3:0 Revision number / default:cfg_rev_nr[3:0]
>
> So likely what you get when you read PHY registers 2 and 3.
Ah:
drivers/net/phy/rockchip.c
#define INTERNAL_EPHY_ID 0x1234d400
However, it is not clear where the d4 come from.
The problem here is the upper part should be an OUI from the vendor.
I doubt rockchip actually own this OUI. They do actually have the MAC
OUI: 10:DC:B6:90:00:00/28. I don't know if you can use a MAC OUI with
a PHY ID?
Andrew
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH net-next v3 5/5] net: stmmac: dwmac-rk: Add initial support for RK3528 integrated PHY
2025-03-19 21:44 ` [PATCH net-next v3 5/5] net: stmmac: dwmac-rk: Add initial support for RK3528 integrated PHY Jonas Karlman
@ 2025-03-19 23:27 ` Andrew Lunn
2025-03-19 23:52 ` Jonas Karlman
2025-03-20 13:20 ` Andrew Lunn
1 sibling, 1 reply; 15+ messages in thread
From: Andrew Lunn @ 2025-03-19 23:27 UTC (permalink / raw)
To: Jonas Karlman
Cc: Heiko Stuebner, Andrew Lunn, David S . Miller, Eric Dumazet,
Jakub Kicinski, Paolo Abeni, Maxime Coquelin, Alexandre Torgue,
Philipp Zabel, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
David Wu, Yao Zi, netdev, devicetree, linux-rockchip,
linux-arm-kernel, linux-kernel, linux-stm32
On Wed, Mar 19, 2025 at 09:44:09PM +0000, Jonas Karlman wrote:
> Rockchip RK3528 (and RV1106) has a different integrated PHY compared to
> the integrated PHY on RK3228/RK3328.
What ID does this PHY have? Is it just the reset which is different,
or is it actually a different PHY, and the rockchip PHY driver needs
additions?
Andrew
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH net-next v3 5/5] net: stmmac: dwmac-rk: Add initial support for RK3528 integrated PHY
2025-03-19 23:27 ` Andrew Lunn
@ 2025-03-19 23:52 ` Jonas Karlman
2025-03-20 0:27 ` Andrew Lunn
0 siblings, 1 reply; 15+ messages in thread
From: Jonas Karlman @ 2025-03-19 23:52 UTC (permalink / raw)
To: Andrew Lunn
Cc: Heiko Stuebner, Andrew Lunn, David S . Miller, Eric Dumazet,
Jakub Kicinski, Paolo Abeni, Maxime Coquelin, Alexandre Torgue,
Philipp Zabel, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
David Wu, Yao Zi, netdev, devicetree, linux-rockchip,
linux-arm-kernel, linux-kernel, linux-stm32
Hi Andrew,
On 2025-03-20 00:27, Andrew Lunn wrote:
> On Wed, Mar 19, 2025 at 09:44:09PM +0000, Jonas Karlman wrote:
>> Rockchip RK3528 (and RV1106) has a different integrated PHY compared to
>> the integrated PHY on RK3228/RK3328.
>
> What ID does this PHY have? Is it just the reset which is different,
> or is it actually a different PHY, and the rockchip PHY driver needs
> additions?
Sorry, look like I missed to include the phy-id reported in this patch
and only included that detail in the related device tree patch [1].
This PHY seem to be different compared to the PHY used in older SoCs.
The PHY identified on addr 0x2 as 0044.1400 and in vendor kernel this
relate to the Rockchip RK630 PHY [2].
#define RK630_PHY_ID 0x00441400
/*
* Fixed address:
* Addr: 1 --- RK630@S40
* 2 --- RV1106@T22
*/
#define PHY_ADDR_S40 1
#define PHY_ADDR_T22 2
[1] https://lore.kernel.org/all/20250310001254.1516138-2-jonas@kwiboo.se/
[2] https://github.com/armbian/linux-rockchip/blob/rk-6.1-rkr5/drivers/net/phy/rk630phy.c
Regards,
Jonas
>
> Andrew
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH net-next v3 5/5] net: stmmac: dwmac-rk: Add initial support for RK3528 integrated PHY
2025-03-19 23:52 ` Jonas Karlman
@ 2025-03-20 0:27 ` Andrew Lunn
0 siblings, 0 replies; 15+ messages in thread
From: Andrew Lunn @ 2025-03-20 0:27 UTC (permalink / raw)
To: Jonas Karlman
Cc: Heiko Stuebner, Andrew Lunn, David S . Miller, Eric Dumazet,
Jakub Kicinski, Paolo Abeni, Maxime Coquelin, Alexandre Torgue,
Philipp Zabel, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
David Wu, Yao Zi, netdev, devicetree, linux-rockchip,
linux-arm-kernel, linux-kernel, linux-stm32
> #define RK630_PHY_ID 0x00441400
O.K. different which is good.
> /*
> * Fixed address:
> * Addr: 1 --- RK630@S40
> * 2 --- RV1106@T22
> */
> #define PHY_ADDR_S40 1
> #define PHY_ADDR_T22 2
>
> [1] https://lore.kernel.org/all/20250310001254.1516138-2-jonas@kwiboo.se/
> [2] https://github.com/armbian/linux-rockchip/blob/rk-6.1-rkr5/drivers/net/phy/rk630phy.c
The vendor driver is going to need some cleanup before you post it....
Andrew
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH net-next v3 4/5] net: stmmac: dwmac-rk: Add integrated_phy_powerdown operation
2025-03-19 21:44 ` [PATCH net-next v3 4/5] net: stmmac: dwmac-rk: Add integrated_phy_powerdown operation Jonas Karlman
@ 2025-03-20 13:19 ` Andrew Lunn
0 siblings, 0 replies; 15+ messages in thread
From: Andrew Lunn @ 2025-03-20 13:19 UTC (permalink / raw)
To: Jonas Karlman
Cc: Heiko Stuebner, Andrew Lunn, David S . Miller, Eric Dumazet,
Jakub Kicinski, Paolo Abeni, Maxime Coquelin, Alexandre Torgue,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, David Wu, Yao Zi,
netdev, devicetree, linux-rockchip, linux-arm-kernel,
linux-kernel, linux-stm32
On Wed, Mar 19, 2025 at 09:44:08PM +0000, Jonas Karlman wrote:
> Rockchip RK3528 (and RV1106) has a different integrated PHY compared to
> the integrated PHY on RK3228/RK3328. Current powerup/down operation is
> not compatible with the integrated PHY found in these newer SoCs.
>
> Add a new integrated_phy_powerdown operation and change the call chain
> for integrated_phy_powerup to prepare support for the integrated PHY
> found in these newer SoCs.
>
> Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Andrew
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH net-next v3 5/5] net: stmmac: dwmac-rk: Add initial support for RK3528 integrated PHY
2025-03-19 21:44 ` [PATCH net-next v3 5/5] net: stmmac: dwmac-rk: Add initial support for RK3528 integrated PHY Jonas Karlman
2025-03-19 23:27 ` Andrew Lunn
@ 2025-03-20 13:20 ` Andrew Lunn
1 sibling, 0 replies; 15+ messages in thread
From: Andrew Lunn @ 2025-03-20 13:20 UTC (permalink / raw)
To: Jonas Karlman
Cc: Heiko Stuebner, Andrew Lunn, David S . Miller, Eric Dumazet,
Jakub Kicinski, Paolo Abeni, Maxime Coquelin, Alexandre Torgue,
Philipp Zabel, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
David Wu, Yao Zi, netdev, devicetree, linux-rockchip,
linux-arm-kernel, linux-kernel, linux-stm32
On Wed, Mar 19, 2025 at 09:44:09PM +0000, Jonas Karlman wrote:
> Rockchip RK3528 (and RV1106) has a different integrated PHY compared to
> the integrated PHY on RK3228/RK3328. Current powerup/down operation is
> not compatible with the integrated PHY found in these newer SoCs.
>
> Add operations to powerup/down the integrated PHY found in RK3528.
> Use helpers that can be used by other GMAC variants in the future.
>
> Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Andrew
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH net-next v3 0/5] net: stmmac: dwmac-rk: Add GMAC support for RK3528
2025-03-19 21:44 [PATCH net-next v3 0/5] net: stmmac: dwmac-rk: Add GMAC support for RK3528 Jonas Karlman
` (4 preceding siblings ...)
2025-03-19 21:44 ` [PATCH net-next v3 5/5] net: stmmac: dwmac-rk: Add initial support for RK3528 integrated PHY Jonas Karlman
@ 2025-03-25 15:10 ` patchwork-bot+netdevbpf
5 siblings, 0 replies; 15+ messages in thread
From: patchwork-bot+netdevbpf @ 2025-03-25 15:10 UTC (permalink / raw)
To: Jonas Karlman
Cc: heiko, andrew+netdev, davem, edumazet, kuba, pabeni, robh,
krzk+dt, conor+dt, david.wu, ziyao, netdev, devicetree,
linux-rockchip, linux-arm-kernel, linux-kernel
Hello:
This series was applied to netdev/net-next.git (main)
by Jakub Kicinski <kuba@kernel.org>:
On Wed, 19 Mar 2025 21:44:04 +0000 you wrote:
> The Rockchip RK3528 has two Ethernet controllers, one 100/10 MAC to be
> used with the integrated PHY and a second 1000/100/10 MAC to be used
> with an external Ethernet PHY.
>
> This series add initial support for the Ethernet controllers found in
> RK3528 and initial support to power up/down the integrated PHY.
>
> [...]
Here is the summary with links:
- [net-next,v3,1/5] dt-bindings: net: rockchip-dwmac: Add compatible string for RK3528
https://git.kernel.org/netdev/net-next/c/1b22f686f199
- [net-next,v3,2/5] net: stmmac: dwmac-rk: Add GMAC support for RK3528
https://git.kernel.org/netdev/net-next/c/1725f0eb37d6
- [net-next,v3,3/5] net: stmmac: dwmac-rk: Move integrated_phy_powerup/down functions
https://git.kernel.org/netdev/net-next/c/0bed91f2b183
- [net-next,v3,4/5] net: stmmac: dwmac-rk: Add integrated_phy_powerdown operation
https://git.kernel.org/netdev/net-next/c/32c7bc0747bb
- [net-next,v3,5/5] net: stmmac: dwmac-rk: Add initial support for RK3528 integrated PHY
https://git.kernel.org/netdev/net-next/c/83e7b35c7879
You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html
^ permalink raw reply [flat|nested] 15+ messages in thread
end of thread, other threads:[~2025-03-25 15:15 UTC | newest]
Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-03-19 21:44 [PATCH net-next v3 0/5] net: stmmac: dwmac-rk: Add GMAC support for RK3528 Jonas Karlman
2025-03-19 21:44 ` [PATCH net-next v3 1/5] dt-bindings: net: rockchip-dwmac: Add compatible string " Jonas Karlman
2025-03-19 21:44 ` [PATCH net-next v3 2/5] net: stmmac: dwmac-rk: Add GMAC support " Jonas Karlman
2025-03-19 21:44 ` [PATCH net-next v3 3/5] net: stmmac: dwmac-rk: Move integrated_phy_powerup/down functions Jonas Karlman
2025-03-19 22:39 ` Andrew Lunn
2025-03-19 23:00 ` Jonas Karlman
2025-03-19 23:22 ` Andrew Lunn
2025-03-19 21:44 ` [PATCH net-next v3 4/5] net: stmmac: dwmac-rk: Add integrated_phy_powerdown operation Jonas Karlman
2025-03-20 13:19 ` Andrew Lunn
2025-03-19 21:44 ` [PATCH net-next v3 5/5] net: stmmac: dwmac-rk: Add initial support for RK3528 integrated PHY Jonas Karlman
2025-03-19 23:27 ` Andrew Lunn
2025-03-19 23:52 ` Jonas Karlman
2025-03-20 0:27 ` Andrew Lunn
2025-03-20 13:20 ` Andrew Lunn
2025-03-25 15:10 ` [PATCH net-next v3 0/5] net: stmmac: dwmac-rk: Add GMAC support for RK3528 patchwork-bot+netdevbpf
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).