[U-Boot] [PATCH] usb: musb: set target address for non-multipoint devices

From: Bryan Wu bryan.wu@analog.com
Signed-off-by: Bryan Wu bryan.wu@analog.com Signed-off-by: Cliff Cai cliff.cai@analog.com Signed-off-by: Mike Frysinger vapier@gentoo.org --- drivers/usb/musb/musb_hcd.c | 7 +++++++ 1 files changed, 7 insertions(+), 0 deletions(-)
diff --git a/drivers/usb/musb/musb_hcd.c b/drivers/usb/musb/musb_hcd.c index dd2aa7f..abb84b2 100644 --- a/drivers/usb/musb/musb_hcd.c +++ b/drivers/usb/musb/musb_hcd.c @@ -917,6 +917,13 @@ int submit_control_msg(struct usb_device *dev, unsigned long pipe, void *buffer,
dev->status = 0; dev->act_len = len; + +#ifdef MUSB_NO_MULTIPOINT + /* Set device address to USB_FADDR register */ + if (setup->request == USB_REQ_SET_ADDRESS) + writew(dev->devnum, &musbr->faddr); +#endif + return len; }

Mike Frysinger wrote:
From: Bryan Wu bryan.wu@analog.com
Signed-off-by: Bryan Wu bryan.wu@analog.com Signed-off-by: Cliff Cai cliff.cai@analog.com Signed-off-by: Mike Frysinger vapier@gentoo.org
drivers/usb/musb/musb_hcd.c | 7 +++++++ 1 files changed, 7 insertions(+), 0 deletions(-)
diff --git a/drivers/usb/musb/musb_hcd.c b/drivers/usb/musb/musb_hcd.c index dd2aa7f..abb84b2 100644 --- a/drivers/usb/musb/musb_hcd.c +++ b/drivers/usb/musb/musb_hcd.c @@ -917,6 +917,13 @@ int submit_control_msg(struct usb_device *dev, unsigned long pipe, void *buffer,
dev->status = 0; dev->act_len = len;
+#ifdef MUSB_NO_MULTIPOINT
- /* Set device address to USB_FADDR register */
- if (setup->request == USB_REQ_SET_ADDRESS)
writew(dev->devnum, &musbr->faddr);
FAddr is a 8-bit regisrer, isn't it?
WBR, Sergei

On Mon, Aug 9, 2010 at 3:14 PM, Sergei Shtylyov wrote:
Mike Frysinger wrote:
--- a/drivers/usb/musb/musb_hcd.c +++ b/drivers/usb/musb/musb_hcd.c @@ -917,6 +917,13 @@ int submit_control_msg(struct usb_device *dev, unsigned long pipe, void *buffer, dev->status = 0; dev->act_len = len;
+#ifdef MUSB_NO_MULTIPOINT
- /* Set device address to USB_FADDR register */
- if (setup->request == USB_REQ_SET_ADDRESS)
- writew(dev->devnum, &musbr->faddr);
FAddr is a 8-bit regisrer, isn't it?
on Blackfin systems, it is 16bit ... i'll have to double check to see what the hardware does with an 8bit access. i see there are other places in the code where 8bit is already being done, so those might need to be addressed as well ... -mike

On Mon, Aug 9, 2010 at 3:20 PM, Mike Frysinger wrote:
On Mon, Aug 9, 2010 at 3:14 PM, Sergei Shtylyov wrote:
Mike Frysinger wrote:
--- a/drivers/usb/musb/musb_hcd.c +++ b/drivers/usb/musb/musb_hcd.c @@ -917,6 +917,13 @@ int submit_control_msg(struct usb_device *dev, unsigned long pipe, void *buffer, dev->status = 0; dev->act_len = len;
+#ifdef MUSB_NO_MULTIPOINT
- /* Set device address to USB_FADDR register */
- if (setup->request == USB_REQ_SET_ADDRESS)
- writew(dev->devnum, &musbr->faddr);
FAddr is a 8-bit regisrer, isn't it?
on Blackfin systems, it is 16bit ... i'll have to double check to see what the hardware does with an 8bit access. i see there are other places in the code where 8bit is already being done, so those might need to be addressed as well ...
yeah, Blackfin hardware likes to reject 8bit accesses to this mmr. although, i just remembered that in the musb code only, we specifically rewrite all readb/writeb to readw/writew for Blackfin systems. so i'll change this patch to writeb as you suggested. -mike

From: Bryan Wu bryan.wu@analog.com
Signed-off-by: Bryan Wu bryan.wu@analog.com Signed-off-by: Cliff Cai cliff.cai@analog.com Signed-off-by: Mike Frysinger vapier@gentoo.org --- v2 - use writeb instead of writew as pointed out by Sergei Shtylyov
drivers/usb/musb/musb_hcd.c | 7 +++++++ 1 files changed, 7 insertions(+), 0 deletions(-)
diff --git a/drivers/usb/musb/musb_hcd.c b/drivers/usb/musb/musb_hcd.c index dd2aa7f..8a761df 100644 --- a/drivers/usb/musb/musb_hcd.c +++ b/drivers/usb/musb/musb_hcd.c @@ -917,6 +917,13 @@ int submit_control_msg(struct usb_device *dev, unsigned long pipe, void *buffer,
dev->status = 0; dev->act_len = len; + +#ifdef MUSB_NO_MULTIPOINT + /* Set device address to USB_FADDR register */ + if (setup->request == USB_REQ_SET_ADDRESS) + writeb(dev->devnum, &musbr->faddr); +#endif + return len; }

Hi,
2010/8/10 Mike Frysinger vapier@gentoo.org:
From: Bryan Wu bryan.wu@analog.com
Signed-off-by: Bryan Wu bryan.wu@analog.com Signed-off-by: Cliff Cai cliff.cai@analog.com Signed-off-by: Mike Frysinger vapier@gentoo.org
v2 - use writeb instead of writew as pointed out by Sergei Shtylyov
Applied to u-boot-usb. Thanks.
Remy
participants (3)
-
Mike Frysinger
-
Remy Bohmer
-
Sergei Shtylyov