quic/qbox
Loading...
Searching...
No Matches
qemu_pl011.h
1/*
2 * This file is part of libqbox
3 * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All Rights Reserved.
4 * Author: GreenSocs 2021
5 *
6 * SPDX-License-Identifier: BSD-3-Clause
7 */
8
9#ifndef _LIBQBOX_COMPONENTS_UART_PL011_H
10#define _LIBQBOX_COMPONENTS_UART_PL011_H
11
12#include <cci_configuration>
13
14#include <libgssync.h>
15#include <module_factory_registery.h>
16
17#include <qemu-instance.h>
18
19#include <device.h>
20#include <ports/target.h>
21#include <ports/qemu-initiator-signal-socket.h>
22
23class qemu_pl011 : public QemuDevice
24{
25protected:
26 qemu::Chardev m_chardev;
27
28 /* FIXME: temp, should be in the backend */
29 gs::async_event m_ext_ev;
30
31public:
32 QemuTargetSocket<> socket;
34
35 qemu_pl011(const sc_core::sc_module_name& name, sc_core::sc_object* o)
36 : qemu_pl011(name, *(dynamic_cast<QemuInstance*>(o)))
37 {
38 }
39 qemu_pl011(const sc_core::sc_module_name& n, QemuInstance& inst)
40 : QemuDevice(n, inst, "pl011"), m_ext_ev(true), socket("mem", inst), irq_out("irq_out")
41 {
42 }
43
44 void before_end_of_elaboration() override
45 {
46 QemuDevice::before_end_of_elaboration();
47
48 /* FIXME: hardcoded for now */
49 m_chardev = m_inst.get().chardev_new("uart", "stdio");
50 m_dev.set_prop_chardev("chardev", m_chardev);
51 }
52
53 void end_of_elaboration() override
54 {
55 QemuDevice::set_sysbus_as_parent_bus();
56 QemuDevice::end_of_elaboration();
57
59
60 socket.init(sbd, 0);
61 irq_out.init_sbd(sbd, 0);
62 }
63};
64
65extern "C" void module_register();
66
67#endif
QEMU device abstraction as a SystemC module.
Definition device.h:37
A QEMU output GPIO exposed as a InitiatorSignalSocket<bool>
Definition qemu-initiator-signal-socket.h:40
void init_sbd(qemu::SysBusDevice sbd, int gpio_idx)
Initialize this socket with a QEMU SysBusDevice, and a GPIO index.
Definition qemu-initiator-signal-socket.h:173
This class encapsulates a libqemu-cxx qemu::LibQemu instance. It handles QEMU parameters and instance...
Definition qemu-instance.h:89
qemu::LibQemu & get()
Returns the underlying qemu::LibQemu instance.
Definition qemu-instance.h:448
Definition target.h:160
Definition async_event.h:22
Definition libqemu-cxx.h:742
Definition libqemu-cxx.h:638
Definition qemu_pl011.h:24