• Matthias Kaehlcke's avatar
    usb: misc: Add onboard_usb_hub driver · 8bc06364
    Matthias Kaehlcke authored
    The main issue this driver addresses is that a USB hub needs to be
    powered before it can be discovered. For discrete onboard hubs (an
    example for such a hub is the Realtek RTS5411) 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 even more 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 power it off otherwise.
    
    Technically the driver consists of two drivers, the platform driver
    described above and a very thin USB driver that subclasses the
    generic driver. 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: default avatarRavi Chandra Sadineni <ravisadineni@chromium.org>
    Reviewed-by: default avatarDouglas Anderson <dianders@chromium.org>
    Signed-off-by: default avatarRavi Chandra Sadineni <ravisadineni@chromium.org>
    Signed-off-by: default avatarMatthias Kaehlcke <mka@chromium.org>
    Link: https://lore.kernel.org/r/20220630123445.v24.3.I7c9a1f1d6ced41dd8310e8a03da666a32364e790@changeidSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    8bc06364
Kconfig 10.7 KB