Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 189123
b: refs/heads/master
c: a5ee4eb
h: refs/heads/master
i:
  189121: 38d0e0b
  189119: 7b2fb55
v: v3
  • Loading branch information
Clemens Ladisch authored and Jesse Barnes committed Mar 24, 2010
1 parent bc2b266 commit 0a39247
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 8 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: ca8463926306580c25e62eb901a206530d480cae
refs/heads/master: a5ee4eb75413c145334c30e43f1af9875dad6fd7
8 changes: 1 addition & 7 deletions trunk/drivers/gpu/drm/radeon/radeon_irq_kms.c
Original file line number Diff line number Diff line change
Expand Up @@ -116,13 +116,7 @@ int radeon_irq_kms_init(struct radeon_device *rdev)
}
/* enable msi */
rdev->msi_enabled = 0;
/* MSIs don't seem to work on my rs780;
* not sure about rs880 or other rs780s.
* Needs more investigation.
*/
if ((rdev->family >= CHIP_RV380) &&
(rdev->family != CHIP_RS780) &&
(rdev->family != CHIP_RS880)) {
if (rdev->family >= CHIP_RV380) {
int ret = pci_enable_msi(rdev->pdev);
if (!ret) {
rdev->msi_enabled = 1;
Expand Down
33 changes: 33 additions & 0 deletions trunk/drivers/pci/quirks.c
Original file line number Diff line number Diff line change
Expand Up @@ -2493,6 +2493,39 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4374,
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4375,
quirk_msi_intx_disable_bug);

/*
* MSI does not work with the AMD RS780/RS880 internal graphics and HDMI audio
* devices unless the BIOS has initialized the nb_cntl.strap_msi_enable bit.
*/
static void __init rs780_int_gfx_disable_msi(struct pci_dev *int_gfx_bridge)
{
u32 nb_cntl;

if (!int_gfx_bridge->subordinate)
return;

pci_bus_write_config_dword(int_gfx_bridge->bus, PCI_DEVFN(0, 0),
0x60, 0);
pci_bus_read_config_dword(int_gfx_bridge->bus, PCI_DEVFN(0, 0),
0x64, &nb_cntl);

if (!(nb_cntl & BIT(10))) {
dev_warn(&int_gfx_bridge->dev,
FW_WARN "RS780: MSI for internal graphics disabled\n");
int_gfx_bridge->subordinate->bus_flags |= PCI_BUS_FLAGS_NO_MSI;
}
}

#define PCI_DEVICE_ID_AMD_RS780_P2P_INT_GFX 0x9602

DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AMD,
PCI_DEVICE_ID_AMD_RS780_P2P_INT_GFX,
rs780_int_gfx_disable_msi);
/* wrong vendor ID on M4A785TD motherboard: */
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ASUSTEK,
PCI_DEVICE_ID_AMD_RS780_P2P_INT_GFX,
rs780_int_gfx_disable_msi);

#endif /* CONFIG_PCI_MSI */

#ifdef CONFIG_PCI_IOV
Expand Down

0 comments on commit 0a39247

Please sign in to comment.