aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/iommu/amd_iommu.c
diff options
context:
space:
mode:
authorJoerg Roedel <joerg.roedel@amd.com>2012-06-26 10:00:08 -0400
committerJoerg Roedel <joerg.roedel@amd.com>2012-09-28 11:43:52 -0400
commitd976195c93bce4512e990d170858d20d71c95c45 (patch)
treedc4e357ab55739aa007a2fe767350b93b56849d8 /drivers/iommu/amd_iommu.c
parent0b4d48cb2240d1686b3f0da234f0c9da18576503 (diff)
iommu/amd: Add call-back routine for HPET MSI
Add a routine to setup a HPET MSI interrupt for remapping. Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
Diffstat (limited to 'drivers/iommu/amd_iommu.c')
-rw-r--r--drivers/iommu/amd_iommu.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/drivers/iommu/amd_iommu.c b/drivers/iommu/amd_iommu.c
index bcf48156868b..aeb890c35f7e 100644
--- a/drivers/iommu/amd_iommu.c
+++ b/drivers/iommu/amd_iommu.c
@@ -4200,4 +4200,30 @@ static int msi_setup_irq(struct pci_dev *pdev, unsigned int irq,
4200 return 0; 4200 return 0;
4201} 4201}
4202 4202
4203static int setup_hpet_msi(unsigned int irq, unsigned int id)
4204{
4205 struct irq_2_iommu *irte_info;
4206 struct irq_cfg *cfg;
4207 int index, devid;
4208
4209 cfg = irq_get_chip_data(irq);
4210 if (!cfg)
4211 return -EINVAL;
4212
4213 irte_info = &cfg->irq_2_iommu;
4214 devid = get_hpet_devid(id);
4215 if (devid < 0)
4216 return devid;
4217
4218 index = alloc_irq_index(cfg, devid, 1);
4219 if (index < 0)
4220 return index;
4221
4222 irte_info->sub_handle = devid;
4223 irte_info->irte_index = index;
4224 irte_info->iommu = (void *)cfg;
4225
4226 return 0;
4227}
4228
4203#endif 4229#endif