blob: 735b6560843aee7749583b24e958e66553a22c1d [file] [log] [blame]
Tom Rini10e47792018-05-06 17:58:06 -04001// SPDX-License-Identifier: GPL-2.0+
Miao Yan4336af62016-01-07 01:32:01 -08002/*
3 * Copyright (C) 2015, Miao Yan <yanmiaobest@gmail.com>
Miao Yan4336af62016-01-07 01:32:01 -08004 */
5
6#include <common.h>
7#include <cpu.h>
8#include <dm.h>
9#include <errno.h>
Miao Yan92106272016-05-22 19:37:17 -070010#include <qfw.h>
Miao Yan4336af62016-01-07 01:32:01 -080011#include <asm/cpu.h>
Miao Yan4336af62016-01-07 01:32:01 -080012
Simon Glass791fa452020-01-26 22:06:27 -070013int cpu_qemu_get_desc(const struct udevice *dev, char *buf, int size)
Miao Yan4336af62016-01-07 01:32:01 -080014{
15 if (size < CPU_MAX_NAME_LEN)
16 return -ENOSPC;
17
18 cpu_get_name(buf);
19
20 return 0;
21}
22
Simon Glass791fa452020-01-26 22:06:27 -070023static int cpu_qemu_get_count(const struct udevice *dev)
Miao Yan4336af62016-01-07 01:32:01 -080024{
Asherah Connor4ffa95d2021-03-19 18:21:40 +110025 int ret;
26 struct udevice *qfw_dev;
27
28 ret = qfw_get_dev(&qfw_dev);
29 if (ret)
30 return ret;
31
32 return qfw_online_cpus(qfw_dev);
Miao Yan4336af62016-01-07 01:32:01 -080033}
34
35static const struct cpu_ops cpu_qemu_ops = {
36 .get_desc = cpu_qemu_get_desc,
37 .get_count = cpu_qemu_get_count,
38};
39
40static const struct udevice_id cpu_qemu_ids[] = {
41 { .compatible = "cpu-qemu" },
42 { }
43};
44
45U_BOOT_DRIVER(cpu_qemu_drv) = {
46 .name = "cpu_qemu",
47 .id = UCLASS_CPU,
48 .of_match = cpu_qemu_ids,
Miao Yan4336af62016-01-07 01:32:01 -080049 .ops = &cpu_qemu_ops,
50};