From 6e7ca5ef6e39f4e6a3d3d0735bb4a0d893a288a9 Mon Sep 17 00:00:00 2001 From: Konstantin Makariev Date: Tue, 15 Dec 2020 09:59:07 -0600 Subject: [PATCH] synaptics_mmi_class: banks cli bringup This change combines the following: 1) added MMI status check into probe 2) added module dependencies 3) fixed up panel notifications Change-Id: I01a541957e3b1bdddd14b6caee4717031ff1a1fa Signed-off-by: Konstantin Makariev Reviewed-on: https://gerrit.mot.com/1827963 SLTApproved: Slta Waiver SME-Granted: SME Approvals Granted Tested-by: Jira Key Reviewed-by: Ryan Lattrel Reviewed-by: Ling Jin Submit-Approved: Jira Key --- .../synaptics_mmi_class/Android.mk | 3 +++ .../touchscreen/synaptics_mmi_class/Kbuild | 21 ++++++++++++++++--- .../synaptics_mmi_class/synaptics_dsx_i2c.c | 20 ++++++++++-------- .../synaptics_mmi_class/synaptics_dsx_i2c.h | 7 +++---- 4 files changed, 35 insertions(+), 16 deletions(-) diff --git a/drivers/input/touchscreen/synaptics_mmi_class/Android.mk b/drivers/input/touchscreen/synaptics_mmi_class/Android.mk index 4088d97f685f..9f6ca2e6bd85 100644 --- a/drivers/input/touchscreen/synaptics_mmi_class/Android.mk +++ b/drivers/input/touchscreen/synaptics_mmi_class/Android.mk @@ -8,6 +8,8 @@ include $(CLEAR_VARS) LOCAL_MODULE := synaptics_mmi.ko LOCAL_MODULE_TAGS := optional LOCAL_MODULE_PATH := $(KERNEL_MODULES_OUT) +LOCAL_ADDITIONAL_DEPENDENCIES += $(KERNEL_MODULES_OUT)/mmi_info.ko +LOCAL_ADDITIONAL_DEPENDENCIES += $(KERNEL_MODULES_OUT)/touchscreen_mmi.ko include $(DLKM_DIR)/AndroidKernelModule.mk include $(CLEAR_VARS) @@ -28,4 +30,5 @@ LOCAL_MODULE_TAGS := optional LOCAL_MODULE_PATH := $(KERNEL_MODULES_OUT) include $(DLKM_DIR)/AndroidKernelModule.mk +KBUILD_OPTIONS_GKI += GKI_OBJ_MODULE_DIR=gki endif diff --git a/drivers/input/touchscreen/synaptics_mmi_class/Kbuild b/drivers/input/touchscreen/synaptics_mmi_class/Kbuild index 78b150a05f80..6da2e4cd3719 100644 --- a/drivers/input/touchscreen/synaptics_mmi_class/Kbuild +++ b/drivers/input/touchscreen/synaptics_mmi_class/Kbuild @@ -1,13 +1,28 @@ # add -Wall to try to catch everything we can. EXTRA_CFLAGS += -Wall -EXTRA_CFLAGS += -I$(TOP)/motorola/kernel/modules/include \ - -I$(TOP)/motorola/kernel/modules/drivers/input/touchscreen/synaptics_mmi_class +EXTRA_CFLAGS += -I$(ANDROID_BUILD_TOP)/motorola/kernel/modules/include \ + -I$(ANDROID_BUILD_TOP)/motorola/kernel/modules/drivers/input/touchscreen/synaptics_mmi_class + +ifneq ($(filter banks%, $(TARGET_PRODUCT)),) + EXTRA_CFLAGS += -DSOFTDEP_GPIO_PCAL6408 +endif ifneq ($(filter m y,$(CONFIG_INPUT_TOUCHSCREEN_MMI)),) -EXTRA_CFLAGS += -DCONFIG_INPUT_TOUCHSCREEN_MMI -DCONFIG_PANEL_NOTIFICATIONS +EXTRA_CFLAGS += -DCONFIG_INPUT_TOUCHSCREEN_MMI + +ifneq ($(filter m y, $(CONFIG_DRM_PANEL_NOTIFICATIONS)),) + EXTRA_CFLAGS += -DCONFIG_DRM_PANEL_NOTIFICATIONS +endif +ifneq ($(filter m y, $(CONFIG_PANEL_NOTIFICATIONS)),) + EXTRA_CFLAGS += -DCONFIG_PANEL_NOTIFICATIONS +endif synaptics_mmi-objs = synaptics_dsx_i2c.o synaptics_mmi_class.o synaptics_dsx_instance.o +KBUILD_EXTRA_SYMBOLS += \ + $(CURDIR)/$(KBUILD_EXTMOD)/../touchscreen_mmi/$(GKI_OBJ_MODULE_DIR)/Module.symvers \ + $(CURDIR)/$(KBUILD_EXTMOD)/../../../mmi_info/$(GKI_OBJ_MODULE_DIR)/Module.symvers + obj-m += synaptics_mmi.o obj-m += synaptics_dsx_fw_update.o obj-m += synaptics_dsx_rmi_dev.o diff --git a/drivers/input/touchscreen/synaptics_mmi_class/synaptics_dsx_i2c.c b/drivers/input/touchscreen/synaptics_mmi_class/synaptics_dsx_i2c.c index 19cf53de6b36..08ed73329b64 100644 --- a/drivers/input/touchscreen/synaptics_mmi_class/synaptics_dsx_i2c.c +++ b/drivers/input/touchscreen/synaptics_mmi_class/synaptics_dsx_i2c.c @@ -48,6 +48,7 @@ #endif #endif +#include #include "synaptics_dsx_i2c.h" static struct workqueue_struct *det_workqueue; @@ -1313,7 +1314,7 @@ clip_area: } /* ASCII names order MUST match enum */ -static const char const *ascii_names[] = { "aod", "stats", "folio", +static const char *ascii_names[] = { "aod", "stats", "folio", "charger", "wakeup", "fps", "query", "runtime", "na" }; @@ -6342,13 +6343,6 @@ static int rmi_reboot(struct notifier_block *nb, /* At this point, we're all good with clean-up works */ synaptics_dsx_set_state_safe(rmi4_data, STATE_INVALID); -#if defined(CONFIG_MMI_PANEL_NOTIFICATIONS) - mmi_panel_unregister_notifier(&rmi4_data->panel_nb); -#elif defined(CONFIG_DRM) - msm_drm_unregister_client(&rmi4_data->panel_nb); -#elif defined(CONFIG_FB) - fb_unregister_client(&rmi4_data->panel_nb); -#endif if (rmi4_data->irq_enabled) { rmi4_data->irq_enabled = false; disable_irq(rmi4_data->irq); @@ -6523,7 +6517,6 @@ static int synaptics_rmi4_hw_init(struct synaptics_rmi4_data *rmi4_data) } } - rmi4_data->pm_qos_irq.irq = rmi4_data->irq; synaptics_dsx_sensor_ready_state(rmi4_data, true); rmi4_data->rmi_reboot.notifier_call = rmi_reboot; @@ -6640,6 +6633,11 @@ static int synaptics_rmi4_probe(struct i2c_client *client, return -EIO; } + if (client->dev.of_node && !mmi_device_is_available(client->dev.of_node)) { + dev_err(&client->dev, "%s: mmi: device not supported\n", __func__); + return -ENODEV; + } + rmi4_data = kzalloc(sizeof(*rmi4_data), GFP_KERNEL); if (!rmi4_data) { dev_err(&client->dev, @@ -7114,3 +7112,7 @@ MODULE_AUTHOR("Synaptics, Inc."); MODULE_DESCRIPTION("Synaptics DSX I2C Touch Driver"); MODULE_LICENSE("GPL v2"); MODULE_VERSION(SYNAPTICS_DSX_DRIVER_VERSION); + +#ifdef SOFTDEP_GPIO_PCAL6408 +MODULE_SOFTDEP("pre: gpio-pcal6408"); +#endif diff --git a/drivers/input/touchscreen/synaptics_mmi_class/synaptics_dsx_i2c.h b/drivers/input/touchscreen/synaptics_mmi_class/synaptics_dsx_i2c.h index be1b25c5bbb2..516e77d73cfa 100644 --- a/drivers/input/touchscreen/synaptics_mmi_class/synaptics_dsx_i2c.h +++ b/drivers/input/touchscreen/synaptics_mmi_class/synaptics_dsx_i2c.h @@ -36,8 +36,8 @@ #include #include #endif -#if defined(CONFIG_MMI_PANEL_NOTIFICATIONS) -#include +#if defined(CONFIG_PANEL_NOTIFICATIONS) +#include #elif defined(CONFIG_DRM) #include #endif @@ -518,7 +518,7 @@ struct synaptics_rmi4_data { struct regulator *vdd_quirk; struct mutex rmi4_io_ctrl_mutex; struct mutex state_mutex; -#if defined(CONFIG_MMI_PANEL_NOTIFICATIONS) +#if defined(CONFIG_PANEL_NOTIFICATIONS) struct mmi_notifier panel_nb; #elif defined(CONFIG_FB) struct notifier_block panel_nb; @@ -594,7 +594,6 @@ struct synaptics_rmi4_data { struct mutex rmi4_exp_init_mutex; uint32_t pm_qos_latency; - struct pm_qos_request pm_qos_irq; struct reporting_ctrl rctrl; unsigned char tsb_buff_clean_flag;