mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-09 04:10:18 +09:00
xhci: don't re-enable IE constantly
commit4e833c0b87upstream. While we're at that, define IMAN bitfield to aid readability. The interrupt enable bit should be set once on driver init, and we shouldn't need to continually re-enable it. Commitc21599a3introduced a read of the irq_pending register, and that allows us to preserve the state of the IE bit. Before that commit, we were blindly writing 0x3 to the register. This patch should be backported to kernels as old as 2.6.36, or ones that contain the commitc21599a361"USB: xhci: Reduce reads and writes of interrupter registers". Signed-off-by: Felipe Balbi <balbi@ti.com> Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
0938664202
commit
7ea2dda6d5
@@ -2352,7 +2352,7 @@ hw_died:
|
||||
u32 irq_pending;
|
||||
/* Acknowledge the PCI interrupt */
|
||||
irq_pending = xhci_readl(xhci, &xhci->ir_set->irq_pending);
|
||||
irq_pending |= 0x3;
|
||||
irq_pending |= IMAN_IP;
|
||||
xhci_writel(xhci, irq_pending, &xhci->ir_set->irq_pending);
|
||||
}
|
||||
|
||||
|
||||
@@ -205,6 +205,10 @@ struct xhci_op_regs {
|
||||
#define CMD_PM_INDEX (1 << 11)
|
||||
/* bits 12:31 are reserved (and should be preserved on writes). */
|
||||
|
||||
/* IMAN - Interrupt Management Register */
|
||||
#define IMAN_IP (1 << 1)
|
||||
#define IMAN_IE (1 << 0)
|
||||
|
||||
/* USBSTS - USB status - status bitmasks */
|
||||
/* HC not running - set to 1 when run/stop bit is cleared. */
|
||||
#define STS_HALT XHCI_STS_HALT
|
||||
|
||||
Reference in New Issue
Block a user