summaryrefslogtreecommitdiffstats
path: root/drivers/net/cpsw.c
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2014-05-15 09:45:52 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2014-05-15 13:58:39 +0200
commit6698b2dd51cf7c7ef76d70df43aa02891ddd5777 (patch)
tree28644c6df563f804a94c7d4a72764d24f8b3f967 /drivers/net/cpsw.c
parent1655068ddddd9665068b6b45b8ae53da351dec77 (diff)
downloadbarebox-6698b2dd51cf7c7ef76d70df43aa02891ddd5777.tar.gz
barebox-6698b2dd51cf7c7ef76d70df43aa02891ddd5777.tar.xz
net: cpsw: register slaves as devices
This makes it possible to directly call dev_dbg and friends on the slave. Also the ethernet aliases in the devicetree now match the devices. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers/net/cpsw.c')
-rw-r--r--drivers/net/cpsw.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/drivers/net/cpsw.c b/drivers/net/cpsw.c
index d45afbf738..e8a8cdb249 100644
--- a/drivers/net/cpsw.c
+++ b/drivers/net/cpsw.c
@@ -183,6 +183,7 @@ struct cpsw_slave {
phy_interface_t phy_if;
struct eth_device edev;
struct cpsw_priv *cpsw;
+ struct device_d dev;
};
struct cpdma_desc {
@@ -916,6 +917,15 @@ static int cpsw_slave_setup(struct cpsw_slave *slave, int slave_num,
{
void *regs = priv->regs;
struct eth_device *edev = &slave->edev;
+ struct device_d *dev = &slave->dev;
+ int ret;
+
+ sprintf(dev->name, "cpsw-slave");
+ dev->id = slave->slave_num;
+ dev->parent = priv->dev;
+ ret = register_device(dev);
+ if (ret)
+ return ret;
dev_dbg(priv->dev, "* %s\n", __func__);
@@ -932,7 +942,7 @@ static int cpsw_slave_setup(struct cpsw_slave *slave, int slave_num,
edev->recv = cpsw_recv;
edev->get_ethaddr = cpsw_get_hwaddr;
edev->set_ethaddr = cpsw_set_hwaddr;
- edev->parent = priv->dev;
+ edev->parent = dev;
return eth_register(edev);
}
@@ -1077,6 +1087,7 @@ static int cpsw_probe_dt(struct cpsw_priv *priv)
if (ret)
return ret;
+ slave->dev.device_node = child;
slave->phy_id = phy_id[1];
slave->phy_if = of_get_phy_mode(child);
slave->slave_num = i;