1 // SPDX-License-Identifier: GPL-2.0 2 /* 3 * Renesas Solutions Highlander R7780RP-1 Support. 4 * 5 * Copyright (C) 2002 Atom Create Engineering Co., Ltd. 6 * Copyright (C) 2006 Paul Mundt 7 * Copyright (C) 2008 Magnus Damm 8 */ 9 #include <linux/init.h> 10 #include <linux/irq.h> 11 #include <linux/io.h> 12 #include <mach/highlander.h> 13 14 enum { 15 UNUSED = 0, 16 17 /* board specific interrupt sources */ 18 19 AX88796, /* Ethernet controller */ 20 PSW, /* Push Switch */ 21 CF, /* Compact Flash */ 22 23 PCI_A, 24 PCI_B, 25 PCI_C, 26 PCI_D, 27 }; 28 29 static struct intc_vect vectors[] __initdata = { 30 INTC_IRQ(PCI_A, 65), /* dirty: overwrite cpu vectors for pci */ 31 INTC_IRQ(PCI_B, 66), 32 INTC_IRQ(PCI_C, 67), 33 INTC_IRQ(PCI_D, 68), 34 INTC_IRQ(CF, IRQ_CF), 35 INTC_IRQ(PSW, IRQ_PSW), 36 INTC_IRQ(AX88796, IRQ_AX88796), 37 }; 38 39 static struct intc_mask_reg mask_registers[] __initdata = { 40 { 0xa5000000, 0, 16, /* IRLMSK */ 41 { PCI_A, PCI_B, PCI_C, PCI_D, CF, 0, 0, 0, 42 0, 0, 0, 0, 0, 0, PSW, AX88796 } }, 43 }; 44 45 static unsigned char irl2irq[HL_NR_IRL] __initdata = { 46 65, 66, 67, 68, 47 IRQ_CF, 0, 0, 0, 48 0, 0, 0, 0, 49 IRQ_AX88796, IRQ_PSW 50 }; 51 52 static DECLARE_INTC_DESC(intc_desc, "r7780rp", vectors, 53 NULL, mask_registers, NULL, NULL); 54 55 unsigned char * __init highlander_plat_irq_setup(void) 56 { 57 if (__raw_readw(0xa5000600)) { 58 printk(KERN_INFO "Using r7780rp interrupt controller.\n"); 59 register_intc_controller(&intc_desc); 60 return irl2irq; 61 } 62 63 return NULL; 64 } 65