forked from Minki/linux
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:
parent
b15f0fb657
commit
52210c8745
@ -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,
|
||||||
|
@ -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,
|
||||||
|
@ -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);
|
||||||
|
Loading…
Reference in New Issue
Block a user