disp: msm: add capability to dynamically update the transfer time
This change adds a connector OP, that will be used to update frame transfer time dynamically at the request from user space. It also adds parsing for new device tree entries that set the minimum and maximum trasnfer times on a mode basis. These min and max transfer times are also published to userspace through the connector mode info capabilities blob. Change-Id: I12aedf96a51ff7feb2c5b3b1353d3c4ec8dcb068 Signed-off-by: Satya Rama Aditya Pinapala <psraditya30@codeaurora.org> Signed-off-by: Nilaan Gunabalachandran <quic_ngunabal@quicinc.com>
This commit is contained in:
@@ -782,6 +782,7 @@ static int dsi_panel_parse_timing(struct dsi_mode_info *mode,
|
||||
u64 tmp64 = 0;
|
||||
struct dsi_display_mode *display_mode;
|
||||
struct dsi_display_mode_priv_info *priv_info;
|
||||
u32 usecs_fps = 0;
|
||||
|
||||
display_mode = container_of(mode, struct dsi_display_mode, timing);
|
||||
|
||||
@@ -804,11 +805,22 @@ static int dsi_panel_parse_timing(struct dsi_mode_info *mode,
|
||||
|
||||
rc = utils->read_u32(utils->data, "qcom,mdss-mdp-transfer-time-us",
|
||||
&mode->mdp_transfer_time_us);
|
||||
if (!rc)
|
||||
display_mode->priv_info->mdp_transfer_time_us =
|
||||
mode->mdp_transfer_time_us;
|
||||
else
|
||||
display_mode->priv_info->mdp_transfer_time_us = 0;
|
||||
if (rc)
|
||||
mode->mdp_transfer_time_us = 0;
|
||||
|
||||
rc = utils->read_u32(utils->data, "qcom,mdss-mdp-transfer-time-us-min",
|
||||
&priv_info->mdp_transfer_time_us_min);
|
||||
if (rc)
|
||||
priv_info->mdp_transfer_time_us_min = 0;
|
||||
else if (!rc && mode->mdp_transfer_time_us < priv_info->mdp_transfer_time_us_min)
|
||||
mode->mdp_transfer_time_us = priv_info->mdp_transfer_time_us_min;
|
||||
|
||||
rc = utils->read_u32(utils->data, "qcom,mdss-mdp-transfer-time-us-max",
|
||||
&priv_info->mdp_transfer_time_us_max);
|
||||
if (rc)
|
||||
priv_info->mdp_transfer_time_us_max = 0;
|
||||
else if (!rc && mode->mdp_transfer_time_us > priv_info->mdp_transfer_time_us_max)
|
||||
mode->mdp_transfer_time_us = priv_info->mdp_transfer_time_us_max;
|
||||
|
||||
priv_info->disable_rsc_solver = utils->read_bool(utils->data, "qcom,disable-rsc-solver");
|
||||
|
||||
@@ -821,6 +833,11 @@ static int dsi_panel_parse_timing(struct dsi_mode_info *mode,
|
||||
goto error;
|
||||
}
|
||||
|
||||
usecs_fps = DIV_ROUND_UP((1 * 1000 * 1000), mode->refresh_rate);
|
||||
if (mode->mdp_transfer_time_us > usecs_fps)
|
||||
mode->mdp_transfer_time_us = 0;
|
||||
priv_info->mdp_transfer_time_us = mode->mdp_transfer_time_us;
|
||||
|
||||
rc = utils->read_u32(utils->data, "qcom,mdss-dsi-panel-width",
|
||||
&mode->h_active);
|
||||
if (rc) {
|
||||
|
Referens i nytt ärende
Block a user