~ubuntu-branches/ubuntu/precise/linux-ti-omap4/precise

« back to all changes in this revision

Viewing changes to arch/arm/mach-exynos4/irq-combiner.c

  • Committer: Bazaar Package Importer
  • Author(s): Paolo Pisati
  • Date: 2011-06-29 15:23:51 UTC
  • mfrom: (26.1.1 natty-proposed)
  • Revision ID: james.westby@ubuntu.com-20110629152351-xs96tm303d95rpbk
Tags: 3.0.0-1200.2
* Rebased against 3.0.0-6.7
* BSP from TI based on 3.0.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
54
54
 
55
55
static void combiner_handle_cascade_irq(unsigned int irq, struct irq_desc *desc)
56
56
{
57
 
        struct combiner_chip_data *chip_data = get_irq_data(irq);
58
 
        struct irq_chip *chip = get_irq_chip(irq);
 
57
        struct combiner_chip_data *chip_data = irq_get_handler_data(irq);
 
58
        struct irq_chip *chip = irq_get_chip(irq);
59
59
        unsigned int cascade_irq, combiner_irq;
60
60
        unsigned long status;
61
61
 
62
 
        /* primary controller ack'ing */
63
 
        chip->irq_ack(&desc->irq_data);
 
62
        chained_irq_enter(chip, desc);
64
63
 
65
64
        spin_lock(&irq_controller_lock);
66
65
        status = __raw_readl(chip_data->base + COMBINER_INT_STATUS);
79
78
                generic_handle_irq(cascade_irq);
80
79
 
81
80
 out:
82
 
        /* primary controller unmasking */
83
 
        chip->irq_unmask(&desc->irq_data);
 
81
        chained_irq_exit(chip, desc);
84
82
}
85
83
 
86
84
static struct irq_chip combiner_chip = {
93
91
{
94
92
        if (combiner_nr >= MAX_COMBINER_NR)
95
93
                BUG();
96
 
        if (set_irq_data(irq, &combiner_data[combiner_nr]) != 0)
 
94
        if (irq_set_handler_data(irq, &combiner_data[combiner_nr]) != 0)
97
95
                BUG();
98
 
        set_irq_chained_handler(irq, combiner_handle_cascade_irq);
 
96
        irq_set_chained_handler(irq, combiner_handle_cascade_irq);
99
97
}
100
98
 
101
99
void __init combiner_init(unsigned int combiner_nr, void __iomem *base,
119
117
 
120
118
        for (i = irq_start; i < combiner_data[combiner_nr].irq_offset
121
119
                                + MAX_IRQ_IN_COMBINER; i++) {
122
 
                set_irq_chip(i, &combiner_chip);
123
 
                set_irq_chip_data(i, &combiner_data[combiner_nr]);
124
 
                set_irq_handler(i, handle_level_irq);
 
120
                irq_set_chip_and_handler(i, &combiner_chip, handle_level_irq);
 
121
                irq_set_chip_data(i, &combiner_data[combiner_nr]);
125
122
                set_irq_flags(i, IRQF_VALID | IRQF_PROBE);
126
123
        }
127
124
}