x86: use not_pci bitmap #4
authorAlexey Starikovskiy <astarikovskiy@suse.de>
Thu, 20 Mar 2008 11:54:36 +0000 (14:54 +0300)
committerIngo Molnar <mingo@elte.hu>
Thu, 17 Apr 2008 15:40:59 +0000 (17:40 +0200)
Signed-off-by: Alexey Starikovskiy <astarikovskiy@suse.de>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
arch/x86/kernel/io_apic_32.c

index efe8322edfba252c89094064793f561469a38d0c..2a609edd59f0e072d519f3dccbc3b81108d28b5a 100644 (file)
@@ -929,19 +929,19 @@ static int EISA_ELCR(unsigned int irq)
        return 0;
 }
 
+/* ISA interrupts are always polarity zero edge triggered,
+ * when listed as conforming in the MP table. */
+
+#define default_ISA_trigger(idx)       (0)
+#define default_ISA_polarity(idx)      (0)
+
 /* EISA interrupts are always polarity zero and can be edge or level
  * trigger depending on the ELCR value.  If an interrupt is listed as
  * EISA conforming in the MP table, that means its trigger type must
  * be read in from the ELCR */
 
 #define default_EISA_trigger(idx)      (EISA_ELCR(mp_irqs[idx].mpc_srcbusirq))
-#define default_EISA_polarity(idx)     (0)
-
-/* ISA interrupts are always polarity zero edge triggered,
- * when listed as conforming in the MP table. */
-
-#define default_ISA_trigger(idx)       (0)
-#define default_ISA_polarity(idx)      (0)
+#define default_EISA_polarity(idx)     default_ISA_polarity(idx)
 
 /* PCI interrupts are always polarity one level triggered,
  * when listed as conforming in the MP table. */
@@ -953,7 +953,7 @@ static int EISA_ELCR(unsigned int irq)
  * when listed as conforming in the MP table. */
 
 #define default_MCA_trigger(idx)       (1)
-#define default_MCA_polarity(idx)      (0)
+#define default_MCA_polarity(idx)      default_ISA_polarity(idx)
 
 static int MPBIOS_polarity(int idx)
 {
@@ -967,35 +967,9 @@ static int MPBIOS_polarity(int idx)
        {
                case 0: /* conforms, ie. bus-type dependent polarity */
                {
-                       switch (mp_bus_id_to_type[bus])
-                       {
-                               case MP_BUS_ISA: /* ISA pin */
-                               {
-                                       polarity = default_ISA_polarity(idx);
-                                       break;
-                               }
-                               case MP_BUS_EISA: /* EISA pin */
-                               {
-                                       polarity = default_EISA_polarity(idx);
-                                       break;
-                               }
-                               case MP_BUS_PCI: /* PCI pin */
-                               {
-                                       polarity = default_PCI_polarity(idx);
-                                       break;
-                               }
-                               case MP_BUS_MCA: /* MCA pin */
-                               {
-                                       polarity = default_MCA_polarity(idx);
-                                       break;
-                               }
-                               default:
-                               {
-                                       printk(KERN_WARNING "broken BIOS!!\n");
-                                       polarity = 1;
-                                       break;
-                               }
-                       }
+                       polarity = test_bit(bus, mp_bus_not_pci)?
+                               default_ISA_polarity(idx):
+                               default_PCI_polarity(idx);
                        break;
                }
                case 1: /* high active */