diff mbox

[U-Boot,v5,02/15] usb: usb_control_msg() propagate controller error code

Message ID 1431259827-8109-3-git-send-email-hdegoede@redhat.com
State Accepted
Delegated to: Simon Glass
Headers show

Commit Message

Hans de Goede May 10, 2015, 12:10 p.m. UTC
Propagate the error returned by submit_control_msg() ratehr then always
returning -EIO when the hcd code indicates an error.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
---
 common/usb.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

Comments

Marek Vasut May 10, 2015, 4:13 p.m. UTC | #1
On Sunday, May 10, 2015 at 02:10:14 PM, Hans de Goede wrote:
> Propagate the error returned by submit_control_msg() ratehr then always

... rather ... ;-)

> returning -EIO when the hcd code indicates an error.
> 
> Signed-off-by: Hans de Goede <hdegoede@redhat.com>

Acked-by: Marek Vasut <marex@denx.de>

Best regards,
Marek Vasut
Simon Glass May 11, 2015, 10:36 p.m. UTC | #2
On 10 May 2015 at 10:13, Marek Vasut <marex@denx.de> wrote:
> On Sunday, May 10, 2015 at 02:10:14 PM, Hans de Goede wrote:
>> Propagate the error returned by submit_control_msg() ratehr then always
>
> ... rather ... ;-)
>
>> returning -EIO when the hcd code indicates an error.
>>
>> Signed-off-by: Hans de Goede <hdegoede@redhat.com>
>
> Acked-by: Marek Vasut <marex@denx.de>

Applied to u-boot-dm, thanks!

(fixed typo)
diff mbox

Patch

diff --git a/common/usb.c b/common/usb.c
index 1b26bfa..20c614c 100644
--- a/common/usb.c
+++ b/common/usb.c
@@ -192,6 +192,7 @@  int usb_control_msg(struct usb_device *dev, unsigned int pipe,
 			void *data, unsigned short size, int timeout)
 {
 	ALLOC_CACHE_ALIGN_BUFFER(struct devrequest, setup_packet, 1);
+	int err;
 
 	if ((timeout == 0) && (!asynch_allowed)) {
 		/* request for a asynch control pipe is not allowed */
@@ -209,8 +210,9 @@  int usb_control_msg(struct usb_device *dev, unsigned int pipe,
 	      request, requesttype, value, index, size);
 	dev->status = USB_ST_NOT_PROC; /*not yet processed */
 
-	if (submit_control_msg(dev, pipe, data, size, setup_packet) < 0)
-		return -EIO;
+	err = submit_control_msg(dev, pipe, data, size, setup_packet);
+	if (err < 0)
+		return err;
 	if (timeout == 0)
 		return (int)size;