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 <taozha@codeaurora.org>
This commit is contained in:
Tao,Zhang 2020-10-22 14:08:42 +08:00
commit 4700692ee8
4 changed files with 30 additions and 8 deletions

View file

@ -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;
}

View file

@ -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");

View file

@ -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;

View file

@ -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;
};