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

Commit ce0f694c authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "msm: sde: replace rsc with power domain for rotator"

parents ecfaf76e 10056f95
Loading
Loading
Loading
Loading
+6 −23
Original line number Diff line number Diff line
@@ -25,7 +25,6 @@
#include <linux/msm-bus-board.h>
#include <linux/regulator/consumer.h>
#include <linux/dma-direction.h>
#include <linux/sde_rsc.h>
#include <soc/qcom/scm.h>
#include <soc/qcom/secure_buffer.h>
#include <asm/cacheflush.h>
@@ -301,7 +300,7 @@ static int sde_rotator_update_clk(struct sde_rot_mgr *mgr)

static int sde_rotator_footswitch_ctrl(struct sde_rot_mgr *mgr, bool on)
{
	int ret;
	int ret = 0;

	if (mgr->regulator_enable == on) {
		SDEROT_ERR("Regulators already in selected mode on=%d\n", on);
@@ -319,16 +318,13 @@ static int sde_rotator_footswitch_ctrl(struct sde_rot_mgr *mgr, bool on)
	if (mgr->ops_hw_pre_pmevent)
		mgr->ops_hw_pre_pmevent(mgr, on);

	if (mgr->rsc_client)
		ret = sde_rsc_client_state_update(mgr->rsc_client,
				on ? SDE_RSC_CLK_STATE : SDE_RSC_IDLE_STATE,
				NULL, SDE_RSC_INVALID_CRTC_ID, NULL);
	else
	if (!sde_rot_mgr_pd_enabled(mgr))
		ret = sde_rot_enable_vreg(mgr->module_power.vreg_config,
			mgr->module_power.num_vreg, on);
	if (ret) {
		pr_err("rotator regulator failed to %s ret:%d client:%d\n",
		      on ? "enable" : "disable", ret, mgr->rsc_client != NULL);
		      on ? "enable" : "disable", ret,
				      sde_rot_mgr_pd_enabled(mgr));
		return ret;
	}

@@ -2970,16 +2966,7 @@ static int sde_rotator_res_init(struct platform_device *pdev,
{
	int ret;

	mgr->rsc_client = sde_rsc_client_create(
			SDE_RSC_INDEX, "sde_rotator_core", false);
	if (IS_ERR(mgr->rsc_client)) {
		ret = PTR_ERR(mgr->rsc_client);
		pr_err("rsc client create returned %d\n", ret);
		mgr->rsc_client = NULL;
		return ret;
	}

	if (!mgr->rsc_client) {
	if (!sde_rot_mgr_pd_enabled(mgr)) {
		ret = sde_rotator_get_dt_vreg_data(
				&pdev->dev, &mgr->module_power);
		if (ret)
@@ -3007,13 +2994,9 @@ static void sde_rotator_res_destroy(struct sde_rot_mgr *mgr)
	sde_rotator_unregister_clk(mgr);
	sde_rotator_bus_scale_unregister(mgr);

	if (mgr->rsc_client) {
		sde_rsc_client_destroy(mgr->rsc_client);
		mgr->rsc_client = NULL;
	} else {
	if (!sde_rot_mgr_pd_enabled(mgr))
		sde_rotator_put_dt_vreg_data(&pdev->dev, &mgr->module_power);
}
}

int sde_rotator_core_init(struct sde_rot_mgr **pmgr,
		struct platform_device *pdev)
+9 −3
Original line number Diff line number Diff line
@@ -385,7 +385,6 @@ struct sde_rot_bus_data_type {
 * @reg_bus: register bus configuration state
 * @module_power: power/clock configuration state
 * @regulator_enable: true if foot switch is enabled; false otherwise
 * @rsc_client: pointer to rsc client handle
 * @res_ref_cnt: reference count of how many times resource is requested
 * @rot_enable_clk_cnt: reference count of how many times clock is requested
 * @rot_clk: array of rotator and periphery clocks
@@ -431,8 +430,6 @@ struct sde_rot_mgr {
	struct sde_module_power module_power;
	bool regulator_enable;

	struct sde_rsc_client *rsc_client;

	int res_ref_cnt;
	int rot_enable_clk_cnt;
	struct sde_rot_clk *rot_clk;
@@ -768,6 +765,15 @@ static inline void sde_rot_mgr_unlock(struct sde_rot_mgr *mgr)
	mutex_unlock(&mgr->lock);
}

/*
 * sde_rot_mgr_pd_enabled - return true if power domain is enabled
 * @mgr: Pointer to rotator manager
 */
static inline bool sde_rot_mgr_pd_enabled(struct sde_rot_mgr *mgr)
{
	return mgr && mgr->device && mgr->device->pm_domain;
}

#if defined(CONFIG_PM)
int sde_rotator_runtime_resume(struct device *dev);
int sde_rotator_runtime_suspend(struct device *dev);