]> git.ipfire.org Git - people/ms/u-boot.git/commit - drivers/usb/host/ohci-hcd.c
usb: ohci: Do not reuse ed for interrupt endpoints of different devices
authorHans de Goede <hdegoede@redhat.com>
Wed, 13 May 2015 12:42:15 +0000 (14:42 +0200)
committerSimon Glass <sjg@chromium.org>
Fri, 15 May 2015 00:49:35 +0000 (18:49 -0600)
commit44dbc33056f731e3704907eb0fd28a01185d333e
treeb74d24e89afb0e15fbe14660d8363d3fb21f9451
parent3a812e7c72f6865b70c8882f1de6bbc99cc54981
usb: ohci: Do not reuse ed for interrupt endpoints of different devices

When submitting interrupt packets to an endpoint we only link in the ed
once to avoid some races surrounding unlinking of periodic endpoints,
but we share one ohci_device struct / one set of ed-s for all devices,
which means that if we have an interrupt endpoint at endpoint 1 with one
device, and a non interrupt endpoint 1 with another device we end up
with the same ed linked into both the periodic and async lists, which is
not good (tm).

This commit switches over to using separate ohci_device structs, and thus
separate ed-s for devices with interrupt endpoints, fixing this.

This fixes e.g. matching a usb storage device and keyboard on the same
usb-1 hub not working.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Reviewed-by: Marek Vasut <marex@denx.de>
drivers/usb/host/ohci-hcd.c
drivers/usb/host/ohci.h