On Tue, 13 Aug 2013, Jack Pham wrote:
> 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.
>
> Cc: Alan Stern <[email protected]>
> Signed-off-by: Jack Pham <[email protected]>
> ---
> drivers/usb/host/Kconfig | 17 +++++++++++++++++
> drivers/usb/host/ehci-hub.c | 8 +++++++-
> drivers/usb/host/ehci-q.c | 2 ++
> 3 files changed, 26 insertions(+), 1 deletions(-)
>
> diff --git a/drivers/usb/host/Kconfig b/drivers/usb/host/Kconfig
> index cf521d6..4b6ff21 100644
> --- a/drivers/usb/host/Kconfig
> +++ b/drivers/usb/host/Kconfig
> @@ -722,3 +722,20 @@ config USB_HCD_SSB
> for ehci and ohci.
>
> 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.
> diff --git a/drivers/usb/host/ehci-hub.c b/drivers/usb/host/ehci-hub.c
> index 9b222e4..d0edf53 100644
> --- a/drivers/usb/host/ehci-hub.c
> +++ b/drivers/usb/host/ehci-hub.c
> @@ -711,6 +711,8 @@ ehci_hub_descriptor (
> }
>
> /*-------------------------------------------------------------------------*/
> +#ifdef CONFIG_USB_HCD_TEST_MODE
> +
> #define EHSET_TEST_SINGLE_STEP_SET_FEATURE 0x06
>
> static void usb_ehset_completion(struct urb *urb)
> @@ -846,6 +848,7 @@ cleanup:
> kfree(buf);
> return retval;
> }
> +#endif /* CONFIG_USB_HCD_TEST_MODE */
> /*-------------------------------------------------------------------------*/
>
> static int ehci_hub_control (
> @@ -1221,13 +1224,16 @@ static int ehci_hub_control (
> * about the EHCI-specific stuff.
> */
> case USB_PORT_FEAT_TEST:
> +#ifdef CONFIG_USB_HCD_TEST_MODE
> if (selector == EHSET_TEST_SINGLE_STEP_SET_FEATURE) {
> spin_unlock_irqrestore(&ehci->lock, flags);
> retval = ehset_single_step_set_feature(hcd,
> wIndex);
> spin_lock_irqsave(&ehci->lock, flags);
> break;
> - } else if (!selector || selector > 5)
> + }
> +#endif
> + if (!selector || selector > 5)
> goto error;
> spin_unlock_irqrestore(&ehci->lock, flags);
> ehci_quiesce(ehci);
> diff --git a/drivers/usb/host/ehci-q.c b/drivers/usb/host/ehci-q.c
> index 702a0e9..c8d432f 100644
> --- a/drivers/usb/host/ehci-q.c
> +++ b/drivers/usb/host/ehci-q.c
> @@ -1144,6 +1144,7 @@ submit_async (
> }
>
> /*-------------------------------------------------------------------------*/
> +#ifdef CONFIG_USB_HCD_TEST_MODE
> /*
> * This function creates the qtds and submits them for the
> * SINGLE_STEP_SET_FEATURE Test.
> @@ -1243,6 +1244,7 @@ cleanup:
> qtd_list_free(ehci, urb, head);
> return -1;
> }
> +#endif /* CONFIG_USB_HCD_TEST_MODE */
>
> /*-------------------------------------------------------------------------*/
>
Acked-by: Alan Stern <[email protected]>
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html