usb: Iterator for ports

Introducing usb_for_each_port(). It works the same way as
usb_for_each_dev(), but instead of going through every USB
device in the system, it walks through the USB ports in the
system.

Acked-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Link: https://lore.kernel.org/r/20210407065555.88110-4-heikki.krogerus@linux.intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Heikki Krogerus
2021-04-07 09:55:54 +03:00
committed by Greg Kroah-Hartman
parent 63cd786173
commit b433c4c789
2 changed files with 55 additions and 0 deletions

View File

@@ -882,6 +882,15 @@ extern struct usb_host_interface *usb_find_alt_setting(
unsigned int iface_num,
unsigned int alt_num);
#if IS_REACHABLE(CONFIG_USB)
int usb_for_each_port(void *data, int (*fn)(struct device *, void *));
#else
static inline int usb_for_each_port(void *data, int (*fn)(struct device *, void *))
{
return 0;
}
#endif
/* port claiming functions */
int usb_hub_claim_port(struct usb_device *hdev, unsigned port1,
struct usb_dev_state *owner);