Messages in this thread | | | Date | Thu, 22 May 2014 15:23:16 +0400 | From | Sergei Shtylyov <> | Subject | Re: [PATCH v5 5/6] usb: musb: dsps: Add the sw_babble_control() |
| |
Hello.
On 22-05-2014 10:29, George Cherian wrote:
> Add sw_babble_control() logic to differentiate between transient > babble and real babble condition. Also add the SW babble control > register definitions.
> Babble control register logic is implemented in the latest > revision of AM335x.
> Signed-off-by: George Cherian <george.cherian@ti.com>
Sorry for the late comments, I probably didn't pay enough attention to this series before...
> diff --git a/drivers/usb/musb/musb_dsps.c b/drivers/usb/musb/musb_dsps.c > index f6f3087..868caf8 100644 > --- a/drivers/usb/musb/musb_dsps.c > +++ b/drivers/usb/musb/musb_dsps.c > @@ -536,6 +536,56 @@ static int dsps_musb_set_mode(struct musb *musb, u8 mode) > return 0; > } > > +static int sw_babble_control(struct musb *musb)
Perhaps the result type should be *bool* instead of *int*?
> +{ > + int timeout = 10; > + u8 babble_ctl, session_restart = 0; > + > + babble_ctl = dsps_readb(musb->mregs, MUSB_BABBLE_CTL); > + dev_dbg(musb->controller, "babble: MUSB_BABBLE_CTL value %x\n", > + babble_ctl); > + /* > + * check line monitor flag to check whether babble is > + * due to noise > + */ > + dev_dbg(musb->controller, "STUCK_J is %s\n", > + babble_ctl & MUSB_BABBLE_STUCK_J ? "set" : "reset"); > + > + if (babble_ctl & MUSB_BABBLE_STUCK_J) {
'timeout' could be declared here, local to the block using it.
> + /* > + * babble is due to noise, then set transmit idle (d7 bit) > + * to resume normal operation > + */ > + babble_ctl = dsps_readb(musb->mregs, MUSB_BABBLE_CTL); > + babble_ctl |= MUSB_BABBLE_FORCE_TXIDLE; > + dsps_writeb(musb->mregs, MUSB_BABBLE_CTL, babble_ctl); > + > + /* wait till line monitor flag cleared */ > + dev_dbg(musb->controller, "Set TXIDLE, wait J to clear\n"); > + do { > + babble_ctl = dsps_readb(musb->mregs, MUSB_BABBLE_CTL); > + udelay(1); > + } while ((babble_ctl & MUSB_BABBLE_STUCK_J) && timeout--); > + > + /* check whether stuck_at_j bit cleared */ > + if (babble_ctl & MUSB_BABBLE_STUCK_J) { > + /* > + * real babble condition is occured
s/is occured/has occurred/.
> + * restart the controller to start the > + * session again > + */ > + dev_dbg(musb->controller, "J not cleared, misc (%x)\n", > + babble_ctl); > + session_restart = 1; > + } > +
Empty line not needed here.
> + } else { > + session_restart = 1; > + } > + > + return session_restart; > +}
WBR, Sergei
| |