Loading drivers/hwtracing/coresight/coresight-etm4x.c +21 −10 Original line number Diff line number Diff line Loading @@ -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> Loading Loading @@ -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); Loading Loading @@ -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); Loading Loading @@ -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; Loading drivers/hwtracing/coresight/coresight-etm4x.h +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 Loading Loading @@ -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 { Loading Loading @@ -382,6 +383,7 @@ struct etmv4_drvdata { bool nooverflow; bool atbtrig; bool lpoverride; bool tupwr_disable; struct etmv4_config config; }; Loading Loading
drivers/hwtracing/coresight/coresight-etm4x.c +21 −10 Original line number Diff line number Diff line Loading @@ -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> Loading Loading @@ -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); Loading Loading @@ -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); Loading Loading @@ -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; Loading
drivers/hwtracing/coresight/coresight-etm4x.h +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 Loading Loading @@ -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 { Loading Loading @@ -382,6 +383,7 @@ struct etmv4_drvdata { bool nooverflow; bool atbtrig; bool lpoverride; bool tupwr_disable; struct etmv4_config config; }; Loading