coresight: fixing CPU hwid lookup in device tree
authorMathieu Poirier <mathieu.poirier@linaro.org>
Mon, 26 Jan 2015 16:22:23 +0000 (09:22 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 4 Feb 2015 18:42:55 +0000 (10:42 -0800)
Some DT specification will represent CPU nodes with address
cells greater than one, making the current code fail.  Using
the proper retrieval helper function ensure the correct hwid
for CPUs is read properly with different address cell size.

Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/coresight/of_coresight.c

index 9a5ff56f34d9b87882373a82834a988547ed50ee..c3efa418a86d8eda8f715cecd97382deb965a8e8 100644 (file)
@@ -117,7 +117,7 @@ struct coresight_platform_data *of_get_coresight_platform_data(
        struct coresight_platform_data *pdata;
        struct of_endpoint endpoint, rendpoint;
        struct device *rdev;
-       struct device_node *cpu;
+       struct device_node *dn;
        struct device_node *ep = NULL;
        struct device_node *rparent = NULL;
        struct device_node *rport = NULL;
@@ -186,14 +186,16 @@ struct coresight_platform_data *of_get_coresight_platform_data(
 
        /* Affinity defaults to CPU0 */
        pdata->cpu = 0;
-       cpu = of_parse_phandle(node, "cpu", 0);
-       if (cpu) {
-               const u32 *mpidr;
+       dn = of_parse_phandle(node, "cpu", 0);
+       if (dn) {
+               const u32 *cell;
                int len, index;
+               u64 hwid;
 
-               mpidr = of_get_property(cpu, "reg", &len);
-               if (mpidr && len == 4) {
-                       index = get_logical_index(be32_to_cpup(mpidr));
+               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;
                }