Revert r355806: kbd drivers: don't double register keyboard drivers
r356087 made it rather innocuous to double-register built-in keyboard drivers; we now set a flag to indicate that it's been registered and only act once on a registration anyways. There is no misleading here, as the follow-up kbd_delete_driver will actually remove the driver as needed now that the linker set isn't also consulted after kbdinit.
This commit is contained in:
parent
f46412c021
commit
2899979df9
@ -850,15 +850,11 @@ akbd_modevent(module_t mod, int type, void *data)
|
||||
{
|
||||
switch (type) {
|
||||
case MOD_LOAD:
|
||||
#ifdef KLD_MODULE
|
||||
kbd_add_driver(&akbd_kbd_driver);
|
||||
#endif
|
||||
break;
|
||||
|
||||
case MOD_UNLOAD:
|
||||
#ifdef KLD_MODULE
|
||||
kbd_delete_driver(&akbd_kbd_driver);
|
||||
#endif
|
||||
break;
|
||||
|
||||
default:
|
||||
|
@ -983,8 +983,6 @@ KEYBOARD_DRIVER(gpiokeys, gpiokeyssw, gpiokeys_configure);
|
||||
static int
|
||||
gpiokeys_driver_load(module_t mod, int what, void *arg)
|
||||
{
|
||||
|
||||
#ifdef KLD_MODULE
|
||||
switch (what) {
|
||||
case MOD_LOAD:
|
||||
kbd_add_driver(&gpiokeys_kbd_driver);
|
||||
@ -993,7 +991,6 @@ gpiokeys_driver_load(module_t mod, int what, void *arg)
|
||||
kbd_delete_driver(&gpiokeys_kbd_driver);
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
return (0);
|
||||
}
|
||||
|
||||
|
@ -490,8 +490,6 @@ hv_kbd_intr(hv_kbd_sc *sc)
|
||||
int
|
||||
hvkbd_driver_load(module_t mod, int what, void *arg)
|
||||
{
|
||||
|
||||
#ifdef KLD_MODULE
|
||||
switch (what) {
|
||||
case MOD_LOAD:
|
||||
kbd_add_driver(&hvkbd_kbd_driver);
|
||||
@ -500,7 +498,6 @@ hvkbd_driver_load(module_t mod, int what, void *arg)
|
||||
kbd_delete_driver(&hvkbd_kbd_driver);
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
return (0);
|
||||
}
|
||||
|
||||
|
@ -1423,15 +1423,11 @@ kbdmux_modevent(module_t mod, int type, void *data)
|
||||
|
||||
switch (type) {
|
||||
case MOD_LOAD:
|
||||
#ifdef KLD_MODULE
|
||||
if ((error = kbd_add_driver(&kbdmux_kbd_driver)) != 0)
|
||||
break;
|
||||
#endif
|
||||
|
||||
if ((sw = kbd_get_switch(KEYBOARD_NAME)) == NULL) {
|
||||
#ifdef KLD_MODULE
|
||||
kbd_delete_driver(&kbdmux_kbd_driver);
|
||||
#endif
|
||||
error = ENXIO;
|
||||
break;
|
||||
}
|
||||
@ -1440,18 +1436,14 @@ kbdmux_modevent(module_t mod, int type, void *data)
|
||||
|
||||
if ((error = (*sw->probe)(0, NULL, 0)) != 0 ||
|
||||
(error = (*sw->init)(0, &kbd, NULL, 0)) != 0) {
|
||||
#ifdef KLD_MODULE
|
||||
kbd_delete_driver(&kbdmux_kbd_driver);
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
|
||||
#ifdef KBD_INSTALL_CDEV
|
||||
if ((error = kbd_attach(kbd)) != 0) {
|
||||
(*sw->term)(kbd);
|
||||
#ifdef KLD_MODULE
|
||||
kbd_delete_driver(&kbdmux_kbd_driver);
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
@ -1462,9 +1454,7 @@ kbdmux_modevent(module_t mod, int type, void *data)
|
||||
kbd_detach(kbd);
|
||||
#endif
|
||||
(*sw->term)(kbd);
|
||||
#ifdef KLD_MODULE
|
||||
kbd_delete_driver(&kbdmux_kbd_driver);
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
break;
|
||||
@ -1480,9 +1470,7 @@ kbdmux_modevent(module_t mod, int type, void *data)
|
||||
kbd_detach(kbd);
|
||||
#endif
|
||||
(*sw->term)(kbd);
|
||||
#ifdef KLD_MODULE
|
||||
kbd_delete_driver(&kbdmux_kbd_driver);
|
||||
#endif
|
||||
}
|
||||
error = 0;
|
||||
break;
|
||||
|
@ -2290,7 +2290,6 @@ KEYBOARD_DRIVER(ukbd, ukbdsw, ukbd_configure);
|
||||
static int
|
||||
ukbd_driver_load(module_t mod, int what, void *arg)
|
||||
{
|
||||
#ifdef KLD_MODULE
|
||||
switch (what) {
|
||||
case MOD_LOAD:
|
||||
kbd_add_driver(&ukbd_kbd_driver);
|
||||
@ -2299,7 +2298,6 @@ ukbd_driver_load(module_t mod, int what, void *arg)
|
||||
kbd_delete_driver(&ukbd_kbd_driver);
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
return (0);
|
||||
}
|
||||
|
||||
|
@ -1360,15 +1360,11 @@ vkbd_modevent(module_t mod, int type, void *data)
|
||||
clone_cleanup(&vkbd_dev_clones);
|
||||
return (ENOMEM);
|
||||
}
|
||||
#ifdef KLD_MODULE
|
||||
kbd_add_driver(&vkbd_kbd_driver);
|
||||
#endif
|
||||
break;
|
||||
|
||||
case MOD_UNLOAD:
|
||||
#ifdef KLD_MODULE
|
||||
kbd_delete_driver(&vkbd_kbd_driver);
|
||||
#endif
|
||||
EVENTHANDLER_DEREGISTER(dev_clone, tag);
|
||||
clone_cleanup(&vkbd_dev_clones);
|
||||
break;
|
||||
|
Loading…
x
Reference in New Issue
Block a user