summaryrefslogtreecommitdiffstats
path: root/drivers/net/cpsw.c
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2013-11-20 10:18:53 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2013-11-27 10:42:53 +0100
commit046157602e551f4bbe5071916b3360361a99f2a5 (patch)
treeba9e8009a4c6c348f960fac23df08509dcd58d07 /drivers/net/cpsw.c
parent82bc71b820b91c6a46a052fb13e2d68efa84dee6 (diff)
downloadbarebox-046157602e551f4bbe5071916b3360361a99f2a5.tar.gz
barebox-046157602e551f4bbe5071916b3360361a99f2a5.tar.xz
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>
Diffstat (limited to 'drivers/net/cpsw.c')
-rw-r--r--drivers/net/cpsw.c34
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;