[U-Boot] [PATCH 2/3] net: macb: using phylib to configure phy device
Andreas Bießmann
andreas.devel at googlemail.com
Thu Aug 15 16:36:05 CEST 2013
Hi Bo,
I'm currently applying your patches. Patch 'arm: atmel: add gmac support
for sama5d3xek board' shows that this particular patch is defective ...
please send a fix or I will not apply the gmac for sama5.
On 04/24/2013 09:59 AM, Bo Shen wrote:
> using phylib to configure phy device in macb driver
>
> Signed-off-by: Bo Shen <voice.shen at atmel.com>
> ---
> drivers/net/macb.c | 16 ++++++++++++++--
> 1 file changed, 14 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/net/macb.c b/drivers/net/macb.c
> index 753fb96..b83d65a 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)
>
> @@ -163,7 +164,7 @@ static u16 macb_mdio_read(struct macb_device *macb, u8 reg)
> return MACB_BFEXT(DATA, frame);
> }
>
> -#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)
> {
> @@ -372,6 +373,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;
> @@ -391,6 +395,13 @@ static int macb_phy_init(struct macb_device *macb)
> return 0;
> }
>
> +#ifdef CONFIG_PHYLIB
> + phydev->bus = macb->bus;
phydev is uninitialized here ...
> + 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. */
> @@ -574,8 +585,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;
> }
>
More information about the U-Boot
mailing list