| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- using Ryujinx.Common.Logging;
- using Ryujinx.HLE.HOS.Services.Pcv.Types;
- using System.Linq;
- namespace Ryujinx.HLE.HOS.Services.Pcv.Clkrst.ClkrstManager
- {
- class IClkrstSession : IpcService
- {
- private DeviceCode _deviceCode;
- private uint _unknown;
- private uint _clockRate;
- private DeviceCode[] allowedDeviceCodeTable = new DeviceCode[]
- {
- DeviceCode.Cpu, DeviceCode.Gpu, DeviceCode.Disp1, DeviceCode.Disp2,
- DeviceCode.Tsec, DeviceCode.Mselect, DeviceCode.Sor1, DeviceCode.Host1x,
- DeviceCode.Vic, DeviceCode.Nvenc, DeviceCode.Nvjpg, DeviceCode.Nvdec,
- DeviceCode.Ape, DeviceCode.AudioDsp, DeviceCode.Emc, DeviceCode.Dsi,
- DeviceCode.SysBus, DeviceCode.XusbSs, DeviceCode.XusbHost, DeviceCode.XusbDevice,
- DeviceCode.Gpuaux, DeviceCode.Pcie, DeviceCode.Apbdma, DeviceCode.Sdmmc1,
- DeviceCode.Sdmmc2, DeviceCode.Sdmmc4
- };
- public IClkrstSession(DeviceCode deviceCode, uint unknown)
- {
- _deviceCode = deviceCode;
- _unknown = unknown;
- }
- [CommandHipc(7)]
- // SetClockRate(u32 hz)
- public ResultCode SetClockRate(ServiceCtx context)
- {
- if (!allowedDeviceCodeTable.Contains(_deviceCode))
- {
- return ResultCode.InvalidArgument;
- }
- _clockRate = context.RequestData.ReadUInt32();
- Logger.Stub?.PrintStub(LogClass.ServicePcv, new { _clockRate });
- return ResultCode.Success;
- }
- [CommandHipc(8)]
- // GetClockRate() -> u32 hz
- public ResultCode GetClockRate(ServiceCtx context)
- {
- if (!allowedDeviceCodeTable.Contains(_deviceCode))
- {
- return ResultCode.InvalidArgument;
- }
- context.ResponseData.Write(_clockRate);
- Logger.Stub?.PrintStub(LogClass.ServicePcv, new { _clockRate });
- return ResultCode.Success;
- }
- }
- }
|