[PATCH] fix GENERIC_PHY match nothing

张忠山 zzs213 at 126.com
Sun Dec 9 20:52:25 EST 2012


In message <20121208123830.GM24458 at pengutronix.de> Sascha Hauer wrote:
> On Sat, Dec 08, 2012 at 12:15:03PM +0100, Sascha Hauer wrote:
> > On Sat, Dec 08, 2012 at 09:58:52AM +0800, 张忠山 wrote:
> > > According the match logic in function mdio_bus_match
> > > generic phy driver matchs nothing.
> >
> > This is done on purpose. The generic phy driver is probed manually
> > when no other phy matches, see:
> >
> > > static int phy_register_device(struct phy_device* dev)
> > > {
> > >        int ret;
> > >
> > >        ret = register_device(&dev->dev);
> > >        if (ret)
> > >                return ret;
> >
> > register device...
> >
> > >
> > >        if (dev->dev.driver)
> > >                return 0;
> >
> > ... we have a driver specific to this phy, -> return
> >
> > >
> > >        dev->dev.driver = &genphy_driver.drv;
> > >        return device_probe(&dev->dev);
> >
> > No driver, use generic phy driver.
> >
> > >}
> >
> > The problem this solves (and that you reintroduce with this patch) is
> > that if the phy driver matches every device, a more specific phy driver
> > will not be used if the generic driver is registered first.
>
> Now I understand what you mean.
>

Sorry for not mention the source code version

-- 
Best Regards,
zzs





More information about the barebox mailing list