Register mmi_relay notification for touchscreen

TP:
Register mmi_relay notify in  touchscreen class to receive
FOD status change events.

Change-Id: I540b012e12551b949800436a65b0b0a0d9676a38
Reviewed-on: https://gerrit.mot.com/1770280
SME-Granted: SME Approvals Granted
SLTApproved: Slta Waiver
Tested-by: Jira Key
Reviewed-by: Konstantin Makariev <kmakariev@motorola.com>
Reviewed-by: Jianqi Yang <yangj@motorola.com>
Submit-Approved: Jira Key
This commit is contained in:
litong 2020-11-11 11:28:18 +08:00 • committed by litong
commit b1ff78b885
3 changed files with 20 additions and 24 deletions

View file

@ -26,5 +26,6 @@ LOCAL_MODULE := touchscreen_mmi.ko
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_PATH := $(KERNEL_MODULES_OUT)
LOCAL_ADDITIONAL_DEPENDENCIES := $(KERNEL_MODULES_OUT)/sensors_class.ko
LOCAL_ADDITIONAL_DEPENDENCIES += $(KERNEL_MODULES_OUT)/mmi_relay.ko
KBUILD_OPTIONS_GKI += GKI_OBJ_MODULE_DIR=gki
include $(DLKM_DIR)/AndroidKernelModule.mk

View file

@ -25,3 +25,4 @@ obj-m := touchscreen_mmi.o
touchscreen_mmi-objs := touchscreen_mmi_class.o touchscreen_mmi_panel.o touchscreen_mmi_notif.o touchscreen_mmi_gesture.o
KBUILD_EXTRA_SYMBOLS += $(CURDIR)/$(KBUILD_EXTMOD)/../../../sensors/$(GKI_OBJ_MODULE_DIR)/Module.symvers
KBUILD_EXTRA_SYMBOLS += $(CURDIR)/$(KBUILD_EXTMOD)/../../../mmi_relay/$(GKI_OBJ_MODULE_DIR)/Module.symvers

View file

@ -17,7 +17,7 @@
#include <linux/usb.h>
#include <linux/power_supply.h>
#include <linux/touchscreen_mmi.h>
#include <linux/fingerprint_mmi.h>
#include <linux/mmi_relay.h>
#if defined(CONFIG_DRM_DYNAMIC_REFRESH_RATE)
extern struct blocking_notifier_head dsi_freq_head;
@ -376,34 +376,28 @@ static int ts_mmi_fps_cb(struct notifier_block *self,
}
static int ts_mmi_fps_notifier_register(struct ts_mmi_dev *touch_cdev, bool enable) {
int (*register_link)(struct notifier_block *nb, unsigned long stype, bool report);
int (*unregister_link)(struct notifier_block *nb, unsigned long stype);
int ret;
if (enable) {
register_link = symbol_get(FPS_register_notifier);
if (register_link) {
touch_cdev->fps_notif.notifier_call = ts_mmi_fps_cb;
ret = register_link(&touch_cdev->fps_notif, 0xBEEF, false);
symbol_put(FPS_register_notifier);
if (ret < 0) {
dev_err(DEV_TS,
"Failed to register fps_notifier: %d\n", ret);
return ret;
}
touch_cdev->is_fps_registered = true;
dev_info(DEV_TS, "Register fps_notifier OK\n");
} else
dev_err(DEV_TS, "no FPS_register_notifier exported.\n");
} else if (touch_cdev->is_fps_registered) {
unregister_link = symbol_get(FPS_unregister_notifier);
if (unregister_link)
unregister_link(&touch_cdev->fps_notif, 0xBEEF);
else
dev_err(DEV_TS, "no FPS_unregister_notifier exported.\n");
touch_cdev->fps_notif.notifier_call = ts_mmi_fps_cb;
/*register a blocking notification to receive FPS events*/
ret = relay_register_action(BLOCKING, FPS, &touch_cdev->fps_notif);
if (ret < 0) {
dev_err(DEV_TS,
"Failed to register fps_notifier: %d\n", ret);
return ret;
}
touch_cdev->is_fps_registered = true;
dev_info(DEV_TS, "Register fps_notifier OK\n");
} else if (touch_cdev->is_fps_registered){
ret = relay_unregister_action(BLOCKING, FPS, &touch_cdev->fps_notif);
if (ret < 0) {
dev_err(DEV_TS,
"Failed to unregister fps_notifier: %d\n", ret);
}
touch_cdev->is_fps_registered = false;
dev_info(DEV_TS, "Unregister fps_notifier OK\n");
}
return 0;
}