Re: [PATCH 13/16] mdio_bus: Allow for non PHY-devices on MDIO buses

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Oct 8, 2018 at 1:44 AM Sascha Hauer <s.hauer@xxxxxxxxxxxxxx> wrote:
>
> On Sun, Oct 07, 2018 at 11:35:39PM -0700, Andrey Smirnov wrote:
> > Instead of just creating a simple PHY device for every child of MDIO
> > bus node, add code to check if any of them have "compatible" property
> > set as well as code to create a proper platform device for such cases.
> >
> > This change is useful for when MDIO bus and some of Ethernet ports are
> > connected to a switch or some other MDIO device that doesn't behave
> > like a generic PHY and can't be probed via its PHY ID.
> >
> > Signed-off-by: Andrey Smirnov <andrew.smirnov@xxxxxxxxx>
> > ---
> >  drivers/net/phy/mdio_bus.c | 11 +++++++++++
> >  1 file changed, 11 insertions(+)
> >
> > diff --git a/drivers/net/phy/mdio_bus.c b/drivers/net/phy/mdio_bus.c
> > index d7d6d8940..589ed57d2 100644
> > --- a/drivers/net/phy/mdio_bus.c
> > +++ b/drivers/net/phy/mdio_bus.c
> > @@ -26,6 +26,7 @@
> >  #include <errno.h>
> >  #include <linux/phy.h>
> >  #include <linux/err.h>
> > +#include <of_device.h>
> >
> >  #define DEFAULT_GPIO_RESET_ASSERT       1000      /* us */
> >  #define DEFAULT_GPIO_RESET_DEASSERT     1000      /* us */
> > @@ -179,6 +180,16 @@ static int of_mdiobus_register(struct mii_bus *mdio, struct device_node *np)
> >
> >       /* Loop over the child nodes and register a phy_device for each one */
> >       for_each_available_child_of_node(np, child) {
> > +             if (of_get_property(child, "compatible", NULL)) {
> > +                     if (!of_platform_device_create(child, &mdio->dev)) {
> > +                             dev_err(&mdio->dev,
> > +                                     "Failed to create device for %s\n",
> > +                                     child->full_name);
> > +                     }
> > +
> > +                     continue;
> > +             }
>
> PHYs can have a compatible property aswell which is checked for here:
>
> > +
> >               if (!of_mdiobus_child_is_phy(child))
> >                       continue;
>
> So I believe you have to create a platform device only if it is not a
> PHY device.
>

Yeah, good point, missed this in my logic. Will fix in v2.

Thanks,
Andrey Smirnov

_______________________________________________
barebox mailing list
barebox@xxxxxxxxxxxxxxxxxxx
http://lists.infradead.org/mailman/listinfo/barebox



[Index of Archives]     [Linux Embedded]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux