[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 17/24] libqos: add ARM n800 machine object
From: |
Paolo Bonzini |
Subject: |
[Qemu-devel] [PULL 17/24] libqos: add ARM n800 machine object |
Date: |
Mon, 3 Jun 2019 19:10:36 +0200 |
This is used to test omap_i2c.
Signed-off-by: Paolo Bonzini <address@hidden>
---
tests/Makefile.include | 1 +
tests/libqos/arm-n800-machine.c | 92 +++++++++++++++++++++++++++++++++++++++++
2 files changed, 93 insertions(+)
create mode 100644 tests/libqos/arm-n800-machine.c
diff --git a/tests/Makefile.include b/tests/Makefile.include
index 63f646a..03a6483 100644
--- a/tests/Makefile.include
+++ b/tests/Makefile.include
@@ -711,6 +711,7 @@ qos-test-obj-y += tests/libqos/virtio-serial.o
# Machines
qos-test-obj-y += tests/libqos/aarch64-xlnx-zcu102-machine.o
+qos-test-obj-y += tests/libqos/arm-n800-machine.o
qos-test-obj-y += tests/libqos/arm-raspi2-machine.o
qos-test-obj-y += tests/libqos/arm-sabrelite-machine.o
qos-test-obj-y += tests/libqos/arm-smdkc210-machine.o
diff --git a/tests/libqos/arm-n800-machine.c b/tests/libqos/arm-n800-machine.c
new file mode 100644
index 0000000..87279bd
--- /dev/null
+++ b/tests/libqos/arm-n800-machine.c
@@ -0,0 +1,92 @@
+/*
+ * libqos driver framework
+ *
+ * Copyright (c) 2019 Red Hat, Inc.
+ *
+ * Author: Paolo Bonzini <address@hidden>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2 as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, see <http://www.gnu.org/licenses/>
+ */
+
+#include "qemu/osdep.h"
+#include "libqtest.h"
+#include "libqos/malloc.h"
+#include "libqos/qgraph.h"
+#include "libqos/i2c.h"
+
+#define ARM_PAGE_SIZE 4096
+#define N800_RAM_START 0x80000000
+#define N800_RAM_END 0x88000000
+
+typedef struct QN800Machine QN800Machine;
+
+struct QN800Machine {
+ QOSGraphObject obj;
+ QGuestAllocator alloc;
+ OMAPI2C i2c_1;
+};
+
+static void *n800_get_driver(void *object, const char *interface)
+{
+ QN800Machine *machine = object;
+ if (!g_strcmp0(interface, "memory")) {
+ return &machine->alloc;
+ }
+
+ fprintf(stderr, "%s not present in arm/n800\n", interface);
+ g_assert_not_reached();
+}
+
+static QOSGraphObject *n800_get_device(void *obj, const char *device)
+{
+ QN800Machine *machine = obj;
+ if (!g_strcmp0(device, "omap_i2c")) {
+ return &machine->i2c_1.obj;
+ }
+
+ fprintf(stderr, "%s not present in arm/n800\n", device);
+ g_assert_not_reached();
+}
+
+static void n800_destructor(QOSGraphObject *obj)
+{
+ QN800Machine *machine = (QN800Machine *) obj;
+ alloc_destroy(&machine->alloc);
+}
+
+static void *qos_create_machine_arm_n800(QTestState *qts)
+{
+ QN800Machine *machine = g_new0(QN800Machine, 1);
+
+ alloc_init(&machine->alloc, 0,
+ N800_RAM_START,
+ N800_RAM_END,
+ ARM_PAGE_SIZE);
+ machine->obj.get_device = n800_get_device;
+ machine->obj.get_driver = n800_get_driver;
+ machine->obj.destructor = n800_destructor;
+
+ omap_i2c_init(&machine->i2c_1, qts, 0x48070000);
+ return &machine->obj;
+}
+
+static void n800_register_nodes(void)
+{
+ QOSGraphEdgeOptions edge = {
+ .extra_device_opts = "bus=i2c-bus.0"
+ };
+ qos_node_create_machine("arm/n800", qos_create_machine_arm_n800);
+ qos_node_contains("arm/n800", "omap_i2c", &edge, NULL);
+}
+
+libqos_init(n800_register_nodes);
--
1.8.3.1
- [Qemu-devel] [PULL 00/24] Misc patches for 2019-06-03, Paolo Bonzini, 2019/06/03
- [Qemu-devel] [PULL 01/24] test-thread-pool: be more reliable, Paolo Bonzini, 2019/06/03
- [Qemu-devel] [PULL 02/24] vl: make -accel help to list enabled accelerators only, Paolo Bonzini, 2019/06/03
- [Qemu-devel] [PULL 03/24] checkpatch: allow SPDX-License-Identifier, Paolo Bonzini, 2019/06/03
- [Qemu-devel] [PULL 04/24] memory: Remove memory_region_get_dirty(), Paolo Bonzini, 2019/06/03
- [Qemu-devel] [PULL 07/24] edu: mmio: allow 64-bit access in read dispatch, Paolo Bonzini, 2019/06/03
- [Qemu-devel] [PULL 08/24] edu: uses uint64_t in dma operation, Paolo Bonzini, 2019/06/03
- [Qemu-devel] [PULL 09/24] qgraph: allow extra_device_opts on contains nodes, Paolo Bonzini, 2019/06/03
- [Qemu-devel] [PULL 05/24] i386: Enable IA32_MISC_ENABLE MWAIT bit when exposing mwait/monitor, Paolo Bonzini, 2019/06/03
- [Qemu-devel] [PULL 20/24] tests: convert ds1338-test to qtest, Paolo Bonzini, 2019/06/03
- [Qemu-devel] [PULL 17/24] libqos: add ARM n800 machine object,
Paolo Bonzini <=
- [Qemu-devel] [PULL 14/24] imx25-pdk: create ds1338 for qtest inside the test, Paolo Bonzini, 2019/06/03
- [Qemu-devel] [PULL 18/24] libqos: add ARM imx25-pdk machine object, Paolo Bonzini, 2019/06/03
- [Qemu-devel] [PULL 15/24] libqos: split I2CAdapter initialization and allocation, Paolo Bonzini, 2019/06/03
- [Qemu-devel] [PULL 21/24] libqos: i2c: move address into QI2CDevice, Paolo Bonzini, 2019/06/03
- [Qemu-devel] [PULL 19/24] tests: convert OMAP i2c tests to qgraph, Paolo Bonzini, 2019/06/03
- [Qemu-devel] [PULL 24/24] q35: Revert to kernel irqchip, Paolo Bonzini, 2019/06/03
- [Qemu-devel] [PULL 12/24] libqos: fix omap-i2c receiving more than 4 bytes, Paolo Bonzini, 2019/06/03
- [Qemu-devel] [PULL 23/24] configure: remove tpm_passthrough & tpm_emulator, Paolo Bonzini, 2019/06/03
- [Qemu-devel] [PULL 13/24] pca9552-test: do not rely on state across tests, Paolo Bonzini, 2019/06/03