linux/drivers/usb/host
Huacai Chen bcb60d4385 USB: OHCI: Add quirk for LS7A OHCI controller (rev 0x02)
The OHCI controller (rev 0x02) under LS7A PCI host has a hardware flaw.
MMIO register with offset 0x60/0x64 is treated as legacy PS2-compatible
keyboard/mouse interface, which confuse the OHCI controller. Since OHCI
only use a 4KB BAR resource indeed, the LS7A OHCI controller's 32KB BAR
is wrapped around (the second 4KB BAR space is the same as the first 4KB
internally). So we can add an 4KB offset (0x1000) to the OHCI registers
(from the PCI BAR resource) as a quirk.

Cc: stable <stable@kernel.org>
Suggested-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Alan Stern <stern@rowland.harvard.edu>
Tested-by: Mingcong Bai <baimingcong@loongson.cn>
Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
Link: https://lore.kernel.org/r/20250328040059.3672979-1-chenhuacai@loongson.cn
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2025-04-11 16:21:20 +02:00
..
Kconfig xhci-pci: Make xhci-pci-renesas a proper modular driver 2024-08-07 12:51:38 +02:00
Makefile
bcma-hcd.c USB: bcma: Remove unused of_gpio.h 2024-11-04 01:27:52 +01:00
ehci-atmel.c usb: Switch back to struct platform_driver::remove() 2024-10-04 15:13:03 +02:00
ehci-brcm.c usb: Switch back to struct platform_driver::remove() 2024-10-04 15:13:03 +02:00
ehci-dbg.c USB: Use EHCI control transfer pid macros instead of constant values. 2024-03-26 10:43:35 +01:00
ehci-exynos.c usb: Switch back to struct platform_driver::remove() 2024-10-04 15:13:03 +02:00
ehci-fsl.c usb: Switch back to struct platform_driver::remove() 2024-10-04 15:13:03 +02:00
ehci-fsl.h
ehci-grlib.c usb: Switch back to struct platform_driver::remove() 2024-10-04 15:13:03 +02:00
ehci-hcd.c usb: ehci: Switch to use hrtimer_setup() 2025-02-18 11:19:02 +01:00
ehci-hub.c
ehci-mem.c
ehci-mv.c usb: Switch back to struct platform_driver::remove() 2024-10-04 15:13:03 +02:00
ehci-npcm7xx.c usb: Switch back to struct platform_driver::remove() 2024-10-04 15:13:03 +02:00
ehci-omap.c usb: Switch back to struct platform_driver::remove() 2024-10-04 15:13:03 +02:00
ehci-orion.c usb: Switch back to struct platform_driver::remove() 2024-10-04 15:13:03 +02:00
ehci-pci.c
ehci-platform.c treewide: Switch/rename to timer_delete[_sync]() 2025-04-05 10:30:12 +02:00
ehci-ppc-of.c usb: Switch back to struct platform_driver::remove() 2024-10-04 15:13:03 +02:00
ehci-ps3.c
ehci-q.c USB: Use EHCI control transfer pid macros instead of constant values. 2024-03-26 10:43:35 +01:00
ehci-sched.c
ehci-sh.c usb: ehci-hcd: fix call balance of clocks handling routines 2024-12-04 16:25:13 +01:00
ehci-spear.c usb: ehci-spear: fix call balance of sehci clk handling routines 2024-11-16 09:04:06 +01:00
ehci-st.c usb: Switch back to struct platform_driver::remove() 2024-10-04 15:13:03 +02:00
ehci-sysfs.c
ehci-timer.c
ehci-xilinx-of.c usb: Switch back to struct platform_driver::remove() 2024-10-04 15:13:03 +02:00
ehci.h USB: Use EHCI control transfer pid macros instead of constant values. 2024-03-26 10:43:35 +01:00
fhci-dbg.c
fhci-hcd.c usb: Switch back to struct platform_driver::remove() 2024-10-04 15:13:03 +02:00
fhci-hub.c
fhci-mem.c
fhci-q.c
fhci-sched.c usb: host: fix typo in the comment 2024-10-04 15:08:37 +02:00
fhci-tds.c
fhci.h
fsl-mph-dr-of.c usb: Switch back to struct platform_driver::remove() 2024-10-04 15:13:03 +02:00
isp116x-hcd.c usb: Switch back to struct platform_driver::remove() 2024-10-04 15:13:03 +02:00
isp116x.h
isp1362-hcd.c treewide: Switch/rename to timer_delete[_sync]() 2025-04-05 10:30:12 +02:00
isp1362.h
max3421-hcd.c usb: host: max3421-hcd: Add missing spi_device_id table 2025-02-03 16:28:54 +01:00
octeon-hcd.c usb: Switch back to struct platform_driver::remove() 2024-10-04 15:13:03 +02:00
octeon-hcd.h
ohci-at91.c usb: Switch back to struct platform_driver::remove() 2024-10-04 15:13:03 +02:00
ohci-da8xx.c Merge 6.12-rc3 into usb-next 2024-10-14 08:03:44 +02:00
ohci-dbg.c
ohci-exynos.c usb: Switch back to struct platform_driver::remove() 2024-10-04 15:13:03 +02:00
ohci-hcd.c treewide: Switch/rename to timer_delete[_sync]() 2025-04-05 10:30:12 +02:00
ohci-hub.c treewide: Switch/rename to timer_delete[_sync]() 2025-04-05 10:30:12 +02:00
ohci-mem.c
ohci-nxp.c usb: Switch back to struct platform_driver::remove() 2024-10-04 15:13:03 +02:00
ohci-omap.c usb: Switch back to struct platform_driver::remove() 2024-10-04 15:13:03 +02:00
ohci-pci.c USB: OHCI: Add quirk for LS7A OHCI controller (rev 0x02) 2025-04-11 16:21:20 +02:00
ohci-platform.c usb: Switch back to struct platform_driver::remove() 2024-10-04 15:13:03 +02:00
ohci-ppc-of.c usb: Switch back to struct platform_driver::remove() 2024-10-04 15:13:03 +02:00
ohci-ps3.c
ohci-pxa27x.c usb: Switch back to struct platform_driver::remove() 2024-10-04 15:13:03 +02:00
ohci-q.c
ohci-s3c2410.c usb: Switch back to struct platform_driver::remove() 2024-10-04 15:13:03 +02:00
ohci-sa1111.c
ohci-sm501.c usb: Switch back to struct platform_driver::remove() 2024-10-04 15:13:03 +02:00
ohci-spear.c usb: Switch back to struct platform_driver::remove() 2024-10-04 15:13:03 +02:00
ohci-st.c usb: Switch back to struct platform_driver::remove() 2024-10-04 15:13:03 +02:00
ohci.h
oxu210hp-hcd.c treewide: Switch/rename to timer_delete[_sync]() 2025-04-05 10:30:12 +02:00
pci-quirks.c USB: pci-quirks: Fix HCCPARAMS register error for LS7A EHCI 2025-02-14 09:18:14 +01:00
pci-quirks.h
r8a66597-hcd.c treewide: Switch/rename to timer_delete[_sync]() 2025-04-05 10:30:12 +02:00
r8a66597.h
sl811-hcd.c treewide: Switch/rename to timer_delete[_sync]() 2025-04-05 10:30:12 +02:00
sl811.h
sl811_cs.c
ssb-hcd.c
uhci-debug.c
uhci-grlib.c usb: Switch back to struct platform_driver::remove() 2024-10-04 15:13:03 +02:00
uhci-hcd.c treewide: Switch/rename to timer_delete[_sync]() 2025-04-05 10:30:12 +02:00
uhci-hcd.h
uhci-hub.c
uhci-pci.c
uhci-platform.c usb: Switch back to struct platform_driver::remove() 2024-10-04 15:13:03 +02:00
uhci-q.c treewide: Switch/rename to timer_delete[_sync]() 2025-04-05 10:30:12 +02:00
xen-hcd.c treewide: Switch/rename to timer_delete[_sync]() 2025-04-05 10:30:12 +02:00
xhci-caps.h xhci: Add missing capability definition bits 2024-12-27 13:06:10 +01:00
xhci-dbg.c
xhci-dbgcap.c xhci: dbc: Improve performance by removing delay in transfer event polling. 2024-12-27 13:06:10 +01:00
xhci-dbgcap.h xhci: dbc: honor usb transfer size boundaries. 2024-10-17 08:45:36 +02:00
xhci-dbgtty.c xhci: dbgtty: Improve performance by handling received data immediately. 2024-12-27 13:06:10 +01:00
xhci-debugfs.c xhci: don't mess with ->d_iname 2025-01-15 13:14:37 +01:00
xhci-debugfs.h
xhci-ext-caps.c
xhci-ext-caps.h xhci: Add USB4 tunnel detection for USB3 devices on Intel hosts 2024-09-03 09:54:39 +02:00
xhci-histb.c usb: xhci: change xhci_resume() parameters to explicit the desired info 2025-03-14 09:18:02 +01:00
xhci-hub.c xhci: Limit time spent with xHC interrupts disabled during bus resume 2025-04-11 14:36:55 +02:00
xhci-mem.c Merge v6.14-rc6 into usb-next 2025-03-10 08:16:31 +01:00
xhci-mtk-sch.c xhci: replace real & fake port with pointer to root hub port 2024-03-02 20:25:27 +01:00
xhci-mtk.c treewide: Switch/rename to timer_delete[_sync]() 2025-04-05 10:30:12 +02:00
xhci-mtk.h
xhci-mvebu.c usb: host: xhci-plat: mvebu: use ->quirks instead of ->init_quirk() func 2025-03-14 09:18:02 +01:00
xhci-mvebu.h usb: host: xhci-plat: mvebu: use ->quirks instead of ->init_quirk() func 2025-03-14 09:18:02 +01:00
xhci-pci-renesas.c module: Convert symbol namespace to string literal 2024-12-02 11:34:44 -08:00
xhci-pci.c usb: xhci: change xhci_resume() parameters to explicit the desired info 2025-03-14 09:18:02 +01:00
xhci-pci.h xhci-pci: Make xhci-pci-renesas a proper modular driver 2024-08-07 12:51:38 +02:00
xhci-plat.c usb: host: xhci-plat: allow upper layers to signal power loss 2025-03-14 09:18:02 +01:00
xhci-plat.h usb: host: xhci-plat: allow upper layers to signal power loss 2025-03-14 09:18:02 +01:00
xhci-port.h
xhci-rcar.c usb: Switch back to struct platform_driver::remove() 2024-10-04 15:13:03 +02:00
xhci-ring.c usb: xhci: Fix invalid pointer dereference in Etron workaround 2025-04-11 14:36:55 +02:00
xhci-rzv2m.c usb: xhci-plat: Don't include xhci.h 2024-04-23 16:25:29 -07:00
xhci-rzv2m.h
xhci-tegra.c usb: xhci: change xhci_resume() parameters to explicit the desired info 2025-03-14 09:18:02 +01:00
xhci-trace.c
xhci-trace.h xhci: trace stream context at Set TR Deq command completion 2024-11-06 13:26:14 +01:00
xhci.c xhci: Limit time spent with xHC interrupts disabled during bus resume 2025-04-11 14:36:55 +02:00
xhci.h xhci: Limit time spent with xHC interrupts disabled during bus resume 2025-04-11 14:36:55 +02:00