From 4700692ee8db9bbc9351e3927b246264b2bddd9d Mon Sep 17 00:00:00 2001 From: "Tao,Zhang" Date: Thu, 22 Oct 2020 14:08:42 +0800 Subject: [PATCH] coresight: tmc: Configure cti trigger number in device tree Configure flush and reset cti trigger number in device tree. Replace configuring cti trigger number by hard code since some platforms don't have same cti trigger number. Change-Id: Ib26802b3bd3449566954752b100d6ea188e98e13 Signed-off-by: Tao,Zhang --- drivers/hwtracing/coresight/coresight-tmc-etf.c | 12 ++++++++---- drivers/hwtracing/coresight/coresight-tmc-etr.c | 12 ++++++++---- drivers/hwtracing/coresight/coresight-tmc.c | 12 ++++++++++++ drivers/hwtracing/coresight/coresight-tmc.h | 2 ++ 4 files changed, 30 insertions(+), 8 deletions(-) diff --git a/drivers/hwtracing/coresight/coresight-tmc-etf.c b/drivers/hwtracing/coresight/coresight-tmc-etf.c index 2c63c193b87a..3a8e95d0706f 100644 --- a/drivers/hwtracing/coresight/coresight-tmc-etf.c +++ b/drivers/hwtracing/coresight/coresight-tmc-etf.c @@ -218,8 +218,10 @@ out: kfree(buf); if (!ret) { - coresight_cti_map_trigin(drvdata->cti_reset, 5, 0); - coresight_cti_map_trigout(drvdata->cti_flush, 1, 0); + coresight_cti_map_trigin(drvdata->cti_reset, + drvdata->cti_reset_trig_num, 0); + coresight_cti_map_trigout(drvdata->cti_flush, + drvdata->cti_flush_trig_num, 0); dev_info(&csdev->dev, "TMC-ETB/ETF enabled\n"); } @@ -333,8 +335,10 @@ static int tmc_disable_etf_sink(struct coresight_device *csdev) spin_unlock_irqrestore(&drvdata->spinlock, flags); - coresight_cti_unmap_trigin(drvdata->cti_reset, 0, 0); - coresight_cti_unmap_trigout(drvdata->cti_flush, 1, 0); + coresight_cti_unmap_trigin(drvdata->cti_reset, + drvdata->cti_reset_trig_num, 0); + coresight_cti_unmap_trigout(drvdata->cti_flush, + drvdata->cti_flush_trig_num, 0); dev_dbg(&csdev->dev, "TMC-ETB/ETF disabled\n"); return 0; } diff --git a/drivers/hwtracing/coresight/coresight-tmc-etr.c b/drivers/hwtracing/coresight/coresight-tmc-etr.c index dd00a5666f5c..4880775f3aec 100644 --- a/drivers/hwtracing/coresight/coresight-tmc-etr.c +++ b/drivers/hwtracing/coresight/coresight-tmc-etr.c @@ -1470,8 +1470,10 @@ static int tmc_enable_etr_sink_sysfs(struct coresight_device *csdev) free_buf = new_buf = tmc_etr_setup_sysfs_buf(drvdata); if (IS_ERR(new_buf)) return -ENOMEM; - coresight_cti_map_trigout(drvdata->cti_flush, 3, 0); - coresight_cti_map_trigin(drvdata->cti_reset, 5, 0); + coresight_cti_map_trigout(drvdata->cti_flush, + drvdata->cti_flush_trig_num, 0); + coresight_cti_map_trigin(drvdata->cti_reset, + drvdata->cti_reset_trig_num, 0); } spin_lock_irqsave(&drvdata->spinlock, flags); } @@ -2053,8 +2055,10 @@ static int _tmc_disable_etr_sink(struct coresight_device *csdev, flush_workqueue(drvdata->byte_cntr->usb_wq); drvdata->usbch = NULL; } - coresight_cti_unmap_trigin(drvdata->cti_reset, 0, 0); - coresight_cti_unmap_trigout(drvdata->cti_flush, 3, 0); + coresight_cti_unmap_trigin(drvdata->cti_reset, + drvdata->cti_reset_trig_num, 0); + coresight_cti_unmap_trigout(drvdata->cti_flush, + drvdata->cti_flush_trig_num, 0); } out: dev_info(&csdev->dev, "TMC-ETR disabled\n"); diff --git a/drivers/hwtracing/coresight/coresight-tmc.c b/drivers/hwtracing/coresight/coresight-tmc.c index 169d044ee8c1..e01a824f894b 100644 --- a/drivers/hwtracing/coresight/coresight-tmc.c +++ b/drivers/hwtracing/coresight/coresight-tmc.c @@ -611,12 +611,24 @@ static int tmc_probe(struct amba_device *adev, const struct amba_id *id) dev_err(dev, "failed to get flush cti, defer probe\n"); return -EPROBE_DEFER; } + ret = of_property_read_u32(adev->dev.of_node, "cti-flush-trig-num", + &drvdata->cti_flush_trig_num); + if (ret) { + dev_err(dev, "failed to get flush cti trigger number, defer probe\n"); + return ret; + } drvdata->cti_reset = coresight_cti_get(ctidata->names[1]); if (IS_ERR(drvdata->cti_reset)) { dev_err(dev, "failed to get reset cti, defer probe\n"); return -EPROBE_DEFER; } + ret = of_property_read_u32(adev->dev.of_node, "cti-reset-trig-num", + &drvdata->cti_reset_trig_num); + if (ret) { + dev_err(dev, "failed to get reset cti trigger number, defer probe\n"); + return ret; + } } desc.dev = dev; diff --git a/drivers/hwtracing/coresight/coresight-tmc.h b/drivers/hwtracing/coresight/coresight-tmc.h index 74e36a6d0059..90921dcf635b 100644 --- a/drivers/hwtracing/coresight/coresight-tmc.h +++ b/drivers/hwtracing/coresight/coresight-tmc.h @@ -260,6 +260,8 @@ struct tmc_drvdata { bool enable_to_bam; struct coresight_cti *cti_flush; struct coresight_cti *cti_reset; + u32 cti_flush_trig_num; + u32 cti_reset_trig_num; enum tmc_etr_out_mode out_mode; };