[U-Boot] [PATCH v2] usb: Prevent using reserved registers on DM36x usb

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_hcd.c | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-)
diff --git a/drivers/usb/musb/musb_hcd.c b/drivers/usb/musb/musb_hcd.c index 3dc5d6a..ae39c4a 100644 --- a/drivers/usb/musb/musb_hcd.c +++ b/drivers/usb/musb/musb_hcd.c @@ -417,8 +417,12 @@ static int ctrlreq_out_data_phase(struct usb_device *dev, u32 len, void *buffer)
/* Set TXPKTRDY bit */ csr = readw(&musbr->txcsr); - writew(csr | MUSB_CSR0_H_DIS_PING | MUSB_CSR0_TXPKTRDY, - &musbr->txcsr); + + csr |= MUSB_CSR0_TXPKTRDY; +#if !defined(CONFIG_SOC_DM365) + csr |= MUSB_CSR0_H_DIS_PING; +#endif + writew(csr, &musbr->txcsr); result = wait_until_ep0_ready(dev, MUSB_CSR0_TXPKTRDY); if (result < 0) break; @@ -439,8 +443,10 @@ static int ctrlreq_out_status_phase(struct usb_device *dev)
/* Set the StatusPkt bit */ csr = readw(&musbr->txcsr); - csr |= (MUSB_CSR0_H_DIS_PING | MUSB_CSR0_TXPKTRDY | - MUSB_CSR0_H_STATUSPKT); + csr |= (MUSB_CSR0_TXPKTRDY | MUSB_CSR0_H_STATUSPKT); +#if !defined(CONFIG_SOC_DM365) + csr |= MUSB_CSR0_H_DIS_PING; +#endif writew(csr, &musbr->txcsr);
/* Wait until TXPKTRDY bit is cleared */ @@ -457,7 +463,10 @@ static int ctrlreq_in_status_phase(struct usb_device *dev) int result;
/* Set the StatusPkt bit and ReqPkt bit */ - csr = MUSB_CSR0_H_DIS_PING | MUSB_CSR0_H_REQPKT | MUSB_CSR0_H_STATUSPKT; + csr = MUSB_CSR0_H_REQPKT | MUSB_CSR0_H_STATUSPKT; +#if !defined(CONFIG_SOC_DM365) + csr |= MUSB_CSR0_H_DIS_PING; +#endif writew(csr, &musbr->txcsr); result = wait_until_ep0_ready(dev, MUSB_CSR0_H_REQPKT);

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
Tom, can you check this and if it's OK with you, pick this by hand?
For my part, I'm fine here,
Acked-by: Marek Vasut marex@denx.de
Best regards, Marek Vasut

On 30 September 2013 00:26, Marek Vasut marex@denx.de wrote:
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
Tom, can you check this and if it's OK with you, pick this by hand?
For my part, I'm fine here,
Acked-by: Marek Vasut marex@denx.de
Tom, was this version OK?
Andrew Murray

-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
On 10/09/2013 01:16 PM, Andrew Murray wrote:
On 30 September 2013 00:26, Marek Vasut marex@denx.de wrote:
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
Tom, can you check this and if it's OK with you, pick this by hand?
For my part, I'm fine here,
Acked-by: Marek Vasut marex@denx.de
Tom, was this version OK?
Yes, this is now in master, sorry I've been slacking in sending my replies to all patches.
- -- Tom

On Sun, Sep 29, 2013 at 06:02:22PM +0100, Andrew Murray wrote:
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 Acked-by: Marek Vasut marex@denx.de
Applied to u-boot/master (and thanks for the reminder) !
participants (3)
-
Andrew Murray
-
Marek Vasut
-
Tom Rini