|
|
|
@ -2,6 +2,8 @@
|
|
|
|
|
// Licensed under GPLv2 or any later version
|
|
|
|
|
// Refer to the license.txt file included.
|
|
|
|
|
|
|
|
|
|
#include <utility>
|
|
|
|
|
|
|
|
|
|
#include "core/hle/ipc_helpers.h"
|
|
|
|
|
#include "core/hle/service/nvdrv/devices/nvdevice.h"
|
|
|
|
|
#include "core/hle/service/nvdrv/devices/nvdisp_disp0.h"
|
|
|
|
@ -40,14 +42,14 @@ Module::Module() {
|
|
|
|
|
devices["/dev/nvhost-nvdec"] = std::make_shared<Devices::nvhost_nvdec>();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
u32 Module::Open(std::string device_name) {
|
|
|
|
|
u32 Module::Open(const std::string& device_name) {
|
|
|
|
|
ASSERT_MSG(devices.find(device_name) != devices.end(), "Trying to open unknown device {}",
|
|
|
|
|
device_name);
|
|
|
|
|
|
|
|
|
|
auto device = devices[device_name];
|
|
|
|
|
u32 fd = next_fd++;
|
|
|
|
|
const u32 fd = next_fd++;
|
|
|
|
|
|
|
|
|
|
open_files[fd] = device;
|
|
|
|
|
open_files[fd] = std::move(device);
|
|
|
|
|
|
|
|
|
|
return fd;
|
|
|
|
|
}
|
|
|
|
@ -56,7 +58,7 @@ u32 Module::Ioctl(u32 fd, u32_le command, const std::vector<u8>& input, std::vec
|
|
|
|
|
auto itr = open_files.find(fd);
|
|
|
|
|
ASSERT_MSG(itr != open_files.end(), "Tried to talk to an invalid device");
|
|
|
|
|
|
|
|
|
|
auto device = itr->second;
|
|
|
|
|
auto& device = itr->second;
|
|
|
|
|
return device->ioctl({command}, input, output);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|