184972ec0SPaul Mundt /*
284972ec0SPaul Mundt  * arch/sh/drivers/pci/ops-landisk.c
384972ec0SPaul Mundt  *
484972ec0SPaul Mundt  * PCI initialization for the I-O DATA Device, Inc. LANDISK board
584972ec0SPaul Mundt  *
684972ec0SPaul Mundt  * Copyright (C) 2006 kogiidena
784972ec0SPaul Mundt  *
884972ec0SPaul Mundt  * May be copied or modified under the terms of the GNU General Public
984972ec0SPaul Mundt  * License.  See linux/COPYING for more information.
1084972ec0SPaul Mundt  */
1184972ec0SPaul Mundt #include <linux/kernel.h>
1284972ec0SPaul Mundt #include <linux/types.h>
1384972ec0SPaul Mundt #include <linux/init.h>
1484972ec0SPaul Mundt #include <linux/delay.h>
1584972ec0SPaul Mundt #include <linux/pci.h>
1684972ec0SPaul Mundt #include "pci-sh4.h"
1784972ec0SPaul Mundt 
1884972ec0SPaul Mundt int pcibios_map_platform_irq(struct pci_dev *pdev, u8 slot, u8 pin)
1984972ec0SPaul Mundt {
2084972ec0SPaul Mundt 	/*
2184972ec0SPaul Mundt 	 * slot0: pin1-4 = irq5,6,7,8
2284972ec0SPaul Mundt 	 * slot1: pin1-4 = irq6,7,8,5
2384972ec0SPaul Mundt 	 * slot2: pin1-4 = irq7,8,5,6
2484972ec0SPaul Mundt 	 * slot3: pin1-4 = irq8,5,6,7
2584972ec0SPaul Mundt 	 */
2684972ec0SPaul Mundt 	int irq = ((slot + pin - 1) & 0x3) + 5;
2784972ec0SPaul Mundt 
2884972ec0SPaul Mundt 	if ((slot | (pin - 1)) > 0x3) {
2984972ec0SPaul Mundt 		printk("PCI: Bad IRQ mapping request for slot %d pin %c\n",
3084972ec0SPaul Mundt 		       slot, pin - 1 + 'A');
3184972ec0SPaul Mundt 		return -1;
3284972ec0SPaul Mundt 	}
3384972ec0SPaul Mundt 	return irq;
3484972ec0SPaul Mundt }
35