diff --git a/drivers/input/touchscreen/touchscreen_mmi/Android.mk b/drivers/input/touchscreen/touchscreen_mmi/Android.mk index 6149df50fce1..8d1a98d52785 100644 --- a/drivers/input/touchscreen/touchscreen_mmi/Android.mk +++ b/drivers/input/touchscreen/touchscreen_mmi/Android.mk @@ -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 diff --git a/drivers/input/touchscreen/touchscreen_mmi/Kbuild b/drivers/input/touchscreen/touchscreen_mmi/Kbuild index c3d23baf4da6..43f0bd19392b 100644 --- a/drivers/input/touchscreen/touchscreen_mmi/Kbuild +++ b/drivers/input/touchscreen/touchscreen_mmi/Kbuild @@ -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 diff --git a/drivers/input/touchscreen/touchscreen_mmi/touchscreen_mmi_notif.c b/drivers/input/touchscreen/touchscreen_mmi/touchscreen_mmi_notif.c index 523d5abc8993..73677be93df6 100644 --- a/drivers/input/touchscreen/touchscreen_mmi/touchscreen_mmi_notif.c +++ b/drivers/input/touchscreen/touchscreen_mmi/touchscreen_mmi_notif.c @@ -17,7 +17,7 @@ #include #include #include -#include +#include #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; }