lkml.org 
[lkml]   [2011]   [Feb]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[patch 3/4] avr32: at32ap: Convert pop irq_chip to new functions
    Also replace the open coded handler call with the proper wrapper.

    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    ---
    arch/avr32/mach-at32ap/pio.c | 23 ++++++++++-------------
    1 file changed, 10 insertions(+), 13 deletions(-)

    Index: linux-next/arch/avr32/mach-at32ap/pio.c
    ===================================================================
    --- linux-next.orig/arch/avr32/mach-at32ap/pio.c
    +++ linux-next/arch/avr32/mach-at32ap/pio.c
    @@ -249,23 +249,23 @@ static void gpio_set(struct gpio_chip *c

    /* 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;
    @@ -275,20 +275,19 @@ static int gpio_irq_type(unsigned irq, u

    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);
    @@ -301,9 +300,7 @@ static void gpio_irq_handler(unsigned ir
    isr &= ~(1 << i);

    i += gpio_irq;
    - d = &irq_desc[i];
    -
    - d->handle_irq(i, d);
    + generic_handle_irq(i);
    } while (isr);
    }
    }



    \
     
     \ /
      Last update: 2011-02-06 17:33    [W:2.385 / U:1.164 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site