diff options
author | Antony Pavlov <antonynpavlov@gmail.com> | 2015-10-02 10:23:30 +0300 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2015-10-02 10:06:47 +0200 |
commit | d0a5ea479e6d3d89ea3ce0586de7eb51c9c39131 (patch) | |
tree | 2059aeac672decc73e4742b4c3ceb3c2cf667d22 /drivers/usb/core/usb.c | |
parent | b0ae09acdacd212e681a3b6b670563d911a89153 (diff) | |
download | barebox-d0a5ea479e6d3d89ea3ce0586de7eb51c9c39131.tar.gz barebox-d0a5ea479e6d3d89ea3ce0586de7eb51c9c39131.tar.xz |
usb: core: drop unnecessary le16_to_cpu() conversion
In drivers/usb/core/usb.c we already have le16_to_cpus() conversion
just after usb_get_descriptor():
390 /* correct le values */
391 le16_to_cpus(&dev->descriptor->bcdUSB);
392 le16_to_cpus(&dev->descriptor->idVendor);
393 le16_to_cpus(&dev->descriptor->idProduct);
394 le16_to_cpus(&dev->descriptor->bcdDevice);
so no additional idVendor/idProduct descriptor fields
le16_to_cpu() conversion is needed after that.
On the big-endian machines extra le16_to_cpu() conversion
leads to wrong idVendor/idProduct USB device parameters values
(e.g. see devinfo <usb-device> output), and to a much more
serious problem: idVendor/idProduct-based USB device detection
does not work.
Signed-off-by: Antony Pavlov <antonynpavlov@gmail.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers/usb/core/usb.c')
-rw-r--r-- | drivers/usb/core/usb.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/usb/core/usb.c b/drivers/usb/core/usb.c index f8d6014b30..a3fb1e8808 100644 --- a/drivers/usb/core/usb.c +++ b/drivers/usb/core/usb.c @@ -445,9 +445,9 @@ int usb_new_device(struct usb_device *dev) dev_add_param_fixed(&dev->dev, "Product", dev->prod); dev_add_param_fixed(&dev->dev, "SerialNumber", dev->serial); dev_add_param_int_ro(&dev->dev, "idVendor", - le16_to_cpu(dev->descriptor->idVendor), "%04x"); + dev->descriptor->idVendor, "%04x"); dev_add_param_int_ro(&dev->dev, "idProduct", - le16_to_cpu(dev->descriptor->idProduct), "%04x"); + dev->descriptor->idProduct, "%04x"); list_add_tail(&dev->list, &usb_device_list); dev_count++; @@ -938,11 +938,11 @@ int usb_driver_register(struct usb_driver *drv) static int usb_match_device(struct usb_device *dev, const struct usb_device_id *id) { if ((id->match_flags & USB_DEVICE_ID_MATCH_VENDOR) && - id->idVendor != le16_to_cpu(dev->descriptor->idVendor)) + id->idVendor != dev->descriptor->idVendor) return 0; if ((id->match_flags & USB_DEVICE_ID_MATCH_PRODUCT) && - id->idProduct != le16_to_cpu(dev->descriptor->idProduct)) + id->idProduct != dev->descriptor->idProduct) return 0; return 1; |