diff mbox series

[3/7] cpu: imx8: reimplement get cpu count

Message ID 20200429021720.6653-3-peng.fan@nxp.com
State Superseded
Headers show
Series [1/7] uclass: cpu: Add new API to get udevice for current CPU | expand

Commit Message

Peng Fan April 29, 2020, 2:17 a.m. UTC
Return 4 is not correct on i.MX8DX/DXL/8QM and etc. we need to count
available cpu node with device_type "cpu".

Signed-off-by: Peng Fan <peng.fan at nxp.com>
---
 drivers/cpu/imx8_cpu.c | 19 ++++++++++++++++++-
 1 file changed, 18 insertions(+), 1 deletion(-)

Comments

Simon Glass April 29, 2020, 6:03 p.m. UTC | #1
On Tue, 28 Apr 2020 at 19:54, Peng Fan <peng.fan at nxp.com> wrote:
>
> Return 4 is not correct on i.MX8DX/DXL/8QM and etc. we need to count
> available cpu node with device_type "cpu".
>
> Signed-off-by: Peng Fan <peng.fan at nxp.com>
> ---
>  drivers/cpu/imx8_cpu.c | 19 ++++++++++++++++++-
>  1 file changed, 18 insertions(+), 1 deletion(-)
>

Reviewed-by: Simon Glass <sjg at chromium.org>
diff mbox series

Patch

diff --git a/drivers/cpu/imx8_cpu.c b/drivers/cpu/imx8_cpu.c
index 95653683ac..7c54c290b8 100644
--- a/drivers/cpu/imx8_cpu.c
+++ b/drivers/cpu/imx8_cpu.c
@@ -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)