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

Commit 37786c48 authored by Tingwei Zhang's avatar Tingwei Zhang Committed by Gerrit - the friendly Code Review server
Browse files

coresight: tpdm: Check TPDM status before accessing register



Clock needs to be on when accessing TPDM register.  Clock is
enabled with TPDM enablement process.  Check for TPDM enablement
status before accessing register, return error if TPDM is not
enabled.

Change-Id: I3010fc8c8dc2a1c58d2b5276ab832b2e3b063f08
Signed-off-by: default avatarTingwei Zhang <tingwei@codeaurora.org>
parent 210fe280
Loading
Loading
Loading
Loading
+21 −1
Original line number Diff line number Diff line
/* Copyright (c) 2014-2017, The Linux Foundation. All rights reserved.
/* Copyright (c) 2014-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
@@ -3878,6 +3878,11 @@ static ssize_t tpdm_show_cmb_read_interface_state(struct device *dev,
		return -EPERM;

	mutex_lock(&drvdata->lock);
	if (!drvdata->enable) {
		mutex_unlock(&drvdata->lock);
		return -EPERM;
	}

	TPDM_UNLOCK(drvdata);
	val = tpdm_readl(drvdata, TPDM_CMB_READVAL);
	TPDM_LOCK(drvdata);
@@ -3900,6 +3905,11 @@ static ssize_t tpdm_show_cmb_read_ctl_reg(struct device *dev,
		return -EPERM;

	mutex_lock(&drvdata->lock);
	if (!drvdata->enable) {
		mutex_unlock(&drvdata->lock);
		return -EPERM;
	}

	TPDM_UNLOCK(drvdata);
	val = tpdm_readl(drvdata, TPDM_CMB_READCTL);
	TPDM_LOCK(drvdata);
@@ -3928,6 +3938,11 @@ static ssize_t tpdm_store_cmb_read_ctl_reg(struct device *dev,
		return -EPERM;

	mutex_lock(&drvdata->lock);
	if (!drvdata->enable) {
		mutex_unlock(&drvdata->lock);
		return -EPERM;
	}

	TPDM_UNLOCK(drvdata);
	tpdm_writel(drvdata, val, TPDM_CMB_READCTL);
	TPDM_LOCK(drvdata);
@@ -4026,6 +4041,11 @@ static ssize_t tpdm_store_cmb_markr(struct device *dev,
		return -EPERM;

	mutex_lock(&drvdata->lock);
	if (!drvdata->enable) {
		mutex_unlock(&drvdata->lock);
		return -EPERM;
	}

	TPDM_UNLOCK(drvdata);
	tpdm_writel(drvdata, val, TPDM_CMB_MARKR);
	TPDM_LOCK(drvdata);