Re: [PATCH] usb: core: skip interfaces disabled in devicetree

From: Greg Kroah-Hartman
Date: Tue Feb 19 2019 - 08:42:49 EST


On Tue, Feb 19, 2019 at 01:24:51PM +0000, Måns Rullgård wrote:
> Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> writes:
>
> > On Sat, Feb 16, 2019 at 05:04:52PM +0000, Mans Rullgard wrote:
> >> If an interface has an associated devicetree node with status disabled,
> >> do not register the device. This is useful for boards with a built-in
> >> multifunction USB device where some functions are broken or otherwise
> >> undesired.
> >>
> >> Signed-off-by: Mans Rullgard <mans@xxxxxxxxx>
> >> ---
> >> drivers/usb/core/message.c | 4 ++++
> >> 1 file changed, 4 insertions(+)
> >>
> >> diff --git a/drivers/usb/core/message.c b/drivers/usb/core/message.c
> >> index bfa5eda0cc26..6b45d4835e41 100644
> >> --- a/drivers/usb/core/message.c
> >> +++ b/drivers/usb/core/message.c
> >> @@ -2007,6 +2007,10 @@ int usb_set_configuration(struct usb_device *dev, int configuration)
> >> for (i = 0; i < nintf; ++i) {
> >> struct usb_interface *intf = cp->interface[i];
> >>
> >> + if (intf->dev.of_node &&
> >> + !of_device_is_available(intf->dev.of_node))
> >> + continue;
> >
> > Shouldn't you at least print some message out saying you are skipping
> > this? Odds are this is going to cause regressions in devices that were
> > not expecting this, right? So pointing them at why their devices now no
> > longer work would be good :)
>
> They will only be skipped if there is a device tree node for the
> interface _and_ it has and explicit status = "disabled" property.
> The default is still to create devices for all interfaces.

Yes, but today if you have such a status field set, it will not skip
them, so who knows who has their DT messed up :)

> That said, printing a message is probably a good idea anyway. Would
> "info" level be appropriate for this?

That is a good idea.

thanks,

greg k-h