|
@@ -164,6 +164,13 @@ static void etm4_enable_hw(void *info)
|
|
|
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);
|
|
|
+
|
|
|
/* Enable the trace unit */
|
|
|
writel_relaxed(1, drvdata->base + TRCPRGCTLR);
|
|
|
|
|
@@ -294,6 +301,11 @@ 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);
|
|
|
+
|
|
|
control = readl_relaxed(drvdata->base + TRCPRGCTLR);
|
|
|
|
|
|
/* EN, bit[0] Trace unit enable bit */
|