From 2ce1ffbe177bf2bf5bb77a49a151eda1713c3f24 Mon Sep 17 00:00:00 2001 From: Jiri Slaby Date: Fri, 8 Dec 2006 02:38:27 -0800 Subject: [PATCH] --- yaml --- r: 43668 b: refs/heads/master c: eae4436a4e513f5f912dcc5dac79038f22fb6403 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/char/mxser_new.c | 109 ++++++++++++--------------------- 2 files changed, 41 insertions(+), 70 deletions(-) diff --git a/[refs] b/[refs] index 64244825a1b4..bf4f85595dc6 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: ead568c9cdab2592abdbd1f023931665cc24b5db +refs/heads/master: eae4436a4e513f5f912dcc5dac79038f22fb6403 diff --git a/trunk/drivers/char/mxser_new.c b/trunk/drivers/char/mxser_new.c index 47af0bba5240..27871e503d80 100644 --- a/trunk/drivers/char/mxser_new.c +++ b/trunk/drivers/char/mxser_new.c @@ -2803,7 +2803,8 @@ static int __init mxser_module_init(void) { struct pci_dev *pdev = NULL; struct mxser_board *brd; - unsigned int i, m; + unsigned long cap; + unsigned int i, m, isaloop; int retval, b, n; pr_debug("Loading module mxser ...\n"); @@ -2839,84 +2840,54 @@ static int __init mxser_module_init(void) m = 0; /* Start finding ISA boards here */ - for (b = 0; b < MXSER_BOARDS && m < MXSER_BOARDS; b++) { - int cap; - - if (!(cap = mxserBoardCAP[b])) - continue; - - brd = &mxser_boards[m]; - retval = mxser_get_ISA_conf(cap, brd); - - if (retval != 0) - printk(KERN_INFO "Found MOXA %s board (CAP=0x%x)\n", - mxser_brdname[brd->board_type - 1], ioaddr[b]); - - if (retval <= 0) { - if (retval == MXSER_ERR_IRQ) - printk(KERN_ERR "Invalid interrupt number, " - "board not configured\n"); - else if (retval == MXSER_ERR_IRQ_CONFLIT) - printk(KERN_ERR "Invalid interrupt number, " - "board not configured\n"); - else if (retval == MXSER_ERR_VECTOR) - printk(KERN_ERR "Invalid interrupt vector, " - "board not configured\n"); - else if (retval == MXSER_ERR_IOADDR) - printk(KERN_ERR "Invalid I/O address, " - "board not configured\n"); + for (isaloop = 0; isaloop < 2; isaloop++) + for (b = 0; b < MXSER_BOARDS && m < MXSER_BOARDS; b++) { + if (!isaloop) + cap = mxserBoardCAP[b]; /* predefined */ + else + cap = ioaddr[b]; /* module param */ - continue; - } + if (!cap) + continue; - brd->pdev = NULL; + brd = &mxser_boards[m]; + retval = mxser_get_ISA_conf(cap, brd); - /* mxser_initbrd will hook ISR. */ - if (mxser_initbrd(brd) < 0) - continue; + if (retval != 0) + printk(KERN_INFO "Found MOXA %s board " + "(CAP=0x%x)\n", + mxser_brdname[brd->board_type - 1], + ioaddr[b]); - m++; - } + if (retval <= 0) { + if (retval == MXSER_ERR_IRQ) + printk(KERN_ERR "Invalid interrupt " + "number, board not " + "configured\n"); + else if (retval == MXSER_ERR_IRQ_CONFLIT) + printk(KERN_ERR "Invalid interrupt " + "number, board not " + "configured\n"); + else if (retval == MXSER_ERR_VECTOR) + printk(KERN_ERR "Invalid interrupt " + "vector, board not " + "configured\n"); + else if (retval == MXSER_ERR_IOADDR) + printk(KERN_ERR "Invalid I/O address, " + "board not configured\n"); - /* Start finding ISA boards from module arg */ - for (b = 0; b < MXSER_BOARDS && m < MXSER_BOARDS; b++) { - unsigned long cap; + continue; + } - if (!(cap = ioaddr[b])) - continue; + brd->pdev = NULL; - brd = &mxser_boards[m]; - retval = mxser_get_ISA_conf(cap, &mxser_boards[m]); - - if (retval != 0) - printk(KERN_INFO "Found MOXA %s board (CAP=0x%x)\n", - mxser_brdname[brd->board_type - 1], ioaddr[b]); - - if (retval <= 0) { - if (retval == MXSER_ERR_IRQ) - printk(KERN_ERR "Invalid interrupt number, " - "board not configured\n"); - else if (retval == MXSER_ERR_IRQ_CONFLIT) - printk(KERN_ERR "Invalid interrupt number, " - "board not configured\n"); - else if (retval == MXSER_ERR_VECTOR) - printk(KERN_ERR "Invalid interrupt vector, " - "board not configured\n"); - else if (retval == MXSER_ERR_IOADDR) - printk(KERN_ERR "Invalid I/O address, " - "board not configured\n"); + /* mxser_initbrd will hook ISR. */ + if (mxser_initbrd(brd) < 0) + continue; - continue; + m++; } - brd->pdev = NULL; - /* mxser_initbrd will hook ISR. */ - if (mxser_initbrd(brd) < 0) - continue; - - m++; - } - /* start finding PCI board here */ n = ARRAY_SIZE(mxser_pcibrds) - 1; b = 0;