x86: intel-mid: Use the new io_apic interfaces
authorJiang Liu <jiang.liu@linux.intel.com>
Mon, 23 Jun 2014 02:30:35 +0000 (10:30 +0800)
committerThomas Gleixner <tglx@linutronix.de>
Mon, 14 Jul 2014 18:17:09 +0000 (20:17 +0200)
Commit 9f354b0252b8 "x86, irq: Clean up unused IOAPIC interface" kills
interface io_apic_set_pci_routing(), so change arch/x86/platform/
intel-mid/device_libs/platform_wdt.c to use new interfaces.

Due to hardware resource restriction, this patch only passes compilation
without functional tests.

Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
Acked-by: David Cohen <david.a.cohen@linux.intel.com>
Cc: Tony Luck <tony.luck@intel.com>
Cc: Tang Feng <feng.tang@intel.com>
Cc: Yinghai Lu <yinghai@kernel.org>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Tony Luck <tony.luck@intel.com>
Link: http://lkml.kernel.org/r/1403490643-26187-1-git-send-email-jiang.liu@linux.intel.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
arch/x86/platform/intel-mid/device_libs/platform_wdt.c

index 973cf3b..0b283d4 100644 (file)
@@ -26,28 +26,18 @@ static struct platform_device wdt_dev = {
 
 static int tangier_probe(struct platform_device *pdev)
 {
-       int ioapic;
-       int irq;
+       int gsi;
        struct intel_mid_wdt_pdata *pdata = pdev->dev.platform_data;
-       struct io_apic_irq_attr irq_attr = { 0 };
 
        if (!pdata)
                return -EINVAL;
 
-       irq = pdata->irq;
-       ioapic = mp_find_ioapic(irq);
-       if (ioapic >= 0) {
-               int ret;
-               irq_attr.ioapic = ioapic;
-               irq_attr.ioapic_pin = irq;
-               irq_attr.trigger = 1;
-               /* irq_attr.polarity = 0; -> Active high */
-               ret = io_apic_set_pci_routing(NULL, irq, &irq_attr);
-               if (ret)
-                       return ret;
-       } else {
+       /* IOAPIC builds identity mapping between GSI and IRQ on MID */
+       gsi = pdata->irq;
+       if (mp_set_gsi_attr(gsi, 1, 0, cpu_to_node(0)) ||
+           mp_map_gsi_to_irq(gsi, IOAPIC_MAP_ALLOC) <= 0) {
                dev_warn(&pdev->dev, "cannot find interrupt %d in ioapic\n",
-                        irq);
+                        gsi);
                return -EINVAL;
        }