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

Commit cf633030 authored by Tingwei Zhang's avatar Tingwei Zhang
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 5a580c0a
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
@@ -3593,6 +3593,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);
@@ -3615,6 +3620,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);
@@ -3643,6 +3653,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);
@@ -3741,6 +3756,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);