Skip to content

Commit

Permalink
avr32: At32ap: Convert pop irq_chip to new functions
Browse files Browse the repository at this point in the history
Also replace the open coded handler call with the proper wrapper.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Hans-Christian Egtvedt <hans-christian.egtvedt@atmel.com>
LKML-Reference: <20110206163009.190112353@linutronix.de>
  • Loading branch information
Thomas Gleixner committed Mar 24, 2011
1 parent 3972f69 commit f2f9c65
Showing 1 changed file with 10 additions and 13 deletions.
23 changes: 10 additions & 13 deletions arch/avr32/mach-at32ap/pio.c
Original file line number Diff line number Diff line change
Expand Up @@ -249,23 +249,23 @@ static void gpio_set(struct gpio_chip *chip, unsigned offset, int value)

/* GPIO IRQ support */

static void gpio_irq_mask(unsigned irq)
static void gpio_irq_mask(struct irq_data *d)
{
unsigned gpio = irq_to_gpio(irq);
unsigned gpio = irq_to_gpio(d->irq);
struct pio_device *pio = &pio_dev[gpio >> 5];

pio_writel(pio, IDR, 1 << (gpio & 0x1f));
}

static void gpio_irq_unmask(unsigned irq)
static void gpio_irq_unmask(struct irq_data *d))
{
unsigned gpio = irq_to_gpio(irq);
unsigned gpio = irq_to_gpio(d->irq);
struct pio_device *pio = &pio_dev[gpio >> 5];

pio_writel(pio, IER, 1 << (gpio & 0x1f));
}

static int gpio_irq_type(unsigned irq, unsigned type)
static int gpio_irq_type(struct irq_data *d, unsigned type)
{
if (type != IRQ_TYPE_EDGE_BOTH && type != IRQ_TYPE_NONE)
return -EINVAL;
Expand All @@ -275,20 +275,19 @@ static int gpio_irq_type(unsigned irq, unsigned type)

static struct irq_chip gpio_irqchip = {
.name = "gpio",
.mask = gpio_irq_mask,
.unmask = gpio_irq_unmask,
.set_type = gpio_irq_type,
.irq_mask = gpio_irq_mask,
.irq_unmask = gpio_irq_unmask,
.irq_set_type = gpio_irq_type,
};

static void gpio_irq_handler(unsigned irq, struct irq_desc *desc)
{
struct pio_device *pio = get_irq_chip_data(irq);
struct pio_device *pio = get_irq_desc_chip_data(desc);
unsigned gpio_irq;

gpio_irq = (unsigned) get_irq_data(irq);
for (;;) {
u32 isr;
struct irq_desc *d;

/* ack pending GPIO interrupts */
isr = pio_readl(pio, ISR) & pio_readl(pio, IMR);
Expand All @@ -301,9 +300,7 @@ static void gpio_irq_handler(unsigned irq, struct irq_desc *desc)
isr &= ~(1 << i);

i += gpio_irq;
d = &irq_desc[i];

d->handle_irq(i, d);
generic_handle_irq(i);
} while (isr);
}
}
Expand Down

0 comments on commit f2f9c65

Please sign in to comment.