Re: [PATCH v10 0/5] USB: misc: Add onboard_usb_hub driver

From: Greg Kroah-Hartman
Date: Fri May 21 2021 - 08:30:51 EST


On Tue, May 11, 2021 at 03:52:18PM -0700, Matthias Kaehlcke wrote:
> This series adds:
> - the onboard_usb_hub_driver
> - glue in the xhci-plat driver to create the onboard_usb_hub
> platform device if needed
> - a device tree binding for the Realtek RTS5411 USB hub controller
> - device tree changes that add RTS5411 entries for the QCA SC7180
> based boards trogdor and lazor
> - a couple of stubs for platform device functions to avoid
> unresolved symbols with certain kernel configs
>
> The main issue the 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.

I get a build error when I apply this series to my tree:

drivers/usb/misc/onboard_usb_hub.c:273:6: error: redefinition of ‘of_is_onboard_usb_hub’
273 | bool of_is_onboard_usb_hub(const struct device_node *np)
| ^~~~~~~~~~~~~~~~~~~~~
In file included from drivers/usb/misc/onboard_usb_hub.c:21:
./include/linux/usb/onboard_hub.h:9:20: note: previous definition of ‘of_is_onboard_usb_hub’ with type ‘bool(const struct device_node *)’ {aka ‘_Bool(const struct device_node *)’}
9 | static inline bool of_is_onboard_usb_hub(const struct device_node *np)
| ^~~~~~~~~~~~~~~~~~~~~

Any thoughts?

greg k-h