Skip to content

Commit

Permalink
USB: EHCI hooks for high speed electrical tests
Browse files Browse the repository at this point in the history
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: David Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
  • Loading branch information
David Brownell authored and Greg Kroah-Hartman committed Dec 1, 2006
1 parent 1f26e28 commit f0d7f27
Showing 1 changed file with 19 additions and 0 deletions.
19 changes: 19 additions & 0 deletions drivers/usb/host/ehci-hub.c
Original file line number Diff line number Diff line change
Expand Up @@ -319,6 +319,7 @@ static int ehci_hub_control (
u32 temp, status;
unsigned long flags;
int retval = 0;
unsigned selector;

/*
* FIXME: support SetPortFeatures USB_PORT_FEAT_INDICATOR.
Expand Down Expand Up @@ -506,6 +507,8 @@ static int ehci_hub_control (
}
break;
case SetPortFeature:
selector = wIndex >> 8;
wIndex &= 0xff;
if (!wIndex || wIndex > ports)
goto error;
wIndex--;
Expand Down Expand Up @@ -559,6 +562,22 @@ static int ehci_hub_control (
}
writel (temp, &ehci->regs->port_status [wIndex]);
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:
goto error;
}
Expand Down

0 comments on commit f0d7f27

Please sign in to comment.