1 // SPDX-License-Identifier: GPL-2.0+
3 * Copyright (C) 2015 Google, Inc
4 * Written by Simon Glass <sjg@chromium.org>
14 int cpu_probe_all(void)
19 ret
= uclass_first_device(UCLASS_CPU
, &cpu
);
21 debug("%s: No CPU found (err = %d)\n", __func__
, ret
);
26 ret
= uclass_next_device(&cpu
);
28 debug("%s: Error while probing CPU (err = %d)\n",
37 int cpu_get_desc(struct udevice
*dev
, char *buf
, int size
)
39 struct cpu_ops
*ops
= cpu_get_ops(dev
);
44 return ops
->get_desc(dev
, buf
, size
);
47 int cpu_get_info(struct udevice
*dev
, struct cpu_info
*info
)
49 struct cpu_ops
*ops
= cpu_get_ops(dev
);
54 return ops
->get_info(dev
, info
);
57 int cpu_get_count(struct udevice
*dev
)
59 struct cpu_ops
*ops
= cpu_get_ops(dev
);
64 return ops
->get_count(dev
);
67 int cpu_get_vendor(struct udevice
*dev
, char *buf
, int size
)
69 struct cpu_ops
*ops
= cpu_get_ops(dev
);
74 return ops
->get_vendor(dev
, buf
, size
);
77 U_BOOT_DRIVER(cpu_bus
) = {
79 .id
= UCLASS_SIMPLE_BUS
,
80 .per_child_platdata_auto_alloc_size
= sizeof(struct cpu_platdata
),
83 static int uclass_cpu_init(struct uclass
*uc
)
89 node
= ofnode_path("/cpus");
90 if (!ofnode_valid(node
))
93 ret
= device_bind_driver_to_node(dm_root(), "cpu_bus", "cpus", node
,
99 UCLASS_DRIVER(cpu
) = {
102 .flags
= DM_UC_FLAG_SEQ_ALIAS
,
103 .init
= uclass_cpu_init
,