quic/qbox
Loading...
Searching...
No Matches
virtio_mmio_sound.h
1/*
2 * This file is part of libqbox
3 * Copyright (c) 2024 Qualcomm Innovation Center, Inc. All Rights Reserved.
4 * Author: GreenSocs 2022
5 *
6 * SPDX-License-Identifier: BSD-3-Clause
7 */
8
9#pragma once
10
11#include <vector>
12
13#include <cci_configuration>
14
15#include <device.h>
16#include <ports/target.h>
17#include <ports/qemu-initiator-signal-socket.h>
18#include <virtio/virtio-mmio.h>
19#include <qemu-instance.h>
20
21#include <module_factory_registery.h>
22
24{
25 std::string driver;
26 std::string audiodev_id;
27
28public:
29 virtio_mmio_sound(const sc_core::sc_module_name& name, sc_core::sc_object* o)
30 : virtio_mmio_sound(name, *(dynamic_cast<QemuInstance*>(o)))
31 {
32 }
33
34 virtio_mmio_sound(sc_core::sc_module_name name, QemuInstance& inst, const std::string& driver = "alsa")
35 : QemuVirtioMMIO(name, inst, "virtio-sound-device")
36 , driver(driver)
37 , audiodev_id(std::string(sc_core::sc_module::name()) + "-id")
38 {
39 std::stringstream opts;
40 opts << driver << ",id=" << audiodev_id;
41
42 m_inst.add_arg("-audiodev");
43 m_inst.add_arg(opts.str().c_str());
44 }
45
46 void before_end_of_elaboration() override
47 {
48 QemuVirtioMMIO::before_end_of_elaboration();
49
50 m_dev.set_prop_str("audiodev", audiodev_id.c_str());
51 }
52};
53
54extern "C" void module_register();
This class encapsulates a libqemu-cxx qemu::LibQemu instance. It handles QEMU parameters and instance...
Definition qemu-instance.h:89
void add_arg(const char *arg)
Add a command line argument to the qemu instance.
Definition qemu-instance.h:329
Definition target.h:160
Definition virtio-mmio.h:23
Definition virtio_mmio_sound.h:24