lkml.org 
[lkml]   [2007]   [Oct]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 01/16] [ISDN] HiSax: modularize card setup
    Date
    Now that the previous no-behavior-change code movement patches have
    occurred, we can easily replace the big per-card "call the setup
    function for <this card>" switch statement with a function pointer.

    Signed-off-by: Jeff Garzik <jeff@garzik.org>
    ---
    drivers/isdn/hisax/config.c | 14 +++++++++-----
    drivers/isdn/hisax/hisax_cfg.h | 2 ++
    2 files changed, 11 insertions(+), 5 deletions(-)

    diff --git a/drivers/isdn/hisax/config.c b/drivers/isdn/hisax/config.c
    index 97097ef..4c536b7 100644
    --- a/drivers/isdn/hisax/config.c
    +++ b/drivers/isdn/hisax/config.c
    @@ -1166,7 +1166,9 @@ outf_cs:
    return 0;
    }

    -static int checkcard(int cardnr, char *id, int *busy_flag, struct module *lockowner)
    +static int checkcard(int cardnr, char *id, int *busy_flag,
    + struct module *lockowner,
    + hisax_setup_func_t card_setup)
    {
    int ret;
    struct IsdnCard *card = cards + cardnr;
    @@ -1184,7 +1186,7 @@ static int checkcard(int cardnr, char *id, int *busy_flag, struct module *lockow
    (card->protocol == ISDN_PTYPE_NI1) ? "NI1" :
    "NONE", cs->iif.id, cs->myid);

    - ret = hisax_cs_setup_card(card);
    + ret = card_setup(card);
    if (!ret) {
    ll_unload(cs);
    goto outf_cs;
    @@ -1238,7 +1240,8 @@ static int HiSax_inithardware(int *busy_flag)
    else
    sprintf(ids, "%s%d", id, i);
    }
    - if (checkcard(i, ids, busy_flag, THIS_MODULE)) {
    + if (checkcard(i, ids, busy_flag, THIS_MODULE,
    + hisax_cs_setup_card)) {
    foundcards++;
    i++;
    } else {
    @@ -1546,7 +1549,8 @@ int hisax_init_pcmcia(void *pcm_iob, int *busy_flag, struct IsdnCard *card)
    sprintf(ids, "HiSax%d", nrcards);
    else
    sprintf(ids, "HiSax");
    - if (!checkcard(nrcards, ids, busy_flag, THIS_MODULE))
    + if (!checkcard(nrcards, ids, busy_flag, THIS_MODULE,
    + hisax_cs_setup_card))
    goto error;

    ret = nrcards;
    @@ -1592,7 +1596,7 @@ int hisax_register(struct hisax_d_if *hisax_d_if, struct hisax_b_if *b_if[],
    cards[i].protocol = protocol;
    sprintf(id, "%s%d", name, i);
    nrcards++;
    - retval = checkcard(i, id, NULL, hisax_d_if->owner);
    + retval = checkcard(i, id, NULL, hisax_d_if->owner, hisax_cs_setup_card);
    if (retval == 0) { // yuck
    cards[i].typ = 0;
    nrcards--;
    diff --git a/drivers/isdn/hisax/hisax_cfg.h b/drivers/isdn/hisax/hisax_cfg.h
    index ca3fe62..17a2fea 100644
    --- a/drivers/isdn/hisax/hisax_cfg.h
    +++ b/drivers/isdn/hisax/hisax_cfg.h
    @@ -60,5 +60,7 @@ struct IsdnCard {
    IsdnCardState_t *cs;
    };

    +typedef int (*hisax_setup_func_t)(struct IsdnCard *card);
    +
    extern void HiSax_closecard(int);
    extern int hisax_init_pcmcia(void *, int *, IsdnCard_t *);
    --
    1.5.2.4
    -
    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-29 20:43    [W:0.026 / U:150.284 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site