From 4828b47192f8a11e400987fa841dedf1ec6a9f98 Mon Sep 17 00:00:00 2001 From: Konstantin Makariev Date: Tue, 15 Dec 2020 10:02:37 -0600 Subject: [PATCH] synaptics_tcm_mmi: mmi status check Added MMI status check to driver's probe. Kernel module will be loaded only when MMI status check succeed. Driver node needs to have property mmi,status in device tree for this to work. Change-Id: I93a077aee70f45dde1aa6c760b7cd73ed7cf4b3e Signed-off-by: Konstantin Makariev Reviewed-on: https://gerrit.mot.com/1827965 SME-Granted: SME Approvals Granted SLTApproved: Slta Waiver Tested-by: Jira Key Reviewed-by: Ling Jin Submit-Approved: Jira Key --- .../touchscreen/synaptics_tcm_mmi_v2/synaptics_bus/Kbuild | 3 ++- .../synaptics_tcm_mmi_v2/synaptics_bus/synaptics_i2c.c | 6 ++++++ .../synaptics_tcm_mmi_v2/synaptics_core/Android.mk | 1 + 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/drivers/input/touchscreen/synaptics_tcm_mmi_v2/synaptics_bus/Kbuild b/drivers/input/touchscreen/synaptics_tcm_mmi_v2/synaptics_bus/Kbuild index 2e3eec5411bf..dc356420f482 100644 --- a/drivers/input/touchscreen/synaptics_tcm_mmi_v2/synaptics_bus/Kbuild +++ b/drivers/input/touchscreen/synaptics_tcm_mmi_v2/synaptics_bus/Kbuild @@ -5,6 +5,7 @@ EXTRA_CFLAGS += -I$(ANDROID_BUILD_TOP)/motorola/kernel/modules/include \ ifneq ($(filter m y,$(USE_TOUCHSCREEN_MMI_I2C)),) obj-m += synaptics_i2c.o + KBUILD_EXTRA_SYMBOLS += $(CURDIR)/$(KBUILD_EXTMOD)/../../../../mmi_info/Module.symvers else - obj-m += synaptics_spi.o + obj-m += synaptics_spi.o endif diff --git a/drivers/input/touchscreen/synaptics_tcm_mmi_v2/synaptics_bus/synaptics_i2c.c b/drivers/input/touchscreen/synaptics_tcm_mmi_v2/synaptics_bus/synaptics_i2c.c index 6c6acfcedddb..b594dea71305 100644 --- a/drivers/input/touchscreen/synaptics_tcm_mmi_v2/synaptics_bus/synaptics_i2c.c +++ b/drivers/input/touchscreen/synaptics_tcm_mmi_v2/synaptics_bus/synaptics_i2c.c @@ -36,6 +36,7 @@ #include #include +#include #include "../synaptics_core/synaptics_core.h" #define XFER_ATTEMPTS 10 @@ -462,6 +463,11 @@ static int syna_tcm_i2c_probe(struct i2c_client *i2c, i2c_set_clientdata(i2c, syna_tcm_i2c_device); + if (i2c->dev.of_node && !mmi_device_is_available(i2c->dev.of_node)) { + LOGE(&i2c->dev, "%s: mmi: device not supported\n", __func__); + return -ENODEV; + } + #ifdef CONFIG_OF hw_if.bdata = devm_kzalloc(&i2c->dev, sizeof(*hw_if.bdata), GFP_KERNEL); if (!hw_if.bdata) { diff --git a/drivers/input/touchscreen/synaptics_tcm_mmi_v2/synaptics_core/Android.mk b/drivers/input/touchscreen/synaptics_tcm_mmi_v2/synaptics_core/Android.mk index 35677cbe9f6f..789915335605 100644 --- a/drivers/input/touchscreen/synaptics_tcm_mmi_v2/synaptics_core/Android.mk +++ b/drivers/input/touchscreen/synaptics_tcm_mmi_v2/synaptics_core/Android.mk @@ -20,6 +20,7 @@ ifneq ($(findstring touchscreen_mmi.ko,$(BOARD_VENDOR_KERNEL_MODULES)),) LOCAL_ADDITIONAL_DEPENDENCIES += $(KERNEL_MODULES_OUT)/touchscreen_mmi.ko endif ifneq ($(findstring synaptics_i2c.ko,$(BOARD_VENDOR_KERNEL_MODULES)),) + LOCAL_ADDITIONAL_DEPENDENCIES += $(KERNEL_MODULES_OUT)/mmi_info.ko LOCAL_ADDITIONAL_DEPENDENCIES += $(KERNEL_MODULES_OUT)/synaptics_i2c.ko else LOCAL_ADDITIONAL_DEPENDENCIES += $(KERNEL_MODULES_OUT)/synaptics_spi.ko