>>>>> "Daniel" == Daniel Mack <zon...@gmail.com> writes:

 Daniel> Initialize the host and gagdet subsystems of the musb driver only when
 Daniel> the appropriate mode is selected from platform data, or device-tree
 Daniel> information, respectively.

 Daniel> Signed-off-by: Daniel Mack <zon...@gmail.com>

Acked-by: Peter Korsgaard <jac...@sunsite.dk>


 Daniel> ---
 Daniel>  drivers/usb/musb/musb_core.c    | 22 +++++++++++++++++-----
 Daniel>  drivers/usb/musb/musb_virthub.c |  3 ++-
 Daniel>  2 files changed, 19 insertions(+), 6 deletions(-)

 Daniel> diff --git a/drivers/usb/musb/musb_core.c 
b/drivers/usb/musb/musb_core.c
 Daniel> index 2640d25..b3b9873 100644
 Daniel> --- a/drivers/usb/musb/musb_core.c
 Daniel> +++ b/drivers/usb/musb/musb_core.c
 Daniel> @@ -1912,11 +1912,23 @@ musb_init_controller(struct device *dev, int 
nIrq, void __iomem *ctrl)
 musb-> xceiv->state = OTG_STATE_B_IDLE;
 Daniel>        }
 
 Daniel> -      status = musb_host_setup(musb, plat->power);
 Daniel> -      if (status < 0)
 Daniel> -              goto fail3;
 Daniel> -
 Daniel> -      status = musb_gadget_setup(musb);
 Daniel> +      switch (musb->port_mode) {
 Daniel> +      case MUSB_PORT_MODE_HOST:
 Daniel> +              status = musb_host_setup(musb, plat->power);
 Daniel> +              break;
 Daniel> +      case MUSB_PORT_MODE_GADGET:
 Daniel> +              status = musb_gadget_setup(musb);
 Daniel> +              break;
 Daniel> +      case MUSB_PORT_MODE_DUAL_ROLE:
 Daniel> +              status = musb_host_setup(musb, plat->power);
 Daniel> +              if (status < 0)
 Daniel> +                      goto fail3;
 Daniel> +              status = musb_gadget_setup(musb);
 Daniel> +              break;
 Daniel> +      default:
 Daniel> +              dev_err(dev, "unsupported port mode %d\n", 
musb->port_mode);
 Daniel> +              break;
 Daniel> +      }
 
 Daniel>        if (status < 0)
 Daniel>                goto fail3;
 Daniel> diff --git a/drivers/usb/musb/musb_virthub.c 
b/drivers/usb/musb/musb_virthub.c
 Daniel> index 1e17c20..8d92ba2 100644
 Daniel> --- a/drivers/usb/musb/musb_virthub.c
 Daniel> +++ b/drivers/usb/musb/musb_virthub.c
 Daniel> @@ -79,7 +79,8 @@ static void musb_start(struct musb *musb)
 Daniel>         * (b) vbus present/connect IRQ, peripheral mode;
 Daniel>         * (c) peripheral initiates, using SRP
 Daniel>         */
 Daniel> -      if ((devctl & MUSB_DEVCTL_VBUS) == MUSB_DEVCTL_VBUS) {
 Daniel> +      if (musb->port_mode != MUSB_PORT_MODE_HOST &&
 Daniel> +          (devctl & MUSB_DEVCTL_VBUS) == MUSB_DEVCTL_VBUS) {
 musb-> is_active = 1;
 Daniel>        } else {
 Daniel>                devctl |= MUSB_DEVCTL_SESSION;
 Daniel> -- 
 Daniel> 1.8.1.4



-- 
Bye, Peter Korsgaard
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to