From mboxrd@z Thu Jan 1 00:00:00 1970 From: Bin Meng Date: Fri, 17 Jul 2020 21:46:28 +0800 Subject: [PATCH v1 1/4] usb: xhci: Add missing endian conversions (cpu_to_leXX / leXX_to_cpu) In-Reply-To: <5b33fcf3-e120-8153-6b83-f5034cee52c3@denx.de> References: <20200702084733.2032531-1-sr@denx.de> <20200702084733.2032531-2-sr@denx.de> <5b33fcf3-e120-8153-6b83-f5034cee52c3@denx.de> Message-ID: List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Hi Stefan, On Fri, Jul 17, 2020 at 7:34 PM Stefan Roese wrote: > > Hi Bin, > > On 17.07.20 13:18, Bin Meng wrote: > > Hi Stefan, > > > > On Thu, Jul 2, 2020 at 4:47 PM Stefan Roese wrote: > >> > >> While trying to use the U-Boot xHCI driver on the MIPS Octeon platform, > >> which is big endian, I noticed that the driver is missing a few endian > >> conversion calls. This patch adds these missing endian conversion > >> calls. > >> > >> Signed-off-by: Stefan Roese > >> Cc: Bin Meng > >> Cc: Marek Vasut > >> --- > >> > >> drivers/usb/host/xhci-mem.c | 9 +++++---- > >> 1 file changed, 5 insertions(+), 4 deletions(-) > >> > >> diff --git a/drivers/usb/host/xhci-mem.c b/drivers/usb/host/xhci-mem.c > >> index 2d968aafb0..bd959b4093 100644 > >> --- a/drivers/usb/host/xhci-mem.c > >> +++ b/drivers/usb/host/xhci-mem.c > >> @@ -110,7 +110,7 @@ static void xhci_scratchpad_free(struct xhci_ctrl *ctrl) > >> > >> ctrl->dcbaa->dev_context_ptrs[0] = 0; > >> > >> - free((void *)(uintptr_t)ctrl->scratchpad->sp_array[0]); > >> + free((void *)le64_to_cpu(ctrl->scratchpad->sp_array[0])); > > > > There is a build warning for this: > > > > drivers/usb/host/xhci-mem.c: In function 'xhci_scratchpad_free': > > drivers/usb/host/xhci-mem.c:113:7: warning: cast to pointer from > > integer of different size [-Wint-to-pointer-cast] > > free((void *)le64_to_cpu(ctrl->scratchpad->sp_array[0])); > > ^ > > So we need the (uintptr_t) here as well? > > free((void *)(uintptr_t)le64_to_cpu(ctrl->scratchpad->sp_array[0])); I think so. > > Should I send v2 for this patch? Yes, please. > > >> free(ctrl->scratchpad->sp_array); > >> free(ctrl->scratchpad); > >> ctrl->scratchpad = NULL; > >> @@ -225,7 +225,8 @@ static void xhci_link_segments(struct xhci_segment *prev, > >> prev->next = next; > >> if (link_trbs) { > >> val_64 = (uintptr_t)next->trbs; > >> - prev->trbs[TRBS_PER_SEGMENT-1].link.segment_ptr = val_64; > >> + prev->trbs[TRBS_PER_SEGMENT-1].link.segment_ptr = > >> + cpu_to_le64(val_64); > >> > >> /* > >> * Set the last TRB in the segment to > >> @@ -486,7 +487,7 @@ int xhci_alloc_virt_device(struct xhci_ctrl *ctrl, unsigned int slot_id) > >> byte_64 = (uintptr_t)(virt_dev->out_ctx->bytes); > >> > >> /* Point to output device context in dcbaa. */ > >> - ctrl->dcbaa->dev_context_ptrs[slot_id] = byte_64; > >> + ctrl->dcbaa->dev_context_ptrs[slot_id] = cpu_to_le64(byte_64); > >> > >> xhci_flush_cache((uintptr_t)&ctrl->dcbaa->dev_context_ptrs[slot_id], > >> sizeof(__le64)); > >> @@ -768,7 +769,7 @@ void xhci_setup_addressable_virt_dev(struct xhci_ctrl *ctrl, > >> > >> debug("route string %x\n", route); > >> #endif > >> - slot_ctx->dev_info |= route; > >> + slot_ctx->dev_info |= cpu_to_le32(route); > >> > >> switch (speed) { > >> case USB_SPEED_SUPER: > >> -- > > > > Test results on Minnowmax which has one USB 2.0 port and one 3.0 port: > > > > USB 2.0 flash drive inserted to USB 2.0 port: recognized, read/write OK > > USB 2.0 flash drive inserted to USB 3.0 port: recognized, read/write OK > > > > USB 3.0 flash drive inserted to USB 2.0 port: recognized, read/write OK > > USB 3.0 flash drive inserted to USB 3.0 port: recognized, read/write OK > > > > USB 2.0 flash drive connected to a USB 3.0 HUB inserted to USB 2.0 > > port: recognized, read/write OK > > USB 2.0 flash drive connected to a USB 3.0 HUB inserted to USB 3.0 > > port: recognized, read/write OK > > > > USB 3.0 flash drive connected to a USB 3.0 HUB inserted to USB 2.0 > > port: recognized, read/write OK > > USB 3.0 flash drive connected to a USB 3.0 HUB inserted to USB 3.0 > > port: recognized, read/write OK > > > > Tested-by: Bin Meng > > Very good. :) Regards, Bin