summaryrefslogtreecommitdiffstats
path: root/arch/mn10300/unit-asb2364/include
diff options
context:
space:
mode:
authorDavid Howells <dhowells@redhat.com>2010-10-27 17:28:58 +0100
committerDavid Howells <dhowells@redhat.com>2010-10-27 17:28:58 +0100
commit6044cf1d9426dfd5cdc1e7b9cf8eaed6418e1ff6 (patch)
tree3f6f209d37328ce1635df8f5d0b5df1cef1afe30 /arch/mn10300/unit-asb2364/include
parent730c1fad0ee22a170d2ee76a904709ee304931c0 (diff)
downloadblackbird-op-linux-6044cf1d9426dfd5cdc1e7b9cf8eaed6418e1ff6.tar.gz
blackbird-op-linux-6044cf1d9426dfd5cdc1e7b9cf8eaed6418e1ff6.zip
MN10300: ASB2364: Handle the IRQ multiplexer in the FPGA
Handle the IRQ multiplexer in the FPGA by implementing a cascade interrupt driver for it. Signed-off-by: David Howells <dhowells@redhat.com>
Diffstat (limited to 'arch/mn10300/unit-asb2364/include')
-rw-r--r--arch/mn10300/unit-asb2364/include/unit/fpga-regs.h24
-rw-r--r--arch/mn10300/unit-asb2364/include/unit/irq.h35
2 files changed, 48 insertions, 11 deletions
diff --git a/arch/mn10300/unit-asb2364/include/unit/fpga-regs.h b/arch/mn10300/unit-asb2364/include/unit/fpga-regs.h
index a039a50c91db..7cf12054db65 100644
--- a/arch/mn10300/unit-asb2364/include/unit/fpga-regs.h
+++ b/arch/mn10300/unit-asb2364/include/unit/fpga-regs.h
@@ -14,17 +14,19 @@
#define ASB2364_FPGA_REG_RESET_USB __SYSREG(0xa900130c, u16)
#define ASB2364_FPGA_REG_RESET_AV __SYSREG(0xa9001310, u16)
-#define ASB2364_FPGA_REG_IRQ_LAN __SYSREG(0xa9001510, u16)
-#define ASB2364_FPGA_REG_IRQ_UART __SYSREG(0xa9001514, u16)
-#define ASB2364_FPGA_REG_IRQ_I2C __SYSREG(0xa9001518, u16)
-#define ASB2364_FPGA_REG_IRQ_USB __SYSREG(0xa900151c, u16)
-#define ASB2364_FPGA_REG_IRQ_FPGA __SYSREG(0xa9001524, u16)
-
-#define ASB2364_FPGA_REG_MASK_LAN __SYSREG(0xa9001590, u16)
-#define ASB2364_FPGA_REG_MASK_UART __SYSREG(0xa9001594, u16)
-#define ASB2364_FPGA_REG_MASK_I2C __SYSREG(0xa9001598, u16)
-#define ASB2364_FPGA_REG_MASK_USB __SYSREG(0xa900159c, u16)
-#define ASB2364_FPGA_REG_MASK_FPGA __SYSREG(0xa90015a4, u16)
+#define ASB2364_FPGA_REG_IRQ(X) __SYSREG(0xa9001590+((X)*4), u16)
+#define ASB2364_FPGA_REG_IRQ_LAN ASB2364_FPGA_REG_IRQ(0)
+#define ASB2364_FPGA_REG_IRQ_UART ASB2364_FPGA_REG_IRQ(1)
+#define ASB2364_FPGA_REG_IRQ_I2C ASB2364_FPGA_REG_IRQ(2)
+#define ASB2364_FPGA_REG_IRQ_USB ASB2364_FPGA_REG_IRQ(3)
+#define ASB2364_FPGA_REG_IRQ_FPGA ASB2364_FPGA_REG_IRQ(5)
+
+#define ASB2364_FPGA_REG_MASK(X) __SYSREG(0xa9001590+((X)*4), u16)
+#define ASB2364_FPGA_REG_MASK_LAN ASB2364_FPGA_REG_MASK(0)
+#define ASB2364_FPGA_REG_MASK_UART ASB2364_FPGA_REG_MASK(1)
+#define ASB2364_FPGA_REG_MASK_I2C ASB2364_FPGA_REG_MASK(2)
+#define ASB2364_FPGA_REG_MASK_USB ASB2364_FPGA_REG_MASK(3)
+#define ASB2364_FPGA_REG_MASK_FPGA ASB2364_FPGA_REG_MASK(5)
#define ASB2364_FPGA_REG_CPLD5_SET1 __SYSREG(0xa9002500, u16)
#define ASB2364_FPGA_REG_CPLD5_SET2 __SYSREG(0xa9002504, u16)
diff --git a/arch/mn10300/unit-asb2364/include/unit/irq.h b/arch/mn10300/unit-asb2364/include/unit/irq.h
new file mode 100644
index 000000000000..786148e46565
--- /dev/null
+++ b/arch/mn10300/unit-asb2364/include/unit/irq.h
@@ -0,0 +1,35 @@
+/* ASB2364 FPGA irq numbers
+ *
+ * Copyright (C) 2010 Red Hat, Inc. All Rights Reserved.
+ * Written by David Howells (dhowells@redhat.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public Licence
+ * as published by the Free Software Foundation; either version
+ * 2 of the Licence, or (at your option) any later version.
+ */
+#ifndef _UNIT_IRQ_H
+#define _UNIT_IRQ_H
+
+#ifndef __ASSEMBLY__
+
+#ifdef CONFIG_SMP
+#define NR_CPU_IRQS GxICR_NUM_EXT_IRQS
+#else
+#define NR_CPU_IRQS GxICR_NUM_IRQS
+#endif
+
+enum {
+ FPGA_LAN_IRQ = NR_CPU_IRQS,
+ FPGA_UART_IRQ,
+ FPGA_I2C_IRQ,
+ FPGA_USB_IRQ,
+ FPGA_RESERVED_IRQ,
+ FPGA_FPGA_IRQ,
+ NR_IRQS
+};
+
+extern void __init irq_fpga_init(void);
+
+#endif /* !__ASSEMBLY__ */
+#endif /* _UNIT_IRQ_H */
OpenPOWER on IntegriCloud