On 3/27/25 17:08, Leo Yan wrote:
Since atclk is enabled after pclk during the probe phase, this commit maintains the same sequence for the runtime resume flow.
Signed-off-by: Leo Yan leo.yan@arm.com
drivers/hwtracing/coresight/coresight-funnel.c | 6 +++--- drivers/hwtracing/coresight/coresight-replicator.c | 6 +++--- drivers/hwtracing/coresight/coresight-stm.c | 6 +++--- drivers/hwtracing/coresight/coresight-tpiu.c | 6 +++--- 4 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/drivers/hwtracing/coresight/coresight-funnel.c b/drivers/hwtracing/coresight/coresight-funnel.c index ec6d3e656548..e378c2fffca9 100644 --- a/drivers/hwtracing/coresight/coresight-funnel.c +++ b/drivers/hwtracing/coresight/coresight-funnel.c @@ -299,11 +299,11 @@ static int funnel_runtime_resume(struct device *dev) { struct funnel_drvdata *drvdata = dev_get_drvdata(dev);
- if (drvdata && !IS_ERR(drvdata->atclk))
clk_prepare_enable(drvdata->atclk);
- if (drvdata && !IS_ERR_OR_NULL(drvdata->pclk)) clk_prepare_enable(drvdata->pclk);
- if (drvdata && !IS_ERR(drvdata->atclk))
return 0;clk_prepare_enable(drvdata->atclk);
}
funnel_probe() enables pclk after atclk though - which needs to be reversed as well ?
static int funnel_probe(struct device *dev, struct resource *res) { .................. drvdata->atclk = devm_clk_get_optional_enabled(dev, "atclk"); if (IS_ERR(drvdata->atclk)) return PTR_ERR(drvdata->atclk);
drvdata->pclk = coresight_get_enable_apb_pclk(dev); if (IS_ERR(drvdata->pclk)) return PTR_ERR(drvdata->pclk);
#endif diff --git a/drivers/hwtracing/coresight/coresight-replicator.c b/drivers/hwtracing/coresight/coresight-replicator.c index 460af0f7b537..78854f586e89 100644 --- a/drivers/hwtracing/coresight/coresight-replicator.c +++ b/drivers/hwtracing/coresight/coresight-replicator.c @@ -337,11 +337,11 @@ static int replicator_runtime_resume(struct device *dev) { struct replicator_drvdata *drvdata = dev_get_drvdata(dev);
- if (drvdata && !IS_ERR(drvdata->atclk))
clk_prepare_enable(drvdata->atclk);
- if (drvdata && !IS_ERR_OR_NULL(drvdata->pclk)) clk_prepare_enable(drvdata->pclk);
- if (drvdata && !IS_ERR(drvdata->atclk))
return 0;clk_prepare_enable(drvdata->atclk);
}
replicator_probe() enables pclk after atclk though - which needs to be reversed as well ?
static int replicator_probe(struct device *dev, struct resource *res) { .................. drvdata->atclk = devm_clk_get_optional_enabled(dev, "atclk"); if (IS_ERR(drvdata->atclk)) return PTR_ERR(drvdata->atclk);
drvdata->pclk = coresight_get_enable_apb_pclk(dev); if (IS_ERR(drvdata->pclk)) return PTR_ERR(drvdata->pclk);
#endif diff --git a/drivers/hwtracing/coresight/coresight-stm.c b/drivers/hwtracing/coresight/coresight-stm.c index f13fbab4d7a2..ddb4f6678efd 100644 --- a/drivers/hwtracing/coresight/coresight-stm.c +++ b/drivers/hwtracing/coresight/coresight-stm.c @@ -972,11 +972,11 @@ static int stm_runtime_resume(struct device *dev) { struct stm_drvdata *drvdata = dev_get_drvdata(dev);
- if (drvdata && !IS_ERR(drvdata->atclk))
clk_prepare_enable(drvdata->atclk);
- if (drvdata && !IS_ERR_OR_NULL(drvdata->pclk)) clk_prepare_enable(drvdata->pclk);
- if (drvdata && !IS_ERR(drvdata->atclk))
return 0;clk_prepare_enable(drvdata->atclk);
} #endif
same here as well.
diff --git a/drivers/hwtracing/coresight/coresight-tpiu.c b/drivers/hwtracing/coresight/coresight-tpiu.c index cac1b5bba086..8212959f60d4 100644 --- a/drivers/hwtracing/coresight/coresight-tpiu.c +++ b/drivers/hwtracing/coresight/coresight-tpiu.c @@ -220,11 +220,11 @@ static int tpiu_runtime_resume(struct device *dev) { struct tpiu_drvdata *drvdata = dev_get_drvdata(dev);
- if (drvdata && !IS_ERR(drvdata->atclk))
clk_prepare_enable(drvdata->atclk);
- if (drvdata && !IS_ERR_OR_NULL(drvdata->pclk)) clk_prepare_enable(drvdata->pclk);
- if (drvdata && !IS_ERR(drvdata->atclk))
return 0;clk_prepare_enable(drvdata->atclk);
} #endif
same here as well.
I assume this patch is trying to have the same clock sequence enablement during original probe and resume path and then just the reverse sequence during suspend path.