diff options
| author | Bo Shen <voice.shen@atmel.com> | 2013-04-24 15:59:27 +0800 | 
|---|---|---|
| committer | Joe Hershberger <joe.hershberger@ni.com> | 2013-06-24 19:11:15 -0500 | 
| commit | b1a0006eba76ad72ba2cbaefc948dc7b511e8d2d (patch) | |
| tree | 66f16bd1e9e8b60e65e8849c222e3d4c1a2b318e | |
| parent | d8f64b444191d9f3ea724317e6520643c48e3117 (diff) | |
| download | olio-uboot-2014.01-b1a0006eba76ad72ba2cbaefc948dc7b511e8d2d.tar.xz olio-uboot-2014.01-b1a0006eba76ad72ba2cbaefc948dc7b511e8d2d.zip | |
net: macb: using phylib to configure phy device
using phylib to configure phy device in macb driver
Signed-off-by: Bo Shen <voice.shen@atmel.com>
| -rw-r--r-- | drivers/net/macb.c | 16 | 
1 files changed, 14 insertions, 2 deletions
| diff --git a/drivers/net/macb.c b/drivers/net/macb.c index ac2872074..602682500 100644 --- a/drivers/net/macb.c +++ b/drivers/net/macb.c @@ -103,6 +103,7 @@ struct macb_device {  	const struct device	*dev;  	struct eth_device	netdev;  	unsigned short		phy_addr; +	struct mii_dev		*bus;  };  #define to_macb(_nd) container_of(_nd, struct macb_device, netdev) @@ -168,7 +169,7 @@ void __weak arch_get_mdio_control(const char *name)  	return;  } -#if defined(CONFIG_CMD_MII) +#if defined(CONFIG_CMD_MII) || defined(CONFIG_PHYLIB)  int macb_miiphy_read(const char *devname, u8 phy_adr, u8 reg, u16 *value)  { @@ -379,6 +380,9 @@ static int macb_phy_find(struct macb_device *macb)  static int macb_phy_init(struct macb_device *macb)  {  	struct eth_device *netdev = &macb->netdev; +#ifdef CONFIG_PHYLIB +	struct phy_device *phydev; +#endif  	u32 ncfgr;  	u16 phy_id, status, adv, lpa;  	int media, speed, duplex; @@ -399,6 +403,13 @@ static int macb_phy_init(struct macb_device *macb)  		return 0;  	} +#ifdef CONFIG_PHYLIB +	phydev->bus = macb->bus; +	phydev->dev = netdev; +	phydev->addr = macb->phy_addr; +	phy_config(phydev); +#endif +  	status = macb_mdio_read(macb, MII_BMSR);  	if (!(status & BMSR_LSTATUS)) {  		/* Try to re-negotiate if we don't have link already. */ @@ -582,8 +593,9 @@ int macb_eth_initialize(int id, void *regs, unsigned int phy_addr)  	eth_register(netdev); -#if defined(CONFIG_CMD_MII) +#if defined(CONFIG_CMD_MII) || defined(CONFIG_PHYLIB)  	miiphy_register(netdev->name, macb_miiphy_read, macb_miiphy_write); +	macb->bus = miiphy_get_dev_by_name(netdev->name);  #endif  	return 0;  } |