sh/irq: Use irq accessor functions instead of open coded access
authorJiang Liu <jiang.liu@linux.intel.com>
Mon, 13 Jul 2015 20:51:22 +0000 (20:51 +0000)
committerIngo Molnar <mingo@kernel.org>
Wed, 29 Jul 2015 08:08:07 +0000 (10:08 +0200)
This is a preparatory patch for refactoring the internals if irq_data.

Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
Cc: Simon Horman <horms@verge.net.au>
Cc: Magnus Damm <magnus.damm@gmail.com>
Link: http://lkml.kernel.org/r/20150713151626.616384365@linutronix.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
drivers/sh/intc/virq.c

index f5f1b821241afc92e6854788262d13f665a0dd45..0f735301d3ece0746e4d6b1f1ce0c2326d2076ed 100644 (file)
@@ -83,12 +83,11 @@ EXPORT_SYMBOL_GPL(intc_irq_lookup);
 
 static int add_virq_to_pirq(unsigned int irq, unsigned int virq)
 {
-       struct intc_virq_list **last, *entry;
-       struct irq_data *data = irq_get_irq_data(irq);
+       struct intc_virq_list *entry;
+       struct intc_virq_list **last = NULL;
 
        /* scan for duplicates */
-       last = (struct intc_virq_list **)&data->handler_data;
-       for_each_virq(entry, data->handler_data) {
+       for_each_virq(entry, irq_get_handler_data(irq)) {
                if (entry->irq == virq)
                        return 0;
                last = &entry->next;
@@ -102,7 +101,10 @@ static int add_virq_to_pirq(unsigned int irq, unsigned int virq)
 
        entry->irq = virq;
 
-       *last = entry;
+       if (last)
+               *last = entry;
+       else
+               irq_set_handler_data(irq, entry);
 
        return 0;
 }