Patchwork [U-Boot,RFC] usb: Prevent using reserved registers on DM36x usb

login
register
mail settings
Submitter Andrew Murray
Date Sept. 13, 2013, 10:13 a.m.
Message ID <1379067189-2082-1-git-send-email-amurray@embedded-bits.co.uk>
Download mbox | patch
Permalink /patch/274708/
State Superseded
Delegated to: Marek Vasut
Headers show

Comments

Andrew Murray - Sept. 13, 2013, 10:13 a.m.
The musb driver defines and uses MUSB_CSR0_H_DIS_PING, however this
bit is reserved on the DM36x. Thus this patch ensures that the
reserved bit is not accesssed.

It has been observed that some USB devices will fail to enumerate
with errors such as 'error in inquiry' without this patch.

See http://www.ti.com/litv/pdf/sprufh9a for details.

Cc: Marek Vasut <marex@denx.de>
Cc: Tom Rini <trini@ti.com>
Signed-off-by: Andrew Murray <amurray@embedded-bits.co.uk>
---
 drivers/usb/musb/musb_core.h |    4 ++++
 1 file changed, 4 insertions(+)
Marek Vasut - Sept. 13, 2013, 1:53 p.m.
Dear Andrew Murray,

> The musb driver defines and uses MUSB_CSR0_H_DIS_PING, however this
> bit is reserved on the DM36x. Thus this patch ensures that the
> reserved bit is not accesssed.
> 
> It has been observed that some USB devices will fail to enumerate
> with errors such as 'error in inquiry' without this patch.
> 
> See http://www.ti.com/litv/pdf/sprufh9a for details.
> 
> Cc: Marek Vasut <marex@denx.de>
> Cc: Tom Rini <trini@ti.com>
> Signed-off-by: Andrew Murray <amurray@embedded-bits.co.uk>
> ---
>  drivers/usb/musb/musb_core.h |    4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/drivers/usb/musb/musb_core.h b/drivers/usb/musb/musb_core.h
> index ec8a038..c9a9d66 100644
> --- a/drivers/usb/musb/musb_core.h
> +++ b/drivers/usb/musb/musb_core.h
> @@ -216,7 +216,11 @@ struct musb_regs {
>  #define MUSB_CSR0_P_SENTSTALL	0x0004
> 
>  /* CSR0 in Host mode */
> +#if defined(CONFIG_SOC_DM365)
> +#define MUSB_CSR0_H_DIS_PING		0x0000
> +#else
>  #define MUSB_CSR0_H_DIS_PING		0x0800
> +#endif
>  #define MUSB_CSR0_H_WR_DATATOGGLE	0x0400	/* Set to allow setting: */
>  #define MUSB_CSR0_H_DATATOGGLE		0x0200	/* Data toggle control 
*/
>  #define MUSB_CSR0_H_NAKTIMEOUT		0x0080

It would be much nicer if you avoided using this bit in musb_hcd.c instead of 
hacking it like this.

Best regards,
Marek Vasut
Marek Vasut - Sept. 27, 2013, 6:10 p.m.
Dear Andrew Murray,
> 
> > The musb driver defines and uses MUSB_CSR0_H_DIS_PING, however this
> > bit is reserved on the DM36x. Thus this patch ensures that the
> > reserved bit is not accesssed.
> > 
> > It has been observed that some USB devices will fail to enumerate
> > with errors such as 'error in inquiry' without this patch.
> > 
> > See http://www.ti.com/litv/pdf/sprufh9a for details.
> > 
> > Cc: Marek Vasut <marex@denx.de>
> > Cc: Tom Rini <trini@ti.com>
> > Signed-off-by: Andrew Murray <amurray@embedded-bits.co.uk>
> > ---
> > 
> >  drivers/usb/musb/musb_core.h |    4 ++++
> >  1 file changed, 4 insertions(+)
> > 
> > diff --git a/drivers/usb/musb/musb_core.h b/drivers/usb/musb/musb_core.h
> > index ec8a038..c9a9d66 100644
> > --- a/drivers/usb/musb/musb_core.h
> > +++ b/drivers/usb/musb/musb_core.h
> > @@ -216,7 +216,11 @@ struct musb_regs {
> > 
> >  #define MUSB_CSR0_P_SENTSTALL	0x0004
> >  
> >  /* CSR0 in Host mode */
> > 
> > +#if defined(CONFIG_SOC_DM365)
> > +#define MUSB_CSR0_H_DIS_PING		0x0000
> > +#else
> > 
> >  #define MUSB_CSR0_H_DIS_PING		0x0800
> > 
> > +#endif
> > 
> >  #define MUSB_CSR0_H_WR_DATATOGGLE	0x0400	/* Set to allow setting: */
> >  #define MUSB_CSR0_H_DATATOGGLE		0x0200	/* Data toggle control
> 
> */
> 
> >  #define MUSB_CSR0_H_NAKTIMEOUT		0x0080
> 
> It would be much nicer if you avoided using this bit in musb_hcd.c instead
> of hacking it like this.

Bump? Will we get a V2 here ?

Best regards,
Marek Vasut
Andrew Murray - Sept. 29, 2013, 5:06 p.m.
On 27 September 2013 19:10, Marek Vasut <marex@denx.de> wrote:
>> It would be much nicer if you avoided using this bit in musb_hcd.c instead
>> of hacking it like this.
>
> Bump? Will we get a V2 here ?

I've posted a v2 on the list, apologies for the slow response.

Andrew Murray

Patch

diff --git a/drivers/usb/musb/musb_core.h b/drivers/usb/musb/musb_core.h
index ec8a038..c9a9d66 100644
--- a/drivers/usb/musb/musb_core.h
+++ b/drivers/usb/musb/musb_core.h
@@ -216,7 +216,11 @@  struct musb_regs {
 #define MUSB_CSR0_P_SENTSTALL	0x0004
 
 /* CSR0 in Host mode */
+#if defined(CONFIG_SOC_DM365)
+#define MUSB_CSR0_H_DIS_PING		0x0000
+#else
 #define MUSB_CSR0_H_DIS_PING		0x0800
+#endif
 #define MUSB_CSR0_H_WR_DATATOGGLE	0x0400	/* Set to allow setting: */
 #define MUSB_CSR0_H_DATATOGGLE		0x0200	/* Data toggle control */
 #define MUSB_CSR0_H_NAKTIMEOUT		0x0080