PCI quirk: RS780/RS880: work around missing MSI initialization
authorClemens Ladisch <clemens@ladisch.de>
Mon, 22 Mar 2010 08:52:16 +0000 (09:52 +0100)
committerJesse Barnes <jbarnes@virtuousgeek.org>
Wed, 24 Mar 2010 20:21:38 +0000 (13:21 -0700)
commita5ee4eb75413c145334c30e43f1af9875dad6fd7
tree721f45ddafb0934dcd445de47bea9c1d0ad3efe2
parentca8463926306580c25e62eb901a206530d480cae
PCI quirk: RS780/RS880: work around missing MSI initialization

AMD says in section 2.5.4 (GFX MSI Enable) of #43291 (AMD 780G Family
Register Programming Requirements):

  The SBIOS must enable internal graphics MSI capability in GCCFG by
  setting the following: NBCFG.NB_CNTL.STRAP_MSI_ENABLE='1'

Quite a few BIOS writers misinterpret this sentence and think that
enabling MSI is an optional feature.  However, clearing that bit just
prevents delivery of MSI messages but does not remove the MSI PCI
capabilities registers, and so leaves these devices unusable for any
driver that attempts to use MSI.

Setting that bit is not possible after the BIOS has locked down the
configuration registers, so we have to manually disable MSI for the
affected devices.

This fixes the codec communication errors in the HDA driver when
accessing the HDMI audio device, and allows us to get rid of the
overcautious quirk in radeon_irq_kms.c.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
Tested-by: Alex Deucher <alexdeucher@gamil.com>
Cc: <stable@kernel.org>
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
drivers/gpu/drm/radeon/radeon_irq_kms.c
drivers/pci/quirks.c