mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-01-17 09:33:56 -05:00
usb: xhci: move doorbell array pointer assignment
Move the assignment of the doorbell array pointer from xhci_mem_init() to xhci_init(). The assignment now utilizes the newly introduced xhci_set_doorbell_ptr() function. Doorbell Array Offset mask (DBOFF_MASK) is updated to directly specify its bit range as 31:2, rather than using inverted reserved bits 1:0. This change simplifies the mask representation, making it more intuitive and easier to understand. Remove the "// " prefix from trace messages, as it is unnecessary and distracting. 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-9-mathias.nyman@linux.intel.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
44455f666b
commit
943f7fddaa
@@ -62,8 +62,8 @@
|
||||
|
||||
#define CTX_SIZE(_hcc) (HCC_64BYTE_CONTEXT(_hcc) ? 64 : 32)
|
||||
|
||||
/* db_off bitmask - bits 0:1 reserved */
|
||||
#define DBOFF_MASK (~0x3)
|
||||
/* db_off bitmask - bits 31:2 Doorbell Array Offset */
|
||||
#define DBOFF_MASK (0xfffffffc)
|
||||
|
||||
/* run_regs_off bitmask - bits 0:4 reserved */
|
||||
#define RTSOFF_MASK (~0x1f)
|
||||
|
||||
@@ -2419,7 +2419,6 @@ int xhci_mem_init(struct xhci_hcd *xhci, gfp_t flags)
|
||||
struct xhci_interrupter *ir;
|
||||
struct device *dev = xhci_to_hcd(xhci)->self.sysdev;
|
||||
dma_addr_t dma;
|
||||
unsigned int val;
|
||||
u32 temp;
|
||||
|
||||
/*
|
||||
@@ -2496,13 +2495,6 @@ int xhci_mem_init(struct xhci_hcd *xhci, gfp_t flags)
|
||||
*/
|
||||
xhci->cmd_ring_reserved_trbs++;
|
||||
|
||||
val = readl(&xhci->cap_regs->db_off);
|
||||
val &= DBOFF_MASK;
|
||||
xhci_dbg_trace(xhci, trace_xhci_dbg_init,
|
||||
"// Doorbell array is located at offset 0x%x from cap regs base addr",
|
||||
val);
|
||||
xhci->dba = (void __iomem *) xhci->cap_regs + val;
|
||||
|
||||
/* Allocate and set up primary interrupter 0 with an event ring. */
|
||||
xhci_dbg_trace(xhci, trace_xhci_dbg_init,
|
||||
"Allocating primary event ring");
|
||||
|
||||
@@ -514,6 +514,16 @@ static void xhci_set_cmd_ring_deq(struct xhci_hcd *xhci)
|
||||
xhci_write_64(xhci, crcr, &xhci->op_regs->cmd_ring);
|
||||
}
|
||||
|
||||
static void xhci_set_doorbell_ptr(struct xhci_hcd *xhci)
|
||||
{
|
||||
u32 offset;
|
||||
|
||||
offset = readl(&xhci->cap_regs->db_off) & DBOFF_MASK;
|
||||
xhci->dba = (void __iomem *)xhci->cap_regs + offset;
|
||||
xhci_dbg_trace(xhci, trace_xhci_dbg_init,
|
||||
"Doorbell array is located at offset 0x%x from cap regs base addr", offset);
|
||||
}
|
||||
|
||||
/*
|
||||
* Initialize memory for HCD and xHC (one-time init).
|
||||
*
|
||||
@@ -548,6 +558,9 @@ static int xhci_init(struct usb_hcd *hcd)
|
||||
/* Set Device Context Base Address Array pointer */
|
||||
xhci_write_64(xhci, xhci->dcbaa->dma, &xhci->op_regs->dcbaa_ptr);
|
||||
|
||||
/* Set Doorbell array pointer */
|
||||
xhci_set_doorbell_ptr(xhci);
|
||||
|
||||
/* Initializing Compliance Mode Recovery Data If Needed */
|
||||
if (xhci_compliance_mode_recovery_timer_quirk_check()) {
|
||||
xhci->quirks |= XHCI_COMP_MODE_QUIRK;
|
||||
|
||||
Reference in New Issue
Block a user