mirror of
https://git.suyu.dev/suyu/suyu.git
synced 2024-11-15 22:54:00 +00:00
Merge pull request #1046 from ogniK5377/missing-channels
Added missing channel devices
This commit is contained in:
commit
309564abe3
6 changed files with 148 additions and 0 deletions
|
@ -249,6 +249,10 @@ add_library(core STATIC
|
||||||
hle/service/nvdrv/devices/nvhost_gpu.h
|
hle/service/nvdrv/devices/nvhost_gpu.h
|
||||||
hle/service/nvdrv/devices/nvhost_nvdec.cpp
|
hle/service/nvdrv/devices/nvhost_nvdec.cpp
|
||||||
hle/service/nvdrv/devices/nvhost_nvdec.h
|
hle/service/nvdrv/devices/nvhost_nvdec.h
|
||||||
|
hle/service/nvdrv/devices/nvhost_nvjpg.cpp
|
||||||
|
hle/service/nvdrv/devices/nvhost_nvjpg.h
|
||||||
|
hle/service/nvdrv/devices/nvhost_vic.cpp
|
||||||
|
hle/service/nvdrv/devices/nvhost_vic.h
|
||||||
hle/service/nvdrv/devices/nvmap.cpp
|
hle/service/nvdrv/devices/nvmap.cpp
|
||||||
hle/service/nvdrv/devices/nvmap.h
|
hle/service/nvdrv/devices/nvmap.h
|
||||||
hle/service/nvdrv/interface.cpp
|
hle/service/nvdrv/interface.cpp
|
||||||
|
|
34
src/core/hle/service/nvdrv/devices/nvhost_nvjpg.cpp
Normal file
34
src/core/hle/service/nvdrv/devices/nvhost_nvjpg.cpp
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
// Copyright 2018 yuzu emulator team
|
||||||
|
// Licensed under GPLv2 or any later version
|
||||||
|
// Refer to the license.txt file included.
|
||||||
|
|
||||||
|
#include <cstring>
|
||||||
|
|
||||||
|
#include "common/assert.h"
|
||||||
|
#include "common/logging/log.h"
|
||||||
|
#include "core/hle/service/nvdrv/devices/nvhost_nvjpg.h"
|
||||||
|
|
||||||
|
namespace Service::Nvidia::Devices {
|
||||||
|
|
||||||
|
u32 nvhost_nvjpg::ioctl(Ioctl command, const std::vector<u8>& input, std::vector<u8>& output) {
|
||||||
|
LOG_DEBUG(Service_NVDRV, "called, command=0x{:08X}, input_size=0x{:X}, output_size=0x{:X}",
|
||||||
|
command.raw, input.size(), output.size());
|
||||||
|
|
||||||
|
switch (static_cast<IoctlCommand>(command.raw)) {
|
||||||
|
case IoctlCommand::IocSetNVMAPfdCommand:
|
||||||
|
return SetNVMAPfd(input, output);
|
||||||
|
}
|
||||||
|
|
||||||
|
UNIMPLEMENTED_MSG("Unimplemented ioctl");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
u32 nvhost_nvjpg::SetNVMAPfd(const std::vector<u8>& input, std::vector<u8>& output) {
|
||||||
|
IoctlSetNvmapFD params{};
|
||||||
|
std::memcpy(¶ms, input.data(), input.size());
|
||||||
|
LOG_DEBUG(Service_NVDRV, "called, fd={}", params.nvmap_fd);
|
||||||
|
nvmap_fd = params.nvmap_fd;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace Service::Nvidia::Devices
|
36
src/core/hle/service/nvdrv/devices/nvhost_nvjpg.h
Normal file
36
src/core/hle/service/nvdrv/devices/nvhost_nvjpg.h
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
// Copyright 2018 yuzu emulator team
|
||||||
|
// Licensed under GPLv2 or any later version
|
||||||
|
// Refer to the license.txt file included.
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <vector>
|
||||||
|
#include "common/common_types.h"
|
||||||
|
#include "common/swap.h"
|
||||||
|
#include "core/hle/service/nvdrv/devices/nvdevice.h"
|
||||||
|
|
||||||
|
namespace Service::Nvidia::Devices {
|
||||||
|
|
||||||
|
class nvhost_nvjpg final : public nvdevice {
|
||||||
|
public:
|
||||||
|
nvhost_nvjpg() = default;
|
||||||
|
~nvhost_nvjpg() override = default;
|
||||||
|
|
||||||
|
u32 ioctl(Ioctl command, const std::vector<u8>& input, std::vector<u8>& output) override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
enum class IoctlCommand : u32_le {
|
||||||
|
IocSetNVMAPfdCommand = 0x40044801,
|
||||||
|
};
|
||||||
|
|
||||||
|
struct IoctlSetNvmapFD {
|
||||||
|
u32_le nvmap_fd;
|
||||||
|
};
|
||||||
|
static_assert(sizeof(IoctlSetNvmapFD) == 4, "IoctlSetNvmapFD is incorrect size");
|
||||||
|
|
||||||
|
u32_le nvmap_fd{};
|
||||||
|
|
||||||
|
u32 SetNVMAPfd(const std::vector<u8>& input, std::vector<u8>& output);
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace Service::Nvidia::Devices
|
34
src/core/hle/service/nvdrv/devices/nvhost_vic.cpp
Normal file
34
src/core/hle/service/nvdrv/devices/nvhost_vic.cpp
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
// Copyright 2018 yuzu emulator team
|
||||||
|
// Licensed under GPLv2 or any later version
|
||||||
|
// Refer to the license.txt file included.
|
||||||
|
|
||||||
|
#include <cstring>
|
||||||
|
|
||||||
|
#include "common/assert.h"
|
||||||
|
#include "common/logging/log.h"
|
||||||
|
#include "core/hle/service/nvdrv/devices/nvhost_vic.h"
|
||||||
|
|
||||||
|
namespace Service::Nvidia::Devices {
|
||||||
|
|
||||||
|
u32 nvhost_vic::ioctl(Ioctl command, const std::vector<u8>& input, std::vector<u8>& output) {
|
||||||
|
LOG_DEBUG(Service_NVDRV, "called, command=0x{:08X}, input_size=0x{:X}, output_size=0x{:X}",
|
||||||
|
command.raw, input.size(), output.size());
|
||||||
|
|
||||||
|
switch (static_cast<IoctlCommand>(command.raw)) {
|
||||||
|
case IoctlCommand::IocSetNVMAPfdCommand:
|
||||||
|
return SetNVMAPfd(input, output);
|
||||||
|
}
|
||||||
|
|
||||||
|
UNIMPLEMENTED_MSG("Unimplemented ioctl");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
u32 nvhost_vic::SetNVMAPfd(const std::vector<u8>& input, std::vector<u8>& output) {
|
||||||
|
IoctlSetNvmapFD params{};
|
||||||
|
std::memcpy(¶ms, input.data(), input.size());
|
||||||
|
LOG_DEBUG(Service_NVDRV, "called, fd={}", params.nvmap_fd);
|
||||||
|
nvmap_fd = params.nvmap_fd;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace Service::Nvidia::Devices
|
36
src/core/hle/service/nvdrv/devices/nvhost_vic.h
Normal file
36
src/core/hle/service/nvdrv/devices/nvhost_vic.h
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
// Copyright 2018 yuzu emulator team
|
||||||
|
// Licensed under GPLv2 or any later version
|
||||||
|
// Refer to the license.txt file included.
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <vector>
|
||||||
|
#include "common/common_types.h"
|
||||||
|
#include "common/swap.h"
|
||||||
|
#include "core/hle/service/nvdrv/devices/nvdevice.h"
|
||||||
|
|
||||||
|
namespace Service::Nvidia::Devices {
|
||||||
|
|
||||||
|
class nvhost_vic final : public nvdevice {
|
||||||
|
public:
|
||||||
|
nvhost_vic() = default;
|
||||||
|
~nvhost_vic() override = default;
|
||||||
|
|
||||||
|
u32 ioctl(Ioctl command, const std::vector<u8>& input, std::vector<u8>& output) override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
enum class IoctlCommand : u32_le {
|
||||||
|
IocSetNVMAPfdCommand = 0x40044801,
|
||||||
|
};
|
||||||
|
|
||||||
|
struct IoctlSetNvmapFD {
|
||||||
|
u32_le nvmap_fd;
|
||||||
|
};
|
||||||
|
static_assert(sizeof(IoctlSetNvmapFD) == 4, "IoctlSetNvmapFD is incorrect size");
|
||||||
|
|
||||||
|
u32_le nvmap_fd{};
|
||||||
|
|
||||||
|
u32 SetNVMAPfd(const std::vector<u8>& input, std::vector<u8>& output);
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace Service::Nvidia::Devices
|
|
@ -12,6 +12,8 @@
|
||||||
#include "core/hle/service/nvdrv/devices/nvhost_ctrl_gpu.h"
|
#include "core/hle/service/nvdrv/devices/nvhost_ctrl_gpu.h"
|
||||||
#include "core/hle/service/nvdrv/devices/nvhost_gpu.h"
|
#include "core/hle/service/nvdrv/devices/nvhost_gpu.h"
|
||||||
#include "core/hle/service/nvdrv/devices/nvhost_nvdec.h"
|
#include "core/hle/service/nvdrv/devices/nvhost_nvdec.h"
|
||||||
|
#include "core/hle/service/nvdrv/devices/nvhost_nvjpg.h"
|
||||||
|
#include "core/hle/service/nvdrv/devices/nvhost_vic.h"
|
||||||
#include "core/hle/service/nvdrv/devices/nvmap.h"
|
#include "core/hle/service/nvdrv/devices/nvmap.h"
|
||||||
#include "core/hle/service/nvdrv/interface.h"
|
#include "core/hle/service/nvdrv/interface.h"
|
||||||
#include "core/hle/service/nvdrv/nvdrv.h"
|
#include "core/hle/service/nvdrv/nvdrv.h"
|
||||||
|
@ -39,6 +41,8 @@ Module::Module() {
|
||||||
devices["/dev/nvdisp_disp0"] = std::make_shared<Devices::nvdisp_disp0>(nvmap_dev);
|
devices["/dev/nvdisp_disp0"] = std::make_shared<Devices::nvdisp_disp0>(nvmap_dev);
|
||||||
devices["/dev/nvhost-ctrl"] = std::make_shared<Devices::nvhost_ctrl>();
|
devices["/dev/nvhost-ctrl"] = std::make_shared<Devices::nvhost_ctrl>();
|
||||||
devices["/dev/nvhost-nvdec"] = std::make_shared<Devices::nvhost_nvdec>();
|
devices["/dev/nvhost-nvdec"] = std::make_shared<Devices::nvhost_nvdec>();
|
||||||
|
devices["/dev/nvhost-nvjpg"] = std::make_shared<Devices::nvhost_nvjpg>();
|
||||||
|
devices["/dev/nvhost-vic"] = std::make_shared<Devices::nvhost_vic>();
|
||||||
}
|
}
|
||||||
|
|
||||||
u32 Module::Open(const std::string& device_name) {
|
u32 Module::Open(const std::string& device_name) {
|
||||||
|
|
Loading…
Reference in a new issue