summaryrefslogtreecommitdiffstats
path: root/arch/sh/boards/mach-systemh/irq.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2008-12-28 11:39:19 -0800
committerLinus Torvalds <torvalds@linux-foundation.org>2008-12-28 11:39:19 -0800
commit81d6e59dabb1ae0c782e9eb7e3d88f699d25b314 (patch)
tree532afd14c119f1c95206ef0d23db9c4c26a0aa34 /arch/sh/boards/mach-systemh/irq.c
parent4a6908a3a050aacc9c3a2f36b276b46c0629ad91 (diff)
parent59de580af1c2fd671b0cb27c41ff958859ae5288 (diff)
Merge git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6: (132 commits) sh: oprofile: Fix up the module build. sh: add UIO support for JPU on SH7722. serial: sh-sci: Fix up port pinmux for SH7366. sh: mach-rsk: Use uImage generation by default for rsk7201/7203. sh: mach-sh03: Fix up pata_platform build breakage. sh: enable deferred io LCDC on Migo-R video: sh_mobile_lcdcfb deferred io support video: deferred io with physically contiguous memory video: deferred io cleanup video: fix deferred io fsync() sh: add LCDC interrupt configuration to AP325 and Migo-R sh_mobile_lcdc: use FB_SYS helpers instead of FB_CFB sh: split coherent pages sh: dma: Kill off ISA DMA wrapper. sh: Conditionalize the code dumper on CONFIG_DUMP_CODE. sh: Kill off the unused SH_ALPHANUMERIC debug option. sh: Enable skipping of bss on debug platforms for sh32 also. doc: Update sh cpufreq documentation. sh: mrshpc_setup_windows() needs to be inline. serial: sh-sci: sci_poll_get_char() is only used by CONFIG_CONSOLE_POLL. ...
Diffstat (limited to 'arch/sh/boards/mach-systemh/irq.c')
-rw-r--r--arch/sh/boards/mach-systemh/irq.c37
1 files changed, 6 insertions, 31 deletions
diff --git a/arch/sh/boards/mach-systemh/irq.c b/arch/sh/boards/mach-systemh/irq.c
index 538406872a8..986a0e71d22 100644
--- a/arch/sh/boards/mach-systemh/irq.c
+++ b/arch/sh/boards/mach-systemh/irq.c
@@ -12,8 +12,8 @@
#include <linux/init.h>
#include <linux/irq.h>
#include <linux/interrupt.h>
+#include <linux/io.h>
-#include <asm/io.h>
#include <mach/systemh7751.h>
#include <asm/smc37c93x.h>
@@ -24,35 +24,17 @@ static unsigned long *systemh_irq_mask_register = (unsigned long *)0xB3F10004;
static unsigned long *systemh_irq_request_register = (unsigned long *)0xB3F10000;
/* forward declaration */
-static unsigned int startup_systemh_irq(unsigned int irq);
-static void shutdown_systemh_irq(unsigned int irq);
static void enable_systemh_irq(unsigned int irq);
static void disable_systemh_irq(unsigned int irq);
static void mask_and_ack_systemh(unsigned int);
-static void end_systemh_irq(unsigned int irq);
-/* hw_interrupt_type */
-static struct hw_interrupt_type systemh_irq_type = {
- .typename = " SystemH Register",
- .startup = startup_systemh_irq,
- .shutdown = shutdown_systemh_irq,
- .enable = enable_systemh_irq,
- .disable = disable_systemh_irq,
+static struct irq_chip systemh_irq_type = {
+ .name = " SystemH Register",
+ .unmask = enable_systemh_irq,
+ .mask = disable_systemh_irq,
.ack = mask_and_ack_systemh,
- .end = end_systemh_irq
};
-static unsigned int startup_systemh_irq(unsigned int irq)
-{
- enable_systemh_irq(irq);
- return 0; /* never anything pending */
-}
-
-static void shutdown_systemh_irq(unsigned int irq)
-{
- disable_systemh_irq(irq);
-}
-
static void disable_systemh_irq(unsigned int irq)
{
if (systemh_irq_mask_register) {
@@ -86,16 +68,9 @@ static void mask_and_ack_systemh(unsigned int irq)
disable_systemh_irq(irq);
}
-static void end_systemh_irq(unsigned int irq)
-{
- if (!(irq_desc[irq].status & (IRQ_DISABLED|IRQ_INPROGRESS)))
- enable_systemh_irq(irq);
-}
-
void make_systemh_irq(unsigned int irq)
{
disable_irq_nosync(irq);
- irq_desc[irq].chip = &systemh_irq_type;
+ set_irq_chip_and_handler(irq, &systemh_irq_type, handle_level_irq);
disable_systemh_irq(irq);
}
-