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:
Nilaan Gunabalachandran
2021-08-26 10:15:46 -07:00
förälder de4b82ec48
incheckning e5fcf7f263
9 ändrade filer med 123 tillägg och 7 borttagningar

Visa fil

@@ -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) {