quic/qbox
Loading...
Searching...
No Matches
pl031.h
1/*
2 * This file is part of libqbox
3 * Copyright (c) 2026 Qualcomm Innovation Center, Inc. All Rights Reserved.
4 *
5 * SPDX-License-Identifier: BSD-3-Clause
6 */
7
8#ifndef _LIBQBOX_COMPONENTS_PL031_H
9#define _LIBQBOX_COMPONENTS_PL031_H
10
11#include <systemc>
12#include <cci_configuration>
13#include <module_factory_registery.h>
14#include <device.h>
15#include <ports/target.h>
16#include <ports/qemu-initiator-signal-socket.h>
17#include <tlm_sockets_buswidth.h>
18#include <vector>
19
20class pl031 : public QemuDevice
21{
22public:
23 QemuTargetSocket<> q_socket;
25
26public:
27 pl031(const sc_core::sc_module_name& name, sc_core::sc_object* o): pl031(name, *(dynamic_cast<QemuInstance*>(o))) {}
28 pl031(const sc_core::sc_module_name& n, QemuInstance& inst)
29 : QemuDevice(n, inst, "pl031"), q_socket("mem", inst), irq_out("irq_out")
30 {
31 }
32
33 void before_end_of_elaboration() override { QemuDevice::before_end_of_elaboration(); }
34
35 void end_of_elaboration() override
36 {
37 QemuDevice::set_sysbus_as_parent_bus();
38 QemuDevice::end_of_elaboration();
40 q_socket.init(sbd, 0);
41 irq_out.init_sbd(sbd, 0);
42 }
43};
44
45extern "C" void module_register();
46
47#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:174
This class encapsulates a libqemu-cxx qemu::LibQemu instance. It handles QEMU parameters and instance...
Definition qemu-instance.h:86
Definition target.h:160
Definition pl031.h:21
Definition libqemu-cxx.h:645