Pass struct udevice * into the register accessors, so the accessors can reach
driver data, which contain device specific register offsets.

Signed-off-by: Marek Vasut <ma...@denx.de>
---
Cc: Alice Guo <alice....@nxp.com>
Cc: Ilias Apalodimas <ilias.apalodi...@linaro.org>
Cc: Jerome Forissier <jerome.foriss...@linaro.org>
Cc: Joe Hershberger <joe.hershber...@ni.com>
Cc: Markus Gothe <markus.go...@genexis.eu>
Cc: Peng Fan <peng....@nxp.com>
Cc: Ramon Fried <rfried....@gmail.com>
Cc: Robert Marko <robert.ma...@sartura.hr>
Cc: Romain Naour <romain.na...@smile.fr>
Cc: Simon Glass <s...@chromium.org>
Cc: Tim Harvey <thar...@gateworks.com>
Cc: Tom Rini <tr...@konsulko.com>
Cc: Ye Li <ye...@nxp.com>
Cc: u-boot@lists.denx.de
---
 drivers/net/fsl_enetc.c | 64 +++++++++++++++++++++++------------------
 1 file changed, 36 insertions(+), 28 deletions(-)

diff --git a/drivers/net/fsl_enetc.c b/drivers/net/fsl_enetc.c
index c92626a8782..1a348f41ea0 100644
--- a/drivers/net/fsl_enetc.c
+++ b/drivers/net/fsl_enetc.c
@@ -57,52 +57,62 @@ static void enetc_write(struct enetc_priv *priv, u32 off, 
u32 val)
 }
 
 /* base port register accessors */
-static void enetc_write_pmr(struct enetc_priv *priv, u32 val)
+static void enetc_write_pmr(struct udevice *dev, u32 val)
 {
-       const u32 off = ENETC_PMR + ENETC_PMR_OFFSET_LS;
+       struct enetc_data *data = (struct enetc_data *)dev_get_driver_data(dev);
+       struct enetc_priv *priv = dev_get_priv(dev);
+       const u32 off = ENETC_PMR + data->reg_offset_pmr;
 
        enetc_write_reg(priv->port_regs + off, val);
 }
 
-static void enetc_write_psipmar(struct enetc_priv *priv, int n, u32 val)
+static void enetc_write_psipmar(struct udevice *dev, int n, u32 val)
 {
+       struct enetc_data *data = (struct enetc_data *)dev_get_driver_data(dev);
+       struct enetc_priv *priv = dev_get_priv(dev);
        const u32 off = (n ? ENETC_PSIPMAR1 : ENETC_PSIPMAR0) +
-                       ENETC_PSIPMARn_OFFSET_LS;
+                       data->reg_offset_psipmar;
 
        enetc_write_reg(priv->port_regs + off, val);
 }
 
 /* port station register accessors */
-static void enetc_write_psicfgr(struct enetc_priv *priv, int port, u32 val)
+static void enetc_write_psicfgr(struct udevice *dev, int port, u32 val)
 {
+       struct enetc_data *data = (struct enetc_data *)dev_get_driver_data(dev);
+       struct enetc_priv *priv = dev_get_priv(dev);
        const u32 off = ENETC_PSICFGR(port, ENETC_PSICFGR_SHIFT_LS) +
-                       ENETC_PSICFGR_OFFSET_LS;
+                       data->reg_offset_psicfgr;
 
        enetc_write_reg(priv->port_regs + off, val);
 }
 
 /* port register accessors */
-static u32 enetc_read_pcapr_mdio(struct enetc_priv *priv)
+static u32 enetc_read_pcapr_mdio(struct udevice *dev)
 {
-       const u32 off = ENETC_PCAPR0 + ENETC_PCAPR_OFFSET_LS;
+       struct enetc_data *data = (struct enetc_data *)dev_get_driver_data(dev);
+       struct enetc_priv *priv = dev_get_priv(dev);
+       const u32 off = ENETC_PCAPR0 + data->reg_offset_pcapr;
        u32 reg = enetc_read_reg(priv->port_regs + off);
 
        return reg & ENETC_PCAPRO_MDIO;
 }
 
 /* MAC port register accessors */
-static u32 enetc_read_mac_port(struct enetc_priv *priv, u32 off)
+static u32 enetc_read_mac_port(struct udevice *dev, u32 off)
 {
-       off += ENETC_PM_OFFSET_LS;
+       struct enetc_data *data = (struct enetc_data *)dev_get_driver_data(dev);
+       struct enetc_priv *priv = dev_get_priv(dev);
 
-       return enetc_read_reg(priv->port_regs + off);
+       return enetc_read_reg(priv->port_regs + data->reg_offset_mac + off);
 }
 
-static void enetc_write_mac_port(struct enetc_priv *priv, u32 off, u32 val)
+static void enetc_write_mac_port(struct udevice *dev, u32 off, u32 val)
 {
-       off += ENETC_PM_OFFSET_LS;
+       struct enetc_data *data = (struct enetc_data *)dev_get_driver_data(dev);
+       struct enetc_priv *priv = dev_get_priv(dev);
 
-       enetc_write_reg(priv->port_regs + off, val);
+       enetc_write_reg(priv->port_regs + data->reg_offset_mac + off, val);
 }
 
 /* BDR register accessor, see also ENETC_BDR() */
@@ -269,10 +279,9 @@ static int enetc_init_sgmii(struct udevice *dev)
 /* set up MAC for RGMII */
 static void enetc_init_rgmii(struct udevice *dev, struct phy_device *phydev)
 {
-       struct enetc_priv *priv = dev_get_priv(dev);
        u32 old_val, val;
 
-       old_val = val = enetc_read_mac_port(priv, ENETC_PM_IF_MODE);
+       old_val = val = enetc_read_mac_port(dev, ENETC_PM_IF_MODE);
 
        /* disable unreliable RGMII in-band signaling and force the MAC into
         * the speed negotiated by the PHY.
@@ -298,7 +307,7 @@ static void enetc_init_rgmii(struct udevice *dev, struct 
phy_device *phydev)
        if (val == old_val)
                return;
 
-       enetc_write_mac_port(priv, ENETC_PM_IF_MODE, val);
+       enetc_write_mac_port(dev, ENETC_PM_IF_MODE, val);
 }
 
 /* set up MAC configuration for the given interface type */
@@ -318,9 +327,9 @@ static void enetc_setup_mac_iface(struct udevice *dev,
        case PHY_INTERFACE_MODE_USXGMII:
        case PHY_INTERFACE_MODE_10GBASER:
                /* set ifmode to (US)XGMII */
-               if_mode = enetc_read_mac_port(priv, ENETC_PM_IF_MODE);
+               if_mode = enetc_read_mac_port(dev, ENETC_PM_IF_MODE);
                if_mode &= ~ENETC_PM_IF_IFMODE_MASK;
-               enetc_write_mac_port(priv, ENETC_PM_IF_MODE, if_mode);
+               enetc_write_mac_port(dev, ENETC_PM_IF_MODE, if_mode);
                break;
        };
 }
@@ -351,7 +360,7 @@ static void enetc_start_pcs(struct udevice *dev)
        struct enetc_priv *priv = dev_get_priv(dev);
 
        /* register internal MDIO for debug purposes */
-       if (enetc_read_pcapr_mdio(priv)) {
+       if (enetc_read_pcapr_mdio(dev)) {
                priv->imdio.read = enetc_mdio_read;
                priv->imdio.write = enetc_mdio_write;
                priv->imdio.priv = priv->port_regs + ENETC_PM_IMDIO_BASE;
@@ -501,7 +510,6 @@ static int enetc_ls1028a_write_hwaddr(struct udevice *dev)
 static int enetc_write_hwaddr(struct udevice *dev)
 {
        struct eth_pdata *plat = dev_get_plat(dev);
-       struct enetc_priv *priv = dev_get_priv(dev);
        u8 *addr = plat->enetaddr;
 
        if (enetc_is_ls1028a(dev))
@@ -510,8 +518,8 @@ static int enetc_write_hwaddr(struct udevice *dev)
        u16 lower = *(const u16 *)(addr + 4);
        u32 upper = *(const u32 *)addr;
 
-       enetc_write_psipmar(priv, 0, upper);
-       enetc_write_psipmar(priv, 1, lower);
+       enetc_write_psipmar(dev, 0, upper);
+       enetc_write_psipmar(dev, 1, lower);
 
        return 0;
 }
@@ -522,14 +530,14 @@ static void enetc_enable_si_port(struct udevice *dev)
        struct enetc_priv *priv = dev_get_priv(dev);
 
        /* set Rx/Tx BDR count */
-       enetc_write_psicfgr(priv, 0, ENETC_PSICFGR_SET_BDR(ENETC_RX_BDR_CNT,
-                                                          ENETC_TX_BDR_CNT));
+       enetc_write_psicfgr(dev, 0, ENETC_PSICFGR_SET_BDR(ENETC_RX_BDR_CNT,
+                                                         ENETC_TX_BDR_CNT));
        /* set Rx max frame size */
-       enetc_write_mac_port(priv, ENETC_PM_MAXFRM, ENETC_RX_MAXFRM_SIZE);
+       enetc_write_mac_port(dev, ENETC_PM_MAXFRM, ENETC_RX_MAXFRM_SIZE);
        /* enable MAC port */
-       enetc_write_mac_port(priv, ENETC_PM_CC, ENETC_PM_CC_RX_TX_EN);
+       enetc_write_mac_port(dev, ENETC_PM_CC, ENETC_PM_CC_RX_TX_EN);
        /* enable port */
-       enetc_write_pmr(priv, ENETC_PMR_SI0_EN);
+       enetc_write_pmr(dev, ENETC_PMR_SI0_EN);
        /* set SI cache policy */
        enetc_write(priv, ENETC_SICAR0,
                    ENETC_SICAR_RD_CFG | ENETC_SICAR_WR_CFG);
-- 
2.45.2

Reply via email to