Re: [PATCH v16 6/7] usb: host: xhci-plat: Create platform device for onboard hubs in probe()
From: Matthias Kaehlcke <mka@chromium.org>
Date: 2021-10-20 20:27:45
Also in:
linux-usb, lkml
Hi Mathias, On Wed, Oct 20, 2021 at 04:05:37PM +0300, Mathias Nyman wrote:
Hi On 13.8.2021 22.52, Matthias Kaehlcke wrote:quoted
Call onboard_hub_create/destroy_pdevs() from _probe()/_remove() to create/destroy platform devices for onboard USB hubs that may be connected to the root hub of the controller. These functions are a NOP unless CONFIG_USB_ONBOARD_HUB=y/m. Also add a field to struct xhci_hcd to keep track of the onboard hub platform devices that are owned by the xHCI. Signed-off-by: Matthias Kaehlcke <mka@chromium.org> ---Haven't really looked at this series until now. Is there any reason why the xhci platform driver was selected as the best place to create/remove these onboard hub devices?
IIRC Alan suggested to use the xhci platform driver for creating/removing the onboard hub devices when we were trying to get rid of a separate DT node on the 'platform bus', which was suitable the board for my use case.
This ties the onboard hubs to xhci, and won't work in case we have onboard hubs connected to a ehci controllers.
Right, the driver itself isn't limited to xhci. The initial idea was that support for other types of USB controllers could be added as needed (I only have a config with xhci for testing).
If separate devices for controlling onboard hub power is the right solution then how about creating the onboard hub device in usb_add_hcd() (hcd.c), and store it in struct usb_hcd. A bit like how the roothub device is created, or PHYs are tuned.
Sure, that sounds feasible, even better if it's handled in a single place and different types of controllers don't have to add support separately.