cpu: imx8: reimplement get cpu count
authorPeng Fan <peng.fan@nxp.com>
Sun, 3 May 2020 13:58:51 +0000 (21:58 +0800)
committerStefano Babic <sbabic@denx.de>
Sun, 3 May 2020 13:45:49 +0000 (15:45 +0200)
Return 4 is not correct on i.MX8DX/DXL/8QM and etc. we need to count
available cpu node with device_type "cpu".

Reviewed-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Peng Fan <peng.fan@nxp.com>
drivers/cpu/imx8_cpu.c

index 95653683ac2ddc99dc4101770709134cf0d91c92..7c54c290b881b09eb0273157ca80ddfa907577c6 100644 (file)
@@ -118,7 +118,24 @@ static int cpu_imx_get_info(struct udevice *dev, struct cpu_info *info)
 
 static int cpu_imx_get_count(struct udevice *dev)
 {
-       return 4;
+       ofnode node;
+       int num = 0;
+
+       ofnode_for_each_subnode(node, dev_ofnode(dev->parent)) {
+               const char *device_type;
+
+               if (!ofnode_is_available(node))
+                       continue;
+
+               device_type = ofnode_read_string(node, "device_type");
+               if (!device_type)
+                       continue;
+
+               if (!strcmp(device_type, "cpu"))
+                       num++;
+       }
+
+       return num;
 }
 
 static int cpu_imx_get_vendor(struct udevice *dev,  char *buf, int size)