Re: [RESEND][PATCH 1/2] dt-bindings: usb: add non-removable-ports hub property

From: Måns Rullgård
Date: Tue Jan 28 2020 - 10:15:15 EST


Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> writes:

> On Mon, Jan 27, 2020 at 04:56:15PM +0000, Måns Rullgård wrote:
>> Rob Herring <robh@xxxxxxxxxx> writes:
>>
>> > On Fri, Jan 24, 2020 at 03:25:03PM +0000, Mans Rullgard wrote:
>> >> Add a non-removable-ports property that lists the hardwired downstream
>> >> ports of a hub. Although hubs can provide this information, they are
>> >> not always configured correctly. An alternate means of indicating this
>> >> for built-in USB devices is thus useful.
>> >>
>> >> Signed-off-by: Mans Rullgard <mans@xxxxxxxxx>
>> >
>> > I reviewed this already, but since you didn't add my reviewed-by, I'm
>> > looking at it again and having 2nd thoughts.
>> >
>> >> ---
>> >> Documentation/devicetree/bindings/usb/usb-device.txt | 4 ++++
>> >> 1 file changed, 4 insertions(+)
>> >>
>> >> diff --git a/Documentation/devicetree/bindings/usb/usb-device.txt b/Documentation/devicetree/bindings/usb/usb-device.txt
>> >> index 036be172b1ae..92d863cc96b6 100644
>> >> --- a/Documentation/devicetree/bindings/usb/usb-device.txt
>> >> +++ b/Documentation/devicetree/bindings/usb/usb-device.txt
>> >> @@ -66,6 +66,10 @@ Required properties for host-controller nodes with device nodes:
>> >> - #size-cells: shall be 0
>> >>
>> >>
>> >> +Optional properties for hub and host-controller nodes:
>> >> +- non-removable-ports: list of hardwired downstream ports
>> >
>> > If you have a hardwired device and need to know that, doesn't that imply
>> > there's some other stuff you need to describe beyond what a standard USB
>> > device has. Such as a power supply that's not Vbus from the hub.
>>
>> I suppose there could be, but there isn't in my actual situation.
>>
>> > At a minimum, I think this should be a per port property.
>>
>> That's what I suggested first. Greg told me to do it like this instead.
>
> I said that? I do not remember discussing this at all, when did that
> happen?

https://lore.kernel.org/lkml/20190228155241.GC12050@xxxxxxxxx/

>> > Though really, I think this should just be implied by describing the
>> > device in DT. I'm not sure if there's a case for hotpluggable devices
>> > described in DT. Maybe with overlays.
>>
>> That's also an option. Greg, what do you think?
>
> I have no idea, sorry, I'm totally lost here...

Background: I need to differentiate between on-board and external USB
devices on a few boards. Although hubs can indicate the removable
status of each port, the configuration options are often limited and may
not be capable of describing the actual wiring. Also, if a device is
hard-wired directly to a host port, there is no way of indicating this.

While I could match the full device path using per-board lists, I'd
prefer a generic solution. To this end, it is necessary to add the
ability for DT to supply this information. Three variants have been
discussed:

1. Add a "non-removable" property to the USB device node similar to how
it's done for MMC.

2. Add a "non-removable-ports" property to the hub node. Apparently
ACPI can supply the information in this manner.

3. Make any USB device with a DT node implicitly non-removable.

Either one will work for me.

--
Måns Rullgård