diff mbox series

[1/3] usb: hub: Fix usb_get_port_status() for big-endian platforms

Message ID 20210406101018.30037-1-sr@denx.de
State Accepted
Commit c1125bad6cda95b45ec151e6d2227fb2b7b03a43
Headers show
Series [1/3] usb: hub: Fix usb_get_port_status() for big-endian platforms | expand

Commit Message

Stefan Roese April 6, 2021, 10:10 a.m. UTC
From: Aaron Williams <awilliams@marvell.com>

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>
---
 common/usb_hub.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

Comments

Marek Vasut April 6, 2021, 2:41 p.m. UTC | #1
On 4/6/21 12:10 PM, Stefan Roese wrote:
> From: Aaron Williams <awilliams@marvell.com>
> 
> 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.

Applied all, thanks.
diff mbox series

Patch

diff --git a/common/usb_hub.c b/common/usb_hub.c
index 3d856e7de792..ba11a188ca64 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