usb:xhci:Fix regression when ATI chipsets detected
The following commit cause a regression on ATI chipsets. 'commite788787ef4
("usb:xhci:Add quirk for Certain failing HP keyboard on reset after resume")' This causes pinfo->smbus_dev to be wrongly set to NULL on systems with the ATI chipset that this function checks for first. Added conditional check for AMD chipsets to avoid the overwriting pinfo->smbus_dev. Reported-by: Ben Hutchings <ben@decadent.org.uk> Fixes:e788787ef4
("usb:xhci:Add quirk for Certain failing HP keyboard on reset after resume") cc: Nehal Shah <Nehal-bakulchandra.Shah@amd.com> cc: <stable@vger.kernel.org> Signed-off-by: Sandeep Singh <Sandeep.Singh@amd.com> Signed-off-by: Shyam Sundar S K <Shyam-sundar.S-k@amd.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Родитель
de3af5bf25
Коммит
e6b422b88b
|
@ -142,29 +142,30 @@ static int amd_chipset_sb_type_init(struct amd_chipset_info *pinfo)
|
|||
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);
|
||||
|
||||
if (!pinfo->smbus_dev) {
|
||||
pinfo->sb_type.gen = NOT_AMD_CHIPSET;
|
||||
return 0;
|
||||
if (pinfo->smbus_dev) {
|
||||
rev = pinfo->smbus_dev->revision;
|
||||
if (rev >= 0x11 && rev <= 0x14)
|
||||
pinfo->sb_type.gen = AMD_CHIPSET_HUDSON2;
|
||||
else if (rev >= 0x15 && rev <= 0x18)
|
||||
pinfo->sb_type.gen = AMD_CHIPSET_BOLTON;
|
||||
else if (rev >= 0x39 && rev <= 0x3a)
|
||||
pinfo->sb_type.gen = AMD_CHIPSET_YANGTZE;
|
||||
} else {
|
||||
pinfo->smbus_dev = pci_get_device(PCI_VENDOR_ID_AMD,
|
||||
0x145c, NULL);
|
||||
if (pinfo->smbus_dev) {
|
||||
rev = pinfo->smbus_dev->revision;
|
||||
pinfo->sb_type.gen = AMD_CHIPSET_TAISHAN;
|
||||
} else {
|
||||
pinfo->sb_type.gen = NOT_AMD_CHIPSET;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
rev = pinfo->smbus_dev->revision;
|
||||
if (rev >= 0x11 && rev <= 0x14)
|
||||
pinfo->sb_type.gen = AMD_CHIPSET_HUDSON2;
|
||||
else if (rev >= 0x15 && rev <= 0x18)
|
||||
pinfo->sb_type.gen = AMD_CHIPSET_BOLTON;
|
||||
else if (rev >= 0x39 && rev <= 0x3a)
|
||||
pinfo->sb_type.gen = AMD_CHIPSET_YANGTZE;
|
||||
}
|
||||
|
||||
pinfo->sb_type.rev = rev;
|
||||
return 1;
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче