quic/qbox
Loading...
Searching...
No Matches
ufs_lu.h
1/*
2 * This file is part of libqbox
3 * Copyright (c) 2025 Qualcomm Innovation Center, Inc. All Rights Reserved.
4 *
5 * SPDX-License-Identifier: BSD-3-Clause
6 */
7
8#ifndef _LIBQBOX_COMPONENTS_UFS_LU_H
9#define _LIBQBOX_COMPONENTS_UFS_LU_H
10
11#include <module_factory_registery.h>
12#include "ufs.h"
13#include <string>
14#include <sstream>
15
16class ufs_lu : public ufs::Device
17{
18protected:
19 cci::cci_param<uint32_t> p_lun;
20 cci::cci_param<std::string> blkdev_str;
21
22private:
23 std::string blkdev_id;
24
25public:
26 ufs_lu(const sc_core::sc_module_name& name, sc_core::sc_object* o, sc_core::sc_object* t)
27 : ufs_lu(name, *(dynamic_cast<QemuInstance*>(o)), dynamic_cast<ufs*>(t))
28 {
29 }
30 ufs_lu(const sc_core::sc_module_name& n, QemuInstance& inst, ufs* _ufs)
31 : ufs::Device(n, inst, "ufs-sysbus-lu")
32 , p_lun("lun", 0, "LU number")
33 , blkdev_str("blkdev_str", "", "blkdev string for QEMU (do not specify ID)")
34 , blkdev_id(std::string(name()) + "-id")
35 {
36 std::stringstream opts;
37 opts << blkdev_str.get_value();
38 opts << ",id=" << blkdev_id;
39 m_inst.add_arg("-drive");
40 m_inst.add_arg(opts.str().c_str());
41
42 set_dev_props = [this]() -> void {
43 m_dev.set_prop_uint("lun", p_lun.get_value());
44 m_dev.set_prop_parse("drive", blkdev_id.c_str());
45 };
46
47 _ufs->add_device(*this);
48 }
49};
50
51extern "C" void module_register();
52
53#endif
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:331
Definition target.h:160
Definition ufs.h:24
Definition ufs_lu.h:17
Definition ufs.h:21