Commit f0d7f273 authored by David Brownell's avatar David Brownell Committed by Greg Kroah-Hartman

USB: EHCI hooks for high speed electrical tests

EHCI hooks for high speed electrical tests of the root hub ports.

The expectation is that a usermode program actually triggers the test,
making the same control request it would make for an external hub.
Tests for peripheral upstream ports would issue a different request.
In all cases, the hardware needs re-initialization before it could
be used "normally" again (e.g. unplug/replug, rmmod/modprobe).
Signed-off-by: default avatarDavid Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 1f26e28d
...@@ -319,6 +319,7 @@ static int ehci_hub_control ( ...@@ -319,6 +319,7 @@ static int ehci_hub_control (
u32 temp, status; u32 temp, status;
unsigned long flags; unsigned long flags;
int retval = 0; int retval = 0;
unsigned selector;
/* /*
* FIXME: support SetPortFeatures USB_PORT_FEAT_INDICATOR. * FIXME: support SetPortFeatures USB_PORT_FEAT_INDICATOR.
...@@ -506,6 +507,8 @@ static int ehci_hub_control ( ...@@ -506,6 +507,8 @@ static int ehci_hub_control (
} }
break; break;
case SetPortFeature: case SetPortFeature:
selector = wIndex >> 8;
wIndex &= 0xff;
if (!wIndex || wIndex > ports) if (!wIndex || wIndex > ports)
goto error; goto error;
wIndex--; wIndex--;
...@@ -559,6 +562,22 @@ static int ehci_hub_control ( ...@@ -559,6 +562,22 @@ static int ehci_hub_control (
} }
writel (temp, &ehci->regs->port_status [wIndex]); writel (temp, &ehci->regs->port_status [wIndex]);
break; break;
/* For downstream facing ports (these): one hub port is put
* into test mode according to USB2 11.24.2.13, then the hub
* must be reset (which for root hub now means rmmod+modprobe,
* or else system reboot). See EHCI 2.3.9 and 4.14 for info
* about the EHCI-specific stuff.
*/
case USB_PORT_FEAT_TEST:
if (!selector || selector > 5)
goto error;
ehci_quiesce(ehci);
ehci_halt(ehci);
temp |= selector << 16;
writel (temp, &ehci->regs->port_status [wIndex]);
break;
default: default:
goto error; goto error;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment