diff options
Diffstat (limited to 'drivers/usb/host/pci-quirks.c')
| -rw-r--r-- | drivers/usb/host/pci-quirks.c | 10 | 
1 files changed, 7 insertions, 3 deletions
diff --git a/drivers/usb/host/pci-quirks.c b/drivers/usb/host/pci-quirks.c index 11de5f1be98..32dada8c8b4 100644 --- a/drivers/usb/host/pci-quirks.c +++ b/drivers/usb/host/pci-quirks.c @@ -825,9 +825,13 @@ static void __devinit quirk_usb_handoff_xhci(struct pci_dev *pdev)  		}  	} -	/* Disable any BIOS SMIs */ -	writel(XHCI_LEGACY_DISABLE_SMI, -			base + ext_cap_offset + XHCI_LEGACY_CONTROL_OFFSET); +	val = readl(base + ext_cap_offset + XHCI_LEGACY_CONTROL_OFFSET); +	/* Mask off (turn off) any enabled SMIs */ +	val &= XHCI_LEGACY_DISABLE_SMI; +	/* Mask all SMI events bits, RW1C */ +	val |= XHCI_LEGACY_SMI_EVENTS; +	/* Disable any BIOS SMIs and clear all SMI events*/ +	writel(val, base + ext_cap_offset + XHCI_LEGACY_CONTROL_OFFSET);  	if (usb_is_intel_switchable_xhci(pdev))  		usb_enable_xhci_ports(pdev);  |