coresight: implementing 'cpu_id()' API

Other than plainly parsing the device tree there is no way to
know which CPU a tracer is affined to.  As such adding an
interface to lookup the CPU field enclosed in the etm_drvdata
structure that was initialised at boot time.

Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Mathieu Poirier 2016-02-02 14:14:01 -07:00 committed by Greg Kroah-Hartman
parent b15f0fb657
commit 52210c8745
3 changed files with 19 additions and 0 deletions

View File

@ -315,6 +315,13 @@ static void etm_enable_hw(void *info)
dev_dbg(drvdata->dev, "cpu: %d enable smp call done\n", drvdata->cpu); dev_dbg(drvdata->dev, "cpu: %d enable smp call done\n", drvdata->cpu);
} }
static int etm_cpu_id(struct coresight_device *csdev)
{
struct etm_drvdata *drvdata = dev_get_drvdata(csdev->dev.parent);
return drvdata->cpu;
}
static int etm_trace_id(struct coresight_device *csdev) static int etm_trace_id(struct coresight_device *csdev)
{ {
struct etm_drvdata *drvdata = dev_get_drvdata(csdev->dev.parent); struct etm_drvdata *drvdata = dev_get_drvdata(csdev->dev.parent);
@ -421,6 +428,7 @@ static void etm_disable(struct coresight_device *csdev)
} }
static const struct coresight_ops_source etm_source_ops = { static const struct coresight_ops_source etm_source_ops = {
.cpu_id = etm_cpu_id,
.trace_id = etm_trace_id, .trace_id = etm_trace_id,
.enable = etm_enable, .enable = etm_enable,
.disable = etm_disable, .disable = etm_disable,

View File

@ -63,6 +63,13 @@ static bool etm4_arch_supported(u8 arch)
return true; return true;
} }
static int etm4_cpu_id(struct coresight_device *csdev)
{
struct etmv4_drvdata *drvdata = dev_get_drvdata(csdev->dev.parent);
return drvdata->cpu;
}
static int etm4_trace_id(struct coresight_device *csdev) static int etm4_trace_id(struct coresight_device *csdev)
{ {
struct etmv4_drvdata *drvdata = dev_get_drvdata(csdev->dev.parent); struct etmv4_drvdata *drvdata = dev_get_drvdata(csdev->dev.parent);
@ -262,6 +269,7 @@ static void etm4_disable(struct coresight_device *csdev)
} }
static const struct coresight_ops_source etm4_source_ops = { static const struct coresight_ops_source etm4_source_ops = {
.cpu_id = etm4_cpu_id,
.trace_id = etm4_trace_id, .trace_id = etm4_trace_id,
.enable = etm4_enable, .enable = etm4_enable,
.disable = etm4_disable, .disable = etm4_disable,

View File

@ -205,12 +205,15 @@ struct coresight_ops_link {
/** /**
* struct coresight_ops_source - basic operations for a source * struct coresight_ops_source - basic operations for a source
* Operations available for sources. * Operations available for sources.
* @cpu_id: returns the value of the CPU number this component
* is associated to.
* @trace_id: returns the value of the component's trace ID as known * @trace_id: returns the value of the component's trace ID as known
to the HW. to the HW.
* @enable: enables tracing for a source. * @enable: enables tracing for a source.
* @disable: disables tracing for a source. * @disable: disables tracing for a source.
*/ */
struct coresight_ops_source { struct coresight_ops_source {
int (*cpu_id)(struct coresight_device *csdev);
int (*trace_id)(struct coresight_device *csdev); int (*trace_id)(struct coresight_device *csdev);
int (*enable)(struct coresight_device *csdev); int (*enable)(struct coresight_device *csdev);
void (*disable)(struct coresight_device *csdev); void (*disable)(struct coresight_device *csdev);