port more changes to make PCI work
[linux-2.4.git] / arch / ppc / platforms / sandpoint.c
index a3d3137..3b254d1 100644 (file)
@@ -161,27 +161,64 @@ static u_char sandpoint_openpic_initsenses[] __initdata = {
 /*
  * Motorola SPS Sandpoint interrupt routing.
  */
+#if 0 //REX: by MUSENKI
 static inline int
 sandpoint_map_irq(struct pci_dev *dev, unsigned char idsel, unsigned char pin)
 {
        static char pci_irq_table[][4] =
-           /*
-            *      PCI IDSEL/INTPIN->INTLINE
-            *         A   B   C   D
-            */
-// REX
-#if 0
+       /*
+        *      PCI IDSEL/INTPIN->INTLINE 
+        *         A   B   C   D
+        */
        {
-               {16,  0,  0,  0},       /* IDSEL 11 - i8259 on Windbond */
-               { 0,  0,  0,  0},       /* IDSEL 12 - unused */
-               {17, 18, 19, 20},       /* IDSEL 13 - PCI slot 1 */
-               {18, 19, 20, 17},       /* IDSEL 14 - PCI slot 2 */
-               {19, 20, 17, 18},       /* IDSEL 15 - PCI slot 3 */
-               {20, 17, 18, 19},       /* IDSEL 16 - PCI slot 4 */
+               { SANDPOINT_SIO_IRQ,
+                      0,  0,  0 },     /* IDSEL 11 - i8259 on Winbond */
+               {  0,  0,  0,  0 },     /* IDSEL 12 - unused */
+#ifdef CONFIG_SANDPOINT_X3
+               { 17, 18, 19, 20 },     /* IDSEL 13 - PCI slot 1 */
+               { 18, 19, 20, 17 },     /* IDSEL 14 - PCI slot 2 */
+               { 19, 20, 17, 18 },     /* IDSEL 15 - PCI slot 3 */
+               { 20, 17, 18, 19 },     /* IDSEL 16 - PCI slot 4 */
+#else
+               { 16, 19, 18, 17 },     /* IDSEL 13 - PCI slot 1 */
+               { 17, 16, 19, 18 },     /* IDSEL 14 - PCI slot 2 */
+               { 18, 17, 16, 19 },     /* IDSEL 15 - PCI slot 3 */
+               { 19, 18, 17, 16 },     /* IDSEL 16 - PCI slot 4 */
+#endif
        };
 
        const long min_idsel = 11, max_idsel = 16, irqs_per_slot = 4;
+       return PCI_IRQ_TABLE_LOOKUP;
+}
+#endif
+#if 0          //+Bing modified 11252004
+static inline int
+sandpoint_map_irq(struct pci_dev *dev, unsigned char idsel, unsigned char pin)
+{
+       static char pci_irq_table[][4] =
+       /*
+        *      PCI IDSEL/INTPIN->INTLINE 
+        *         A   B   C   D
+        */
+       {
+               {   3,  0,  0,  0 },    /* IDSEL 17 - disable */
+               {   0,  0,  0,  0 },    /* IDSEL 18 - PCI slot1*/
+               {   2,  0,  0,  0 },    /* IDSEL 19 - LAN 83815 */
+               {   1,  0,  4,  0 }     /* IDSEL 20 - PCI slot2 */
+       };
+
+       const long min_idsel = 17, max_idsel = 20, irqs_per_slot = 4;
+       return PCI_IRQ_TABLE_LOOKUP;
+}
 #else
+static inline int
+sandpoint_map_irq(struct pci_dev *dev, unsigned char idsel, unsigned char pin)
+{
+       static char pci_irq_table[][4] =
+       /*
+        *      PCI IDSEL/INTPIN->INTLINE 
+        *         A   B   C   D
+        */
        {
                {   0,  0,  0,  0 },    /* IDSEL 13 - mini-PCI */
                {   1,  -1,  2,  0 },    /* IDSEL 14 - NEC USB2.0 */
@@ -190,9 +227,10 @@ sandpoint_map_irq(struct pci_dev *dev, unsigned char idsel, unsigned char pin)
        };
 
        const long min_idsel = 13, max_idsel = 16, irqs_per_slot = 4;
-#endif
        return PCI_IRQ_TABLE_LOOKUP;
 }
+#endif //+Bing modified 11252004
+
 
 #if 0 //REX
 static void __init