On Thu, Oct 08, 2020 at 01:26:28PM +0200, Hans de Goede wrote: > 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@xxxxxxxxx> > Signed-off-by: Hans de Goede <hdegoede@xxxxxxxxxx> Applied, thank you. -- Dmitry