Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 36665
b: refs/heads/master
c: 38e0533
h: refs/heads/master
i:
  36663: 2ad8298
v: v3
  • Loading branch information
Ben Dooks authored and Russell King committed Sep 28, 2006
1 parent 62615b5 commit 375496d
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 9 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 1f51c10c5e85050506663bce1d69513eb901db87
refs/heads/master: 38e0533ce87a58e25f959e6d0958478b6a137794
44 changes: 36 additions & 8 deletions trunk/arch/arm/mach-s3c2410/irq.c
Original file line number Diff line number Diff line change
Expand Up @@ -569,18 +569,46 @@ s3c_irq_demux_uart2(unsigned int irq,
}

static void
s3c_irq_demux_extint(unsigned int irq,
struct irqdesc *desc,
struct pt_regs *regs)
s3c_irq_demux_extint8(unsigned int irq,
struct irqdesc *desc,
struct pt_regs *regs)
{
unsigned long eintpnd = __raw_readl(S3C24XX_EINTPEND);
unsigned long eintmsk = __raw_readl(S3C24XX_EINTMASK);

eintpnd &= ~eintmsk;
eintpnd &= ~0xff; /* ignore lower irqs */

if (eintpnd) {
irq = fls(eintpnd);
irq += (IRQ_EINT4 - (4 + 1));
/* we may as well handle all the pending IRQs here */

while (eintpnd) {
irq = __ffs(eintpnd);
eintpnd &= ~(1<<irq);

irq += (IRQ_EINT4 - 4);
desc_handle_irq(irq, irq_desc + irq, regs);
}

}

static void
s3c_irq_demux_extint4t7(unsigned int irq,
struct irqdesc *desc,
struct pt_regs *regs)
{
unsigned long eintpnd = __raw_readl(S3C24XX_EINTPEND);
unsigned long eintmsk = __raw_readl(S3C24XX_EINTMASK);

eintpnd &= ~eintmsk;
eintpnd &= 0xff; /* only lower irqs */

/* we may as well handle all the pending IRQs here */

while (eintpnd) {
irq = __ffs(eintpnd);
eintpnd &= ~(1<<irq);

irq += (IRQ_EINT4 - 4);

desc_handle_irq(irq, irq_desc + irq, regs);
}
Expand Down Expand Up @@ -727,8 +755,8 @@ void __init s3c24xx_init_irq(void)

/* setup the cascade irq handlers */

set_irq_chained_handler(IRQ_EINT4t7, s3c_irq_demux_extint);
set_irq_chained_handler(IRQ_EINT8t23, s3c_irq_demux_extint);
set_irq_chained_handler(IRQ_EINT4t7, s3c_irq_demux_extint4t7);
set_irq_chained_handler(IRQ_EINT8t23, s3c_irq_demux_extint8);

set_irq_chained_handler(IRQ_UART0, s3c_irq_demux_uart0);
set_irq_chained_handler(IRQ_UART1, s3c_irq_demux_uart1);
Expand Down

0 comments on commit 375496d

Please sign in to comment.