From: Jiri Slaby Enable ISA cards before pci_register_driver and then, enable each PCI card in probe function. Signed-off-by: Jiri Slaby Cc: Alan Cox Signed-off-by: Andrew Morton --- drivers/char/istallion.c | 18 +++++++++++------- 1 files changed, 11 insertions(+), 7 deletions(-) diff -puN drivers/char/istallion.c~char-istallion-fix-enabling drivers/char/istallion.c --- a/drivers/char/istallion.c~char-istallion-fix-enabling +++ a/drivers/char/istallion.c @@ -3968,6 +3968,10 @@ static int __devinit stli_pciprobe(struc brdp->state |= BST_PROBED; pci_set_drvdata(pdev, brdp); + EBRDENABLE(brdp); + brdp->enable = NULL; + brdp->disable = NULL; + return 0; err_null: stli_brds[brdp->brdnr] = NULL; @@ -4054,13 +4058,6 @@ static int stli_initbrds(void) if (retval > 0) found += retval; - retval = pci_register_driver(&stli_pcidriver); - if (retval && found == 0) { - printk(KERN_ERR "Neither isa nor eisa cards found nor pci " - "driver can be registered!\n"); - goto err; - } - /* * All found boards are initialized. Now for a little optimization, if * no boards are sharing the "shared memory" regions then we can just @@ -4099,6 +4096,13 @@ static int stli_initbrds(void) } } + retval = pci_register_driver(&stli_pcidriver); + if (retval && found == 0) { + printk(KERN_ERR "Neither isa nor eisa cards found nor pci " + "driver can be registered!\n"); + goto err; + } + return 0; err: return retval; _