summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAaron Williams <awilliams@marvell.com>2021-04-06 12:10:16 +0200
committerMarek Vasut <marex@denx.de>2021-04-06 16:38:57 +0200
commitc1125bad6cda95b45ec151e6d2227fb2b7b03a43 (patch)
tree6961552f02808e5307526079063d68d604931794
parent472fd5a35af3308f97de0376a6c25f5368035557 (diff)
downloadu-boot-c1125bad6cda95b45ec151e6d2227fb2b7b03a43.tar.gz
usb: hub: Fix usb_get_port_status() for big-endian platforms
Add missing endianness conversions to usb_get_port_status(). This (amongst others) is necessary to enable the use of USB 3 hubs on big-endian platforms like MIPS Octeon. Signed-off-by: Aaron Williams <awilliams@marvell.com> Signed-off-by: Stefan Roese <sr@denx.de> Cc: Chandrakala Chavva <cchavva@marvell.com> Cc: Bin Meng <bmeng.cn@gmail.com> Cc: Marek Vasut <marex@denx.de>
-rw-r--r--common/usb_hub.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/common/usb_hub.c b/common/usb_hub.c
index 3d856e7de7..ba11a188ca 100644
--- a/common/usb_hub.c
+++ b/common/usb_hub.c
@@ -144,7 +144,8 @@ int usb_get_port_status(struct usb_device *dev, int port, void *data)
if (!usb_hub_is_root_hub(dev->dev) && usb_hub_is_superspeed(dev)) {
struct usb_port_status *status = (struct usb_port_status *)data;
- u16 tmp = (status->wPortStatus) & USB_SS_PORT_STAT_MASK;
+ u16 tmp = le16_to_cpu(status->wPortStatus) &
+ USB_SS_PORT_STAT_MASK;
if (status->wPortStatus & USB_SS_PORT_STAT_POWER)
tmp |= USB_PORT_STAT_POWER;
@@ -152,7 +153,7 @@ int usb_get_port_status(struct usb_device *dev, int port, void *data)
USB_SS_PORT_STAT_SPEED_5GBPS)
tmp |= USB_PORT_STAT_SUPER_SPEED;
- status->wPortStatus = tmp;
+ status->wPortStatus = cpu_to_le16(tmp);
}
#endif