On Mon, Nov 4, 2019 at 9:01 AM Rob Herring <robh+dt@xxxxxxxxxx> wrote: > > On Mon, Oct 28, 2019 at 5:00 PM Saravana Kannan <saravanak@xxxxxxxxxx> wrote: > > > > When creating device links to proxy the sync_state() needs of child > > dependencies, create SYNC_STATE_ONLY device links so that children > > dependencies don't block probing of the parent. > > > > Also, differentiate between missing suppliers of parent device vs > > missing suppliers of child devices so that driver core doesn't block > > parent device probing when only child supplier dependencies are missing. > > > > Signed-off-by: Saravana Kannan <saravanak@xxxxxxxxxx> > > --- > > drivers/of/property.c | 17 ++++++++++++----- > > 1 file changed, 12 insertions(+), 5 deletions(-) > > Reviewed-by: Rob Herring <robh@xxxxxxxxxx> Thank you! > One nit below: > > > > > diff --git a/drivers/of/property.c b/drivers/of/property.c > > index 2808832b2e86..f16f85597ccc 100644 > > --- a/drivers/of/property.c > > +++ b/drivers/of/property.c > > @@ -1032,10 +1032,10 @@ static bool of_is_ancestor_of(struct device_node *test_ancestor, > > * - -EINVAL if the supplier link is invalid and should not be created > > * - -ENODEV if there is no device that corresponds to the supplier phandle > > */ > > -static int of_link_to_phandle(struct device *dev, struct device_node *sup_np) > > +static int of_link_to_phandle(struct device *dev, struct device_node *sup_np, > > + u32 dl_flags) > > { > > struct device *sup_dev; > > - u32 dl_flags = DL_FLAG_AUTOPROBE_CONSUMER; > > int ret = 0; > > struct device_node *tmp_np = sup_np; > > > > @@ -1195,13 +1195,20 @@ static int of_link_property(struct device *dev, struct device_node *con_np, > > unsigned int i = 0; > > bool matched = false; > > int ret = 0; > > + u32 dl_flags; > > + > > + if (dev->of_node == con_np) > > + dl_flags = DL_FLAG_AUTOPROBE_CONSUMER; > > + else > > + dl_flags = DL_FLAG_SYNC_STATE_ONLY; > > > > /* Do not stop at first failed link, link all available suppliers. */ > > while (!matched && s->parse_prop) { > > while ((phandle = s->parse_prop(con_np, prop_name, i))) { > > matched = true; > > i++; > > - if (of_link_to_phandle(dev, phandle) == -EAGAIN) > > + if (of_link_to_phandle(dev, phandle, dl_flags) > > + == -EAGAIN) > > nit: I'd just keep this one line or at least move '==' up. You'd keep it one line even if it's > 80 cols? Ok, I'll move the "==" up. -Saravana