summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoey Lin <linjoey@google.com>2023-01-03 09:09:43 +0000
committerJoey Lin <linjoey@google.com>2023-01-03 09:09:43 +0000
commit287ec4db6c97597b11ff55f85d771ea521899e8b (patch)
tree9ca7c17bc37db3540af448d97380e3c09a8915c0
parent5625cd5bf57bdfc02480aecaeb6212fc6804e31d (diff)
parentf87fd67fd0ee94a30507b9dde02d29c504e50dbc (diff)
downloadfts_touch-android-gs-bluejay-5.10-u-beta4.tar.gz
Merge android13-gs-pixel-5.10-tm-qpr3 into android13-gs-pixel-5.10-udcandroid-u-qpr2-beta-1_r0.6android-u-qpr2-beta-1_r0.5android-u-qpr2-beta-1_r0.4android-u-qpr2-beta-1_r0.3android-u-qpr2-beta-1_r0.2android-u-qpr2-beta-1_r0.1android-u-qpr1-beta-2_r0.7android-u-qpr1-beta-2_r0.5android-u-qpr1-beta-2_r0.4android-u-qpr1-beta-2_r0.3android-u-qpr1-beta-2_r0.2android-u-qpr1-beta-2_r0.1android-u-qpr1-beta-2.2_r0.6android-u-qpr1-beta-2.2_r0.5android-u-qpr1-beta-2.2_r0.4android-u-qpr1-beta-2.2_r0.3android-u-qpr1-beta-2.2_r0.2android-u-qpr1-beta-2.2_r0.1android-u-qpr1-beta-2.1_r0.7android-u-qpr1-beta-2.1_r0.5android-u-qpr1-beta-2.1_r0.4android-u-qpr1-beta-2.1_r0.3android-u-qpr1-beta-2.1_r0.2android-u-qpr1-beta-2.1_r0.1android-u-qpr1-beta-1_r0.7android-u-qpr1-beta-1_r0.5android-u-qpr1-beta-1_r0.4android-u-qpr1-beta-1_r0.3android-u-qpr1-beta-1_r0.2android-u-qpr1-beta-1_r0.1android-u-preview-2_r0.4android-u-preview-2_r0.3android-u-preview-2_r0.2android-u-preview-1_r0.3android-u-beta-5.3_r0.7android-u-beta-5.3_r0.5android-u-beta-5.3_r0.4android-u-beta-5.3_r0.2android-u-beta-5.3_r0.1android-u-beta-4_r0.7android-u-beta-4_r0.5android-u-beta-4_r0.4android-u-beta-4_r0.3android-u-beta-4_r0.2android-u-beta-4_r0.1android-u-beta-3_r0.3android-u-beta-3_r0.2android-u-beta-2_r0.4android-u-beta-2_r0.3android-u-beta-2_r0.2android-u-beta-2.1_r0.4android-u-beta-2.1_r0.3android-u-beta-2.1_r0.2android-u-beta-1_r0.5android-u-beta-1_r0.4android-u-beta-1_r0.3android-14.0.0_r0.7android-14.0.0_r0.6android-14.0.0_r0.5android-14.0.0_r0.44android-14.0.0_r0.43android-14.0.0_r0.42android-14.0.0_r0.41android-14.0.0_r0.40android-14.0.0_r0.4android-14.0.0_r0.39android-14.0.0_r0.37android-14.0.0_r0.36android-14.0.0_r0.35android-14.0.0_r0.34android-14.0.0_r0.33android-14.0.0_r0.31android-14.0.0_r0.3android-14.0.0_r0.25android-14.0.0_r0.23android-14.0.0_r0.22android-14.0.0_r0.21android-14.0.0_r0.2android-14.0.0_r0.19android-14.0.0_r0.17android-14.0.0_r0.16android-14.0.0_r0.15android-14.0.0_r0.14android-14.0.0_r0.13android-14.0.0_r0.11android-gs-tangorpro-android14-releaseandroid-gs-tangorpro-5.10-u-qpr1-beta2android-gs-tangorpro-5.10-u-beta5.3android-gs-tangorpro-5.10-u-beta4android-gs-tangorpro-5.10-android14-qpr1-betaandroid-gs-tangorpro-5.10-android14-qpr1android-gs-tangorpro-5.10-android14android-gs-raviole-android14-releaseandroid-gs-raviole-5.10-u-qpr1-beta2android-gs-raviole-5.10-u-preview-2android-gs-raviole-5.10-u-beta5.3android-gs-raviole-5.10-u-beta4android-gs-raviole-5.10-u-beta3android-gs-raviole-5.10-u-beta2android-gs-raviole-5.10-u-beta1android-gs-raviole-5.10-android14-qpr1-betaandroid-gs-raviole-5.10-android14-qpr1android-gs-raviole-5.10-android14android-gs-pantah-android14-releaseandroid-gs-pantah-5.10-u-qpr1-beta2android-gs-pantah-5.10-u-preview-2android-gs-pantah-5.10-u-beta5.3android-gs-pantah-5.10-u-beta4android-gs-pantah-5.10-u-beta2android-gs-pantah-5.10-u-beta1android-gs-pantah-5.10-android14-qpr1-betaandroid-gs-pantah-5.10-android14-qpr1android-gs-pantah-5.10-android14android-gs-lynx-android14-releaseandroid-gs-lynx-5.10-u-qpr1-beta2android-gs-lynx-5.10-u-beta4android-gs-lynx-5.10-android14-qpr1-betaandroid-gs-lynx-5.10-android14-qpr1android-gs-lynx-5.10-android14android-gs-felix-android14-releaseandroid-gs-felix-5.10-u-qpr1-beta2android-gs-felix-5.10-u-beta5.3android-gs-felix-5.10-u-beta4android-gs-felix-5.10-android14-qpr1-betaandroid-gs-felix-5.10-android14-qpr1android-gs-felix-5.10-android14android-gs-bluejay-android14-releaseandroid-gs-bluejay-5.10-u-qpr1-beta2android-gs-bluejay-5.10-u-preview-2android-gs-bluejay-5.10-u-preview-1android-gs-bluejay-5.10-u-beta5.3android-gs-bluejay-5.10-u-beta4android-gs-bluejay-5.10-u-beta3android-gs-bluejay-5.10-u-beta2android-gs-bluejay-5.10-u-beta1android-gs-bluejay-5.10-android14-qpr1-betaandroid-gs-bluejay-5.10-android14-qpr1android-gs-bluejay-5.10-android14
Bug: 255246572 Change-Id: I77ff5e5f754e9377465705452841a65f0532ea14 Signed-off-by: Joey Lin <linjoey@google.com>
-rw-r--r--ftm5/fts.c45
-rw-r--r--ftm5/fts.h6
2 files changed, 45 insertions, 6 deletions
diff --git a/ftm5/fts.c b/ftm5/fts.c
index c481f7f..b3fecd5 100644
--- a/ftm5/fts.c
+++ b/ftm5/fts.c
@@ -5906,7 +5906,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;
@@ -5941,6 +5941,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;
@@ -5972,7 +5996,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)
@@ -5980,6 +6004,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;
@@ -5987,8 +6012,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,
@@ -5997,6 +6021,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__);
@@ -6005,8 +6030,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 &&
@@ -7125,6 +7156,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..328b9c6 100644
--- a/ftm5/fts.h
+++ b/ftm5/fts.h
@@ -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 */