git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
linux 2.6.16.38 w/ vs2.0.3-rc1
[linux-2.6.git]
/
drivers
/
input
/
gameport
/
ns558.c
diff --git
a/drivers/input/gameport/ns558.c
b/drivers/input/gameport/ns558.c
index
3e2d28f
..
d2e55dc
100644
(file)
--- a/
drivers/input/gameport/ns558.c
+++ b/
drivers/input/gameport/ns558.c
@@
-252,14
+252,14
@@
static struct pnp_driver ns558_pnp_driver;
#endif
#endif
+static int pnp_registered = 0;
+
static int __init ns558_init(void)
{
int i = 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
/*
* 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++]);
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)
}
static void __exit ns558_exit(void)
@@
-283,7
+283,8
@@
static void __exit ns558_exit(void)
kfree(ns558);
}
kfree(ns558);
}
- pnp_unregister_driver(&ns558_pnp_driver);
+ if (pnp_registered)
+ pnp_unregister_driver(&ns558_pnp_driver);
}
module_init(ns558_init);
}
module_init(ns558_init);