/*
* 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 */
};
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
slot = (*swizzle)(dev, &pin);
irq = (*map_irq)(dev, slot, pin);
+#if 0 //+Bing modified 01132005
if (irq == -1)
irq = 0;
+#endif
dev->irq = irq;
- DBGC((KERN_ERR "PCI fixup irq: (%s) got %d\n", dev->name, dev->irq));
-
+ //DBGC((KERN_ERR "PCI fixup irq: (%s) got %d\n", dev->name, dev->irq));
+ printk("PCI fixup irq: (%s) got %d\n", dev->name, dev->irq);
/* Always tell the device, so the driver knows what is
the real IRQ to use; the device does not use it. */
+#if 0 //+Bing modified 01132005
+ pcibios_update_irq(dev, irq);
+#else
+ if( irq != -1)
pcibios_update_irq(dev, irq);
+#endif
}
void __init