summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWill McVicker <willmcvicker@google.com>2024-04-15 10:55:04 -0700
committerWill McVicker <willmcvicker@google.com>2024-04-15 11:47:15 -0700
commit0a1f9eba5f2fde83d01de6ebae8ce747d58d24d7 (patch)
treeeb5092520b234006613a03fdae6b5882120ac96e
parenta473794ddb5016631d8e3e8c808b3e3f9e116e5e (diff)
parent186068eaaafebc2f569b1cdb0a60a1f3199a83b1 (diff)
downloadfts_touch-android14-gs-pixel-6.1.tar.gz
Merge aosp/android-gs-raviole-5.10-android14-qpr2 into aosp/android14-gs-pixel-6.1android14-gs-pixel-6.1
* aosp/android-gs-raviole-5.10-android14-qpr2: touch/fts: Update logs tag ftm5: add debugging messages for drm bridge Change-Id: Ib07892a579cbcc81f5e9dfbca7d19a0583c15b31 Signed-off-by: Will McVicker <willmcvicker@google.com>
-rw-r--r--fst2/fts.h5
-rw-r--r--fst2/fts_lib/fts_io.h5
-rw-r--r--ftm5/fts.c45
-rw-r--r--ftm5/fts.h12
4 files changed, 53 insertions, 14 deletions
diff --git a/fst2/fts.h b/fst2/fts.h
index 7da5f7d..dd465d7 100644
--- a/fst2/fts.h
+++ b/fst2/fts.h
@@ -23,6 +23,11 @@
#include "fts_lib/fts_io.h"
#include <drm/drm_bridge.h>
+#undef pr_fmt
+#define pr_fmt(fmt) "gtd: fst2: " fmt
+#undef dev_fmt
+#define dev_fmt(fmt) "gtd: " fmt
+
#define FTS_TS_DRV_NAME "fst2"
#define FTS_TS_DRV_VERSION "6.0.3"
#define FTS_TS_DRV_VER 0x06000004
diff --git a/fst2/fts_lib/fts_io.h b/fst2/fts_lib/fts_io.h
index 33c35c1..febdfa8 100644
--- a/fst2/fts_lib/fts_io.h
+++ b/fst2/fts_lib/fts_io.h
@@ -19,11 +19,6 @@
#ifndef _LINUX_FTS_IO_H_
#define _LINUX_FTS_IO_H_
-#ifdef pr_fmt
-#undef pr_fmt
-#define pr_fmt(fmt) "[ FTS ] " fmt
-#endif
-
/*#define I2C_INTERFACE*/
#ifdef I2C_INTERFACE
#define I2C_SAD 0x49 /* /< slave address of the IC */
diff --git a/ftm5/fts.c b/ftm5/fts.c
index be3c86a..f330da7 100644
--- a/ftm5/fts.c
+++ b/ftm5/fts.c
@@ -5907,7 +5907,7 @@ int fts_set_bus_ref(struct fts_ts_info *info, u16 ref, bool enable)
if ((enable && (info->bus_refmask & ref)) ||
(!enable && !(info->bus_refmask & ref))) {
- dev_dbg(info->dev, "%s: reference is unexpectedly set: mask=0x%04X, ref=0x%04X, enable=%d.\n",
+ dev_warn(info->dev, "%s: reference is unexpectedly set: mask=0x%04X, ref=0x%04X, enable=%d.\n",
__func__, info->bus_refmask, ref, enable);
mutex_unlock(&info->bus_mutex);
return ERROR_OP_NOT_ALLOW;
@@ -5942,6 +5942,30 @@ int fts_set_bus_ref(struct fts_ts_info *info, u16 ref, bool enable)
return result;
}
+static void fts_set_display_state(struct fts_ts_info *info,
+ enum fts_display_state display_state)
+{
+ if (info->display_state == display_state)
+ return;
+
+ switch (display_state) {
+ case FTS_DISPLAY_STATE_OFF:
+ dev_info(info->dev, "%s: screen-off.\n", __func__);
+ fts_set_bus_ref(info, FTS_BUS_REF_SCREEN_ON, false);
+ break;
+ case FTS_DISPLAY_STATE_ON:
+ dev_info(info->dev, "%s: screen-on.\n", __func__);
+ fts_set_bus_ref(info, FTS_BUS_REF_SCREEN_ON, true);
+ break;
+ default:
+ dev_err(info->dev,
+ "%s: Unexpected value(0x%X) of display state parameter.\n",
+ __func__, display_state);
+ return;
+ }
+ info->display_state = display_state;
+}
+
struct drm_connector *get_bridge_connector(struct drm_bridge *bridge)
{
struct drm_connector *connector;
@@ -5973,7 +5997,7 @@ static void panel_bridge_enable(struct drm_bridge *bridge)
dev_dbg(info->dev, "%s\n", __func__);
if (!info->is_panel_lp_mode)
- fts_set_bus_ref(info, FTS_BUS_REF_SCREEN_ON, true);
+ fts_set_display_state(info, FTS_DISPLAY_STATE_ON);
}
static void panel_bridge_disable(struct drm_bridge *bridge)
@@ -5981,6 +6005,7 @@ static void panel_bridge_disable(struct drm_bridge *bridge)
struct fts_ts_info *info =
container_of(bridge, struct fts_ts_info, panel_bridge);
+ dev_dbg(info->dev, "%s\n", __func__);
if (bridge->encoder && bridge->encoder->crtc) {
const struct drm_crtc_state *crtc_state = bridge->encoder->crtc->state;
@@ -5988,8 +6013,7 @@ static void panel_bridge_disable(struct drm_bridge *bridge)
return;
}
- dev_dbg(info->dev, "%s\n", __func__);
- fts_set_bus_ref(info, FTS_BUS_REF_SCREEN_ON, false);
+ fts_set_display_state(info, FTS_DISPLAY_STATE_OFF);
}
static void panel_bridge_mode_set(struct drm_bridge *bridge,
@@ -5998,6 +6022,7 @@ static void panel_bridge_mode_set(struct drm_bridge *bridge,
{
struct fts_ts_info *info =
container_of(bridge, struct fts_ts_info, panel_bridge);
+ bool panel_is_lp_mode;
dev_dbg(info->dev, "%s\n", __func__);
@@ -6006,8 +6031,14 @@ static void panel_bridge_mode_set(struct drm_bridge *bridge,
info->connector = get_bridge_connector(bridge);
}
- info->is_panel_lp_mode = bridge_is_lp_mode(info->connector);
- fts_set_bus_ref(info, FTS_BUS_REF_SCREEN_ON, !info->is_panel_lp_mode);
+ panel_is_lp_mode = bridge_is_lp_mode(info->connector);
+ if (info->is_panel_lp_mode != panel_is_lp_mode) {
+ dev_info(info->dev, "panel_is_lp_mode changed from %d to %d.\n",
+ info->is_panel_lp_mode, panel_is_lp_mode);
+ info->is_panel_lp_mode = panel_is_lp_mode;
+ fts_set_display_state(info, info->is_panel_lp_mode ?
+ FTS_DISPLAY_STATE_OFF : FTS_DISPLAY_STATE_ON);
+ }
#ifdef DYNAMIC_REFRESH_RATE
if (adjusted_mode &&
@@ -7124,6 +7155,8 @@ static int fts_pm_suspend(struct device *dev)
if (info->resume_bit == 1 || info->sensor_sleep == false) {
dev_warn(info->dev, "%s: can't suspend because touch bus is in use!\n",
__func__);
+ dev_warn(info->dev, "%s: display_state: %d, sensor_sleep: %d\n",
+ __func__, info->display_state, info->sensor_sleep);
if (info->bus_refmask == FTS_BUS_REF_BUGREPORT) {
fts_set_bus_ref(info, FTS_BUS_REF_BUGREPORT, false);
__pm_relax(info->wakesrc);
diff --git a/ftm5/fts.h b/ftm5/fts.h
index fe6ace4..6c1c96a 100644
--- a/ftm5/fts.h
+++ b/ftm5/fts.h
@@ -69,10 +69,10 @@
/* #define DEBUG */ /* /< define to print more logs in the kernel log
* and better follow the code flow */
-#ifdef pr_fmt
#undef pr_fmt
-#define pr_fmt(fmt) "[ FTS ] " fmt
-#endif
+#define pr_fmt(fmt) "gtd: fts: " fmt
+#undef dev_fmt
+#define dev_fmt(fmt) "gtd: " fmt
#define PINCTRL_STATE_ACTIVE "pmx_ts_active"
#define PINCTRL_STATE_SUSPEND "pmx_ts_suspend"
@@ -341,6 +341,11 @@ enum {
FTS_BUS_REF_BUGREPORT = 0x20,
};
+enum fts_display_state : u32 {
+ FTS_DISPLAY_STATE_OFF = 0,
+ FTS_DISPLAY_STATE_ON,
+};
+
/* Motion filter finite state machine (FSM) states
* FTS_MF_FILTERED - default coordinate filtering
* FTS_MF_UNFILTERED - unfiltered single-touch coordinates
@@ -886,6 +891,7 @@ struct fts_ts_info {
#ifdef DYNAMIC_REFRESH_RATE
int display_refresh_rate; /* Display rate in Hz */
#endif
+ enum fts_display_state display_state; /* Display state */
bool sensor_sleep; /* True if suspend called */
struct wakeup_source *wakesrc; /* Wake Lock struct */