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

Reply via email to