usb: host: add Kconfig option for EHSET
commit 9841f37a1c
("usb: ehci: Add support for SINGLE_STEP_SET_FEATURE
test of EHSET") added additional code to the EHCI hub driver but it is
anticipated to only have a limited audience (e.g. embedded silicon
vendors and integrators). Avoid subjecting all EHCI (and in the future
maybe xHCI/OHCI, etc.) HCD users to code bloat by conditionally
compiling the EHSET-specific additions with a new Kconfig option,
CONFIG_USB_HCD_TEST_MODE.
Signed-off-by: Jack Pham <jackp@codeaurora.org>
Acked-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
034d1527ad
commit
726a85caa3
|
@ -699,3 +699,20 @@ config USB_HCD_SSB
|
||||||
for ehci and ohci.
|
for ehci and ohci.
|
||||||
|
|
||||||
If unsure, say N.
|
If unsure, say N.
|
||||||
|
|
||||||
|
config USB_HCD_TEST_MODE
|
||||||
|
bool "HCD test mode support"
|
||||||
|
---help---
|
||||||
|
Say 'Y' to enable additional software test modes that may be
|
||||||
|
supported by the host controller drivers.
|
||||||
|
|
||||||
|
One such test mode is the Embedded High-speed Host Electrical Test
|
||||||
|
(EHSET) for EHCI host controller hardware, specifically the "Single
|
||||||
|
Step Set Feature" test. Typically this will be enabled for On-the-Go
|
||||||
|
or embedded hosts that need to undergo USB-IF compliance testing with
|
||||||
|
the aid of special testing hardware. In the future, this may expand
|
||||||
|
to include other tests that require support from a HCD driver.
|
||||||
|
|
||||||
|
This option is of interest only to developers who need to validate
|
||||||
|
their USB hardware designs. It is not needed for normal use. If
|
||||||
|
unsure, say N.
|
||||||
|
|
|
@ -712,6 +712,8 @@ ehci_hub_descriptor (
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-------------------------------------------------------------------------*/
|
/*-------------------------------------------------------------------------*/
|
||||||
|
#ifdef CONFIG_USB_HCD_TEST_MODE
|
||||||
|
|
||||||
#define EHSET_TEST_SINGLE_STEP_SET_FEATURE 0x06
|
#define EHSET_TEST_SINGLE_STEP_SET_FEATURE 0x06
|
||||||
|
|
||||||
static void usb_ehset_completion(struct urb *urb)
|
static void usb_ehset_completion(struct urb *urb)
|
||||||
|
@ -847,6 +849,7 @@ cleanup:
|
||||||
kfree(buf);
|
kfree(buf);
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
#endif /* CONFIG_USB_HCD_TEST_MODE */
|
||||||
/*-------------------------------------------------------------------------*/
|
/*-------------------------------------------------------------------------*/
|
||||||
|
|
||||||
static int ehci_hub_control (
|
static int ehci_hub_control (
|
||||||
|
@ -1222,13 +1225,16 @@ static int ehci_hub_control (
|
||||||
* about the EHCI-specific stuff.
|
* about the EHCI-specific stuff.
|
||||||
*/
|
*/
|
||||||
case USB_PORT_FEAT_TEST:
|
case USB_PORT_FEAT_TEST:
|
||||||
|
#ifdef CONFIG_USB_HCD_TEST_MODE
|
||||||
if (selector == EHSET_TEST_SINGLE_STEP_SET_FEATURE) {
|
if (selector == EHSET_TEST_SINGLE_STEP_SET_FEATURE) {
|
||||||
spin_unlock_irqrestore(&ehci->lock, flags);
|
spin_unlock_irqrestore(&ehci->lock, flags);
|
||||||
retval = ehset_single_step_set_feature(hcd,
|
retval = ehset_single_step_set_feature(hcd,
|
||||||
wIndex);
|
wIndex);
|
||||||
spin_lock_irqsave(&ehci->lock, flags);
|
spin_lock_irqsave(&ehci->lock, flags);
|
||||||
break;
|
break;
|
||||||
} else if (!selector || selector > 5)
|
}
|
||||||
|
#endif
|
||||||
|
if (!selector || selector > 5)
|
||||||
goto error;
|
goto error;
|
||||||
spin_unlock_irqrestore(&ehci->lock, flags);
|
spin_unlock_irqrestore(&ehci->lock, flags);
|
||||||
ehci_quiesce(ehci);
|
ehci_quiesce(ehci);
|
||||||
|
|
|
@ -1139,6 +1139,7 @@ submit_async (
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-------------------------------------------------------------------------*/
|
/*-------------------------------------------------------------------------*/
|
||||||
|
#ifdef CONFIG_USB_HCD_TEST_MODE
|
||||||
/*
|
/*
|
||||||
* This function creates the qtds and submits them for the
|
* This function creates the qtds and submits them for the
|
||||||
* SINGLE_STEP_SET_FEATURE Test.
|
* SINGLE_STEP_SET_FEATURE Test.
|
||||||
|
@ -1238,6 +1239,7 @@ cleanup:
|
||||||
qtd_list_free(ehci, urb, head);
|
qtd_list_free(ehci, urb, head);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
#endif /* CONFIG_USB_HCD_TEST_MODE */
|
||||||
|
|
||||||
/*-------------------------------------------------------------------------*/
|
/*-------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue