Re: [PATCH v4 1/2] dt-bindings: usb: Add binding for discrete onboard USB hubs

From: Alan Stern
Date: Tue Sep 29 2020 - 21:32:40 EST


On Tue, Sep 29, 2020 at 03:09:12PM -0700, Matthias Kaehlcke wrote:
> Hi Rob,
>
> On Tue, Sep 29, 2020 at 03:17:01PM -0500, Rob Herring wrote:
> > As I said in prior version, this separate node and 'hub' phandle is not
> > going to work. You are doing this because you want a platform driver for
> > "realtek,rts5411". That may be convenient for Linux, but doesn't reflect
> > the h/w.
>
> I agree that the hardware representation isn't totally straightforward, however
> the description isn't limited to Linux:
>
> - there is a single IC (like the Realtek RTS5411)
> - the IC may require several resources to be initialized in a certain way
> - this may require executing hardware specific code by some driver, which
> isn't a USB device driver
> - the IC can 'contain' multiple USB hub devices, which can be connected to
> separate USB busses
> - the IC doesn't have a control bus, which somewhat resembles the
> 'simple-audio-amplifier' driver, which also registers a platform device
> to initialize its resources
>
> - to provide the functionality of powering down the hub conditionally during
> system suspend the driver (whether it's a platform driver or something else)
> needs know which USB (hub) devices correspond to it. This is a real world
> problem, on hardware that might see wide distribution.
>
> There were several attempts to solve this problem in the past, but none of them
> was accepted. So far Alan Stern seems to think the driver (not necessarily the
> binding as is) is a suitable solution, Greg KH also spent time reviewing it,
> without raising conceptual concerns. So it seems we have solution that would
> be generally landable from the USB side.
>
> I understand that your goal is to keep the device tree sane, which I'm sure
> can be challenging. If you really can't be convinced that the binding might
> be acceptable in its current or similiar form then please offer guidance
> on possible alternatives which allow to achieve the same functionality.

You're really trying to represent this special IC in DT, right? Maybe
if you don't call it a "hub" but instead something that better reflects
what it actually is and does, the description will be more palatable.

Alan Stern