|
|
@ -16,7 +16,9 @@ u32 nvhost_ctrl::ioctl(Ioctl command, const std::vector<u8>& input, std::vector<
|
|
|
|
case IoctlCommand::IocGetConfigCommand:
|
|
|
|
case IoctlCommand::IocGetConfigCommand:
|
|
|
|
return NvOsGetConfigU32(input, output);
|
|
|
|
return NvOsGetConfigU32(input, output);
|
|
|
|
case IoctlCommand::IocCtrlEventWaitCommand:
|
|
|
|
case IoctlCommand::IocCtrlEventWaitCommand:
|
|
|
|
return IocCtrlEventWait(input, output);
|
|
|
|
return IocCtrlEventWait(input, output, false);
|
|
|
|
|
|
|
|
case IoctlCommand::IocCtrlEventWaitAsyncCommand:
|
|
|
|
|
|
|
|
return IocCtrlEventWait(input, output, true);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
UNIMPLEMENTED_MSG("Unimplemented ioctl");
|
|
|
|
UNIMPLEMENTED_MSG("Unimplemented ioctl");
|
|
|
|
return 0;
|
|
|
|
return 0;
|
|
|
@ -45,11 +47,13 @@ u32 nvhost_ctrl::NvOsGetConfigU32(const std::vector<u8>& input, std::vector<u8>&
|
|
|
|
return 0;
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
u32 nvhost_ctrl::IocCtrlEventWait(const std::vector<u8>& input, std::vector<u8>& output) {
|
|
|
|
u32 nvhost_ctrl::IocCtrlEventWait(const std::vector<u8>& input, std::vector<u8>& output,
|
|
|
|
|
|
|
|
bool is_async) {
|
|
|
|
IocCtrlEventWaitParams params{};
|
|
|
|
IocCtrlEventWaitParams params{};
|
|
|
|
std::memcpy(¶ms, input.data(), sizeof(params));
|
|
|
|
std::memcpy(¶ms, input.data(), sizeof(params));
|
|
|
|
NGLOG_WARNING(Service_NVDRV, "(STUBBED) called, syncpt_id={} threshold={} timeout={}",
|
|
|
|
NGLOG_WARNING(Service_NVDRV,
|
|
|
|
params.syncpt_id, params.threshold, params.timeout);
|
|
|
|
"(STUBBED) called, syncpt_id={}, threshold={}, timeout={}, is_async={}",
|
|
|
|
|
|
|
|
params.syncpt_id, params.threshold, params.timeout, is_async);
|
|
|
|
|
|
|
|
|
|
|
|
// TODO(Subv): Implement actual syncpt waiting.
|
|
|
|
// TODO(Subv): Implement actual syncpt waiting.
|
|
|
|
params.value = 0;
|
|
|
|
params.value = 0;
|
|
|
|