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>
此提交包含在:
@@ -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;
|
||||
|
新增問題並參考
封鎖使用者