diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2014-05-15 09:45:52 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2014-05-15 13:58:39 +0200 |
commit | 6698b2dd51cf7c7ef76d70df43aa02891ddd5777 (patch) | |
tree | 28644c6df563f804a94c7d4a72764d24f8b3f967 /drivers/net/cpsw.c | |
parent | 1655068ddddd9665068b6b45b8ae53da351dec77 (diff) | |
download | barebox-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.c | 13 |
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; |