>>> From: Sandeep Singh <sandeep.singh@xxxxxxx> >>> >>> commit e788787ef4f9c24aafefc480a8da5f92b914e5e6 upstream. >> [...] >>> --- a/drivers/usb/host/pci-quirks.c >>> +++ b/drivers/usb/host/pci-quirks.c >>> @@ -98,6 +98,7 @@ enum amd_chipset_gen { >>> AMD_CHIPSET_HUDSON2, >>> AMD_CHIPSET_BOLTON, >>> AMD_CHIPSET_YANGTZE, >>> + AMD_CHIPSET_TAISHAN, >>> AMD_CHIPSET_UNKNOWN, >>> }; >>> >>> @@ -141,6 +142,11 @@ static int amd_chipset_sb_type_init(stru >>> pinfo->sb_type.gen = AMD_CHIPSET_SB700; >>> else if (rev >= 0x40 && rev <= 0x4f) >>> pinfo->sb_type.gen = AMD_CHIPSET_SB800; >>> + } >>> + pinfo->smbus_dev = pci_get_device(PCI_VENDOR_ID_AMD, >>> + 0x145c, NULL); >>> + if (pinfo->smbus_dev) { >>> + pinfo->sb_type.gen = AMD_CHIPSET_TAISHAN; >>> } else { >>> pinfo->smbus_dev = pci_get_device(PCI_VENDOR_ID_AMD, >>> PCI_DEVICE_ID_AMD_HUDSON2_SMBUS, NULL); >> [...] >> >> This causes pinfo->smbus_dev to be wrongly set to NULL on systems with >> the ATI chipset that this function checks for first. > > Ugh, for such a "simple" quirk, this has gone through so many different > iterations, all of which seem broken :( > > Sandeep, can you fix this up and send a follow-on patch to us and the > linux-usb mailing list so we can get it fixed up properly? > Greg, :-( We will send follow-on patch shortly.