diff options
Diffstat (limited to 'arch/mips/pci/fixup-jmr3927.c')
| -rw-r--r-- | arch/mips/pci/fixup-jmr3927.c | 35 |
1 files changed, 11 insertions, 24 deletions
diff --git a/arch/mips/pci/fixup-jmr3927.c b/arch/mips/pci/fixup-jmr3927.c index e974394be7bc..0f1069527cba 100644 --- a/arch/mips/pci/fixup-jmr3927.c +++ b/arch/mips/pci/fixup-jmr3927.c | |||
| @@ -28,36 +28,31 @@ | |||
| 28 | * 675 Mass Ave, Cambridge, MA 02139, USA. | 28 | * 675 Mass Ave, Cambridge, MA 02139, USA. |
| 29 | */ | 29 | */ |
| 30 | #include <linux/types.h> | 30 | #include <linux/types.h> |
| 31 | #include <linux/pci.h> | 31 | #include <asm/txx9/pci.h> |
| 32 | #include <linux/init.h> | 32 | #include <asm/txx9/jmr3927.h> |
| 33 | 33 | ||
| 34 | #include <asm/jmr3927/jmr3927.h> | 34 | int __init jmr3927_pci_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) |
| 35 | |||
| 36 | int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) | ||
| 37 | { | 35 | { |
| 38 | unsigned char irq = pin; | 36 | unsigned char irq = pin; |
| 39 | 37 | ||
| 40 | /* SMSC SLC90E66 IDE uses irq 14, 15 (default) */ | ||
| 41 | if (dev->vendor == PCI_VENDOR_ID_EFAR && | ||
| 42 | dev->device == PCI_DEVICE_ID_EFAR_SLC90E66_1) | ||
| 43 | return irq; | ||
| 44 | /* IRQ rotation (PICMG) */ | 38 | /* IRQ rotation (PICMG) */ |
| 45 | irq--; /* 0-3 */ | 39 | irq--; /* 0-3 */ |
| 46 | if (dev->bus->parent == NULL && | 40 | if (slot == TX3927_PCIC_IDSEL_AD_TO_SLOT(23)) { |
| 47 | slot == TX3927_PCIC_IDSEL_AD_TO_SLOT(23)) { | ||
| 48 | /* PCI CardSlot (IDSEL=A23, DevNu=12) */ | 41 | /* PCI CardSlot (IDSEL=A23, DevNu=12) */ |
| 49 | /* PCIA => PCIC (IDSEL=A23) */ | 42 | /* PCIA => PCIC (IDSEL=A23) */ |
| 50 | /* NOTE: JMR3927 JP1 must be set to OPEN */ | 43 | /* NOTE: JMR3927 JP1 must be set to OPEN */ |
| 51 | irq = (irq + 2) % 4; | 44 | irq = (irq + 2) % 4; |
| 52 | } else if (dev->bus->parent == NULL && | 45 | } else if (slot == TX3927_PCIC_IDSEL_AD_TO_SLOT(22)) { |
| 53 | slot == TX3927_PCIC_IDSEL_AD_TO_SLOT(22)) { | ||
| 54 | /* PCI CardSlot (IDSEL=A22, DevNu=11) */ | 46 | /* PCI CardSlot (IDSEL=A22, DevNu=11) */ |
| 55 | /* PCIA => PCIA (IDSEL=A22) */ | 47 | /* PCIA => PCIA (IDSEL=A22) */ |
| 56 | /* NOTE: JMR3927 JP1 must be set to OPEN */ | 48 | /* NOTE: JMR3927 JP1 must be set to OPEN */ |
| 57 | irq = (irq + 0) % 4; | 49 | irq = (irq + 0) % 4; |
| 58 | } else { | 50 | } else { |
| 59 | /* PCI Backplane */ | 51 | /* PCI Backplane */ |
| 60 | irq = (irq + 3 + slot) % 4; | 52 | if (txx9_pci_option & TXX9_PCI_OPT_PICMG) |
| 53 | irq = (irq + 33 - slot) % 4; | ||
| 54 | else | ||
| 55 | irq = (irq + 3 + slot) % 4; | ||
| 61 | } | 56 | } |
| 62 | irq++; /* 1-4 */ | 57 | irq++; /* 1-4 */ |
| 63 | 58 | ||
| @@ -66,15 +61,13 @@ int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) | |||
| 66 | irq = JMR3927_IRQ_IOC_PCIA; | 61 | irq = JMR3927_IRQ_IOC_PCIA; |
| 67 | break; | 62 | break; |
| 68 | case 2: | 63 | case 2: |
| 69 | // wrong for backplane irq = JMR3927_IRQ_IOC_PCIB; | 64 | irq = JMR3927_IRQ_IOC_PCIB; |
| 70 | irq = JMR3927_IRQ_IOC_PCID; | ||
| 71 | break; | 65 | break; |
| 72 | case 3: | 66 | case 3: |
| 73 | irq = JMR3927_IRQ_IOC_PCIC; | 67 | irq = JMR3927_IRQ_IOC_PCIC; |
| 74 | break; | 68 | break; |
| 75 | case 4: | 69 | case 4: |
| 76 | // wrong for backplane irq = JMR3927_IRQ_IOC_PCID; | 70 | irq = JMR3927_IRQ_IOC_PCID; |
| 77 | irq = JMR3927_IRQ_IOC_PCIB; | ||
| 78 | break; | 71 | break; |
| 79 | } | 72 | } |
| 80 | 73 | ||
| @@ -84,9 +77,3 @@ int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) | |||
| 84 | irq = JMR3927_IRQ_ETHER0; | 77 | irq = JMR3927_IRQ_ETHER0; |
| 85 | return irq; | 78 | return irq; |
| 86 | } | 79 | } |
| 87 | |||
| 88 | /* Do platform specific device initialization at pci_enable_device() time */ | ||
| 89 | int pcibios_plat_dev_init(struct pci_dev *dev) | ||
| 90 | { | ||
| 91 | return 0; | ||
| 92 | } | ||
