mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-09 13:49:24 -04:00
coresight: etm: Add check of trace unit power property
Add check of trace unit power property to enable/disable that keep the trace unit powered. Change-Id: I66dbfee16df63480c9309092e61ee39b8b0cd6e8 Signed-off-by: Mao Jinlong <jinlmao@codeaurora.org> Signed-off-by: Tingwei Zhang <tingwei@codeaurora.org>
This commit is contained in:
parent
3178aaf4dc
commit
57fa8d1135
2 changed files with 25 additions and 12 deletions
|
|
@ -1,6 +1,6 @@
|
|||
// SPDX-License-Identifier: GPL-2.0
|
||||
/*
|
||||
* Copyright (c) 2014, The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2014, 2018 The Linux Foundation. All rights reserved.
|
||||
*/
|
||||
|
||||
#include <linux/kernel.h>
|
||||
|
|
@ -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>
|
||||
|
|
@ -173,12 +174,14 @@ static int etm4_enable_hw(struct etmv4_drvdata *drvdata)
|
|||
writel_relaxed(config->vmid_mask0, drvdata->base + TRCVMIDCCTLR0);
|
||||
writel_relaxed(config->vmid_mask1, drvdata->base + TRCVMIDCCTLR1);
|
||||
|
||||
/*
|
||||
* Request to keep the trace unit powered and also
|
||||
* emulation of powerdown
|
||||
*/
|
||||
writel_relaxed(readl_relaxed(drvdata->base + TRCPDCR) | TRCPDCR_PU,
|
||||
drvdata->base + TRCPDCR);
|
||||
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);
|
||||
}
|
||||
|
||||
/* Enable the trace unit */
|
||||
writel_relaxed(1, drvdata->base + TRCPRGCTLR);
|
||||
|
|
@ -443,10 +446,12 @@ static void etm4_disable_hw(void *info)
|
|||
|
||||
CS_UNLOCK(drvdata->base);
|
||||
|
||||
/* power can be removed from the trace unit now */
|
||||
control = readl_relaxed(drvdata->base + TRCPDCR);
|
||||
control &= ~TRCPDCR_PU;
|
||||
writel_relaxed(control, drvdata->base + TRCPDCR);
|
||||
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);
|
||||
|
||||
|
|
@ -1166,6 +1171,12 @@ static int etm4_probe(struct amba_device *adev, const struct amba_id *id)
|
|||
dev_info(&drvdata->csdev->dev, "CPU%d: ETM v%d.%d initialized\n",
|
||||
drvdata->cpu, drvdata->arch >> 4, drvdata->arch & 0xf);
|
||||
|
||||
drvdata->tupwr_disable = of_property_read_bool(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;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
/*
|
||||
* Copyright (c) 2014-2015, The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2014-2016, 2018 The Linux Foundation. All rights reserved.
|
||||
*/
|
||||
|
||||
#ifndef _CORESIGHT_CORESIGHT_ETM_H
|
||||
|
|
@ -335,6 +335,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 {
|
||||
|
|
@ -380,6 +381,7 @@ struct etmv4_drvdata {
|
|||
bool nooverflow;
|
||||
bool atbtrig;
|
||||
bool lpoverride;
|
||||
bool tupwr_disable;
|
||||
struct etmv4_config config;
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue