lkml.org 
[lkml]   [2017]   [Sep]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.9 04/32] usb:xhci:Fix regression when ATI chipsets detected
    Date
    4.9-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Sandeep Singh <sandeep.singh@amd.com>

    commit e6b422b88b46353cf596e0db6dc0e39d50d90d6e upstream.

    The following commit cause a regression on ATI chipsets.
    'commit e788787ef4f9 ("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: e788787ef4f9 ("usb:xhci:Add quirk for Certain
    failing HP keyboard on reset after resume")
    cc: Nehal Shah <Nehal-bakulchandra.Shah@amd.com>
    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>

    ---
    drivers/usb/host/pci-quirks.c | 35 ++++++++++++++++++-----------------
    1 file changed, 18 insertions(+), 17 deletions(-)

    --- a/drivers/usb/host/pci-quirks.c
    +++ b/drivers/usb/host/pci-quirks.c
    @@ -142,29 +142,30 @@ 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);

    - 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;
    }

    \
     
     \ /
      Last update: 2017-09-08 15:27    [W:4.126 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site