[PATCH 8/8] usb: misc: onboard_usb_dev: add support for the SMSC USB4604
From: Dmitry Baryshkov <hidden>
Date: 2026-08-10 00:43:08
Also in:
linux-devicetree, linux-usb, lkml
Subsystem:
onboard usb hub driver, the rest, usb subsystem · Maintainers:
Matthias Kaehlcke, Linus Torvalds, Greg Kroah-Hartman
The SMSC USB4604 HSIC hub on the APQ8074 Dragonboard has its RESET_N pin wired to a PMIC GPIO, so it stays in reset until the OS releases it. The release also has to happen while the HSIC host controller is up: HSIC has no connect detection comparable to USB 2.0, so the one-shot connect signaled by the hub after reset deassertion is lost if the controller is not yet running. Add the USB4604 (0424:4604, the ID used when the upstream port is in HSIC mode) to the onboard USB device driver, which releases the reset when the parent host controller probes. Assisted-by: Claude:claude-fable-5 Signed-off-by: Dmitry Baryshkov <redacted> --- drivers/usb/misc/onboard_usb_dev.c | 1 + drivers/usb/misc/onboard_usb_dev.h | 8 ++++++++ 2 files changed, 9 insertions(+)
diff --git a/drivers/usb/misc/onboard_usb_dev.c b/drivers/usb/misc/onboard_usb_dev.c
index 6299c0539212..0eeb9713f5a3 100644
--- a/drivers/usb/misc/onboard_usb_dev.c
+++ b/drivers/usb/misc/onboard_usb_dev.c@@ -673,6 +673,7 @@ static const struct usb_device_id onboard_dev_id_table[] = { { USB_DEVICE(VENDOR_ID_MICROCHIP, 0x2514) }, /* USB2514B USB 2.0 HUB */ { USB_DEVICE(VENDOR_ID_MICROCHIP, 0x2517) }, /* USB2517 USB 2.0 HUB */ { USB_DEVICE(VENDOR_ID_MICROCHIP, 0x2744) }, /* USB5744 USB 2.0 HUB */ + { USB_DEVICE(VENDOR_ID_MICROCHIP, 0x4604) }, /* USB4604 HSIC HUB */ { USB_DEVICE(VENDOR_ID_MICROCHIP, 0x5744) }, /* USB5744 USB 3.0 HUB */ { USB_DEVICE(VENDOR_ID_PARADE, 0x5511) }, /* PS5511 USB 3.2 */ { USB_DEVICE(VENDOR_ID_PARADE, 0x55a1) }, /* PS5511 USB 2.0 */
diff --git a/drivers/usb/misc/onboard_usb_dev.h b/drivers/usb/misc/onboard_usb_dev.h
index 11425bdc5a63..9e320b042a86 100644
--- a/drivers/usb/misc/onboard_usb_dev.h
+++ b/drivers/usb/misc/onboard_usb_dev.h@@ -30,6 +30,13 @@ static const struct onboard_dev_pdata microchip_usb2514_data = { .is_hub = true, }; +static const struct onboard_dev_pdata microchip_usb4604_data = { + .reset_us = 3000, + .num_supplies = 1, + .supply_names = { "vdd" }, + .is_hub = true, +}; + static const struct onboard_dev_pdata microchip_usb5744_data = { .reset_us = 0, .power_on_delay_us = 10000,
@@ -154,6 +161,7 @@ static const struct of_device_id onboard_dev_match[] = { { .compatible = "usb424,2514", .data = µchip_usb2514_data, }, { .compatible = "usb424,2517", .data = µchip_usb424_data, }, { .compatible = "usb424,2744", .data = µchip_usb5744_data, }, + { .compatible = "usb424,4604", .data = µchip_usb4604_data, }, { .compatible = "usb424,5744", .data = µchip_usb5744_data, }, { .compatible = "usb451,8025", .data = &ti_tusb8020b_data, }, { .compatible = "usb451,8027", .data = &ti_tusb8020b_data, },
--
2.47.3