master
c 54 lines 1.59 KB
Raw
1 /*
2 * ASPEED Coprocessor
3 *
4 * Copyright (C) 2025 ASPEED Technology Inc.
5 *
6 * SPDX-License-Identifier: GPL-2.0-or-later
7 */
8
9 #include "qemu/osdep.h"
10 #include "qapi/error.h"
11 #include "system/memory.h"
12 #include "hw/core/qdev-properties.h"
13 #include "hw/arm/aspeed_coprocessor.h"
14
15 static void aspeed_coprocessor_realize(DeviceState *dev, Error **errp)
16 {
17 AspeedCoprocessorState *s = ASPEED_COPROCESSOR(dev);
18
19 if (!s->memory) {
20 error_setg(errp, "'memory' link is not set");
21 return;
22 }
23 }
24
25 static const Property aspeed_coprocessor_properties[] = {
26 DEFINE_PROP_LINK("memory", AspeedCoprocessorState, memory,
27 TYPE_MEMORY_REGION, MemoryRegion *),
28 DEFINE_PROP_LINK("sram", AspeedCoprocessorState, sram, TYPE_MEMORY_REGION,
29 MemoryRegion *),
30 DEFINE_PROP_LINK("uart", AspeedCoprocessorState, uart, TYPE_SERIAL_MM,
31 SerialMM *),
32 DEFINE_PROP_INT32("uart-dev", AspeedCoprocessorState, uart_dev, 0),
33 };
34
35 static void aspeed_coprocessor_class_init(ObjectClass *oc, const void *data)
36 {
37 DeviceClass *dc = DEVICE_CLASS(oc);
38
39 dc->realize = aspeed_coprocessor_realize;
40 device_class_set_props(dc, aspeed_coprocessor_properties);
41 }
42
43 static const TypeInfo aspeed_coprocessor_types[] = {
44 {
45 .name = TYPE_ASPEED_COPROCESSOR,
46 .parent = TYPE_DEVICE,
47 .instance_size = sizeof(AspeedCoprocessorState),
48 .class_size = sizeof(AspeedCoprocessorClass),
49 .class_init = aspeed_coprocessor_class_init,
50 .abstract = true,
51 },
52 };
53
54 DEFINE_TYPES(aspeed_coprocessor_types)