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

Commit d2ffc9b0 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: check if power enabled before rotator reg dump"

parents 44c3f460 a50531b6
Loading
Loading
Loading
Loading
+9 −0
Original line number Original line Diff line number Diff line
@@ -761,6 +761,15 @@ int sde_rotator_validate_request(struct sde_rot_mgr *rot_dev,
 */
 */
int sde_rotator_clk_ctrl(struct sde_rot_mgr *mgr, int enable);
int sde_rotator_clk_ctrl(struct sde_rot_mgr *mgr, int enable);


/* sde_rotator_resource_ctrl_enabled - check if resource control is enabled
 * @mgr: Pointer to rotator manager
 * Return: true if enabled; false otherwise
 */
static inline int sde_rotator_resource_ctrl_enabled(struct sde_rot_mgr *mgr)
{
	return mgr->regulator_enable;
}

/*
/*
 * sde_rotator_cancel_all_requests - cancel all outstanding requests
 * sde_rotator_cancel_all_requests - cancel all outstanding requests
 * @mgr: Pointer to rotator manager
 * @mgr: Pointer to rotator manager
+18 −0
Original line number Original line Diff line number Diff line
@@ -1208,18 +1208,29 @@ static ssize_t sde_rotator_debug_base_reg_write(struct file *file,
	mutex_lock(&dbg->buflock);
	mutex_lock(&dbg->buflock);


	/* Enable Clock for register access */
	/* Enable Clock for register access */
	sde_rot_mgr_lock(dbg->mgr);
	if (!sde_rotator_resource_ctrl_enabled(dbg->mgr)) {
		SDEROT_WARN("resource ctrl is not enabled\n");
		sde_rot_mgr_unlock(dbg->mgr);
		goto debug_write_error;
	}
	sde_rotator_clk_ctrl(dbg->mgr, true);
	sde_rotator_clk_ctrl(dbg->mgr, true);


	writel_relaxed(data, dbg->base + off);
	writel_relaxed(data, dbg->base + off);


	/* Disable Clock after register access */
	/* Disable Clock after register access */
	sde_rotator_clk_ctrl(dbg->mgr, false);
	sde_rotator_clk_ctrl(dbg->mgr, false);
	sde_rot_mgr_unlock(dbg->mgr);


	mutex_unlock(&dbg->buflock);
	mutex_unlock(&dbg->buflock);


	SDEROT_DBG("addr=%zx data=%x\n", off, data);
	SDEROT_DBG("addr=%zx data=%x\n", off, data);


	return count;
	return count;

debug_write_error:
	mutex_unlock(&dbg->buflock);
	return 0;
}
}


static ssize_t sde_rotator_debug_base_reg_read(struct file *file,
static ssize_t sde_rotator_debug_base_reg_read(struct file *file,
@@ -1257,6 +1268,12 @@ static ssize_t sde_rotator_debug_base_reg_read(struct file *file,
		tot = 0;
		tot = 0;


		/* Enable clock for register access */
		/* Enable clock for register access */
		sde_rot_mgr_lock(dbg->mgr);
		if (!sde_rotator_resource_ctrl_enabled(dbg->mgr)) {
			SDEROT_WARN("resource ctrl is not enabled\n");
			sde_rot_mgr_unlock(dbg->mgr);
			goto debug_read_error;
		}
		sde_rotator_clk_ctrl(dbg->mgr, true);
		sde_rotator_clk_ctrl(dbg->mgr, true);


		for (cnt = dbg->cnt; cnt > 0; cnt -= ROW_BYTES) {
		for (cnt = dbg->cnt; cnt > 0; cnt -= ROW_BYTES) {
@@ -1276,6 +1293,7 @@ static ssize_t sde_rotator_debug_base_reg_read(struct file *file,
		}
		}
		/* Disable clock after register access */
		/* Disable clock after register access */
		sde_rotator_clk_ctrl(dbg->mgr, false);
		sde_rotator_clk_ctrl(dbg->mgr, false);
		sde_rot_mgr_unlock(dbg->mgr);


		dbg->buf_len = tot;
		dbg->buf_len = tot;
	}
	}