usb: xhci: move DCBAA pointer write
authorNiklas Neronin <niklas.neronin@linux.intel.com>
Thu, 15 May 2025 13:56:04 +0000 (16:56 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 21 May 2025 10:35:32 +0000 (12:35 +0200)
Move the Device Context Base Address Array (DCBAA) pointer write from
xhci_mem_init() to xhci_init(). This is part of the ongoing effort to
separate allocation and initialization.

Signed-off-by: Niklas Neronin <niklas.neronin@linux.intel.com>
Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
Link: https://lore.kernel.org/r/20250515135621.335595-8-mathias.nyman@linux.intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/host/xhci-mem.c
drivers/usb/host/xhci.c

index c4b94f7bacfbb148cd9fe1b94d7f52282a8420bf..ac96f0155cab366c7336ca50b55e46cb6d602dce 100644 (file)
@@ -2434,7 +2434,6 @@ int xhci_mem_init(struct xhci_hcd *xhci, gfp_t flags)
        xhci_dbg_trace(xhci, trace_xhci_dbg_init,
                        "// Device context base array address = 0x%pad (DMA), %p (virt)",
                        &xhci->dcbaa->dma, xhci->dcbaa);
-       xhci_write_64(xhci, dma, &xhci->op_regs->dcbaa_ptr);
 
        /*
         * Initialize the ring segment pool.  The ring must be a contiguous
index 4c9174c5c7c72d426121d16cf3795df019aa77af..e8c2628651884899f790b5cc5b68d08201fde576 100644 (file)
@@ -545,6 +545,9 @@ static int xhci_init(struct usb_hcd *hcd)
        /* Set the address in the Command Ring Control register */
        xhci_set_cmd_ring_deq(xhci);
 
+       /* Set Device Context Base Address Array pointer */
+       xhci_write_64(xhci, xhci->dcbaa->dma, &xhci->op_regs->dcbaa_ptr);
+
        /* Initializing Compliance Mode Recovery Data If Needed */
        if (xhci_compliance_mode_recovery_timer_quirk_check()) {
                xhci->quirks |= XHCI_COMP_MODE_QUIRK;