RE: usb: musb: ignore spurious SESSREQ interrupts

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,
>     usb: musb: ignore spurious SESSREQ interrupts
> 
>     This will ignore any SESSREQ interrupt if musb is B state.
>     Charger detection may cause spurious SESSREQ interrupts.
> 
>     Signed-off-by: Heikki Krogerus <ext-heikki.krogerus@xxxxxxxxx>
>     Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxx>
> 
> diff --git a/drivers/usb/musb/musb_core.c b/drivers/usb/musb/musb_core.c
> index d4f18bb..472b2a7 100644
> --- a/drivers/usb/musb/musb_core.c
> +++ b/drivers/usb/musb/musb_core.c
> @@ -550,6 +550,11 @@ static irqreturn_t musb_stage0_irq(struct musb *musb,
> u8 int_usb,
>         if (int_usb & MUSB_INTR_SESSREQ) {
>                 void __iomem *mbase = musb->mregs;
> 
> +               if (devctl & MUSB_DEVCTL_BDEVICE) {
> +                       DBG(3, "SessReq while on B state\n");
> +                       return IRQ_HANDLED;
> +               }
> +

Felipe/Heikki,

This patch is needs to be modified so that we service the real SRP interrupt
>From B-device.

As per current musb driver when we connect the mini-A plug to A-device and
Mini-B plug to B-device then DEVCTL on either side would show the interface
To be in B-device. Thus we can't reply on D7 bit of DEVCTL at this moment.

Moreover Mentor document also says that D7 bit of DEVCTL is valid only
when a SESSION is in progress.

So now we have two option 
a) to revert the patch 
b) update it if we can find out that SRP interrupt is a spurious one 

Regards,
Ajay
 
>                 DBG(1, "SESSION_REQUEST (%s)\n", otg_state_string(musb));
> 
>                 /* IRQ arrives from ID pin sense or (later, if VBUS power
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux