usb: xhci: xhci_mem_init: Use cpu_to_le64() and not xhci_writeq() 71/268171/2
authorStefan Roese <sr@denx.de>
Tue, 21 Jul 2020 08:46:03 +0000 (10:46 +0200)
committerMarek Szyprowski <m.szyprowski@samsung.com>
Thu, 16 Dec 2021 16:13:26 +0000 (17:13 +0100)
xhci_writeq() makes the CPU->LE swapping only when addressing registers
in the xHCI controller address range and not in the local memory (RAM).
We need to use cpu_to_le64() here to ensure that the conversion is done
correctly.

Signed-off-by: Stefan Roese <sr@denx.de>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
Tested-by: Bin Meng <bmeng.cn@gmail.com>
Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: Marek Vasut <marex@denx.de>
Change-Id: Ibc1cdde25805cf13400bce746711c98bcaa48fe6
Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
drivers/usb/host/xhci-mem.c

index 54e9b018b49f9413a7a674be7e6e630cb8660c85..19fc414430da789316fb39b2864a3afc1bd04eb5 100644 (file)
@@ -562,7 +562,7 @@ int xhci_mem_init(struct xhci_ctrl *ctrl, struct xhci_hccr *hccr,
                trb_64 = 0;
                trb_64 = (uintptr_t)seg->trbs;
                struct xhci_erst_entry *entry = &ctrl->erst.entries[val];
-               xhci_writeq(&entry->seg_addr, trb_64);
+               entry->seg_addr = cpu_to_le64(trb_64);
                entry->seg_size = cpu_to_le32(TRBS_PER_SEGMENT);
                entry->rsvd = 0;
                seg = seg->next;