Applied to my for-usb-linus-queue branch, thanks. Sarah Sharp On Fri, Mar 30, 2012 at 10:21:38AM +0800, Alex He wrote: > Re-define XHCI_LEGACY_DISABLE_SMI and used it in right way. All SMI enable > bits will be cleared to zero and flag bits 29:31 are also cleared to zero. > Other bits should be presvered as Table 146. > > Signed-off-by: Alex He <alex.he@xxxxxxx> > --- > drivers/usb/host/pci-quirks.c | 10 +++++++--- > drivers/usb/host/xhci-ext-caps.h | 5 +++-- > 2 files changed, 10 insertions(+), 5 deletions(-) > > diff --git a/drivers/usb/host/pci-quirks.c b/drivers/usb/host/pci-quirks.c > index 7732d69..2afff88 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); > diff --git a/drivers/usb/host/xhci-ext-caps.h b/drivers/usb/host/xhci-ext-caps.h > index c7f3312..377f424 100644 > --- a/drivers/usb/host/xhci-ext-caps.h > +++ b/drivers/usb/host/xhci-ext-caps.h > @@ -62,8 +62,9 @@ > /* USB Legacy Support Control and Status Register - section 7.1.2 */ > /* Add this offset, plus the value of xECP in HCCPARAMS to the base address */ > #define XHCI_LEGACY_CONTROL_OFFSET (0x04) > -/* bits 1:2, 5:12, and 17:19 need to be preserved; bits 21:28 should be zero */ > -#define XHCI_LEGACY_DISABLE_SMI ((0x3 << 1) + (0xff << 5) + (0x7 << 17)) > +/* bits 1:3, 5:12, and 17:19 need to be preserved; bits 21:28 should be zero */ > +#define XHCI_LEGACY_DISABLE_SMI ((0x7 << 1) + (0xff << 5) + (0x7 << 17)) > +#define XHCI_LEGACY_SMI_EVENTS (0x7 << 29) > > /* USB 2.0 xHCI 0.96 L1C capability - section 7.2.2.1.3.2 */ > #define XHCI_L1C (1 << 16) > -- > 1.7.1 > > -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html