xref: /OK3568_Linux_fs/kernel/arch/sh/drivers/pci/fixups-sh03.c (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun // SPDX-License-Identifier: GPL-2.0
2*4882a593Smuzhiyun #include <linux/kernel.h>
3*4882a593Smuzhiyun #include <linux/init.h>
4*4882a593Smuzhiyun #include <linux/types.h>
5*4882a593Smuzhiyun #include <linux/pci.h>
6*4882a593Smuzhiyun #include <linux/sh_intc.h>
7*4882a593Smuzhiyun 
pcibios_map_platform_irq(const struct pci_dev * dev,u8 slot,u8 pin)8*4882a593Smuzhiyun int pcibios_map_platform_irq(const struct pci_dev *dev, u8 slot, u8 pin)
9*4882a593Smuzhiyun {
10*4882a593Smuzhiyun 	int irq;
11*4882a593Smuzhiyun 
12*4882a593Smuzhiyun 	if (dev->bus->number == 0) {
13*4882a593Smuzhiyun 		switch (slot) {
14*4882a593Smuzhiyun 		case 4: return evt2irq(0x2a0);	/* eth0       */
15*4882a593Smuzhiyun 		case 8: return evt2irq(0x2a0);	/* eth1       */
16*4882a593Smuzhiyun 		case 6: return evt2irq(0x240);	/* PCI bridge */
17*4882a593Smuzhiyun 		default:
18*4882a593Smuzhiyun 			printk(KERN_ERR "PCI: Bad IRQ mapping request "
19*4882a593Smuzhiyun 					"for slot %d\n", slot);
20*4882a593Smuzhiyun 			return evt2irq(0x240);
21*4882a593Smuzhiyun 		}
22*4882a593Smuzhiyun 	} else {
23*4882a593Smuzhiyun 		switch (pin) {
24*4882a593Smuzhiyun 		case 0:   irq =  evt2irq(0x240); break;
25*4882a593Smuzhiyun 		case 1:   irq =  evt2irq(0x240); break;
26*4882a593Smuzhiyun 		case 2:   irq =  evt2irq(0x240); break;
27*4882a593Smuzhiyun 		case 3:   irq =  evt2irq(0x240); break;
28*4882a593Smuzhiyun 		case 4:   irq =  evt2irq(0x240); break;
29*4882a593Smuzhiyun 		default:  irq = -1; break;
30*4882a593Smuzhiyun 		}
31*4882a593Smuzhiyun 	}
32*4882a593Smuzhiyun 	return irq;
33*4882a593Smuzhiyun }
34