diff options
Diffstat (limited to 'drivers/net/ethernet/freescale/fec.c')
| -rw-r--r-- | drivers/net/ethernet/freescale/fec.c | 11 | 
1 files changed, 7 insertions, 4 deletions
diff --git a/drivers/net/ethernet/freescale/fec.c b/drivers/net/ethernet/freescale/fec.c index 1124ce0a159..c136230d50b 100644 --- a/drivers/net/ethernet/freescale/fec.c +++ b/drivers/net/ethernet/freescale/fec.c @@ -232,6 +232,7 @@ struct fec_enet_private {  	struct	platform_device *pdev;  	int	opened; +	int	dev_id;  	/* Phylib and MDIO interface */  	struct	mii_bus *mii_bus; @@ -837,7 +838,7 @@ static void __inline__ fec_get_mac(struct net_device *ndev)  	/* Adjust MAC if using macaddr */  	if (iap == macaddr) -		 ndev->dev_addr[ETH_ALEN-1] = macaddr[ETH_ALEN-1] + fep->pdev->id; +		 ndev->dev_addr[ETH_ALEN-1] = macaddr[ETH_ALEN-1] + fep->dev_id;  }  /* ------------------------------------------------------------------------- */ @@ -953,7 +954,7 @@ static int fec_enet_mii_probe(struct net_device *ndev)  	char mdio_bus_id[MII_BUS_ID_SIZE];  	char phy_name[MII_BUS_ID_SIZE + 3];  	int phy_id; -	int dev_id = fep->pdev->id; +	int dev_id = fep->dev_id;  	fep->phy_dev = NULL; @@ -1031,7 +1032,7 @@ static int fec_enet_mii_init(struct platform_device *pdev)  	 * mdio interface in board design, and need to be configured by  	 * fec0 mii_bus.  	 */ -	if ((id_entry->driver_data & FEC_QUIRK_ENET_MAC) && pdev->id > 0) { +	if ((id_entry->driver_data & FEC_QUIRK_ENET_MAC) && fep->dev_id > 0) {  		/* fec1 uses fec0 mii_bus */  		fep->mii_bus = fec0_mii_bus;  		return 0; @@ -1063,7 +1064,7 @@ static int fec_enet_mii_init(struct platform_device *pdev)  	fep->mii_bus->read = fec_enet_mdio_read;  	fep->mii_bus->write = fec_enet_mdio_write;  	fep->mii_bus->reset = fec_enet_mdio_reset; -	snprintf(fep->mii_bus->id, MII_BUS_ID_SIZE, "%x", pdev->id + 1); +	snprintf(fep->mii_bus->id, MII_BUS_ID_SIZE, "%x", fep->dev_id + 1);  	fep->mii_bus->priv = fep;  	fep->mii_bus->parent = &pdev->dev; @@ -1521,6 +1522,7 @@ fec_probe(struct platform_device *pdev)  	int i, irq, ret = 0;  	struct resource *r;  	const struct of_device_id *of_id; +	static int dev_id;  	of_id = of_match_device(fec_dt_ids, &pdev->dev);  	if (of_id) @@ -1548,6 +1550,7 @@ fec_probe(struct platform_device *pdev)  	fep->hwp = ioremap(r->start, resource_size(r));  	fep->pdev = pdev; +	fep->dev_id = dev_id++;  	if (!fep->hwp) {  		ret = -ENOMEM;  |