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

Commit a50531b6 authored by Alan Kwong's avatar Alan Kwong
Browse files

msm: sde: check if power enabled before rotator reg dump



Register dump through debugfs should check if power is
enabled to avoid clock enable failure. Add check to
bypass register dump if power is not already enabled.

Change-Id: I378d981cb40bf2a98e505152367f732f65bfa068
Signed-off-by: default avatarAlan Kwong <akwong@codeaurora.org>
parent 87b21110
Loading
Loading
Loading
Loading
+9 −0
Original line number 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);

/* 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
 * @mgr: Pointer to rotator manager
+18 −0
Original line number 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);

	/* 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);

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

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

	mutex_unlock(&dbg->buflock);

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

	return count;

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

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;

		/* 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);

		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 */
		sde_rotator_clk_ctrl(dbg->mgr, false);
		sde_rot_mgr_unlock(dbg->mgr);

		dbg->buf_len = tot;
	}