USB: xhci: rework xhci_print_ir_set() to get ir set from xhci itself
xhci->ir_set points to __iomem region, but xhci_print_ir_set accepts plain struct xhci_intr_reg * causing multiple sparse warning at call sites and inside the fucntion when we try to read that memory. Instead of adding __iomem qualifier to the argument let's rework the function so it itself gets needed register set from xhci and prints it. Signed-off-by: Dmitry Torokhov <dtor@vmware.com> Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
This commit is contained in:
Родитель
07194ab7be
Коммит
09ece30e06
|
@ -169,9 +169,10 @@ static void xhci_print_ports(struct xhci_hcd *xhci)
|
|||
}
|
||||
}
|
||||
|
||||
void xhci_print_ir_set(struct xhci_hcd *xhci, struct xhci_intr_reg *ir_set, int set_num)
|
||||
void xhci_print_ir_set(struct xhci_hcd *xhci, int set_num)
|
||||
{
|
||||
void *addr;
|
||||
struct xhci_intr_reg __iomem *ir_set = &xhci->run_regs->ir_set[set_num];
|
||||
void __iomem *addr;
|
||||
u32 temp;
|
||||
u64 temp_64;
|
||||
|
||||
|
|
|
@ -1961,7 +1961,7 @@ int xhci_mem_init(struct xhci_hcd *xhci, gfp_t flags)
|
|||
/* Set the event ring dequeue address */
|
||||
xhci_set_hc_event_deq(xhci);
|
||||
xhci_dbg(xhci, "Wrote ERST address to ir_set 0.\n");
|
||||
xhci_print_ir_set(xhci, xhci->ir_set, 0);
|
||||
xhci_print_ir_set(xhci, 0);
|
||||
|
||||
/*
|
||||
* XXX: Might need to set the Interrupter Moderation Register to
|
||||
|
|
|
@ -473,7 +473,7 @@ int xhci_run(struct usb_hcd *hcd)
|
|||
xhci->ir_set, (unsigned int) ER_IRQ_ENABLE(temp));
|
||||
xhci_writel(xhci, ER_IRQ_ENABLE(temp),
|
||||
&xhci->ir_set->irq_pending);
|
||||
xhci_print_ir_set(xhci, xhci->ir_set, 0);
|
||||
xhci_print_ir_set(xhci, 0);
|
||||
|
||||
if (NUM_TEST_NOOPS > 0)
|
||||
doorbell = xhci_setup_one_noop(xhci);
|
||||
|
@ -528,7 +528,7 @@ void xhci_stop(struct usb_hcd *hcd)
|
|||
temp = xhci_readl(xhci, &xhci->ir_set->irq_pending);
|
||||
xhci_writel(xhci, ER_IRQ_DISABLE(temp),
|
||||
&xhci->ir_set->irq_pending);
|
||||
xhci_print_ir_set(xhci, xhci->ir_set, 0);
|
||||
xhci_print_ir_set(xhci, 0);
|
||||
|
||||
xhci_dbg(xhci, "cleaning up memory\n");
|
||||
xhci_mem_cleanup(xhci);
|
||||
|
@ -755,7 +755,7 @@ int xhci_resume(struct xhci_hcd *xhci, bool hibernated)
|
|||
temp = xhci_readl(xhci, &xhci->ir_set->irq_pending);
|
||||
xhci_writel(xhci, ER_IRQ_DISABLE(temp),
|
||||
&xhci->ir_set->irq_pending);
|
||||
xhci_print_ir_set(xhci, xhci->ir_set, 0);
|
||||
xhci_print_ir_set(xhci, 0);
|
||||
|
||||
xhci_dbg(xhci, "cleaning up memory\n");
|
||||
xhci_mem_cleanup(xhci);
|
||||
|
|
|
@ -1348,7 +1348,7 @@ static inline int xhci_link_trb_quirk(struct xhci_hcd *xhci)
|
|||
}
|
||||
|
||||
/* xHCI debugging */
|
||||
void xhci_print_ir_set(struct xhci_hcd *xhci, struct xhci_intr_reg *ir_set, int set_num);
|
||||
void xhci_print_ir_set(struct xhci_hcd *xhci, int set_num);
|
||||
void xhci_print_registers(struct xhci_hcd *xhci);
|
||||
void xhci_dbg_regs(struct xhci_hcd *xhci);
|
||||
void xhci_print_run_regs(struct xhci_hcd *xhci);
|
||||
|
|
Загрузка…
Ссылка в новой задаче