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

Commit 4ab8d223 authored by Dhaval Patel's avatar Dhaval Patel Committed by Gerrit - the friendly Code Review server
Browse files

drm/msm: vote for mdss core in disp rsc during probe



Display rsc driver controls mdss core through hw mode
however this resource is sw controlled during
driver probe. Display rsc module should keep a sw
vote and remove the sw vote when it switches to hw mode
to avoid any resource access with core gdsc vote.

Change-Id: I1993f03193a60368a51017f5674045f5ac29b0cb
Signed-off-by: default avatarDhaval Patel <pdhaval@codeaurora.org>
parent 54559809
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -1246,6 +1246,8 @@ static void sde_rsc_deinit(struct platform_device *pdev,

	if (rsc->pclient)
		sde_rsc_clk_enable(&rsc->phandle, rsc->pclient, false);
	if (rsc->sw_fs_enabled)
		regulator_disable(rsc->fs);
	if (rsc->fs)
		devm_regulator_put(rsc->fs);
	if (rsc->wrapper_io.base)
@@ -1405,6 +1407,14 @@ static int sde_rsc_probe(struct platform_device *pdev)
		goto sde_rsc_fail;
	}

	ret = regulator_enable(rsc->fs);
	if (ret) {
		pr_err("sde rsc: fs on failed ret:%d\n", ret);
		goto sde_rsc_fail;
	}

	rsc->sw_fs_enabled = true;

	if (sde_rsc_clk_enable(&rsc->phandle, rsc->pclient, true)) {
		pr_err("failed to enable sde rsc power resources\n");
		goto sde_rsc_fail;
+11 −4
Original line number Diff line number Diff line
@@ -609,11 +609,13 @@ static int sde_rsc_mode2_entry(struct sde_rsc_priv *rsc)
	if (rsc->power_collapse_block)
		return -EINVAL;

	if (rsc->sw_fs_enabled) {
		rc = regulator_set_mode(rsc->fs, REGULATOR_MODE_FAST);
		if (rc) {
			pr_err("vdd reg fast mode set failed rc:%d\n", rc);
			return rc;
		}
	}

	dss_reg_w(&rsc->drv_io, SDE_RSC_SOLVER_SOLVER_MODES_ENABLED_DRV0,
						0x7, rsc->debug_mode);
@@ -647,6 +649,11 @@ static int sde_rsc_mode2_entry(struct sde_rsc_priv *rsc)

	rsc_event_trigger(rsc, SDE_RSC_EVENT_POST_CORE_PC);

	if (rsc->sw_fs_enabled) {
		regulator_disable(rsc->fs);
		rsc->sw_fs_enabled = false;
	}

	return 0;

end:
+3 −1
Original line number Diff line number Diff line
/* Copyright (c) 2016-2017, The Linux Foundation. All rights reserved.
/* Copyright (c) 2016-2018, The Linux Foundation. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 and
@@ -124,6 +124,7 @@ struct sde_rsc_timer_config {
 * @phandle:		module power handle for clocks
 * @pclient:		module power client of phandle
 * @fs:			"MDSS GDSC" handle
 * @sw_fs_enabled:	track "MDSS GDSC" sw vote during probe
 *
 * @disp_rsc:		display rsc handle
 * @drv_io:		sde drv io data mapping
@@ -157,6 +158,7 @@ struct sde_rsc_priv {
	struct sde_power_handle phandle;
	struct sde_power_client *pclient;
	struct regulator *fs;
	bool sw_fs_enabled;

	struct rpmh_client *disp_rsc;
	struct dss_io_data drv_io;