b1884583fc
The i8042 module exports several symbols which may be used by other modules. Before this commit it would refuse to load (when built as a module itself) on systems without an i8042 controller. This is a problem specifically for the asus-nb-wmi module. Many Asus laptops support the Asus WMI interface. Some of them have an i8042 controller and need to use i8042_install_filter() to filter some kbd events. Other models do not have an i8042 controller (e.g. they use an USB attached kbd). Before this commit the asus-nb-wmi driver could not be loaded on Asus models without an i8042 controller, when the i8042 code was built as a module (as Arch Linux does) because the module_init function of the i8042 module would fail with -ENODEV and thus the i8042_install_filter symbol could not be loaded. This commit fixes this by exiting from module_init with a return code of 0 if no controller is found. It also adds a i8042_present bool to make the module_exit function a no-op in this case and also adds a check for i8042_present to the exported i8042_command function. The latter i8042_present check should not really be necessary because when builtin that function can already be used on systems without an i8042 controller, but better safe then sorry. Reported-and-tested-by: Marius Iacob <themariusus@gmail.com> Signed-off-by: Hans de Goede <hdegoede@redhat.com> Link: https://lore.kernel.org/r/20201008112628.3979-2-hdegoede@redhat.com Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com> |
||
---|---|---|
.. | ||
altera_ps2.c | ||
ambakmi.c | ||
ams_delta_serio.c | ||
apbps2.c | ||
arc_ps2.c | ||
ct82c710.c | ||
gscps2.c | ||
hil_mlc.c | ||
hp_sdc_mlc.c | ||
hp_sdc.c | ||
hyperv-keyboard.c | ||
i8042-io.h | ||
i8042-ip22io.h | ||
i8042-jazzio.h | ||
i8042-ppcio.h | ||
i8042-snirm.h | ||
i8042-sparcio.h | ||
i8042-unicore32io.h | ||
i8042-x86ia64io.h | ||
i8042.c | ||
i8042.h | ||
ioc3kbd.c | ||
Kconfig | ||
libps2.c | ||
maceps2.c | ||
Makefile | ||
olpc_apsp.c | ||
parkbd.c | ||
pcips2.c | ||
ps2-gpio.c | ||
ps2mult.c | ||
q40kbd.c | ||
rpckbd.c | ||
sa1111ps2.c | ||
serio_raw.c | ||
serio.c | ||
serport.c | ||
sun4i-ps2.c | ||
userio.c | ||
xilinx_ps2.c |