diff options
| author | Linux Build Service Account <lnxbuild@localhost> | 2017-01-28 08:41:54 -0800 |
|---|---|---|
| committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2017-01-28 08:41:53 -0800 |
| commit | decef4b1880a34fe215f8ef421a2a7c0748240f8 (patch) | |
| tree | 3a5d7940084e104a3461b914b2e3f5d694a0d1ef | |
| parent | 597b6c836d9215594698fa00c218960655d00921 (diff) | |
| parent | cc9f8d67095dc4ca933f86d638de91172e9b4497 (diff) | |
Merge "msm: mdss: disable dsi timing db once fps is updated"
| -rw-r--r-- | drivers/video/fbdev/msm/mdss_dsi.c | 20 | ||||
| -rw-r--r-- | drivers/video/fbdev/msm/mdss_dsi.h | 1 | ||||
| -rw-r--r-- | drivers/video/fbdev/msm/mdss_mdp_intf_video.c | 7 | ||||
| -rw-r--r-- | drivers/video/fbdev/msm/mdss_panel.h | 1 |
4 files changed, 28 insertions, 1 deletions
diff --git a/drivers/video/fbdev/msm/mdss_dsi.c b/drivers/video/fbdev/msm/mdss_dsi.c index 19e3eadfc1b2..51745a9a59ac 100644 --- a/drivers/video/fbdev/msm/mdss_dsi.c +++ b/drivers/video/fbdev/msm/mdss_dsi.c @@ -2507,6 +2507,23 @@ static struct device_node *mdss_dsi_get_fb_node_cb(struct platform_device *pdev) return fb_node; } +static void mdss_dsi_timing_db_ctrl(struct mdss_dsi_ctrl_pdata *ctrl, + int enable) +{ + if (!ctrl || !ctrl->timing_db_mode || + (ctrl->shared_data->hw_rev < MDSS_DSI_HW_REV_201)) + return; + + mdss_dsi_clk_ctrl(ctrl, ctrl->dsi_clk_handle, + MDSS_DSI_CORE_CLK, MDSS_DSI_CLK_ON); + MIPI_OUTP((ctrl->ctrl_base + 0x1e8), enable); + wmb(); /* ensure timing db is disabled */ + MIPI_OUTP((ctrl->ctrl_base + 0x1e4), enable); + wmb(); /* ensure timing flush is disabled */ + mdss_dsi_clk_ctrl(ctrl, ctrl->dsi_clk_handle, + MDSS_DSI_CORE_CLK, MDSS_DSI_CLK_OFF); +} + static int mdss_dsi_event_handler(struct mdss_panel_data *pdata, int event, void *arg) { @@ -2680,6 +2697,9 @@ static int mdss_dsi_event_handler(struct mdss_panel_data *pdata, &ctrl_pdata->dba_work, HZ); } break; + case MDSS_EVENT_DSI_TIMING_DB_CTRL: + mdss_dsi_timing_db_ctrl(ctrl_pdata, (int)(unsigned long)arg); + break; default: pr_debug("%s: unhandled event=%d\n", __func__, event); break; diff --git a/drivers/video/fbdev/msm/mdss_dsi.h b/drivers/video/fbdev/msm/mdss_dsi.h index 81d2723d0f2a..df24352ff87d 100644 --- a/drivers/video/fbdev/msm/mdss_dsi.h +++ b/drivers/video/fbdev/msm/mdss_dsi.h @@ -58,6 +58,7 @@ #define MDSS_DSI_HW_REV_104_1 0x10040001 /* 8996 */ #define MDSS_DSI_HW_REV_104_2 0x10040002 /* 8937 */ #define MDSS_DSI_HW_REV_200 0x20000000 /* cobalt */ +#define MDSS_DSI_HW_REV_201 0x20010000 /* 660 */ #define MDSS_DSI_HW_REV_STEP_0 0x0 #define MDSS_DSI_HW_REV_STEP_1 0x1 diff --git a/drivers/video/fbdev/msm/mdss_mdp_intf_video.c b/drivers/video/fbdev/msm/mdss_mdp_intf_video.c index 5d5515a91572..4efa38093557 100644 --- a/drivers/video/fbdev/msm/mdss_mdp_intf_video.c +++ b/drivers/video/fbdev/msm/mdss_mdp_intf_video.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2012-2016, The Linux Foundation. All rights reserved. +/* Copyright (c) 2012-2017, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and @@ -1521,6 +1521,11 @@ exit_dfps: pr_err("Error in dfps_wait: %d\n", rc); } + /* Disable interface timing double buffer */ + rc = mdss_mdp_ctl_intf_event(ctl, + MDSS_EVENT_DSI_TIMING_DB_CTRL, + (void *) (unsigned long) 0, + CTL_INTF_EVENT_FLAG_DEFAULT); } else { pr_err("intf %d panel, unknown FPS mode\n", ctl->intf_num); diff --git a/drivers/video/fbdev/msm/mdss_panel.h b/drivers/video/fbdev/msm/mdss_panel.h index e29f9e20c907..39380c63e6c6 100644 --- a/drivers/video/fbdev/msm/mdss_panel.h +++ b/drivers/video/fbdev/msm/mdss_panel.h @@ -298,6 +298,7 @@ enum mdss_intf_events { MDSS_EVENT_DEEP_COLOR, MDSS_EVENT_DISABLE_PANEL, MDSS_EVENT_UPDATE_PANEL_PPM, + MDSS_EVENT_DSI_TIMING_DB_CTRL, MDSS_EVENT_MAX, }; |
