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

Commit 09b42c46 authored by qctecmdr Service's avatar qctecmdr Service Committed by Gerrit - the friendly Code Review server
Browse files

Merge "coresight: etm: Add check of trace unit power property"

parents c1c8a96d cd4779fa
Loading
Loading
Loading
Loading
+21 −10
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@
#include <linux/cpu.h>
#include <linux/coresight.h>
#include <linux/coresight-pmu.h>
#include <linux/of.h>
#include <linux/pm_wakeup.h>
#include <linux/amba/bus.h>
#include <linux/seq_file.h>
@@ -159,12 +160,14 @@ static void etm4_enable_hw(void *info)
	writel_relaxed(config->vmid_mask0, drvdata->base + TRCVMIDCCTLR0);
	writel_relaxed(config->vmid_mask1, drvdata->base + TRCVMIDCCTLR1);

	if (!drvdata->tupwr_disable) {
		/*
		 * Request to keep the trace unit powered and also
		 * emulation of powerdown
		 */
	writel_relaxed(readl_relaxed(drvdata->base + TRCPDCR) | TRCPDCR_PU,
		       drvdata->base + TRCPDCR);
		writel_relaxed(readl_relaxed(drvdata->base + TRCPDCR)
				| TRCPDCR_PU, drvdata->base + TRCPDCR);
	}

	/* Enable the trace unit */
	writel_relaxed(1, drvdata->base + TRCPRGCTLR);
@@ -313,10 +316,12 @@ static void etm4_disable_hw(void *info)

	CS_UNLOCK(drvdata->base);

	if (!drvdata->tupwr_disable) {
		/* power can be removed from the trace unit now */
		control = readl_relaxed(drvdata->base + TRCPDCR);
		control &= ~TRCPDCR_PU;
		writel_relaxed(control, drvdata->base + TRCPDCR);
	}

	control = readl_relaxed(drvdata->base + TRCPRGCTLR);

@@ -1034,6 +1039,12 @@ static int etm4_probe(struct amba_device *adev, const struct amba_id *id)
	dev_info(dev, "CPU%d: ETM v%d.%d initialized\n",
		 drvdata->cpu, drvdata->arch >> 4, drvdata->arch & 0xf);

	drvdata->tupwr_disable = of_property_read_bool(drvdata->dev->of_node,
				"qcom,tupwr-disable");

	dev_info(dev, "CPU%d: %s initialized\n",
			drvdata->cpu, (char *)id->data);

	if (boot_enable) {
		coresight_enable(drvdata->csdev);
		drvdata->boot_enable = true;
+3 −1
Original line number Diff line number Diff line
/* SPDX-License-Identifier: GPL-2.0 */
/*
 * Copyright (c) 2014-2016, The Linux Foundation. All rights reserved.
 * Copyright (c) 2014-2016, 2018 The Linux Foundation. All rights reserved.
 */

#ifndef _CORESIGHT_CORESIGHT_ETM_H
@@ -336,6 +336,7 @@ struct etmv4_config {
 * @nooverflow:	Indicate if overflow prevention is supported.
 * @atbtrig:	If the implementation can support ATB triggers
 * @lpoverride:	If the implementation can support low-power state over.
 * @tupwr_disable:	If disable the support of keeping trace unit powered.
 * @config:	structure holding configuration parameters.
 */
struct etmv4_drvdata {
@@ -382,6 +383,7 @@ struct etmv4_drvdata {
	bool				nooverflow;
	bool				atbtrig;
	bool				lpoverride;
	bool				tupwr_disable;
	struct etmv4_config		config;
};