nvidia/ck804: make Message Signaled Interrupts work

Use HT MSI Mapping capability register at 0xe0 in CK804 HT device to enable
HT MSI Mapping so that MSIs work.  Prior to this change PCIe devices
downstream of the CK804 with MSI enabled would fail to actually assert
their interrupt.  Tested on msi/ms7135 and winent/mb6047 running Debian
GNU/Linux 7.0 (wheezy).

Change-Id: I5e0dc8b352f3d04e3b16b899af11d2b908a82850
Signed-off-by: Jonathan A. Kollasch <jakllsch@kollasch.net>
Reviewed-on: http://review.coreboot.org/8276
Tested-by: build bot (Jenkins)
Reviewed-by: Timothy Pearson <tpearson@raptorengineeringinc.com>
Reviewed-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
This commit is contained in:
Jonathan A. Kollasch 2015-01-25 12:57:43 -06:00
parent a583924252
commit 30c34c0751
1 changed files with 11 additions and 1 deletions

View File

@ -52,11 +52,21 @@ unsigned long acpi_fill_mcfg(unsigned long current)
#endif #endif
static void ht_init(struct device *dev)
{
u32 htmsi;
/* Enable HT MSI Mapping in capability register */
htmsi = pci_read_config32(dev, 0xe0);
htmsi |= (1 << 16);
pci_write_config32(dev, 0xe0, htmsi);
}
static struct device_operations ht_ops = { static struct device_operations ht_ops = {
.read_resources = pci_dev_read_resources, .read_resources = pci_dev_read_resources,
.set_resources = pci_dev_set_resources, .set_resources = pci_dev_set_resources,
.enable_resources = pci_dev_enable_resources, .enable_resources = pci_dev_enable_resources,
.init = 0, .init = ht_init,
.scan_bus = 0, .scan_bus = 0,
.ops_pci = &ck804_pci_ops, .ops_pci = &ck804_pci_ops,
}; };