From d2ccde1c8e90d38cee87a1b0309ad2827f3fd30d Mon Sep 17 00:00:00 2001
From: hc <hc@nodka.com>
Date: Mon, 11 Dec 2023 02:45:28 +0000
Subject: [PATCH] add boot partition  size

---
 u-boot/drivers/net/gmac_rockchip.c |  494 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 494 insertions(+), 0 deletions(-)

diff --git a/u-boot/drivers/net/gmac_rockchip.c b/u-boot/drivers/net/gmac_rockchip.c
index bc8dcc9..dfb8342 100644
--- a/u-boot/drivers/net/gmac_rockchip.c
+++ b/u-boot/drivers/net/gmac_rockchip.c
@@ -18,6 +18,9 @@
 #include <asm/arch/clock.h>
 #include <asm/arch/hardware.h>
 #ifdef CONFIG_DWC_ETH_QOS
+#include <asm/arch/grf_rk3528.h>
+#include <asm/arch/grf_rk3562.h>
+#include <asm/arch/ioc_rk3562.h>
 #include <asm/arch/grf_rk3568.h>
 #include <asm/arch/grf_rk3588.h>
 #include <asm/arch/grf_rv1106.h>
@@ -516,6 +519,147 @@
 	return 0;
 }
 #else
+static int rk3528_set_rgmii_speed(struct gmac_rockchip_platdata *pdata,
+				  struct rockchip_eth_dev *dev)
+{
+	struct eqos_priv *priv = &dev->eqos;
+	struct rk3528_grf *grf;
+	unsigned int div;
+
+	enum {
+		RK3528_GMAC0_CLK_RMII_DIV_SHIFT = 3,
+		RK3528_GMAC0_CLK_RMII_DIV_MASK = GENMASK(4, 3),
+		RK3528_GMAC0_CLK_RMII_DIV2 = BIT(3),
+		RK3528_GMAC0_CLK_RMII_DIV20 = 0,
+	};
+
+	enum {
+		RK3528_GMAC1_CLK_RGMII_DIV_SHIFT = 10,
+		RK3528_GMAC1_CLK_RGMII_DIV_MASK = GENMASK(11, 10),
+		RK3528_GMAC1_CLK_RGMII_DIV1 = 0,
+		RK3528_GMAC1_CLK_RGMII_DIV5 = GENMASK(11, 10),
+		RK3528_GMAC1_CLK_RGMII_DIV50 = BIT(11),
+		RK3528_GMAC1_CLK_RMII_DIV2 = BIT(11),
+		RK3528_GMAC1_CLK_RMII_DIV20 = 0,
+	};
+
+	grf = syscon_get_first_range(ROCKCHIP_SYSCON_GRF);
+
+	switch (priv->phy->speed) {
+	case 10:
+		if (pdata->phy_interface == PHY_INTERFACE_MODE_RMII)
+			div = pdata->bus_id ? RK3528_GMAC1_CLK_RMII_DIV20 :
+					      RK3528_GMAC0_CLK_RMII_DIV20;
+		else
+			div = RK3528_GMAC1_CLK_RGMII_DIV50;
+		break;
+	case 100:
+		if (pdata->phy_interface == PHY_INTERFACE_MODE_RMII)
+			div = pdata->bus_id ? RK3528_GMAC1_CLK_RMII_DIV2 :
+					      RK3528_GMAC0_CLK_RMII_DIV2;
+		else
+			div = RK3528_GMAC1_CLK_RGMII_DIV5;
+		break;
+	case 1000:
+		if (pdata->phy_interface != PHY_INTERFACE_MODE_RMII)
+			div = RK3528_GMAC1_CLK_RGMII_DIV1;
+		else
+			return -EINVAL;
+		break;
+	default:
+		debug("Unknown phy speed: %d\n", priv->phy->speed);
+		return -EINVAL;
+	}
+
+	if (pdata->bus_id)
+		rk_clrsetreg(&grf->gmac1_con0, RK3528_GMAC1_CLK_RGMII_DIV_MASK, div);
+	else
+		rk_clrsetreg(&grf->gmac0_con, RK3528_GMAC0_CLK_RMII_DIV_MASK, div);
+
+	return 0;
+}
+
+static int rk3562_set_gmac_speed(struct gmac_rockchip_platdata *pdata,
+				 struct rockchip_eth_dev *dev)
+{
+	struct eqos_priv *priv = &dev->eqos;
+	struct rk3562_grf *grf;
+	unsigned int div;
+
+	enum {
+		RK3562_GMAC0_CLK_RGMII_DIV_SHIFT = 7,
+		RK3562_GMAC0_CLK_RGMII_DIV_MASK = GENMASK(8, 7),
+		RK3562_GMAC0_CLK_RGMII_DIV1 = 0,
+		RK3562_GMAC0_CLK_RGMII_DIV5 = GENMASK(8, 7),
+		RK3562_GMAC0_CLK_RGMII_DIV50 = BIT(8),
+		RK3562_GMAC0_CLK_RMII_DIV2 = BIT(7),
+		RK3562_GMAC0_CLK_RMII_DIV20 = 0,
+	};
+
+	enum {
+		RK3562_GMAC1_SPEED_SHIFT = 0x0,
+		RK3562_GMAC1_SPEED_MASK  = BIT(0),
+		RK3562_GMAC1_SPEED_10M   = 0,
+		RK3562_GMAC1_SPEED_100M  = BIT(0),
+	};
+
+	enum {
+		RK3562_GMAC1_CLK_RMII_DIV_SHIFT = 13,
+		RK3562_GMAC1_CLK_RMII_DIV_MASK = BIT(13),
+		RK3562_GMAC1_CLK_RMII_DIV2 = BIT(13),
+		RK3562_GMAC1_CLK_RMII_DIV20 = 0,
+	};
+
+	grf = syscon_get_first_range(ROCKCHIP_SYSCON_GRF);
+
+	switch (priv->phy->speed) {
+	case 10:
+		if (pdata->phy_interface == PHY_INTERFACE_MODE_RMII) {
+			if (pdata->bus_id > 0) {
+				div = RK3562_GMAC1_CLK_RMII_DIV20;
+				rk_clrsetreg(&grf->soc_con[0],
+					     RK3562_GMAC1_SPEED_MASK,
+					     RK3562_GMAC1_SPEED_10M);
+			} else {
+				div = RK3562_GMAC0_CLK_RMII_DIV20;
+			}
+		} else {
+			div = RK3562_GMAC0_CLK_RGMII_DIV50;
+		}
+		break;
+	case 100:
+		if (pdata->phy_interface == PHY_INTERFACE_MODE_RMII) {
+			if (pdata->bus_id > 0) {
+				div = RK3562_GMAC1_CLK_RMII_DIV2;
+				rk_clrsetreg(&grf->soc_con[0],
+					     RK3562_GMAC1_SPEED_MASK,
+					     RK3562_GMAC1_SPEED_100M);
+			} else {
+				div = RK3562_GMAC0_CLK_RMII_DIV2;
+			}
+		} else {
+			div = RK3562_GMAC0_CLK_RGMII_DIV5;
+		}
+		break;
+	case 1000:
+		if (pdata->phy_interface != PHY_INTERFACE_MODE_RMII)
+			div = RK3562_GMAC0_CLK_RGMII_DIV1;
+		else
+			return -EINVAL;
+		break;
+	default:
+		debug("Unknown phy speed: %d\n", priv->phy->speed);
+		return -EINVAL;
+	}
+
+	if (pdata->bus_id)
+		rk_clrsetreg(&grf->soc_con[1], RK3562_GMAC1_CLK_RMII_DIV_MASK, div);
+	else
+		rk_clrsetreg(&grf->soc_con[0], RK3562_GMAC0_CLK_RGMII_DIV_MASK, div);
+
+	return 0;
+}
+
 static int rk3588_set_rgmii_speed(struct gmac_rockchip_platdata *pdata,
 				  struct rockchip_eth_dev *dev)
 {
@@ -1064,6 +1208,251 @@
 }
 
 #else
+static void rk3528_gmac_integrated_phy_powerup(struct gmac_rockchip_platdata *pdata)
+{
+	struct rk3528_grf *grf;
+	unsigned char bgs[1] = {0};
+
+	enum {
+		RK3528_MACPHY_ENABLE_MASK = BIT(1),
+		RK3528_MACPHY_DISENABLE = BIT(1),
+		RK3528_MACPHY_ENABLE = 0,
+		RK3528_MACPHY_XMII_SEL_MASK = GENMASK(6, 5),
+		RK3528_MACPHY_XMII_SEL = BIT(6),
+		RK3528_MACPHY_24M_CLK_SEL_MASK = GENMASK(9, 7),
+		RK3528_MACPHY_24M_CLK_SEL_24M = (BIT(8) | BIT(9)),
+		RK3528_MACPHY_PHY_ID_MASK = GENMASK(14, 10),
+		RK3528_MACPHY_PHY_ID = BIT(11),
+	};
+
+	enum {
+		RK3528_MACPHY_BGS_MASK = GENMASK(3, 0),
+	};
+
+#if defined(CONFIG_ROCKCHIP_EFUSE) || defined(CONFIG_ROCKCHIP_OTP)
+	struct udevice *dev;
+	u32 regs[2] = {0};
+	ofnode node;
+	int ret = 0;
+
+	/* retrieve the device */
+	if (IS_ENABLED(CONFIG_ROCKCHIP_EFUSE))
+		ret = uclass_get_device_by_driver(UCLASS_MISC,
+						  DM_GET_DRIVER(rockchip_efuse),
+						  &dev);
+	else
+		ret = uclass_get_device_by_driver(UCLASS_MISC,
+						  DM_GET_DRIVER(rockchip_otp),
+						  &dev);
+	if (!ret) {
+		node = dev_read_subnode(dev, "macphy-bgs");
+		if (ofnode_valid(node)) {
+			if (!ofnode_read_u32_array(node, "reg", regs, 2)) {
+				/* read the bgs from the efuses */
+				ret = misc_read(dev, regs[0], &bgs, 1);
+				if (ret) {
+					printf("read bgs from efuse/otp failed, ret=%d\n",
+					       ret);
+					bgs[0] = 0;
+				}
+			}
+		}
+	}
+#endif
+
+	grf = syscon_get_first_range(ROCKCHIP_SYSCON_GRF);
+
+	reset_assert(&pdata->phy_reset);
+	udelay(20);
+	rk_clrsetreg(&grf->macphy_con0,
+		     RK3528_MACPHY_ENABLE_MASK |
+		     RK3528_MACPHY_XMII_SEL_MASK |
+		     RK3528_MACPHY_24M_CLK_SEL_MASK |
+		     RK3528_MACPHY_PHY_ID_MASK,
+		     RK3528_MACPHY_ENABLE |
+		     RK3528_MACPHY_XMII_SEL |
+		     RK3528_MACPHY_24M_CLK_SEL_24M |
+		     RK3528_MACPHY_PHY_ID);
+
+	rk_clrsetreg(&grf->macphy_con1,
+		     RK3528_MACPHY_BGS_MASK,
+		     bgs[0]);
+	udelay(20);
+	reset_deassert(&pdata->phy_reset);
+	udelay(30 * 1000);
+}
+
+static void rk3528_set_to_rmii(struct gmac_rockchip_platdata *pdata)
+{
+	unsigned int clk_mode;
+	struct rk3528_grf *grf;
+
+	enum {
+		RK3528_GMAC0_CLK_RMII_MODE_SHIFT = 0x1,
+		RK3528_GMAC0_CLK_RMII_MODE_MASK = BIT(1),
+		RK3528_GMAC0_CLK_RMII_MODE = 0x1,
+	};
+
+	enum {
+		RK3528_GMAC1_CLK_RMII_MODE_SHIFT = 0x8,
+		RK3528_GMAC1_CLK_RMII_MODE_MASK = BIT(8),
+		RK3528_GMAC1_CLK_RMII_MODE = 0x1,
+	};
+
+	grf = syscon_get_first_range(ROCKCHIP_SYSCON_GRF);
+
+	if (pdata->bus_id == 1) {
+		clk_mode = RK3528_GMAC1_CLK_RMII_MODE << RK3528_GMAC1_CLK_RMII_MODE_SHIFT;
+		rk_clrsetreg(&grf->gmac1_con1, RK3528_GMAC1_CLK_RMII_MODE_MASK, clk_mode);
+	} else {
+		clk_mode = RK3528_GMAC0_CLK_RMII_MODE << RK3528_GMAC0_CLK_RMII_MODE_SHIFT;
+		rk_clrsetreg(&grf->gmac0_con, RK3528_GMAC0_CLK_RMII_MODE_MASK, clk_mode);
+	}
+}
+
+static void rk3528_set_to_rgmii(struct gmac_rockchip_platdata *pdata)
+{
+	unsigned int rx_enable;
+	unsigned int rx_delay;
+	struct rk3528_grf *grf;
+
+	enum {
+		RK3528_GMAC1_RGMII_MODE_SHIFT = 0x8,
+		RK3528_GMAC1_RGMII_MODE_MASK = BIT(8),
+		RK3528_GMAC1_RGMII_MODE = 0x0,
+
+		RK3528_GMAC1_TXCLK_DLY_ENA_MASK = BIT(14),
+		RK3528_GMAC1_TXCLK_DLY_ENA_DISABLE = 0,
+		RK3528_GMAC1_TXCLK_DLY_ENA_ENABLE = BIT(14),
+
+		RK3528_GMAC1_RXCLK_DLY_ENA_MASK = BIT(15),
+		RK3528_GMAC1_RXCLK_DLY_ENA_DISABLE = 0,
+		RK3528_GMAC1_RXCLK_DLY_ENA_ENABLE = BIT(15),
+	};
+
+	enum {
+		RK3528_GMAC1_RX_DL_CFG_SHIFT = 0x8,
+		RK3528_GMAC1_RX_DL_CFG_MASK = GENMASK(15, 8),
+
+		RK3528_GMAC1_TX_DL_CFG_SHIFT = 0x0,
+		RK3528_GMAC1_TX_DL_CFG_MASK = GENMASK(7, 0),
+	};
+
+	if (!pdata->bus_id)
+		return;
+
+	grf = syscon_get_first_range(ROCKCHIP_SYSCON_GRF);
+
+	if (pdata->rx_delay < 0) {
+		rx_enable = RK3528_GMAC1_RXCLK_DLY_ENA_DISABLE;
+		rx_delay = 0;
+	} else {
+		rx_enable = RK3528_GMAC1_RXCLK_DLY_ENA_ENABLE;
+		rx_delay = pdata->rx_delay << RK3528_GMAC1_RX_DL_CFG_SHIFT;
+	}
+
+	rk_clrsetreg(&grf->gmac1_con0,
+		     RK3528_GMAC1_TXCLK_DLY_ENA_MASK |
+		     RK3528_GMAC1_RXCLK_DLY_ENA_MASK |
+		     RK3528_GMAC1_RGMII_MODE_MASK,
+		     rx_enable | RK3528_GMAC1_TXCLK_DLY_ENA_ENABLE |
+		     (RK3528_GMAC1_RGMII_MODE << RK3528_GMAC1_RGMII_MODE_SHIFT));
+
+	rk_clrsetreg(&grf->gmac1_con1,
+		     RK3528_GMAC1_RX_DL_CFG_MASK |
+		     RK3528_GMAC1_TX_DL_CFG_MASK,
+		     (pdata->tx_delay << RK3528_GMAC1_TX_DL_CFG_SHIFT) |
+		     rx_delay);
+}
+
+static void rk3562_set_to_rmii(struct gmac_rockchip_platdata *pdata)
+{
+	struct rk3562_grf *grf;
+	unsigned int mode;
+
+	enum {
+		RK3562_GMAC0_RMII_MODE_SHIFT = 0x5,
+		RK3562_GMAC0_RMII_MODE_MASK = BIT(5),
+		RK3562_GMAC0_RMII_MODE = 0x1,
+	};
+
+	grf = syscon_get_first_range(ROCKCHIP_SYSCON_GRF);
+
+	if (!pdata->bus_id) {
+		mode = RK3562_GMAC0_RMII_MODE << RK3562_GMAC0_RMII_MODE_SHIFT;
+		rk_clrsetreg(&grf->soc_con[0], RK3562_GMAC0_RMII_MODE_MASK, mode);
+	}
+}
+
+static void rk3562_set_to_rgmii(struct gmac_rockchip_platdata *pdata)
+{
+	struct rk3562_grf *grf;
+	struct rk3562_ioc *ioc;
+	unsigned int rx_enable;
+	unsigned int rx_delay;
+
+	enum {
+		RK3562_GMAC0_RGMII_MODE_SHIFT = 0x5,
+		RK3562_GMAC0_RGMII_MODE_MASK = BIT(5),
+		RK3562_GMAC0_RGMII_MODE = 0x0,
+
+		RK3562_GMAC0_TXCLK_DLY_ENA_MASK = BIT(0),
+		RK3562_GMAC0_TXCLK_DLY_ENA_DISABLE = 0,
+		RK3562_GMAC0_TXCLK_DLY_ENA_ENABLE = BIT(0),
+
+		RK3562_GMAC0_RXCLK_DLY_ENA_MASK = BIT(1),
+		RK3562_GMAC0_RXCLK_DLY_ENA_DISABLE = 0,
+		RK3562_GMAC0_RXCLK_DLY_ENA_ENABLE = BIT(1),
+	};
+
+	enum {
+		RK3562_GMAC0_RX_DL_CFG_SHIFT = 0x8,
+		RK3562_GMAC0_RX_DL_CFG_MASK = GENMASK(15, 8),
+
+		RK3562_GMAC0_TX_DL_CFG_SHIFT = 0x0,
+		RK3562_GMAC0_TX_DL_CFG_MASK = GENMASK(7, 0),
+	};
+
+	if (pdata->bus_id)
+		return;
+
+	grf = syscon_get_first_range(ROCKCHIP_SYSCON_GRF);
+	ioc = syscon_get_first_range(ROCKCHIP_SYSCON_IOC);
+
+	rk_clrsetreg(&grf->soc_con[0], RK3562_GMAC0_RGMII_MODE_MASK,
+		     RK3562_GMAC0_RGMII_MODE << RK3562_GMAC0_RGMII_MODE_SHIFT);
+
+	if (pdata->rx_delay < 0) {
+		rx_enable = RK3562_GMAC0_RXCLK_DLY_ENA_DISABLE;
+		rx_delay = 0;
+	} else {
+		rx_enable = RK3562_GMAC0_RXCLK_DLY_ENA_ENABLE;
+		rx_delay = pdata->rx_delay << RK3562_GMAC0_RX_DL_CFG_SHIFT;
+	}
+
+	rk_clrsetreg(&ioc->mac0_io_con1,
+		     RK3562_GMAC0_TXCLK_DLY_ENA_MASK |
+		     RK3562_GMAC0_RXCLK_DLY_ENA_MASK,
+		     rx_enable | RK3562_GMAC0_TXCLK_DLY_ENA_ENABLE);
+
+	rk_clrsetreg(&ioc->mac0_io_con0,
+		     RK3562_GMAC0_RX_DL_CFG_MASK |
+		     RK3562_GMAC0_TX_DL_CFG_MASK,
+		     (pdata->tx_delay << RK3562_GMAC0_TX_DL_CFG_SHIFT) |
+		     rx_delay);
+
+	rk_clrsetreg(&ioc->mac1_io_con1,
+		     RK3562_GMAC0_TXCLK_DLY_ENA_MASK |
+		     RK3562_GMAC0_RXCLK_DLY_ENA_MASK,
+		     rx_enable | RK3562_GMAC0_TXCLK_DLY_ENA_ENABLE);
+
+	rk_clrsetreg(&ioc->mac1_io_con0,
+		     RK3562_GMAC0_RX_DL_CFG_MASK |
+		     RK3562_GMAC0_TX_DL_CFG_MASK,
+		     (pdata->tx_delay << RK3562_GMAC0_TX_DL_CFG_SHIFT) |
+		     rx_delay);
+}
+
 static void rk3568_set_to_rmii(struct gmac_rockchip_platdata *pdata)
 {
 	struct rk3568_grf *grf;
@@ -1438,6 +1827,86 @@
 #endif
 
 #ifdef CONFIG_DWC_ETH_QOS
+static void rk3528_set_clock_selection(struct gmac_rockchip_platdata *pdata)
+{
+	struct rk3528_grf *grf;
+	unsigned int val;
+
+	enum {
+		RK3528_GMAC1_CLK_SELET_SHIFT = 0x12,
+		RK3528_GMAC1_CLK_SELET_MASK = BIT(12),
+		RK3528_GMAC1_CLK_SELET_CRU = 0,
+		RK3528_GMAC1_CLK_SELET_IO = BIT(12),
+	};
+
+	if (!pdata->bus_id)
+		return;
+	grf = syscon_get_first_range(ROCKCHIP_SYSCON_GRF);
+
+	val = pdata->clock_input ? RK3528_GMAC1_CLK_SELET_IO :
+				   RK3528_GMAC1_CLK_SELET_CRU;
+	rk_clrsetreg(&grf->gmac1_con0, RK3528_GMAC1_CLK_SELET_MASK, val);
+}
+
+static void rk3562_set_clock_selection(struct gmac_rockchip_platdata *pdata)
+{
+	struct rk3562_grf *grf;
+	struct rk3562_ioc *ioc;
+	unsigned int val;
+
+	enum {
+		RK3562_GMAC0_CLK_SELET_SHIFT = 0x9,
+		RK3562_GMAC0_CLK_SELET_MASK = BIT(9),
+		RK3562_GMAC0_CLK_SELET_CRU = 0,
+		RK3562_GMAC0_CLK_SELET_IO = BIT(9),
+	};
+
+	enum {
+		RK3562_GMAC1_CLK_SELET_SHIFT = 15,
+		RK3562_GMAC1_CLK_SELET_MASK = BIT(15),
+		RK3562_GMAC1_CLK_SELET_CRU = 0,
+		RK3562_GMAC1_CLK_SELET_IO = BIT(15),
+	};
+
+	enum {
+		RK3562_GMAC0_IO_EXTCLK_SELET_SHIFT = 0x2,
+		RK3562_GMAC0_IO_EXTCLK_SELET_MASK = BIT(2),
+		RK3562_GMAC0_IO_EXTCLK_SELET_CRU = 0,
+		RK3562_GMAC0_IO_EXTCLK_SELET_IO = BIT(2),
+	};
+
+	enum {
+		RK3562_GMAC1_IO_EXTCLK_SELET_SHIFT = 0x3,
+		RK3562_GMAC1_IO_EXTCLK_SELET_MASK = BIT(3),
+		RK3562_GMAC1_IO_EXTCLK_SELET_CRU = 0,
+		RK3562_GMAC1_IO_EXTCLK_SELET_IO = BIT(3),
+	};
+
+	grf = syscon_get_first_range(ROCKCHIP_SYSCON_GRF);
+	ioc = syscon_get_first_range(ROCKCHIP_SYSCON_IOC);
+
+	if (!pdata->bus_id) {
+		val = pdata->clock_input ? RK3562_GMAC0_CLK_SELET_IO :
+					   RK3562_GMAC0_CLK_SELET_CRU;
+		rk_clrsetreg(&grf->soc_con[0], RK3562_GMAC0_CLK_SELET_MASK, val);
+		val = pdata->clock_input ? RK3562_GMAC0_IO_EXTCLK_SELET_IO :
+					   RK3562_GMAC0_IO_EXTCLK_SELET_CRU;
+		rk_clrsetreg(&ioc->mac1_io_con1,
+			     RK3562_GMAC0_IO_EXTCLK_SELET_MASK, val);
+		rk_clrsetreg(&ioc->mac0_io_con1,
+			     RK3562_GMAC0_IO_EXTCLK_SELET_MASK, val);
+
+	} else {
+		val = pdata->clock_input ? RK3562_GMAC1_CLK_SELET_IO :
+					   RK3562_GMAC1_CLK_SELET_CRU;
+		rk_clrsetreg(&grf->soc_con[1], RK3562_GMAC1_CLK_SELET_MASK, val);
+		val = pdata->clock_input ? RK3562_GMAC1_IO_EXTCLK_SELET_IO :
+					   RK3562_GMAC1_IO_EXTCLK_SELET_CRU;
+		rk_clrsetreg(&ioc->mac1_io_con1,
+			     RK3562_GMAC1_IO_EXTCLK_SELET_MASK, val);
+	}
+}
+
 static void rk3588_set_clock_selection(struct gmac_rockchip_platdata *pdata)
 {
 	struct rk3588_php_grf *php_grf;
@@ -1701,6 +2170,21 @@
 	.set_to_rmii = rv1108_gmac_set_to_rmii,
 };
 #else
+const struct rk_gmac_ops rk3528_gmac_ops = {
+	.fix_mac_speed = rk3528_set_rgmii_speed,
+	.set_to_rgmii = rk3528_set_to_rgmii,
+	.set_to_rmii = rk3528_set_to_rmii,
+	.set_clock_selection = rk3528_set_clock_selection,
+	.integrated_phy_powerup = rk3528_gmac_integrated_phy_powerup,
+};
+
+const struct rk_gmac_ops rk3562_gmac_ops = {
+	.fix_mac_speed = rk3562_set_gmac_speed,
+	.set_to_rgmii = rk3562_set_to_rgmii,
+	.set_to_rmii = rk3562_set_to_rmii,
+	.set_clock_selection = rk3562_set_clock_selection,
+};
+
 const struct rk_gmac_ops rk3568_gmac_ops = {
 	.fix_mac_speed = rv1126_set_rgmii_speed,
 	.set_to_rgmii = rk3568_set_to_rgmii,
@@ -1774,6 +2258,16 @@
 	  .data = (ulong)&rv1108_gmac_ops },
 #endif
 #else
+#ifdef CONFIG_ROCKCHIP_RK3528
+	{ .compatible = "rockchip,rk3528-gmac",
+	  .data = (ulong)&rk3528_gmac_ops },
+#endif
+
+#ifdef CONFIG_ROCKCHIP_RK3562
+	{ .compatible = "rockchip,rk3562-gmac",
+	  .data = (ulong)&rk3562_gmac_ops },
+#endif
+
 #ifdef CONFIG_ROCKCHIP_RK3568
 	{ .compatible = "rockchip,rk3568-gmac",
 	  .data = (ulong)&rk3568_gmac_ops },

--
Gitblit v1.6.2