summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKen Huang <kenbshuang@google.com>2020-08-20 15:11:55 +0800
committerKen Huang <kenbshuang@google.com>2020-08-20 10:15:39 +0000
commitadf5f133f99e4ecb3f95cda4eec0de8db5c0c35c (patch)
tree4bb55f18daf9226c609853998d605929e44887d4
parent2382352e94e356b8deb48bb45566edee4f102151 (diff)
downloaddisplay-drivers-adf5f133f99e4ecb3f95cda4eec0de8db5c0c35c.tar.gz
msm/dsi: Fix mismatch between refresh rate and notifierandroid-11.0.0_r0.18
Instead of current_mode, Kernel idle timer uses display_mode to switch refresh rate. Bug: 165768235 Test: enable refresh rate overlay and check fps state in sysfs node. Signed-off-by: Ken Huang <kenbshuang@google.com> Change-Id: Iea633600a7bf6f44c26ebd1d4251b73f9278ffbd
-rw-r--r--msm/dsi/dsi_backlight.c4
-rw-r--r--msm/dsi/dsi_panel.h1
-rw-r--r--msm/dsi/dsi_panel_switch.c7
3 files changed, 11 insertions, 1 deletions
diff --git a/msm/dsi/dsi_backlight.c b/msm/dsi/dsi_backlight.c
index 3726060d..a43212ab 100644
--- a/msm/dsi/dsi_backlight.c
+++ b/msm/dsi/dsi_backlight.c
@@ -699,7 +699,9 @@ static ssize_t state_show(struct device *dev, struct device_attribute *attr,
mutex_unlock(&bl->state_lock);
if (show_mode) {
- const struct dsi_display_mode *mode = panel->cur_mode;
+ const struct dsi_display_mode *mode =
+ get_panel_display_mode(panel);
+
if (unlikely(!mode))
return -ENODEV;
diff --git a/msm/dsi/dsi_panel.h b/msm/dsi/dsi_panel.h
index 67402485..01be1ea5 100644
--- a/msm/dsi/dsi_panel.h
+++ b/msm/dsi/dsi_panel.h
@@ -581,5 +581,6 @@ int dsi_panel_get_vendor_extinfo(struct dsi_panel *panel);
ssize_t parse_byte_buf(u8 *out, size_t out_len, char *src, size_t src_len);
int parse_u32_buf(char *src, size_t src_len, u32 *out, size_t out_len);
+const struct dsi_display_mode *get_panel_display_mode(struct dsi_panel *panel);
#endif /* _DSI_PANEL_H_ */
diff --git a/msm/dsi/dsi_panel_switch.c b/msm/dsi/dsi_panel_switch.c
index 1dc00ff3..1362758c 100644
--- a/msm/dsi/dsi_panel_switch.c
+++ b/msm/dsi/dsi_panel_switch.c
@@ -441,6 +441,13 @@ static int panel_post_enable(struct dsi_panel *panel)
return rc;
}
+const struct dsi_display_mode *get_panel_display_mode(struct dsi_panel *panel)
+{
+ struct panel_switch_data *pdata = panel->private_data;
+
+ return unlikely(!pdata) ? NULL : pdata->display_mode;
+}
+
static int panel_idle(struct dsi_panel *panel)
{
struct panel_switch_data *pdata = panel->private_data;