From 652efb6b64a73ac7afdd34315e5bd703e04c24d3 Mon Sep 17 00:00:00 2001 From: Jens Reidel Date: Fri, 24 May 2024 13:18:44 +0200 Subject: [PATCH] sm8450-common: power: Set double-tap mode for secondary panel if exists Change-Id: I20c06b5dbf88b07a330af8af3455318acbdeb276 Signed-off-by: Jens Reidel --- power/power-mode.cpp | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/power/power-mode.cpp b/power/power-mode.cpp index 5a2674a..81b238a 100644 --- a/power/power-mode.cpp +++ b/power/power-mode.cpp @@ -8,13 +8,16 @@ #include #include #include +#include #define SET_CUR_VALUE 0 #define TOUCH_DOUBLETAP_MODE 14 #define TOUCH_MAGIC 't' #define TOUCH_IOC_SETMODE _IO(TOUCH_MAGIC, SET_CUR_VALUE) #define TOUCH_DEV_PATH "/dev/xiaomi-touch" -#define TOUCH_ID 0 +#define TOUCH_ID_PRIMARY 0 +#define TOUCH_ID_SECONDARY 1 +#define MI_DISP_SECONDARY "/sys/devices/virtual/mi_display/disp_feature/disp-DSI-1" namespace aidl { namespace android { @@ -38,8 +41,15 @@ bool setDeviceSpecificMode(Mode type, bool enabled) { switch (type) { case Mode::DOUBLE_TAP_TO_WAKE: { int fd = open(TOUCH_DEV_PATH, O_RDWR); - int arg[3] = {TOUCH_ID, TOUCH_DOUBLETAP_MODE, enabled ? 1 : 0}; - ioctl(fd, TOUCH_IOC_SETMODE, &arg); + int arg_primary[3] = {TOUCH_ID_PRIMARY, TOUCH_DOUBLETAP_MODE, enabled ? 1 : 0}; + ioctl(fd, TOUCH_IOC_SETMODE, &arg_primary); + + struct stat buffer; + if (stat(MI_DISP_SECONDARY, &buffer) == 0) { + int arg_secondary[3] = {TOUCH_ID_SECONDARY, TOUCH_DOUBLETAP_MODE, enabled ? 1 : 0}; + ioctl(fd, TOUCH_IOC_SETMODE, &arg_secondary); + } + close(fd); return true; }