From patchwork Thu Nov 5 23:34:01 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Duggan X-Patchwork-Id: 7564201 Return-Path: X-Original-To: patchwork-linux-input@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork1.web.kernel.org (Postfix) with ESMTP id C67699F36A for ; Thu, 5 Nov 2015 23:36:01 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id C515120649 for ; Thu, 5 Nov 2015 23:36:00 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id D24652037F for ; Thu, 5 Nov 2015 23:35:59 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S965410AbbKEXeo (ORCPT ); Thu, 5 Nov 2015 18:34:44 -0500 Received: from us-mx2.synaptics.com ([192.147.44.131]:30529 "EHLO us-mx1.synaptics.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S965347AbbKEXel (ORCPT ); Thu, 5 Nov 2015 18:34:41 -0500 Received: from unknown (HELO securemail.synaptics.com) ([172.20.21.135]) by us-mx1.synaptics.com with ESMTP; 05 Nov 2015 15:34:40 -0800 Received: from USW-OWA1.synaptics-inc.local ([10.20.24.16]) by securemail.synaptics.com (PGP Universal service); Thu, 05 Nov 2015 16:35:04 -0800 X-PGP-Universal: processed; by securemail.synaptics.com on Thu, 05 Nov 2015 16:35:04 -0800 Received: from noble.synaptics-inc.local (10.4.10.145) by USW-OWA1.synaptics-inc.local (10.20.24.16) with Microsoft SMTP Server (TLS) id 14.3.248.2; Thu, 5 Nov 2015 15:34:40 -0800 From: Andrew Duggan To: , CC: Benjamin Tissoires , Dmitry Torokhov , Linus Walleij , Benjamin Tissoires , Christopher Heiny , Stephen Chandler Paul Subject: [PATCH 01/26] Input: synaptics-rmi4 - embed the function modules in rmi_core Date: Thu, 5 Nov 2015 15:34:01 -0800 Message-ID: <1446766466-30043-2-git-send-email-aduggan@synaptics.com> X-Mailer: git-send-email 2.1.4 In-Reply-To: <1446766466-30043-1-git-send-email-aduggan@synaptics.com> References: <1446766466-30043-1-git-send-email-aduggan@synaptics.com> MIME-Version: 1.0 X-Originating-IP: [10.4.10.145] Sender: linux-input-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-input@vger.kernel.org X-Spam-Status: No, score=-6.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_HI, T_RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: Benjamin Tissoires the function modules can not be auto-loaded by udev. So at boot, the functions are not there and the device is not properly populated. Force the functions to be embedded in rmi_core so that when the touchpad is there, the functions are there too. There is not much use of having the functions separate anyway Signed-off-by: Benjamin Tissoires Tested-by: Andrew Duggan --- drivers/input/rmi4/Kconfig | 5 +---- drivers/input/rmi4/Makefile | 2 +- drivers/input/rmi4/rmi_bus.c | 12 +++++++++++- drivers/input/rmi4/rmi_driver.h | 8 ++++++++ drivers/input/rmi4/rmi_f11.c | 14 ++++++++------ 5 files changed, 29 insertions(+), 12 deletions(-) diff --git a/drivers/input/rmi4/Kconfig b/drivers/input/rmi4/Kconfig index d0c7b6e..5e3890e 100644 --- a/drivers/input/rmi4/Kconfig +++ b/drivers/input/rmi4/Kconfig @@ -37,7 +37,7 @@ config RMI4_I2C This feature is not currently available as a loadable module. config RMI4_F11 - tristate "RMI4 Function 11 (2D pointing)" + bool "RMI4 Function 11 (2D pointing)" depends on RMI4_CORE help Say Y here if you want to add support for RMI4 function 11. @@ -46,9 +46,6 @@ config RMI4_F11 touchpads. For sensors that support relative pointing, F11 also provides mouse input. - To compile this driver as a module, choose M here: the - module will be called rmi-f11. - config RMI4_F11_PEN bool "RMI4 F11 Pen Support" depends on RMI4_F11 diff --git a/drivers/input/rmi4/Makefile b/drivers/input/rmi4/Makefile index 5c6bad5..63bc595 100644 --- a/drivers/input/rmi4/Makefile +++ b/drivers/input/rmi4/Makefile @@ -2,7 +2,7 @@ obj-$(CONFIG_RMI4_CORE) += rmi_core.o rmi_core-y := rmi_bus.o rmi_driver.o rmi_f01.o # Function drivers -obj-$(CONFIG_RMI4_F11) += rmi_f11.o +rmi_core-$(CONFIG_RMI4_F11) += rmi_f11.o # Transports obj-$(CONFIG_RMI4_I2C) += rmi_i2c.o diff --git a/drivers/input/rmi4/rmi_bus.c b/drivers/input/rmi4/rmi_bus.c index 6e0454a..bbc80e6 100644 --- a/drivers/input/rmi4/rmi_bus.c +++ b/drivers/input/rmi4/rmi_bus.c @@ -383,15 +383,24 @@ static int __init rmi_bus_init(void) goto err_unregister_bus; } + error = rmi_register_f11_handler(); + if (error) { + pr_err("%s: error registering the RMI F11 handler: %d\n", + __func__, error); + goto err_unregister_f01; + } + error = rmi_register_physical_driver(); if (error) { pr_err("%s: error registering the RMI physical driver: %d\n", __func__, error); - goto err_unregister_f01; + goto err_unregister_f11; } return 0; +err_unregister_f11: + rmi_unregister_f11_handler(); err_unregister_f01: rmi_unregister_f01_handler(); err_unregister_bus: @@ -409,6 +418,7 @@ static void __exit rmi_bus_exit(void) */ rmi_unregister_physical_driver(); + rmi_unregister_f11_handler(); rmi_unregister_f01_handler(); rmi_bus_teardown_debugfs(); bus_unregister(&rmi_bus_type); diff --git a/drivers/input/rmi4/rmi_driver.h b/drivers/input/rmi4/rmi_driver.h index 34f7a7d..dda564f 100644 --- a/drivers/input/rmi4/rmi_driver.h +++ b/drivers/input/rmi4/rmi_driver.h @@ -113,4 +113,12 @@ void rmi_unregister_physical_driver(void); int rmi_register_f01_handler(void); void rmi_unregister_f01_handler(void); +#ifdef CONFIG_RMI4_F11 +int rmi_register_f11_handler(void); +void rmi_unregister_f11_handler(void); +#else +static inline int rmi_register_f11_handler(void) { return 0; } +static inline void rmi_unregister_f11_handler(void) {} +#endif + #endif diff --git a/drivers/input/rmi4/rmi_f11.c b/drivers/input/rmi4/rmi_f11.c index 7af4f68..2e1d506 100644 --- a/drivers/input/rmi4/rmi_f11.c +++ b/drivers/input/rmi4/rmi_f11.c @@ -1537,10 +1537,12 @@ static struct rmi_function_handler rmi_f11_handler = { .attention = rmi_f11_attention, }; -module_rmi_driver(rmi_f11_handler); +int __init rmi_register_f11_handler(void) +{ + return rmi_register_function_handler(&rmi_f11_handler); +} -MODULE_AUTHOR("Christopher Heiny