Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9d119bd8 authored by Veera Sundaram Sankaran's avatar Veera Sundaram Sankaran
Browse files

drm/msm/dsi-staging: check clk handles before clk unprepare



Validate clk handles before clk unprepare. This would avoid
clk unprepare on uninitialized clk handles.

Change-Id: I76896effb7d5d78e96a6fc53e3082faf6c0839c4
Signed-off-by: default avatarVeera Sundaram Sankaran <veeras@codeaurora.org>
parent b205a1ee
Loading
Loading
Loading
Loading
+31 −11
Original line number Diff line number Diff line
@@ -236,15 +236,19 @@ int dsi_core_clk_start(struct dsi_core_clks *c_clks)
	return rc;

error_disable_mmss_clk:
	if (c_clks->clks.core_mmss_clk)
		clk_disable_unprepare(c_clks->clks.core_mmss_clk);
error_disable_bus_clk:
	if (c_clks->clks.bus_clk)
		clk_disable_unprepare(c_clks->clks.bus_clk);
error_disable_iface_clk:
	if (c_clks->clks.iface_clk)
		clk_disable_unprepare(c_clks->clks.iface_clk);
error_disable_mnoc_clk:
	if (c_clks->clks.mnoc_clk)
		clk_disable_unprepare(c_clks->clks.mnoc_clk);
error_disable_core_clk:
	if (c_clks->clks.mdp_core_clk)
		clk_disable_unprepare(c_clks->clks.mdp_core_clk);
error:
	return rc;
@@ -252,16 +256,32 @@ int dsi_core_clk_start(struct dsi_core_clks *c_clks)

int dsi_core_clk_stop(struct dsi_core_clks *c_clks)
{
	if (msm_bus_scale_client_update_request(c_clks->bus_handle, 0))
		pr_err("bus scale client disable failed\n");
	int rc = 0;

	if (c_clks->bus_handle) {
		rc = msm_bus_scale_client_update_request(c_clks->bus_handle, 0);
		if (rc) {
			pr_err("bus scale client disable failed, rc=%d\n", rc);
			return rc;
		}
	}

	if (c_clks->clks.core_mmss_clk)
		clk_disable_unprepare(c_clks->clks.core_mmss_clk);

	if (c_clks->clks.bus_clk)
		clk_disable_unprepare(c_clks->clks.bus_clk);

	if (c_clks->clks.iface_clk)
		clk_disable_unprepare(c_clks->clks.iface_clk);

	if (c_clks->clks.mnoc_clk)
		clk_disable_unprepare(c_clks->clks.mnoc_clk);

	if (c_clks->clks.mdp_core_clk)
		clk_disable_unprepare(c_clks->clks.mdp_core_clk);

	return 0;
	return rc;
}

static int dsi_link_clk_set_rate(struct dsi_link_clks *l_clks)