Hi Alan, thanks for your feedback! On Mon, Sep 14, 2020 at 04:14:03PM -0400, Alan Stern wrote: > On Mon, Sep 14, 2020 at 11:27:49AM -0700, Matthias Kaehlcke wrote: > > The main issue this driver addresses is that a USB hub needs to be > > powered before it can be discovered. For onboard hubs this is often > > solved by supplying the hub with an 'always-on' regulator, which is > > kind of a hack. Some onboard hubs may require further initialization > > steps, like changing the state of a GPIO or enabling a clock, which > > requires further hacks. This driver creates a platform device > > representing the hub which performs the necessary initialization. > > Currently it only supports switching on a single regulator, support > > for multiple regulators or other actions can be added as needed. > > Different initialization sequences can be supported based on the > > compatible string. > > > > Besides performing the initialization the driver can be configured > > to power the hub off during system suspend. This can help to extend > > battery life on battery powered devices, which have no requirements > > to keep the hub powered during suspend. The driver can also be > > configured to leave the hub powered when a wakeup capable USB device > > is connected when suspending, and keeping it powered otherwise. > > > > Technically the driver consists of two drivers, the platform driver > > described above and a very thin USB driver that subclasses the > > generic hub driver. > > Actually it subclasses the generic usb device driver, not the hub > driver. ok, I'll change it in the next version. > > The purpose of this driver is to provide the > > platform driver with the USB devices corresponding to the hub(s) > > (a hub controller may provide multiple 'logical' hubs, e.g. one > > to support USB 2.0 and another for USB 3.x). > > > > Co-developed-by: Ravi Chandra Sadineni <ravisadineni@xxxxxxxxxxxx> > > Signed-off-by: Ravi Chandra Sadineni <ravisadineni@xxxxxxxxxxxx> > > Signed-off-by: Matthias Kaehlcke <mka@xxxxxxxxxxxx> > > --- > > This is an evolution of '[RFC] USB: misc: Add usb_hub_pwr driver' > > (https://lore.kernel.org/patchwork/patch/1299239/). > > > > Changes in v1: > > - renamed the driver to 'onboard_usb_hub' > > - single file for platform and USB driver > > - USB hub devices register with the platform device > > - the DT includes a phandle of the platform device > > - the platform device now controls when power is turned off > > - the USB driver became a very thin subclass of the generic hub > > driver > > - enabled autosuspend support > > See https://marc.info/?l=linux-usb&m=159914635920888&w=2 and the > accompanying submissions. You'll probably want to include those updates > in your driver. Thanks for the pointer! I'll change the driver to use pm_ptr as suggested.