ARM: riscpc: use irq chip data in ecard.c
authorRussell King <rmk+kernel@arm.linux.org.uk>
Thu, 1 Mar 2012 17:54:11 +0000 (17:54 +0000)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Sat, 24 Mar 2012 09:37:36 +0000 (09:37 +0000)
Use irq chip data to store the expansion card data pointer, rather
than converting from the interrupt number to a slot number.  This
allows the interrupt chip methods to avoid knowing about interrupt
numbering.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
arch/arm/mach-rpc/ecard.c

index 4dd0edab6a658880ed505145fff2c5ce001ae639..ec84cfde4ad7ba74eb9b176dddf47e032d6c9f18 100644 (file)
@@ -445,7 +445,7 @@ static expansioncard_ops_t ecard_default_ops = {
  */
 static void ecard_irq_unmask(struct irq_data *d)
 {
-       ecard_t *ec = slot_to_ecard(d->irq - 32);
+       ecard_t *ec = irq_data_get_irq_chip_data(d);
 
        if (ec) {
                if (!ec->ops)
@@ -461,7 +461,7 @@ static void ecard_irq_unmask(struct irq_data *d)
 
 static void ecard_irq_mask(struct irq_data *d)
 {
-       ecard_t *ec = slot_to_ecard(d->irq - 32);
+       ecard_t *ec = irq_data_get_irq_chip_data(d);
 
        if (ec) {
                if (!ec->ops)
@@ -1039,6 +1039,7 @@ ecard_probe(int slot, card_type_t type)
                ec->irq = 32 + slot;
                irq_set_chip_and_handler(ec->irq, &ecard_chip,
                                         handle_level_irq);
+               irq_set_chip_data(ec->irq, ec);
                set_irq_flags(ec->irq, IRQF_VALID);
        }