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

Commit 06076c95 authored by Tingwei Zhang's avatar Tingwei Zhang
Browse files

soc: qcom: User resource pair number correctly



The number of resource pairs conveyed by the HW starts at 0, i.e a
value of 0x0 indicate 1 resource pair, 0x1 indicate two and so on.
As such add 1 to the value of NUMRSPAIR for a better representation.
Multiple 2 in save and restore operattion since it's number of pairs.

Change-Id: I3a0999ee05ad6a24322195a001e9ce6e1685c6fb
Signed-off-by: default avatarTingwei Zhang <tingwei@codeaurora.org>
parent bc46a78f
Loading
Loading
Loading
Loading
+6 −6
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
@@ -345,7 +345,7 @@ static inline void etm_mm_save_state(struct etm_ctx *etmdata)
						       TRCCNTVRn(j));
		}
		/* resource selection registers */
		for (j = 0; j < etmdata->nr_resource; j++)
		for (j = 0; j < etmdata->nr_resource * 2; j++)
			etmdata->state[i++] = etm_readl(etmdata, TRCRSCTLRn(j));
		/* comparator registers */
		for (j = 0; j < etmdata->nr_addr_cmp * 2; j++) {
@@ -448,7 +448,7 @@ static inline void etm_mm_restore_state(struct etm_ctx *etmdata)
			etm_writel(etmdata, etmdata->state[i++], TRCCNTVRn(j));
		}
		/* resource selection registers */
		for (j = 0; j < etmdata->nr_resource; j++)
		for (j = 0; j < etmdata->nr_resource * 2; j++)
			etm_writel(etmdata, etmdata->state[i++], TRCRSCTLRn(j));
		/* comparator registers */
		for (j = 0; j < etmdata->nr_addr_cmp * 2; j++) {
@@ -932,7 +932,7 @@ static inline void etm_si_save_state(struct etm_ctx *etmdata)
		for (j = 0; j < etmdata->nr_cntr; j++)
			i = etm_read_crxr(etmdata->state, i, j);
		/* resource selection registers */
		for (j = 0; j < etmdata->nr_resource; j++)
		for (j = 0; j < etmdata->nr_resource * 2; j++)
			i = etm_read_rsxr(etmdata->state, i, j + 2);
		/* comparator registers */
		for (j = 0; j < etmdata->nr_addr_cmp * 2; j++)
@@ -1387,7 +1387,7 @@ static inline void etm_si_restore_state(struct etm_ctx *etmdata)
		for (j = 0; j < etmdata->nr_cntr; j++)
			i = etm_write_crxr(etmdata->state, i, j);
		/* resource selection registers */
		for (j = 0; j < etmdata->nr_resource; j++)
		for (j = 0; j < etmdata->nr_resource * 2; j++)
			i = etm_write_rsxr(etmdata->state, i, j + 2);
		/* comparator registers */
		for (j = 0; j < etmdata->nr_addr_cmp * 2; j++)
@@ -1496,7 +1496,7 @@ static void etm_init_arch_data(void *info)
	val = etm_readl(etmdata, TRCIDR4);
	etmdata->nr_addr_cmp = BMVAL(val, 0, 3);
	etmdata->nr_data_cmp = BMVAL(val, 4, 7);
	etmdata->nr_resource = BMVAL(val, 16, 19);
	etmdata->nr_resource = BMVAL(val, 16, 19) + 1;
	etmdata->nr_ss_cmp = BMVAL(val, 20, 23);
	etmdata->nr_ctxid_cmp = BMVAL(val, 24, 27);
	etmdata->nr_vmid_cmp = BMVAL(val, 28, 31);