disp: msm: dp: check for dp link clocks before accessing dp registers

Add safety checks to check for dp link and core clocks before accessing
the main control registers during dp teardown or dp setup.

Change-Id: Ic80050b7c1cec59d7fc27a1c5f12fa1b244f86fb
Signed-off-by: Vara Reddy <varar@codeaurora.org>
此提交包含在:
Vara Reddy
2021-08-16 15:16:27 -07:00
父節點 8b0b1d1c51
當前提交 c57fe2034a
共有 3 個檔案被更改,包括 36 行新增0 行删除

查看文件

@@ -382,6 +382,29 @@ error:
return rc;
}
static bool dp_power_clk_status(struct dp_power *dp_power, enum dp_pm_type pm_type)
{
struct dp_power_private *power;
if (!dp_power) {
DP_ERR("invalid power data\n");
return false;
}
power = container_of(dp_power, struct dp_power_private, dp_power);
if (pm_type == DP_LINK_PM)
return power->link_clks_on;
else if (pm_type == DP_CORE_PM)
return power->core_clks_on;
else if (pm_type == DP_STREAM0_PM)
return power->strm0_clks_on;
else if (pm_type == DP_STREAM1_PM)
return power->strm1_clks_on;
else
return false;
}
static int dp_power_request_gpios(struct dp_power_private *power)
{
int rc = 0, i;
@@ -739,6 +762,7 @@ struct dp_power *dp_power_get(struct dp_parser *parser, struct dp_pll *pll)
dp_power->init = dp_power_init;
dp_power->deinit = dp_power_deinit;
dp_power->clk_enable = dp_power_clk_enable;
dp_power->clk_status = dp_power_clk_status;
dp_power->set_pixel_clk_parent = dp_power_set_pixel_clk_parent;
dp_power->clk_get_rate = dp_power_clk_get_rate;
dp_power->power_client_init = dp_power_client_init;