lkml.org 
[lkml]   [2007]   [Oct]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 12/17] isdn/sc: irq handler clean
    Date
    commit ebf0fb18d5c19bb0201912850d14a9fda292ee0e
    Author: Jeff Garzik <jeff@garzik.org>
    Date: Fri Oct 19 19:31:27 2007 -0400

    isdn/sc: irq handler clean

    * pass card number to irq handler

    * use card number in irq handler to avoid looping through each adapter

    Signed-off-by: Jeff Garzik <jgarzik@redhat.com>

    drivers/isdn/sc/init.c | 3 ++-
    drivers/isdn/sc/interrupt.c | 17 ++---------------
    2 files changed, 4 insertions(+), 16 deletions(-)

    ebf0fb18d5c19bb0201912850d14a9fda292ee0e
    diff --git a/drivers/isdn/sc/init.c b/drivers/isdn/sc/init.c
    index d09c854..dd0acd0 100644
    --- a/drivers/isdn/sc/init.c
    +++ b/drivers/isdn/sc/init.c
    @@ -334,7 +334,8 @@ static int __init sc_init(void)
    */
    sc_adapter[cinst]->interrupt = irq[b];
    if (request_irq(sc_adapter[cinst]->interrupt, interrupt_handler,
    - IRQF_DISABLED, interface->id, NULL))
    + IRQF_DISABLED, interface->id,
    + (void *)(unsigned long) cinst))
    {
    kfree(sc_adapter[cinst]->channel);
    indicate_status(cinst, ISDN_STAT_UNLOAD, 0, NULL); /* Fix me */
    diff --git a/drivers/isdn/sc/interrupt.c b/drivers/isdn/sc/interrupt.c
    index bef7963..485be8b 100644
    --- a/drivers/isdn/sc/interrupt.c
    +++ b/drivers/isdn/sc/interrupt.c
    @@ -21,28 +21,15 @@
    #include "card.h"
    #include <linux/interrupt.h>

    -static int get_card_from_irq(int irq)
    -{
    - int i;
    -
    - for(i = 0 ; i < cinst ; i++) {
    - if(sc_adapter[i]->interrupt == irq)
    - return i;
    - }
    - return -1;
    -}
    -
    /*
    *
    */
    -irqreturn_t interrupt_handler(int interrupt, void *cardptr)
    +irqreturn_t interrupt_handler(int dummy, void *card_inst)
    {

    RspMessage rcvmsg;
    int channel;
    - int card;
    -
    - card = get_card_from_irq(interrupt);
    + int card = (int)(unsigned long) card_inst;

    if(!IS_VALID_CARD(card)) {
    pr_debug("Invalid param: %d is not a valid card id\n", card);
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/
    \
     
     \ /
      Last update: 2007-10-21 09:59    [W:0.022 / U:179.224 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site