aboutsummaryrefslogtreecommitdiff
path: root/src/Ryujinx.HLE/HOS/Services/Apm/ISystemManager.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Ryujinx.HLE/HOS/Services/Apm/ISystemManager.cs')
-rw-r--r--src/Ryujinx.HLE/HOS/Services/Apm/ISystemManager.cs42
1 files changed, 42 insertions, 0 deletions
diff --git a/src/Ryujinx.HLE/HOS/Services/Apm/ISystemManager.cs b/src/Ryujinx.HLE/HOS/Services/Apm/ISystemManager.cs
new file mode 100644
index 00000000..9d2c7b0b
--- /dev/null
+++ b/src/Ryujinx.HLE/HOS/Services/Apm/ISystemManager.cs
@@ -0,0 +1,42 @@
+namespace Ryujinx.HLE.HOS.Services.Apm
+{
+ abstract class ISystemManager : IpcService
+ {
+ public ISystemManager(ServiceCtx context) { }
+
+ protected abstract void RequestPerformanceMode(PerformanceMode performanceMode);
+ internal abstract void SetCpuBoostMode(CpuBoostMode cpuBoostMode);
+ protected abstract PerformanceConfiguration GetCurrentPerformanceConfiguration();
+
+ [CommandCmif(0)]
+ // RequestPerformanceMode(nn::apm::PerformanceMode)
+ public ResultCode RequestPerformanceMode(ServiceCtx context)
+ {
+ RequestPerformanceMode((PerformanceMode)context.RequestData.ReadInt32());
+
+ // NOTE: This call seems to overclock the system related to the PerformanceMode, since we emulate it, it's fine to do nothing instead.
+
+ return ResultCode.Success;
+ }
+
+ [CommandCmif(6)] // 7.0.0+
+ // SetCpuBoostMode(nn::apm::CpuBootMode)
+ public ResultCode SetCpuBoostMode(ServiceCtx context)
+ {
+ SetCpuBoostMode((CpuBoostMode)context.RequestData.ReadUInt32());
+
+ // NOTE: This call seems to overclock the system related to the CpuBoostMode, since we emulate it, it's fine to do nothing instead.
+
+ return ResultCode.Success;
+ }
+
+ [CommandCmif(7)] // 7.0.0+
+ // GetCurrentPerformanceConfiguration() -> nn::apm::PerformanceConfiguration
+ public ResultCode GetCurrentPerformanceConfiguration(ServiceCtx context)
+ {
+ context.ResponseData.Write((uint)GetCurrentPerformanceConfiguration());
+
+ return ResultCode.Success;
+ }
+ }
+} \ No newline at end of file