Difference between revisions of "PPC services"

From Nintendo Switch Brew
Jump to navigation Jump to search
m (Reverted edits by Hexkyz (talk) to last revision by Yellows8)
Tag: Rollback
Line 1: Line 1:
 
APM is utilized for setting system performance profiles including clocks for CPU, GPU, and memory.
 
APM is utilized for setting system performance profiles including clocks for CPU, GPU, and memory.
  
== apm ==
+
= apm =
 
This is "nn::apm::IManager".
 
This is "nn::apm::IManager".
  
Line 13: Line 13:
 
|}
 
|}
  
== apm:p ==
+
= apm:p =
 
This is "nn::apm::IManagerPrivileged".
 
This is "nn::apm::IManagerPrivileged".
  
Line 23: Line 23:
 
|}
 
|}
  
== apm:sys ==
+
= apm:sys =
 
This is "nn::apm::ISystemManager".
 
This is "nn::apm::ISystemManager".
  
Line 39: Line 39:
 
|-
 
|-
 
| 4 || ClearLastThrottlingState ||  
 
| 4 || ClearLastThrottlingState ||  
 +
|-
 +
| 5 || [5.0.0+] LoadAndApplySettings ||
 
|}
 
|}
  
== ISession ==
+
= ISession =
 +
This is "nn::apm::ISession".
 +
 
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 51: Line 55:
 
|}
 
|}
  
=== PerformanceMode ===
+
== PerformanceMode ==
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 61: Line 65:
 
|}
 
|}
  
=== PerformanceConfiguration ===
+
== PerformanceConfiguration ==
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 96: Line 100:
 
Some of these require apm:p.
 
Some of these require apm:p.
  
== Settings ==
+
= fgm, fgm:0, fgm:9 =
 +
This is "nn::fgm::sf::ISession".
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name
 +
|-
 +
| 0 || Initialize
 +
|}
 +
 
 +
== IRequest ==
 +
This is "nn::fgm::sf::IRequest".
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name
 +
|-
 +
| 0 || Initialize
 +
|-
 +
| 1 || Set
 +
|-
 +
| 2 || Get
 +
|-
 +
| 3 || Cancel
 +
|}
 +
 
 +
= fgm:dbg =
 +
This is "nn::fgm::sf::IDebugger".
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name
 +
|-
 +
| 0 || Initialize
 +
|-
 +
| 1 || Read
 +
|-
 +
| 2 || Cancel
 +
|}
 +
 
 +
= Settings =
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
 
! Key || Size || Notes
 
! Key || Size || Notes
 
|-
 
|-
| battery_draining_enabled|| 1 || ?
+
| battery_draining_enabled || 1 || ?
 
|-
 
|-
| performance_mode_policy|| strlen || "auto": use boost mode when docked. "normal": never use boost mode. "boost": always use boost mode (devkit only).
+
| performance_mode_policy || strlen || "auto": use boost mode when docked. "normal": never use boost mode. "boost": always use boost mode (devkit only).
 
|-
 
|-
 
| sdev_cpu_overclock_enabled || 1 || Not used as of 3.0. May have been used to allow access to 1224MHz CPU mode?
 
| sdev_cpu_overclock_enabled || 1 || Not used as of 3.0. May have been used to allow access to 1224MHz CPU mode?

Revision as of 19:37, 21 October 2018

APM is utilized for setting system performance profiles including clocks for CPU, GPU, and memory.

apm

This is "nn::apm::IManager".

Cmd Name Notes
0 OpenSession Returns an #ISession.
1 GetPerformanceMode

apm:p

This is "nn::apm::IManagerPrivileged".

Cmd Name Notes
0 OpenSession Returns an #ISession.

apm:sys

This is "nn::apm::ISystemManager".

Cmd Name Notes
0 RequestPerformanceMode
1 GetPerformanceEvent Returns an #ISession.
2 GetThrottlingState
3 GetLastThrottlingState
4 ClearLastThrottlingState
5 [5.0.0+] LoadAndApplySettings

ISession

This is "nn::apm::ISession".

Cmd Name Notes
0 SetPerformanceConfiguration Takes u32 PerformanceMode and u32 PerformanceConfiguration.
1 GetPerformanceConfiguration Takes u32 PerformanceMode, returns output u32 PerformanceConfiguration.

PerformanceMode

Value Name
0 Handheld
1 Docked

PerformanceConfiguration

Value CPU clock GPU clock Memory clock
0x00010000 1020 384 1600
0x00010001 1020 768 1600
0x00010002 1224 691.2 1600
0x00020000 1020 230.4 1600
0x00020001 1020 307.2 1600
0x00020002 1224 230.4 1600
0x00020003 1020 307 1331.2
0x00020004 1020 384 1331.2
0x00020005 1020 307.2 1065.6
0x00020006 1020 384 1065.6
0x92220007 1020 460.8 1600
0x92220008 1020 460.8 1331.2

Clocks are all in MHz.

Configurations 0x10001 and 0x20000 are only available while docked. Configurations 0x10002 and 0x20002 do not seem to be available at all (dependent on apm settings?).

Some of these require apm:p.

fgm, fgm:0, fgm:9

This is "nn::fgm::sf::ISession".

Cmd Name
0 Initialize

IRequest

This is "nn::fgm::sf::IRequest".

Cmd Name
0 Initialize
1 Set
2 Get
3 Cancel

fgm:dbg

This is "nn::fgm::sf::IDebugger".

Cmd Name
0 Initialize
1 Read
2 Cancel

Settings

Key Size Notes
battery_draining_enabled 1 ?
performance_mode_policy strlen "auto": use boost mode when docked. "normal": never use boost mode. "boost": always use boost mode (devkit only).
sdev_cpu_overclock_enabled 1 Not used as of 3.0. May have been used to allow access to 1224MHz CPU mode?
sdev_throttling_additional_delay_us 4 ?
sdev_throttling_additional_delay_enabled 1 ?
throttling_for_smpd_enabled 1 Not used as of 3.0.
throttling_for_undock_enabled 1 Not used as of 3.0.