1 // SPDX-License-Identifier: GPL-2.0-or-later
2 /*
3  *  fixup-tb0226.c, The TANBAC TB0226 specific PCI fixups.
4  *
5  *  Copyright (C) 2002-2005  Yoichi Yuasa <yuasa@linux-mips.org>
6  */
7 #include <linux/init.h>
8 #include <linux/pci.h>
9 
10 #include <asm/vr41xx/giu.h>
11 #include <asm/vr41xx/tb0226.h>
12 
pcibios_map_irq(const struct pci_dev * dev,u8 slot,u8 pin)13 int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
14 {
15 	int irq = -1;
16 
17 	switch (slot) {
18 	case 12:
19 		vr41xx_set_irq_trigger(GD82559_1_PIN,
20 				       IRQ_TRIGGER_LEVEL,
21 				       IRQ_SIGNAL_THROUGH);
22 		vr41xx_set_irq_level(GD82559_1_PIN, IRQ_LEVEL_LOW);
23 		irq = GD82559_1_IRQ;
24 		break;
25 	case 13:
26 		vr41xx_set_irq_trigger(GD82559_2_PIN,
27 				       IRQ_TRIGGER_LEVEL,
28 				       IRQ_SIGNAL_THROUGH);
29 		vr41xx_set_irq_level(GD82559_2_PIN, IRQ_LEVEL_LOW);
30 		irq = GD82559_2_IRQ;
31 		break;
32 	case 14:
33 		switch (pin) {
34 		case 1:
35 			vr41xx_set_irq_trigger(UPD720100_INTA_PIN,
36 					       IRQ_TRIGGER_LEVEL,
37 					       IRQ_SIGNAL_THROUGH);
38 			vr41xx_set_irq_level(UPD720100_INTA_PIN,
39 					     IRQ_LEVEL_LOW);
40 			irq = UPD720100_INTA_IRQ;
41 			break;
42 		case 2:
43 			vr41xx_set_irq_trigger(UPD720100_INTB_PIN,
44 					       IRQ_TRIGGER_LEVEL,
45 					       IRQ_SIGNAL_THROUGH);
46 			vr41xx_set_irq_level(UPD720100_INTB_PIN,
47 					     IRQ_LEVEL_LOW);
48 			irq = UPD720100_INTB_IRQ;
49 			break;
50 		case 3:
51 			vr41xx_set_irq_trigger(UPD720100_INTC_PIN,
52 					       IRQ_TRIGGER_LEVEL,
53 					       IRQ_SIGNAL_THROUGH);
54 			vr41xx_set_irq_level(UPD720100_INTC_PIN,
55 					     IRQ_LEVEL_LOW);
56 			irq = UPD720100_INTC_IRQ;
57 			break;
58 		default:
59 			break;
60 		}
61 		break;
62 	default:
63 		break;
64 	}
65 
66 	return irq;
67 }
68 
69 /* Do platform specific device initialization at pci_enable_device() time */
pcibios_plat_dev_init(struct pci_dev * dev)70 int pcibios_plat_dev_init(struct pci_dev *dev)
71 {
72 	return 0;
73 }
74