Changes

Jump to navigation Jump to search
Line 6: Line 6:  
! Cmd || Name
 
! Cmd || Name
 
|-
 
|-
| 0 || OpenController
+
| 0 || [[#OpenController]]
 +
|-
 +
| 1 || [16.0.0+] GetRpm
 
|}
 
|}
 +
 +
== OpenController ==
 +
Takes an input [[#FanName]]. Returns an output [[#IController]].
 +
 +
[7.0.0+] Now takes an input [[Bus_services#GpioPadName|DeviceCode]] instead of an input [[#FanName]].
    
== IController ==
 
== IController ==
Line 16: Line 23:  
! Cmd || Name
 
! Cmd || Name
 
|-
 
|-
| 0 || SetRotationSpeedLevel
+
| 0 || [[#SetRotationSpeedLevel]]
 
|-
 
|-
| 1 || SetRotationSpeedLevelByDiff
+
| 1 || [7.0.0+] [[#GetRotationSpeedLevel]] ([1.0.0-6.2.0] [[#SetRotationSpeedLevelByDiff]])
 
|-
 
|-
| 2 || GetRotationSpeedLevel
+
| 2 || [7.0.0+] [[#GetActualRotationSpeedLevel]] ([1.0.0-6.2.0] [[#GetRotationSpeedLevel]])
 
|-
 
|-
| 3 || SetRotationRate
+
| 3 || [7.0.0+] [[#EnableFan]] ([1.0.0-6.2.0] [[#SetRotationRate]])
 
|-
 
|-
| 4 || GetRotationRate
+
| 4 || [7.0.0+] [[#DisableFan]] ([1.0.0-6.2.0] [[#GetRotationRate]])
 
|-
 
|-
| 5 || [1.0.0-6.2.0] EnableFan
+
| 5 || [1.0.0-6.2.0] [[#EnableFan]]
 
|-
 
|-
| 6 || [1.0.0-6.2.0] DisableFan
+
| 6 || [1.0.0-6.2.0] [[#DisableFan]]
 
|-
 
|-
| 7 || [1.0.0-6.2.0] GetActualRotationSpeedLevel
+
| 7 || [1.0.0-6.2.0] [[#GetActualRotationSpeedLevel]]
 
|}
 
|}
   −
[7.0.0+] SetRotationSpeedLevelByDiff/SetRotationRate no longer takes any input. GetRotationRate no longer returns output. These were presumably replaced with new cmds?
+
=== SetRotationSpeedLevel ===
 +
Takes an input float. No output.
 +
 
 +
=== SetRotationSpeedLevelByDiff ===
 +
Takes an input float. Returns an output float.
 +
 
 +
=== GetRotationSpeedLevel ===
 +
No input. Returns an output float.
 +
 
 +
=== SetRotationRate ===
 +
Takes an input float. No output.
 +
 
 +
=== GetRotationRate ===
 +
No input. Returns an output float.
 +
 
 +
=== EnableFan ===
 +
No input/output.
 +
 
 +
=== DisableFan ===
 +
No input/output.
 +
 
 +
=== GetActualRotationSpeedLevel ===
 +
No input. Returns an output float.
    
= psm =
 
= psm =
Line 42: Line 71:  
! Cmd || Name
 
! Cmd || Name
 
|-
 
|-
| 0 || [[#GetBatteryChargePercentage]]
+
| 0 || [[#GetBatteryChargePercentage|GetBatteryChargePercentage]]
 +
|-
 +
| 1 || [[#GetChargerType|GetChargerType]]
 
|-
 
|-
| 1 || [[#GetChargerType]]
+
| 2 || [[#EnableBatteryCharging|EnableBatteryCharging]]
 
|-
 
|-
| 2 || [[#EnableBatteryCharging]]
+
| 3 || [[#DisableBatteryCharging|DisableBatteryCharging]]
 
|-
 
|-
| 3 || [[#DisableBatteryCharging]]
+
| 4 || [[#IsBatteryChargingEnabled|IsBatteryChargingEnabled]]
 
|-
 
|-
| 4 || [[#IsBatteryChargingEnabled]]
+
| 5 || [[#AcquireControllerPowerSupply|AcquireControllerPowerSupply]]
 
|-
 
|-
| 5 || [[#AcquireControllerPowerSupply]]
+
| 6 || [[#ReleaseControllerPowerSupply|ReleaseControllerPowerSupply]]
 
|-
 
|-
| 6 || [[#ReleaseControllerPowerSupply]]
+
| 7 || [[#OpenSession|OpenSession]]
 
|-
 
|-
| 7 || [[#OpenSession]]
+
| 8 || [[#EnableEnoughPowerChargeEmulation|EnableEnoughPowerChargeEmulation]]
 
|-
 
|-
| 8 || [[#EnableEnoughPowerChargeEmulation]]
+
| 9 || [[#DisableEnoughPowerChargeEmulation|DisableEnoughPowerChargeEmulation]]
 
|-
 
|-
| 9 || [[#DisableEnoughPowerChargeEmulation]]
+
| 10 || [[#EnableFastBatteryCharging|EnableFastBatteryCharging]]
 
|-
 
|-
| 10 || [[#EnableFastBatteryCharging]]
+
| 11 || [[#DisableFastBatteryCharging|DisableFastBatteryCharging]]
 
|-
 
|-
| 11 || [[#DisableFastBatteryCharging]]
+
| 12 || [[#GetBatteryVoltageState|GetBatteryVoltageState]]
 
|-
 
|-
| 12 || [[#GetBatteryVoltageState]]
+
| 13 || [[#GetRawBatteryChargePercentage|GetRawBatteryChargePercentage]]
 
|-
 
|-
| 13 || [[#GetRawBatteryChargePercentage]]
+
| 14 || [[#IsEnoughPowerSupplied|IsEnoughPowerSupplied]]
 
|-
 
|-
| 14 || [[#IsEnoughPowerSupplied]]
+
| 15 || [[#GetBatteryAgePercentage|GetBatteryAgePercentage]]
 
|-
 
|-
| 15 || [[#GetBatteryAgePercentage]]
+
| 16 || [[#GetBatteryChargeInfoEvent|GetBatteryChargeInfoEvent]]
 
|-
 
|-
| 16 || [[#GetBatteryChargeInfoEvent]]
+
| 17 || [[#GetBatteryChargeInfoFields|GetBatteryChargeInfoFields]]
 
|-
 
|-
| 17 || [[#GetBatteryChargeInfoFields]]
+
| 18 || [3.0.0+] [[#GetBatteryChargeCalibratedEvent|GetBatteryChargeCalibratedEvent]]
 
|-
 
|-
| 18 || [3.0.0+] GetBatteryChargeCalibratedEvent
+
| 19 || [18.0.0+]
 +
|-
 +
| 20 || [18.0.0+]
 
|}
 
|}
    
== GetBatteryChargePercentage ==
 
== GetBatteryChargePercentage ==
No input, returns an output u32.
+
No input. Returns an output u32.
    
== GetChargerType ==
 
== GetChargerType ==
No input, returns an output u32.
+
No input. Returns an output [[#ChargerType|ChargerType]].
    
== EnableBatteryCharging ==
 
== EnableBatteryCharging ==
Line 94: Line 127:     
== IsBatteryChargingEnabled ==
 
== IsBatteryChargingEnabled ==
No input, returns an output u8.
+
No input. Returns an output bool.
    
== AcquireControllerPowerSupply ==
 
== AcquireControllerPowerSupply ==
Line 103: Line 136:     
== OpenSession ==
 
== OpenSession ==
No input, returns an output [[#IPsmSession]].
+
No input. Returns an output [[#IPsmSession]].
    
== EnableEnoughPowerChargeEmulation ==
 
== EnableEnoughPowerChargeEmulation ==
Line 118: Line 151:     
== GetBatteryVoltageState ==
 
== GetBatteryVoltageState ==
No input, returns an output u32.
+
No input. Returns an output [[#BatteryVoltageState|BatteryVoltageState]].
    
== GetRawBatteryChargePercentage ==
 
== GetRawBatteryChargePercentage ==
No input, returns an output u64.
+
No input. Returns an output double.
    
== IsEnoughPowerSupplied ==
 
== IsEnoughPowerSupplied ==
No input, returns an output u8.
+
No input. Returns an output bool.
    
== GetBatteryAgePercentage ==
 
== GetBatteryAgePercentage ==
No input, returns an output u64.
+
No input. Returns an output double.
    
== GetBatteryChargeInfoEvent ==
 
== GetBatteryChargeInfoEvent ==
No input, returns an output event.
+
No input. Returns an output Event handle.
    
== GetBatteryChargeInfoFields ==
 
== GetBatteryChargeInfoFields ==
No input, returns an output 0x40-byte struct.
+
No input. Returns an output [[#BatteryChargeInfoFields|BatteryChargeInfoFields]].
 +
 
 +
== GetBatteryChargeCalibratedEvent ==
 +
No input. Returns an output Event handle.
    
== IPsmSession ==
 
== IPsmSession ==
Line 142: Line 178:  
! Cmd || Name
 
! Cmd || Name
 
|-
 
|-
| 0 || [[#BindStateChangeEvent]]
+
| 0 || [[#BindStateChangeEvent|BindStateChangeEvent]]
 
|-
 
|-
| 1 || [[#UnbindStateChangeEvent]]
+
| 1 || [[#UnbindStateChangeEvent|UnbindStateChangeEvent]]
 
|-
 
|-
| 2 || [[#SetChargerTypeChangeEventEnabled]]
+
| 2 || [[#SetChargerTypeChangeEventEnabled|SetChargerTypeChangeEventEnabled]]
 
|-
 
|-
| 3 || [[#SetPowerSupplyChangeEventEnabled]]
+
| 3 || [[#SetPowerSupplyChangeEventEnabled|SetPowerSupplyChangeEventEnabled]]
 
|-
 
|-
| 4 || [[#SetBatteryVoltageStateChangeEventEnabled]]
+
| 4 || [[#SetBatteryVoltageStateChangeEventEnabled|SetBatteryVoltageStateChangeEventEnabled]]
 
|}
 
|}
    
=== BindStateChangeEvent ===
 
=== BindStateChangeEvent ===
No input, returns an output event with autoclear disabled.
+
No input. Returns an output Event handle with EventClearMode=0.
    
=== UnbindStateChangeEvent ===
 
=== UnbindStateChangeEvent ===
Line 160: Line 196:     
=== SetChargerTypeChangeEventEnabled ===
 
=== SetChargerTypeChangeEventEnabled ===
Takes an input u8 bool, no output.
+
Takes an input bool. No output.
    
=== SetPowerSupplyChangeEventEnabled ===
 
=== SetPowerSupplyChangeEventEnabled ===
Takes an input u8 bool, no output.
+
Takes an input bool. No output.
    
=== SetBatteryVoltageStateChangeEventEnabled ===
 
=== SetBatteryVoltageStateChangeEventEnabled ===
Takes an input u8 bool, no output.
+
Takes an input bool. No output.
 +
 
 +
= psm:manu =
 +
This is "nn::psm::IPsmManufactureServer".
 +
 
 +
This service is not present in retail units.
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name
 +
|-
 +
| 0 || [[#EnableVdd50StateControl|EnableVdd50StateControl]]
 +
|-
 +
| 1 || [[#DisableVdd50StateControl|DisableVdd50StateControl]]
 +
|-
 +
| 2 || [[#SetVdd50State|SetVdd50State]]
 +
|}
 +
 
 +
== EnableVdd50StateControl ==
 +
Unofficial name.
 +
 
 +
No input/output.
 +
 
 +
== DisableVdd50StateControl ==
 +
Unofficial name.
 +
 
 +
No input/output.  
 +
 
 +
== SetVdd50State ==
 +
Unofficial name.
 +
 
 +
Takes an input [[#Vdd50State]]. No output.
 +
 
 +
= powctl =
 +
This is "nn::powctl::IPowctlManager".
 +
 
 +
This service is not present in retail units.
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name
 +
|-
 +
| 0 || [[#OpenSession_3|OpenSession]]
 +
|}
 +
 
 +
== OpenSession ==
 +
Takes a '''DeviceCode''' and an input [[#AccessMode]]. Returns an [[#IPowctlSession]].
 +
 
 +
== IPowctlSession ==
 +
This is "nn::powctl::IPowctlSession".
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name
 +
|-
 +
| 0 ||
 +
|-
 +
| 1 ||
 +
|-
 +
| 2 ||
 +
|-
 +
| 3 ||
 +
|-
 +
| 4 ||
 +
|-
 +
| 5 ||
 +
|-
 +
| 6 ||
 +
|-
 +
| 7 ||
 +
|-
 +
| 8 ||
 +
|-
 +
| 9 ||
 +
|-
 +
| 10 ||
 +
|-
 +
| 11 ||
 +
|-
 +
| 12 ||
 +
|-
 +
| 13 ||
 +
|-
 +
| 14 ||
 +
|-
 +
| 15 ||
 +
|-
 +
| 16 ||
 +
|-
 +
| 17 || GetHiZ
 +
|-
 +
| 18 || SetHiZ
 +
|-
 +
| 19 || GetAverageChargeCurrentInMilliAmpere
 +
|-
 +
| 20 ||
 +
|-
 +
| 21 ||
 +
|-
 +
| 22 ||
 +
|-
 +
| 23 ||
 +
|-
 +
| 24 ||
 +
|-
 +
| 25 ||
 +
|-
 +
| 26 ||
 +
|-
 +
| 27 ||
 +
|-
 +
| 28 ||
 +
|-
 +
| 29 ||
 +
|-
 +
| 30 ||
 +
|-
 +
| 31 ||
 +
|-
 +
| 32 ||
 +
|-
 +
| 33 ||
 +
|-
 +
| 34 ||
 +
|-
 +
| 35 ||
 +
|-
 +
| 36 ||
 +
|-
 +
| 37 ||
 +
|-
 +
| 38 ||
 +
|-
 +
| 39 ||
 +
|-
 +
| 40 || GetAverageBatteryVoltageInMilliVolt
 +
|-
 +
| 41 ||
 +
|-
 +
| 42 ||
 +
|-
 +
| 43 ||
 +
|-
 +
| 44 ||
 +
|-
 +
| 45 ||
 +
|-
 +
| 46 ||
 +
|-
 +
| 47 ||
 +
|-
 +
| 48 ||
 +
|-
 +
| 49 ||
 +
|-
 +
| 50 ||
 +
|-
 +
| 51 ||
 +
|-
 +
| 52 ||
 +
|-
 +
| 53 ||
 +
|-
 +
| 54 ||
 +
|-
 +
| 55 ||
 +
|-
 +
| 56 ||
 +
|}
    
= tc =
 
= tc =
Line 175: Line 379:  
! Cmd || Name
 
! Cmd || Name
 
|-
 
|-
| 0 || SetOperatingMode
+
| 0 || SetOperationMode
 +
|-
 +
| 1 || [1.0.0-10.2.0] GetThermalEvent
 
|-
 
|-
| 1 || GetThermalEvent
+
| 2 || IsActionAllowed
 
|-
 
|-
| 2 ||
+
| 3 || EnableVirtualTemperature
 
|-
 
|-
| 3 ||
+
| 4 || DisableVirtualTemperature
 
|-
 
|-
| 4 ||
+
| 5 || SetVirtualTemperature
 
|-
 
|-
| 5 ||
+
| 6 || EnableFanControl
 
|-
 
|-
| 6 ||
+
| 7 || DisableFanControl
 
|-
 
|-
| 7 ||
+
| 8 || IsFanControlEnabled
 
|-
 
|-
| 8 ||
+
| 9 || [5.0.0+] GetSkinTemperatureMilliC
 
|-
 
|-
| 9 || [5.0.0+]
+
| 10 || [11.0.0+] LoadAndApplySettings
 
|}
 
|}
   Line 203: Line 409:  
! Cmd || Name
 
! Cmd || Name
 
|-
 
|-
| 0 ||
+
| 0 || [1.0.0-16.1.0] [[#GetTemperatureRange|GetTemperatureRange]]
 
|-
 
|-
| 1 ||
+
| 1 || [1.0.0-16.1.0] [[#GetTemperature|GetTemperature]]
 
|-
 
|-
| 2 ||
+
| 2 || [1.0.0-13.2.1] [[#SetMeasurementMode|SetMeasurementMode]]
 
|-
 
|-
| 3 ||
+
| 3 || [1.0.0-13.2.1] [[#GetTemperatureMilliC|GetTemperatureMilliC]]
 
|-
 
|-
| 4 || [8.0.0+] ? (Takes a total of 4-bytes of input, returns an [[#IUnknown0]])
+
| 4 || [8.0.0+] [[#OpenSession_2|OpenSession]]
 
|}
 
|}
   −
== IUnknown0 ==
+
== GetTemperatureRange ==
Added with [8.0.0+].
+
Takes an input u8 [[#Location]]. Returns two s32s '''MinimumTemperature''' and '''MaximumTemperature'''.
 +
 
 +
The returned temperature values are in Celsius.
 +
 
 +
== GetTemperature ==
 +
Takes an input u8 [[#Location]]. Returns an output s32.
 +
 
 +
The output is the temperature in Celsius.
 +
 
 +
== SetMeasurementMode ==
 +
Takes two input u8s [[#Location]] and '''MeasurementMode'''. No output.
 +
 
 +
== GetTemperatureMilliC ==
 +
Takes an input u8 [[#Location]]. Returns an output s32.
 +
 
 +
The output is the temperature in MilliC.
 +
 
 +
== OpenSession ==
 +
Takes an input [[#Location|DeviceCode]]. Returns an [[#ISession]].
 +
 
 +
== ISession ==
 +
This is "nn::ts::server::ISession".
 +
 
 +
This was added with [8.0.0+].
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 221: Line 450:  
! Cmd || Name
 
! Cmd || Name
 
|-
 
|-
| 0 ||  
+
| 0 || GetTemperatureRange
 +
|-
 +
| 1 || [8.0.0-13.2.1]
 +
|-
 +
| 2 || SetMeasurementMode
 +
|-
 +
| 3 || [8.0.0-13.2.1]
 +
|-
 +
| 4 || [10.0.0+] GetTemperature
 
|-
 
|-
| 1 ||  
+
| 5 || [17.0.0+] SetAlertThreshold
 
|-
 
|-
| 2 ||  
+
| 6 || [17.0.0+] SetThermThreshold
 
|-
 
|-
| 3 ||  
+
| 7 || [17.0.0+] GetTemperatureWithError
 
|}
 
|}
    
= pcm =
 
= pcm =
 
This is "nn::pcm::IManager".
 
This is "nn::pcm::IManager".
 +
 +
[4.0.0+] This service was moved to '''nvdbgsvc''' and is only available to SDEV units.
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 240: Line 479:  
|-
 
|-
 
| 1 || ReadCurrentPower
 
| 1 || ReadCurrentPower
 +
|-
 +
| 2 || [4.0.0+] IsServiceEnabled
 +
|-
 +
| 3 || [4.0.0+] ReadCurrentVoltage
 
|}
 
|}
   Line 251: Line 494:  
! Cmd || Name
 
! Cmd || Name
 
|-
 
|-
| 0 || [[#OpenSession]]
+
| 0 || [[#OpenSession_4|OpenSession]]
 
|-
 
|-
| 1 || GetPerformanceMode
+
| 1 || [[#GetPerformanceMode]]
 
|-
 
|-
 
| 6 || [7.0.0+] [[#IsCpuOverclockEnabled]]
 
| 6 || [7.0.0+] [[#IsCpuOverclockEnabled]]
Line 259: Line 502:     
== OpenSession ==
 
== OpenSession ==
Returns an [[#ISession]].
+
No input. Returns an output [[#ISession]].
 +
 
 +
== GetPerformanceMode ==
 +
No input. Returns an output [[#PerformanceMode]].
    
== IsCpuOverclockEnabled ==
 
== IsCpuOverclockEnabled ==
No input, returns an output u8 bool.
+
No input. Returns an output bool.
    
= apm:sys =
 
= apm:sys =
Line 271: Line 517:  
! Cmd || Name
 
! Cmd || Name
 
|-
 
|-
| 0 || RequestPerformanceMode
+
| 0 || [[#RequestPerformanceMode]]
 
|-
 
|-
| 1 || GetPerformanceEvent
+
| 1 || [[#GetPerformanceEvent]]
 
|-
 
|-
| 2 || GetThrottlingState
+
| 2 || [[#GetThrottlingState]]
 
|-
 
|-
| 3 || GetLastThrottlingState
+
| 3 || [[#GetLastThrottlingState]]
 
|-
 
|-
| 4 || ClearLastThrottlingState
+
| 4 || [[#ClearLastThrottlingState]]
 
|-
 
|-
| 5 || [5.0.0+] LoadAndApplySettings
+
| 5 || [5.0.0+] [[#LoadAndApplySettings]]
 
|-
 
|-
 
| 6 || [7.0.0+] [[#SetCpuBoostMode]]
 
| 6 || [7.0.0+] [[#SetCpuBoostMode]]
 
|-
 
|-
 
| 7 || [7.0.0+] [[#GetCurrentPerformanceConfiguration]]
 
| 7 || [7.0.0+] [[#GetCurrentPerformanceConfiguration]]
 +
|-
 +
| 8 || [17.0.0+] GetCurrentPerformanceMode
 
|}
 
|}
 +
 +
== RequestPerformanceMode ==
 +
Takes an input [[#PerformanceMode]]. No output.
    
== GetPerformanceEvent ==
 
== GetPerformanceEvent ==
Returns an [[#ISession]].
+
Takes an input [[#EventTarget]]. Returns an Event handle with EventClearMode 0.
 +
 
 +
== GetThrottlingState ==
 +
No input. Returns an output [[#ThrottlingState]].
 +
 
 +
== GetLastThrottlingState ==
 +
No input. Returns an output [[#ThrottlingState]].
 +
 
 +
== ClearLastThrottlingState ==
 +
No input/output.
 +
 
 +
== LoadAndApplySettings ==
 +
No input/output.
    
== SetCpuBoostMode ==
 
== SetCpuBoostMode ==
Takes an u32 [[#CpuBoostMode]].
+
Takes an input [[#CpuBoostMode]]. No output.
 +
 
 +
== GetCurrentPerformanceConfiguration ==
 +
No input. Returns an output [[#PerformanceConfiguration]] (default value is 0x00020003).
 +
 
 +
= ISession =
 +
This is "nn::apm::ISession".
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name
 +
|-
 +
| 0 || [[#SetPerformanceConfiguration]]
 +
|-
 +
| 1 || [[#GetPerformanceConfiguration]]
 +
|-
 +
| 2 || [8.0.0+] [[#SetCpuOverclockEnabled]]
 +
|}
 +
 
 +
== SetPerformanceConfiguration ==
 +
Takes an input [[#PerformanceMode]] and an input [[#PerformanceConfiguration]]. No output.
 +
 
 +
== GetPerformanceConfiguration ==
 +
Takes an input [[#PerformanceMode]]. Returns an output [[#PerformanceConfiguration]].
 +
 
 +
== SetCpuOverclockEnabled ==
 +
Takes an input bool. No output.
 +
 
 +
= fgm, fgm:0, fgm:1, fgm:2, fgm:3, fgm:4, fgm:5, fgm:6, fgm:7, fgm:9 =
 +
These are "nn::fgm::sf::ISession".
 +
 
 +
Each service represents a different priority from 0 (Highest/Thermal) to 9 (Lowest). The "fgm" service represents priority 8 (Default).
 +
 
 +
[2.0.0+] Only "fgm", "fgm:0" and "fgm:9" are now valid.
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name
 +
|-
 +
| 0 || [[#Initialize]]
 +
|}
 +
 
 +
== Initialize ==
 +
No input. Returns an output [[#IRequest]].
 +
 
 +
== IRequest ==
 +
This is "nn::fgm::sf::IRequest".
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name
 +
|-
 +
| 0 || [[#Initialize_2|Initialize]]
 +
|-
 +
| 1 || [[#Set|Set]]
 +
|-
 +
| 2 || [[#Get|Get]]
 +
|-
 +
| 3 || [[#Cancel|Cancel]]
 +
|}
 +
 
 +
=== Initialize ===
 +
Takes a PID-descriptor, a [[#Module|ModuleId]] and a reserved input u64. Returns an Event handle with EventClearMode 0.
 +
 
 +
=== Set ===
 +
Takes 2 u32s '''ClockRateMin''' and '''ClockRateMax'''. No output.
 +
 
 +
=== Get ===
 +
No input. Returns an u32 '''ClockRateActual'''.
 +
 
 +
=== Cancel ===
 +
No input/output.
 +
 
 +
= fgm:dbg =
 +
This is "nn::fgm::sf::IDebugger".
 +
 
 +
This was removed with [17.0.0].  
   −
=== CpuBoostMode ===
   
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
! Mode || Description
+
! Cmd || Name
 
|-
 
|-
| 0 || Disabled.
+
| 0 || [[#Initialize_3|Initialize]]
 
|-
 
|-
| 1 || Use [[#PerformanceConfiguration|performance configurations]] 0x92220009 and 0x9222000A, or 0x9222000B and 0x9222000C.
+
| 1 || [[#Read|Read]]
 
|-
 
|-
| 2 || Use [[#PerformanceConfiguration|performance configurations]] 0x9222000B and 0x9222000C.
+
| 2 || [[#Cancel_2|Cancel]]
 
|}
 
|}
   −
== GetCurrentPerformanceConfiguration ==
+
== Initialize ==
Returns the currently active [[#PerformanceConfiguration]] (default value is 0x00020003).
+
Takes the current process handle (0xFFFF8001) and an input u64 '''MemorySize'''. Returns an Event handle with EventClearMode 0.
 +
 
 +
== Read ==
 +
Takes a type-0x6 output buffer of [[#DebugEntry|DebugEntry]]. Returns three output s32s '''NumberReadOut''', '''NumberLostOut''' and '''NumberRemainingOut'''.
 +
 
 +
== Cancel ==
 +
No input/output.
 +
 
 +
= lbl =
 +
This is "nn::lbl::detail::ILblController".
 +
 
 +
[10.0.0+] This was moved from [[Backlight_services|lbl]].
   −
= ISession =
+
[11.0.0+] this was moved into [[Display_services|vi]].
This is "nn::apm::ISession".
      
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 316: Line 664:  
! Cmd || Name
 
! Cmd || Name
 
|-
 
|-
| 0 || SetPerformanceConfiguration
+
| 0 || SaveCurrentSetting
 +
|-
 +
| 1 || LoadCurrentSetting
 +
|-
 +
| 2 || SetCurrentBrightnessSetting
 +
|-
 +
| 3 || GetCurrentBrightnessSetting
 +
|-
 +
| 4 || ApplyCurrentBrightnessSettingToBacklight
 +
|-
 +
| 5 || GetBrightnessSettingAppliedToBacklight
 +
|-
 +
| 6 || SwitchBacklightOn
 +
|-
 +
| 7 || SwitchBacklightOff
 
|-
 
|-
| 1 || GetPerformanceConfiguration
+
| 8 || GetBacklightSwitchStatus
 
|-
 
|-
| 2 || [8.0.0+] [[#SetCpuOverclockEnabled]]
+
| 9 || EnableDimming
 +
|-
 +
| 10 || DisableDimming
 +
|-
 +
| 11 || IsDimmingEnabled
 +
|-
 +
| 12 || EnableAutoBrightnessControl
 +
|-
 +
| 13 || DisableAutoBrightnessControl
 +
|-
 +
| 14 || IsAutoBrightnessControlEnabled
 +
|-
 +
| 15 || SetAmbientLightSensorValue
 +
|-
 +
| 16 || GetAmbientLightSensorValue
 +
|-
 +
| 17 || SetBrightnessReflectionDelayLevel
 +
|-
 +
| 18 || GetBrightnessReflectionDelayLevel
 +
|-
 +
| 19 || SetCurrentBrightnessMapping
 +
|-
 +
| 20 || GetCurrentBrightnessMapping
 +
|-
 +
| 21 || SetCurrentAmbientLightSensorMapping
 +
|-
 +
| 22 || GetCurrentAmbientLightSensorMapping
 +
|-
 +
| 23 || [3.0.0+] IsAmbientLightSensorAvailable
 +
|-
 +
| 24 || [3.0.0+] SetCurrentBrightnessSettingForVrMode
 +
|-
 +
| 25 || [3.0.0+] GetCurrentBrightnessSettingForVrMode
 +
|-
 +
| 26 || [3.0.0+] EnableVrMode
 +
|-
 +
| 27 || [3.0.0+] DisableVrMode
 +
|-
 +
| 28 || [3.0.0+] IsVrModeEnabled
 +
|-
 +
| 29 || [7.0.0+] IsAutoBrightnessControlSupported
 +
|}
 +
 
 +
= FanName=
 +
This is "nn::fan::FanName".
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Value || Name
 +
|-
 +
| 0 || Unknown
 +
|-
 +
| 1 || Cpu
 +
|}
 +
 
 +
= ChargerType =
 +
This is "nn::psm::ChargerType".
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Value || Name
 +
|-
 +
| 0 || Unconnected
 +
|-
 +
| 1 || EnoughPower
 +
|-
 +
| 2 || LowPower
 +
|-
 +
| 3 || NotSupported
 
|}
 
|}
   −
== SetPerformanceConfiguration ==
+
= Vdd50State =
Takes an u32 [[#PerformanceMode]] and an u32 [[#PerformanceConfiguration]].
+
This is "nn::psm::Vdd50State".
   −
== GetPerformanceConfiguration ==
+
{| class="wikitable" border="1"
Takes an u32 [[#PerformanceMode]] and returns an output u32 [[#PerformanceConfiguration]].
+
|-
 +
! Value || Name
 +
|-
 +
| 0 || Unknown
 +
|-
 +
| 1 || Vdd50AOffVdd50BOff
 +
|-
 +
| 2 || Vdd50AOnVdd50BOff
 +
|-
 +
| 3 || Vdd50AOffVdd50BOn
 +
|}
   −
== SetCpuOverclockEnabled ==
+
= BatteryVoltageState =
Takes an input u8 bool, no output.
+
This is "nn::psm::BatteryVoltageState".
   −
== PerformanceMode ==
   
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
 
! Value || Name
 
! Value || Name
 
|-
 
|-
| 0 || Handheld
+
| 0 || ShutdownRequired
 +
|-
 +
| 1 || SleepRequired
 +
|-
 +
| 2 || BoostPerformanceModeProhibited
 
|-
 
|-
| 1 || Docked
+
| 3 || Good
 
|}
 
|}
   −
== PerformanceConfiguration ==
+
= BatteryChargeInfoFields =  
 +
This is "nn::psm::BatteryChargeInfoFields". This is a 0x40-byte struct.
 +
 
 +
[17.0.0+] This is a 0x54-byte struct.
 +
 
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
! Value || CPU clock || GPU clock || Memory clock
+
! Offset || Size || Description
 +
|-
 +
| 0x00 || 0x4 || u32. Input (Sink) current limit in mA
 
|-
 
|-
| 0x00010000 || 1020 || 384 || 1600
+
| 0x04 || 0x4 || u32. Output (Source/Vbus/OTG) current limit in mA
 
|-
 
|-
| 0x00010001 || 1020 || 768 || 1600
+
| 0x08 || 0x4 || u32. Battery charging current limit in mA
 
|-
 
|-
| 0x00010002 || 1224 || 691.2 || 1600
+
| 0x0C || 0x4 || u32. Battery charging voltage limit in mV
 
|-
 
|-
| 0x00020000 || 1020 || 230.4 || 1600
+
| 0x10 || 0x4 || enum, same as power-role? Always 1 except when OTG where it becomes 2
 
|-
 
|-
| 0x00020001 || 1020 || 307.2 || 1600
+
| 0x14 || 0x4 || Bit field (bit8: Enable Battery Charging)
 
|-
 
|-
| 0x00020002 || 1224 || 230.4 || 1600
+
| 0x18 || 0x4 || u32. Charging limits state based on battery temperature
 
|-
 
|-
| 0x00020003 || 1020 || 307 || 1331.2
+
| 0x1C || 0x4 || u32. Battery Temperature (milli C)
 
|-
 
|-
| 0x00020004 || 1020 || 384 || 1331.2
+
| 0x20 || 0x4 || u32. Capacity now per cent-mille (i.e. 100% = 100000 pcm)
 
|-
 
|-
| 0x00020005 || 1020 || 307.2 || 1065.6
+
| 0x24 || 0x4 || u32. Voltage avg in mV
 
|-
 
|-
| 0x00020006 || 1020 || 384 || 1065.6
+
| 0x28 || 0x4 || u32. Battery age (capacity full / capacity design) per cent-mille (i.e. 100% = 100000 pcm)
 
|-
 
|-
| 0x92220007 || 1020  || 460.8 || 1600
+
| 0x2C || 0x4 || enum. Power role (0: Unknown, 1: Sink, 2: Source)
 
|-
 
|-
| 0x92220008 || 1020 || 460.8 || 1331.2
+
| 0x30 || 0x4 || enum. [[#Charger]]
 
|-
 
|-
| [7.0.0+] 0x92220009 || 1785 || 768 || 1600
+
| 0x34 || 0x4 || u32. Charger voltage limit in mV
 
|-
 
|-
| [7.0.0+] 0x9222000A || 1785 || 768 || 1331.2
+
| 0x38 || 0x4 || u32. Charger current limit in mA
 
|-
 
|-
| [7.0.0+] 0x9222000B || 1020 || 768 || 1600
+
| 0x3C || 0x4 || Bit field (bit0: potentially no hub, bit8: Joy-con charging, bit12: OTG)
 
|-
 
|-
| [7.0.0+] 0x9222000C || 1020 || 768 || 1331.2
+
| 0x40 || 0x14 ||  
 
|}
 
|}
   −
Clocks are all in MHz.
+
=== Charger ===
 +
{| class="wikitable" border="1"
 +
|-
 +
! Value || Name
 +
|-
 +
| 0 || Unknown
 +
|-
 +
| 1 || PD
 +
|-
 +
| 2 || Type-C 1.5A
 +
|-
 +
| 3 || Type-C 3.0A
 +
|-
 +
| 4 || DCP
 +
|-
 +
| 5 || CDP
 +
|-
 +
| 6 || SDP
 +
|-
 +
| 7 || Apple 500mA
 +
|-
 +
| 8 || Apple 1000mA
 +
|-
 +
| 9 || Apple 2000mA
 +
|}
 +
 
 +
= Location =
 +
{| class="wikitable" border="1"
 +
|-
 +
! Value || Name || DeviceCode
 +
|-
 +
| 0 || Internal || 0x41000001
 +
|-
 +
| 1 || External || 0x41000002
 +
|}
 +
 
 +
= CpuBoostMode =
 +
This is "nn::apm::CpuBoostMode".
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Value || Description
 +
|-
 +
| 0 || Disabled.
 +
|-
 +
| 1 || Boost CPU. Additionally, throttle GPU to minimum.
 +
Use [[#PerformanceConfiguration|performance configurations]] 0x92220009 and 0x9222000A, or 0x9222000B and 0x9222000C.
 +
|-
 +
| 2 || Conserve power. Only throttle GPU to minimum.
 +
Use [[#PerformanceConfiguration|performance configurations]] 0x9222000B and 0x9222000C.
 +
|}
 +
 
 +
= PerformanceMode =
 +
This is "nn::apm::PerformanceMode".
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Value || Description
 +
|-
 +
| -1 || Invalid
 +
|-
 +
| 0 || Normal
 +
|-
 +
| 1 || Boost
 +
|}
 +
 
 +
= PerformanceConfiguration =
 +
This is "nn::apm::PerformanceConfiguration".
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Value || Description || CPU clock (MHz) || GPU clock (MHz) || Memory clock (MHz)
 +
|-
 +
| 0x00000000 || Invalid || 0 || 0 || 0
 +
|-
 +
| 0x00010000 || Cpu1020MhzGpu384Mhz || 1020.0 || 384.0 || 1600.0
 +
|-
 +
| 0x00010001 || Cpu1020MhzGpu768Mhz || 1020.0 || 768.0 || 1600.0
 +
|-
 +
| 0x00010002 || Cpu1224MhzGpu691Mhz || 1224.0 || 691.2 || 1600.0
 +
|-
 +
| 0x00020000 || Cpu1020MhzGpu230Mhz|| 1020.0 || 230.4 || 1600.0
 +
|-
 +
| 0x00020001 || Cpu1020MhzGpu307Mhz || 1020.0 || 307.2 || 1600.0
 +
|-
 +
| 0x00020002 || Cpu1224MhzGpu230Mhz || 1224.0 || 230.4 || 1600.0
 +
|-
 +
| 0x00020003 || Cpu1020MhzGpu307MhzEmc1331Mhz || 1020.0 || 307.2 || 1331.2
 +
|-
 +
| 0x00020004 || Cpu1020MhzGpu384MhzEmc1331Mhz || 1020.0 || 384.0 || 1331.2
 +
|-
 +
| 0x00020005 || Cpu1020MhzGpu307MhzEmc1065Mhz || 1020.0 || 307.2 || 1065.6
 +
|-
 +
| 0x00020006 || Cpu1020MhzGpu384MhzEmc1065Mhz || 1020.0 || 384.0 || 1065.6
 +
|-
 +
| 0x92220007 || Cpu1020MhzGpu460MhzEmc1600Mhz || 1020.0 || 460.8 || 1600.0
 +
|-
 +
| 0x92220008 || Cpu1020MhzGpu460MhzEmc1331Mhz || 1020.0 || 460.8 || 1331.2
 +
|-
 +
| [7.0.0+] 0x92220009 || Cpu1785MhzGpu76MhzEmc1600Mhz || 1785.0 || 76.8 || 1600.0
 +
|-
 +
| [7.0.0+] 0x9222000A || Cpu1785MhzGpu76MhzEmc1331Mhz || 1785.0 || 76.8 || 1331.2
 +
|-
 +
| [7.0.0+] 0x9222000B || Cpu1020MhzGpu76MhzEmc1600Mhz || 1020.0 || 76.8 || 1600.0
 +
|-
 +
| [7.0.0+] 0x9222000C || Cpu1020MhzGpu76MhzEmc1331Mhz || 1020.0 || 76.8 || 1331.2
 +
|}
    
Configurations 0x10001 and 0x20000 are only available while docked. Configurations 0x10002 and 0x20002 are only available for SDEV units.
 
Configurations 0x10001 and 0x20000 are only available while docked. Configurations 0x10002 and 0x20002 are only available for SDEV units.
   −
Some of these require apm:p.
+
= EventTarget =
 +
This is "nn::apm::EventTarget".
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Value || Description
 +
|-
 +
| 0 || PerformanceModeChanged
 +
|-
 +
| 1 || SleepRequiredByLowVoltage
 +
|-
 +
| 2 || [7.0.0+] PerformanceConfigurationChanged
 +
|}
   −
= fgm, fgm:0, fgm:9 =
+
= ThrottlingState =
This is "nn::fgm::sf::ISession".
+
This is "nn::apm::ThrottlingState".
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
! Cmd || Name
+
! Offset || Size || Description
 +
|-
 +
| 0x0 || 0x8 || DurationNanoSeconds
 +
|-
 +
| 0x8 || 0x4 || ThrottlingRateCpuDividend
 +
|-
 +
| 0xC || 0x4 || ThrottlingRateCpuDivisor
 +
|-
 +
| 0x10 || 0x4 || ThrottlingRateGpuDividend
 +
|-
 +
| 0x14 || 0x4 || ThrottlingRateGpuDivisor
 +
|-
 +
| 0x18 || 0x4 || ThrottleStatus
 +
|-
 +
| 0x1C || 0x4 || CpuPSkipStatus
 +
|-
 +
| 0x20 || 0x4 || GpuPSkipStatus
 +
|-
 +
| 0x24 || 0x1 || Enabled
 +
|-
 +
| 0x25 || 0x1 || Invoked
 
|-
 
|-
| 0 || Initialize
+
| 0x26 || 0x2 || Reserved
 
|}
 
|}
   −
== IRequest ==
+
= Module =
This is "nn::fgm::sf::IRequest".
+
This is "nn::fgm::Module".
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
! Cmd || Name
+
! Name || Block
 +
|-
 +
| 0 || Cpu
 +
|-
 +
| 1 || Gpu
 +
|-
 +
| 2 || Emc
 +
|-
 +
| 3 || SysBus
 +
|-
 +
| 4 || Mselect
 +
|-
 +
| 5 || Nvdec
 +
|-
 +
| 6 || Nvenc
 +
|-
 +
| 7 || Nvjpg
 +
|-
 +
| 8 || Test
 +
|}
 +
 
 +
= EventId =
 +
This is "nn::fgm::EventId".
 +
 
 +
{| class="wikitable" border="1"
 
|-
 
|-
| 0 || Initialize
+
! Name || Block
 
|-
 
|-
| 1 || Set
+
| 0 || Set
 
|-
 
|-
| 2 || Get
+
| 1 || Unset
 
|-
 
|-
| 3 || Cancel
+
| 2 || Completion
 
|}
 
|}
   −
= fgm:dbg =
+
= DebugEntry =
This is "nn::fgm::sf::IDebugger".
+
This is "nn::fgm::DebugEntry".
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
! Cmd || Name
+
! Offset || Size || Description
 +
|-
 +
| 0x0 || 0x4 || [[#EventId|EventId]]
 
|-
 
|-
| 0 || Initialize
+
| 0x4 || 0x4 || [[#Module|ModuleId]]
 
|-
 
|-
| 1 || Read
+
| 0x8 || 0x8 || Timestamp
 
|-
 
|-
| 2 || Cancel
+
| 0x10 || 0x40 || [[#RequestEntry|RequestEntry]] (EventId = Set), empty (EventId = Unset) or [[#CompletionEntry|CompletionEntry]] (EventId = Completion)
 
|}
 
|}
   −
= Settings =
+
= RequestEntry =
 +
This is "nn::fgm::RequestEntry".
 +
 
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
! Key || Size || Notes
+
! Offset || Size || Description
 
|-
 
|-
| background_download_stress_testing_storage || strlen || "sdcard", "builtin", "system".
+
| 0x0 || 0x8 || ProcessId
 
|-
 
|-
| battery_draining_enabled || 1 || ?
+
| 0x8 || 0x4 || Priority
 
|-
 
|-
| fs_access_log_mode || strlen || "log", "sdcard", "log+sdcard", "off".
+
| 0xC || 0x4 || ClockRateMin
 
|-
 
|-
| fs_speed_emulation_mode || strlen || "faster", "slower", "random", "off".
+
| 0x10 || 0x4 || ClockRateMax
 
|-
 
|-
| host_romfs_redirection_target || strlen || "builtin", "off".
+
| 0x14 || 0x2C || Reserved
 +
|}
 +
 
 +
= CompletionEntry =
 +
This is "nn::fgm::CompletionEntry".
 +
 
 +
{| class="wikitable" border="1"
 
|-
 
|-
| idle_time_detect_mode || strlen || "on", "off".
+
! Offset || Size || Description
 
|-
 
|-
| initial_tick_value || strlen || "7days", "14days", "30days", "90days", "hex": ?.
+
| 0x0 || 0x4 || ClockRateMin
 
|-
 
|-
| memory_mode || strlen || "auto", "4GB", "6GB".
+
| 0x4 || 0x4 || ClockRateMax
 
|-
 
|-
| needs_update_vulnerability_policy || strlen || "default": ?, "force_true": ?, "force_false": ?.
+
| 0x8 || 0x4 || ClockRateActual
 
|-
 
|-
| operation_mode_policy || strlen || "auto": ?, "handheld", "console".
+
| 0xC || 0x34 || Reserved
 +
|}
 +
 
 +
= AccessMode =
 +
This is "nn::ddsf::AccessMode".
 +
 
 +
{| class="wikitable" border="1"
 
|-
 
|-
| performance_mode_policy || strlen || "auto": use boost mode when docked. "normal": never use boost mode. "boost": always use boost mode (SDEV only).
+
! Name || Block
 
|-
 
|-
| screenshot_target || strlen || "screenshot": ?, "physical": ?.
+
| 0 || None
 
|-
 
|-
| sdev_cpu_overclock_enabled || 1 || SDEV only. Used to allow access to 1224MHz CPU mode.
+
| 1 || Read
 
|-
 
|-
| sdev_throttling_additional_delay_us || 4 || SDEV only.
+
| 2 || Write
 
|-
 
|-
| sdev_throttling_additional_delay_enabled || 1 || SDEV only.
+
| 3 || ReadWrite
 
|-
 
|-
| sleep_mode || strlen || "default": ?, "pseudo": ?.
+
| 4 || Shared
 
|-
 
|-
| throttling_for_smpd_enabled || 1 || Not used as of 3.0.
+
| 5 || WriteShared
 
|-
 
|-
| throttling_for_undock_enabled || 1 || Not used as of 3.0.
+
| 6 || ReadWriteShared
 
|}
 
|}
    
[[Category:Services]]
 
[[Category:Services]]

Navigation menu