dect
/
linux-2.6
Archived
13
0
Fork 0

ARM: ks8695: irq_data conversion.

Signed-off-by: Lennert Buytenhek <buytenh@secretlab.ca>
This commit is contained in:
Lennert Buytenhek 2010-11-29 10:34:14 +01:00
parent ee04087add
commit 3cdb791bda
1 changed files with 22 additions and 21 deletions

View File

@ -34,29 +34,29 @@
#include <mach/regs-irq.h> #include <mach/regs-irq.h>
#include <mach/regs-gpio.h> #include <mach/regs-gpio.h>
static void ks8695_irq_mask(unsigned int irqno) static void ks8695_irq_mask(struct irq_data *d)
{ {
unsigned long inten; unsigned long inten;
inten = __raw_readl(KS8695_IRQ_VA + KS8695_INTEN); inten = __raw_readl(KS8695_IRQ_VA + KS8695_INTEN);
inten &= ~(1 << irqno); inten &= ~(1 << d->irq);
__raw_writel(inten, KS8695_IRQ_VA + KS8695_INTEN); __raw_writel(inten, KS8695_IRQ_VA + KS8695_INTEN);
} }
static void ks8695_irq_unmask(unsigned int irqno) static void ks8695_irq_unmask(struct irq_data *d)
{ {
unsigned long inten; unsigned long inten;
inten = __raw_readl(KS8695_IRQ_VA + KS8695_INTEN); inten = __raw_readl(KS8695_IRQ_VA + KS8695_INTEN);
inten |= (1 << irqno); inten |= (1 << d->irq);
__raw_writel(inten, KS8695_IRQ_VA + KS8695_INTEN); __raw_writel(inten, KS8695_IRQ_VA + KS8695_INTEN);
} }
static void ks8695_irq_ack(unsigned int irqno) static void ks8695_irq_ack(struct irq_data *d)
{ {
__raw_writel((1 << irqno), KS8695_IRQ_VA + KS8695_INTST); __raw_writel((1 << d->irq), KS8695_IRQ_VA + KS8695_INTST);
} }
@ -64,7 +64,7 @@ static struct irq_chip ks8695_irq_level_chip;
static struct irq_chip ks8695_irq_edge_chip; static struct irq_chip ks8695_irq_edge_chip;
static int ks8695_irq_set_type(unsigned int irqno, unsigned int type) static int ks8695_irq_set_type(struct irq_data *d, unsigned int type)
{ {
unsigned long ctrl, mode; unsigned long ctrl, mode;
unsigned short level_triggered = 0; unsigned short level_triggered = 0;
@ -93,7 +93,7 @@ static int ks8695_irq_set_type(unsigned int irqno, unsigned int type)
return -EINVAL; return -EINVAL;
} }
switch (irqno) { switch (d->irq) {
case KS8695_IRQ_EXTERN0: case KS8695_IRQ_EXTERN0:
ctrl &= ~IOPC_IOEINT0TM; ctrl &= ~IOPC_IOEINT0TM;
ctrl |= IOPC_IOEINT0_MODE(mode); ctrl |= IOPC_IOEINT0_MODE(mode);
@ -115,12 +115,12 @@ static int ks8695_irq_set_type(unsigned int irqno, unsigned int type)
} }
if (level_triggered) { if (level_triggered) {
set_irq_chip(irqno, &ks8695_irq_level_chip); set_irq_chip(d->irq, &ks8695_irq_level_chip);
set_irq_handler(irqno, handle_level_irq); set_irq_handler(d->irq, handle_level_irq);
} }
else { else {
set_irq_chip(irqno, &ks8695_irq_edge_chip); set_irq_chip(d->irq, &ks8695_irq_edge_chip);
set_irq_handler(irqno, handle_edge_irq); set_irq_handler(d->irq, handle_edge_irq);
} }
__raw_writel(ctrl, KS8695_GPIO_VA + KS8695_IOPC); __raw_writel(ctrl, KS8695_GPIO_VA + KS8695_IOPC);
@ -128,17 +128,17 @@ static int ks8695_irq_set_type(unsigned int irqno, unsigned int type)
} }
static struct irq_chip ks8695_irq_level_chip = { static struct irq_chip ks8695_irq_level_chip = {
.ack = ks8695_irq_mask, .irq_ack = ks8695_irq_mask,
.mask = ks8695_irq_mask, .irq_mask = ks8695_irq_mask,
.unmask = ks8695_irq_unmask, .irq_unmask = ks8695_irq_unmask,
.set_type = ks8695_irq_set_type, .irq_set_type = ks8695_irq_set_type,
}; };
static struct irq_chip ks8695_irq_edge_chip = { static struct irq_chip ks8695_irq_edge_chip = {
.ack = ks8695_irq_ack, .irq_ack = ks8695_irq_ack,
.mask = ks8695_irq_mask, .irq_mask = ks8695_irq_mask,
.unmask = ks8695_irq_unmask, .irq_unmask = ks8695_irq_unmask,
.set_type = ks8695_irq_set_type, .irq_set_type = ks8695_irq_set_type,
}; };
void __init ks8695_init_irq(void) void __init ks8695_init_irq(void)
@ -164,7 +164,8 @@ void __init ks8695_init_irq(void)
/* Edge-triggered interrupts */ /* Edge-triggered interrupts */
default: default:
ks8695_irq_ack(irq); /* clear pending bit */ /* clear pending bit */
ks8695_irq_ack(irq_get_irq_data(irq));
set_irq_chip(irq, &ks8695_irq_edge_chip); set_irq_chip(irq, &ks8695_irq_edge_chip);
set_irq_handler(irq, handle_edge_irq); set_irq_handler(irq, handle_edge_irq);
} }