diff options
author | Mathieu Poirier <mathieu.poirier@linaro.org> | 2015-03-30 14:13:34 -0600 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2015-04-03 16:17:03 +0200 |
commit | 8c02a5ba34a1fae6def8cb5a39bb582f09bca49c (patch) | |
tree | c498d4dd691794fe9d314f67695c8bfa03b10e6a | |
parent | d86fb45b5c52d8f2a3e78e81afd85a2a9d4478d7 (diff) | |
download | linux-stable-8c02a5ba34a1fae6def8cb5a39bb582f09bca49c.tar.gz linux-stable-8c02a5ba34a1fae6def8cb5a39bb582f09bca49c.tar.bz2 linux-stable-8c02a5ba34a1fae6def8cb5a39bb582f09bca49c.zip |
coresight: making cpu index lookup arm64 compliant
Function "get_logical_index()" is not available on arm64.
Instead of adding the function simply using "of_get_cpu_node()" and
comparing the return value with cpu handles yields the same
result.
Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r-- | drivers/coresight/of_coresight.c | 18 |
1 files changed, 6 insertions, 12 deletions
diff --git a/drivers/coresight/of_coresight.c b/drivers/coresight/of_coresight.c index c3efa418a86d..f3cc8e97a0f8 100644 --- a/drivers/coresight/of_coresight.c +++ b/drivers/coresight/of_coresight.c @@ -22,6 +22,7 @@ #include <linux/platform_device.h> #include <linux/amba/bus.h> #include <linux/coresight.h> +#include <linux/cpumask.h> #include <asm/smp_plat.h> @@ -113,7 +114,7 @@ static int of_coresight_alloc_memory(struct device *dev, struct coresight_platform_data *of_get_coresight_platform_data( struct device *dev, struct device_node *node) { - int i = 0, ret = 0; + int i = 0, ret = 0, cpu; struct coresight_platform_data *pdata; struct of_endpoint endpoint, rendpoint; struct device *rdev; @@ -187,17 +188,10 @@ struct coresight_platform_data *of_get_coresight_platform_data( /* Affinity defaults to CPU0 */ pdata->cpu = 0; dn = of_parse_phandle(node, "cpu", 0); - if (dn) { - const u32 *cell; - int len, index; - u64 hwid; - - cell = of_get_property(dn, "reg", &len); - if (cell) { - hwid = of_read_number(cell, of_n_addr_cells(dn)); - index = get_logical_index(hwid); - if (index != -EINVAL) - pdata->cpu = index; + for (cpu = 0; dn && cpu < nr_cpu_ids; cpu++) { + if (dn == of_get_cpu_node(cpu, NULL)) { + pdata->cpu = cpu; + break; } } |