[PATCH 0/3] Modernize the Faraday FOTG210 driver

From: Linus Walleij

Date: Sun Aug 30 2026 - 18:24:55 EST


Replace the private FOTG210 EHCI fork with the common EHCI core and
quirks for its shifted or missing registers, integrated transaction
translator, speed reporting, and reset sequence.

This is a late reaction to a comment from Daniel Palmer in 2023:
https://lore.kernel.org/linux-usb/CAFr9PXmVXqAX73VUzAt_M2yPN93in9Y_LHyYcEA1Dfj_m_4ZHA@xxxxxxxxxxxxxx/

The fork was originally made from the v3.7 EHCI core driver. Arguably
this was a bad idea since it copied over 5000 lines of code. Correct the
mistake by using the maintained common implementation.

Also clean up fixed-role initialization, power and resource handling,
UDC lifecycle, and system sleep handling. The binding and Gemini board
updates are split into a separate series.

Tested on the D-Link DIR-685.

Assisted-by: LLM
Signed-off-by: Linus Walleij <linusw@xxxxxxxxxx>
---
Linus Walleij (3):
usb: ehci: support controllers with non-standard registers
usb: fotg210: use the common EHCI core
usb: fotg210-udc: fix endpoint and resource handling

drivers/usb/fotg210/Kconfig | 2 +
drivers/usb/fotg210/fotg210-core.c | 276 +-
drivers/usb/fotg210/fotg210-hcd.c | 5672 +-----------------------------------
drivers/usb/fotg210/fotg210-hcd.h | 689 -----
drivers/usb/fotg210/fotg210-udc.c | 97 +-
drivers/usb/fotg210/fotg210-udc.h | 2 +-
drivers/usb/fotg210/fotg210.h | 26 +-
drivers/usb/host/ehci-dbg.c | 3 +-
drivers/usb/host/ehci-hcd.c | 31 +-
drivers/usb/host/ehci-hub.c | 100 +-
drivers/usb/host/ehci-timer.c | 3 +-
drivers/usb/host/ehci.h | 55 +-
12 files changed, 520 insertions(+), 6436 deletions(-)
---
base-commit: cee9395acd8043be0644b25c34bfa86623f2b935
change-id: 20260203-gemini-usb-fotg2-3873e0d9288a

Best regards,
--
Linus Walleij <linusw@xxxxxxxxxx>