mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-24 01:41:39 +00:00
cpmac: convert to new Fixed PHY infrastructure
This patch converts cpmac to the new Fixed PHY infrastructure, though it doesn't fix all the problems with that driver. I didn't even bother to test this patch to compile, because cpmac driver is broken in several ways: 1. This driver won't compile by itself because lack of its header describing platform data; 2. It assumes that fixed PHYs should be created by the ethernet driver. It is wrong assumption: fixed PHYs creation is platform code authority, driver must blindly accept bus_id and phy_id platform data variables instead. Also, it seem that that driver doesn't have actual in-tree users, so nothing to fix further. The main purpose of that patch is to get rid of the following Kconfig warning: scripts/kconfig/conf -s arch/powerpc/Kconfig drivers/net/Kconfig:1713:warning: 'select' used by config symbol 'CPMAC' refers to undefined symbol 'FIXED_MII_100_FDX' Signed-off-by: Anton Vorontsov <avorontsov@ru.mvista.com> Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
This commit is contained in:
parent
9ef9dc69d4
commit
8353ec7b0d
2 changed files with 19 additions and 40 deletions
|
@ -1738,10 +1738,8 @@ config SC92031
|
||||||
|
|
||||||
config CPMAC
|
config CPMAC
|
||||||
tristate "TI AR7 CPMAC Ethernet support (EXPERIMENTAL)"
|
tristate "TI AR7 CPMAC Ethernet support (EXPERIMENTAL)"
|
||||||
depends on NET_ETHERNET && EXPERIMENTAL && AR7
|
depends on NET_ETHERNET && EXPERIMENTAL && AR7 && BROKEN
|
||||||
select PHYLIB
|
select PHYLIB
|
||||||
select FIXED_PHY
|
|
||||||
select FIXED_MII_100_FDX
|
|
||||||
help
|
help
|
||||||
TI AR7 CPMAC Ethernet support
|
TI AR7 CPMAC Ethernet support
|
||||||
|
|
||||||
|
|
|
@ -845,15 +845,6 @@ static void cpmac_adjust_link(struct net_device *dev)
|
||||||
spin_unlock(&priv->lock);
|
spin_unlock(&priv->lock);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int cpmac_link_update(struct net_device *dev,
|
|
||||||
struct fixed_phy_status *status)
|
|
||||||
{
|
|
||||||
status->link = 1;
|
|
||||||
status->speed = 100;
|
|
||||||
status->duplex = 1;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int cpmac_open(struct net_device *dev)
|
static int cpmac_open(struct net_device *dev)
|
||||||
{
|
{
|
||||||
int i, size, res;
|
int i, size, res;
|
||||||
|
@ -996,11 +987,11 @@ static int external_switch;
|
||||||
static int __devinit cpmac_probe(struct platform_device *pdev)
|
static int __devinit cpmac_probe(struct platform_device *pdev)
|
||||||
{
|
{
|
||||||
int rc, phy_id, i;
|
int rc, phy_id, i;
|
||||||
|
int mdio_bus_id = cpmac_mii.id;
|
||||||
struct resource *mem;
|
struct resource *mem;
|
||||||
struct cpmac_priv *priv;
|
struct cpmac_priv *priv;
|
||||||
struct net_device *dev;
|
struct net_device *dev;
|
||||||
struct plat_cpmac_data *pdata;
|
struct plat_cpmac_data *pdata;
|
||||||
struct fixed_info *fixed_phy;
|
|
||||||
DECLARE_MAC_BUF(mac);
|
DECLARE_MAC_BUF(mac);
|
||||||
|
|
||||||
pdata = pdev->dev.platform_data;
|
pdata = pdev->dev.platform_data;
|
||||||
|
@ -1014,9 +1005,23 @@ static int __devinit cpmac_probe(struct platform_device *pdev)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (phy_id == PHY_MAX_ADDR) {
|
if (phy_id == PHY_MAX_ADDR) {
|
||||||
if (external_switch || dumb_switch)
|
if (external_switch || dumb_switch) {
|
||||||
|
struct fixed_phy_status status = {};
|
||||||
|
|
||||||
|
mdio_bus_id = 0;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* FIXME: this should be in the platform code!
|
||||||
|
* Since there is not platform code at all (that is,
|
||||||
|
* no mainline users of that driver), place it here
|
||||||
|
* for now.
|
||||||
|
*/
|
||||||
phy_id = 0;
|
phy_id = 0;
|
||||||
else {
|
status.link = 1;
|
||||||
|
status.duplex = 1;
|
||||||
|
status.speed = 100;
|
||||||
|
fixed_phy_add(PHY_POLL, phy_id, &status);
|
||||||
|
} else {
|
||||||
printk(KERN_ERR "cpmac: no PHY present\n");
|
printk(KERN_ERR "cpmac: no PHY present\n");
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
|
@ -1060,32 +1065,8 @@ static int __devinit cpmac_probe(struct platform_device *pdev)
|
||||||
priv->msg_enable = netif_msg_init(debug_level, 0xff);
|
priv->msg_enable = netif_msg_init(debug_level, 0xff);
|
||||||
memcpy(dev->dev_addr, pdata->dev_addr, sizeof(dev->dev_addr));
|
memcpy(dev->dev_addr, pdata->dev_addr, sizeof(dev->dev_addr));
|
||||||
|
|
||||||
if (phy_id == 31) {
|
snprintf(priv->phy_name, BUS_ID_SIZE, PHY_ID_FMT, mdio_bus_id, phy_id);
|
||||||
snprintf(priv->phy_name, BUS_ID_SIZE, PHY_ID_FMT, cpmac_mii.id,
|
|
||||||
phy_id);
|
|
||||||
} else {
|
|
||||||
/* Let's try to get a free fixed phy... */
|
|
||||||
for (i = 0; i < MAX_PHY_AMNT; i++) {
|
|
||||||
fixed_phy = fixed_mdio_get_phydev(i);
|
|
||||||
if (!fixed_phy)
|
|
||||||
continue;
|
|
||||||
if (!fixed_phy->phydev->attached_dev) {
|
|
||||||
strncpy(priv->phy_name,
|
|
||||||
fixed_phy->phydev->dev.bus_id,
|
|
||||||
BUS_ID_SIZE);
|
|
||||||
fixed_mdio_set_link_update(fixed_phy->phydev,
|
|
||||||
&cpmac_link_update);
|
|
||||||
goto phy_found;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (netif_msg_drv(priv))
|
|
||||||
printk(KERN_ERR "%s: Could not find fixed PHY\n",
|
|
||||||
dev->name);
|
|
||||||
rc = -ENODEV;
|
|
||||||
goto fail;
|
|
||||||
}
|
|
||||||
|
|
||||||
phy_found:
|
|
||||||
priv->phy = phy_connect(dev, priv->phy_name, &cpmac_adjust_link, 0,
|
priv->phy = phy_connect(dev, priv->phy_name, &cpmac_adjust_link, 0,
|
||||||
PHY_INTERFACE_MODE_MII);
|
PHY_INTERFACE_MODE_MII);
|
||||||
if (IS_ERR(priv->phy)) {
|
if (IS_ERR(priv->phy)) {
|
||||||
|
|
Loading…
Reference in a new issue