X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=drivers%2Finput%2Fgameport%2Fns558.c;h=d2e55dc956bafd3477ebd4e7ea448263b6375fcd;hb=987b0145d94eecf292d8b301228356f44611ab7c;hp=3e2d28f263e9ad56c7b2cb7f3c4d697b28e849db;hpb=f7ed79d23a47594e7834d66a8f14449796d4f3e6;p=linux-2.6.git diff --git a/drivers/input/gameport/ns558.c b/drivers/input/gameport/ns558.c index 3e2d28f26..d2e55dc95 100644 --- a/drivers/input/gameport/ns558.c +++ b/drivers/input/gameport/ns558.c @@ -252,14 +252,14 @@ static struct pnp_driver ns558_pnp_driver; #endif +static int pnp_registered = 0; + static int __init ns558_init(void) { int i = 0; - int error; - error = pnp_register_driver(&ns558_pnp_driver); - if (error && error != -ENODEV) /* should be ENOSYS really */ - return error; + if (pnp_register_driver(&ns558_pnp_driver) >= 0) + pnp_registered = 1; /* * Probe ISA ports after PnP, so that PnP ports that are already @@ -270,7 +270,7 @@ static int __init ns558_init(void) while (ns558_isa_portlist[i]) ns558_isa_probe(ns558_isa_portlist[i++]); - return list_empty(&ns558_list) && error ? -ENODEV : 0; + return (list_empty(&ns558_list) && !pnp_registered) ? -ENODEV : 0; } static void __exit ns558_exit(void) @@ -283,7 +283,8 @@ static void __exit ns558_exit(void) kfree(ns558); } - pnp_unregister_driver(&ns558_pnp_driver); + if (pnp_registered) + pnp_unregister_driver(&ns558_pnp_driver); } module_init(ns558_init);