diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2013-11-20 10:18:53 +0100 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2013-11-27 10:42:53 +0100 |
commit | 046157602e551f4bbe5071916b3360361a99f2a5 (patch) | |
tree | ba9e8009a4c6c348f960fac23df08509dcd58d07 | |
parent | 82bc71b820b91c6a46a052fb13e2d68efa84dee6 (diff) | |
download | barebox-046157602e551f4bbe5071916b3360361a99f2a5.tar.gz |
net: cpsw: attach slave to edev->priv
An ethernet device belongs to a slave, so set edev->priv to the slave
and not to the cpsw.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
-rw-r--r-- | drivers/net/cpsw.c | 34 |
1 files changed, 20 insertions, 14 deletions
diff --git a/drivers/net/cpsw.c b/drivers/net/cpsw.c index b041b531f8..6141328af8 100644 --- a/drivers/net/cpsw.c +++ b/drivers/net/cpsw.c @@ -182,6 +182,7 @@ struct cpsw_slave { int phy_id; phy_interface_t phy_if; struct eth_device edev; + struct cpsw_priv *cpsw; }; struct cpdma_desc { @@ -538,7 +539,8 @@ static inline void soft_reset(struct cpsw_priv *priv, void *reg) static int cpsw_get_hwaddr(struct eth_device *edev, unsigned char *mac) { - struct cpsw_priv *priv = edev->priv; + struct cpsw_slave *slave = edev->priv; + struct cpsw_priv *priv = slave->cpsw; dev_dbg(priv->dev, "* %s\n", __func__); @@ -547,8 +549,8 @@ static int cpsw_get_hwaddr(struct eth_device *edev, unsigned char *mac) static int cpsw_set_hwaddr(struct eth_device *edev, unsigned char *mac) { - struct cpsw_priv *priv = edev->priv; - struct cpsw_slave *slave = &priv->slaves[0]; + struct cpsw_slave *slave = edev->priv; + struct cpsw_priv *priv = slave->cpsw; dev_dbg(priv->dev, "* %s\n", __func__); @@ -616,8 +618,8 @@ static int cpsw_update_link(struct cpsw_slave *slave, struct cpsw_priv *priv) static void cpsw_adjust_link(struct eth_device *edev) { - struct cpsw_priv *priv = edev->priv; - struct cpsw_slave *slave = &priv->slaves[0]; + struct cpsw_slave *slave = edev->priv; + struct cpsw_priv *priv = slave->cpsw; dev_dbg(priv->dev, "* %s\n", __func__); @@ -758,8 +760,8 @@ static int cpsw_init(struct eth_device *edev) static int cpsw_open(struct eth_device *edev) { - struct cpsw_priv *priv = edev->priv; - struct cpsw_slave *slave = &priv->slaves[0]; + struct cpsw_slave *slave = edev->priv; + struct cpsw_priv *priv = slave->cpsw; int i, ret; dev_dbg(priv->dev, "* %s\n", __func__); @@ -843,9 +845,10 @@ static int cpsw_open(struct eth_device *edev) return 0; } -static void cpsw_halt(struct eth_device *dev) +static void cpsw_halt(struct eth_device *edev) { - struct cpsw_priv *priv = dev->priv; + struct cpsw_slave *slave = edev->priv; + struct cpsw_priv *priv = slave->cpsw; writel(0, priv->dma_regs + CPDMA_TXCONTROL); writel(0, priv->dma_regs + CPDMA_RXCONTROL); @@ -857,9 +860,10 @@ static void cpsw_halt(struct eth_device *dev) soft_reset(priv, priv->dma_regs + CPDMA_SOFTRESET); } -static int cpsw_send(struct eth_device *dev, void *packet, int length) +static int cpsw_send(struct eth_device *edev, void *packet, int length) { - struct cpsw_priv *priv = dev->priv; + struct cpsw_slave *slave = edev->priv; + struct cpsw_priv *priv = slave->cpsw; void *buffer; int ret, len; @@ -877,9 +881,10 @@ static int cpsw_send(struct eth_device *dev, void *packet, int length) return ret; } -static int cpsw_recv(struct eth_device *dev) +static int cpsw_recv(struct eth_device *edev) { - struct cpsw_priv *priv = dev->priv; + struct cpsw_slave *slave = edev->priv; + struct cpsw_priv *priv = slave->cpsw; void *buffer; int len; @@ -912,8 +917,9 @@ static void cpsw_slave_setup(struct cpsw_slave *slave, int slave_num, slave->slave_num = slave_num; slave->regs = regs + priv->slave_ofs + priv->slave_size * slave_num; slave->sliver = regs + priv->sliver_ofs + SLIVER_SIZE * slave_num; + slave->cpsw = priv; - edev->priv = priv; + edev->priv = slave; edev->init = cpsw_init; edev->open = cpsw_open; edev->halt = cpsw_halt; |