aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/hwtracing/coresight/coresight-platform.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/hwtracing/coresight/coresight-platform.c')
-rw-r--r--drivers/hwtracing/coresight/coresight-platform.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/drivers/hwtracing/coresight/coresight-platform.c b/drivers/hwtracing/coresight/coresight-platform.c
index 5d78f4fbd97d..ba8c14635c6b 100644
--- a/drivers/hwtracing/coresight/coresight-platform.c
+++ b/drivers/hwtracing/coresight/coresight-platform.c
@@ -151,12 +151,14 @@ static void of_coresight_get_ports(const struct device_node *node,
}
}
-int of_coresight_get_cpu(const struct device_node *node)
+static int of_coresight_get_cpu(struct device *dev)
{
int cpu;
struct device_node *dn;
- dn = of_parse_phandle(node, "cpu", 0);
+ if (!dev->of_node)
+ return 0;
+ dn = of_parse_phandle(dev->of_node, "cpu", 0);
/* Affinity defaults to CPU0 */
if (!dn)
return 0;
@@ -166,7 +168,6 @@ int of_coresight_get_cpu(const struct device_node *node)
/* Affinity to CPU0 if no cpu nodes are found */
return (cpu < 0) ? 0 : cpu;
}
-EXPORT_SYMBOL_GPL(of_coresight_get_cpu);
/*
* of_coresight_parse_endpoint : Parse the given output endpoint @ep
@@ -240,8 +241,6 @@ static int of_get_coresight_platform_data(struct device *dev,
bool legacy_binding = false;
struct device_node *node = dev->of_node;
- pdata->cpu = of_coresight_get_cpu(node);
-
/* Get the number of input and output port for this component */
of_coresight_get_ports(node, &pdata->nr_inport, &pdata->nr_outport);
@@ -300,6 +299,14 @@ of_get_coresight_platform_data(struct device *dev,
}
#endif
+int coresight_get_cpu(struct device *dev)
+{
+ if (is_of_node(dev->fwnode))
+ return of_coresight_get_cpu(dev);
+ return 0;
+}
+EXPORT_SYMBOL_GPL(coresight_get_cpu);
+
struct coresight_platform_data *
coresight_get_platform_data(struct device *dev)
{
@@ -318,6 +325,7 @@ coresight_get_platform_data(struct device *dev)
/* Use device name as sysfs handle */
pdata->name = dev_name(dev);
+ pdata->cpu = coresight_get_cpu(dev);
if (is_of_node(fwnode))
ret = of_get_coresight_platform_data(dev, pdata);