From: Bo Shen Date: Wed, 24 Apr 2013 07:59:27 +0000 (+0800) Subject: net: macb: using phylib to configure phy device X-Git-Tag: v2013.07-rc2~57^2~6 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b1a0006eba76ad72ba2cbaefc948dc7b511e8d2d;p=platform%2Fkernel%2Fu-boot.git net: macb: using phylib to configure phy device using phylib to configure phy device in macb driver Signed-off-by: Bo Shen --- diff --git a/drivers/net/macb.c b/drivers/net/macb.c index ac28720..6026825 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; }