Difference between revisions of "APM services"
From Nintendo Switch Brew
(Created page with "APM is utilized for setting system performance profiles; including clocks for CPU, GPU, and memory. == apm == {| class="wikitable" border="1" |- ! Cmd || Name || Notes |- | 0...") |
(add settings (performance_mode_policy is neat)) |
||
| (5 intermediate revisions by the same user not shown) | |||
| Line 11: | Line 11: | ||
|} | |} | ||
| − | === ISession === | + | == apm:p == |
| + | {| class="wikitable" border="1" | ||
| + | |- | ||
| + | ! Cmd || Name || Notes | ||
| + | |- | ||
| + | | 0 || [[#ISession|GetISession]] || Same as apm ISession - but more privileged? | ||
| + | |- | ||
| + | | 1 || ? || | ||
| + | |} | ||
| + | |||
| + | |||
| + | == apm:sys == | ||
| + | Internally known as ISystemManager | ||
| + | |||
| + | |||
| + | |||
| + | == ISession == | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
! Cmd || Name || Notes | ! Cmd || Name || Notes | ||
|- | |- | ||
| − | | 0 || | + | | 0 || SetPerformanceConfiguration || Takes u32 PerformanceMode |
|- | |- | ||
| − | | 1 || | + | | 1 || GetPerformanceConfiguration || Takes u32 PerformanceMode, u32 PerformanceConfiguration |
|} | |} | ||
| Line 34: | Line 50: | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
| − | ! Value || | + | ! 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 || | + | | 0x92220007 || 1020 || 460.8 || 1600 |
|- | |- | ||
| − | | 0x92220008 || | + | | 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?). | |
| − | + | == Settings == | |
| − | == | + | {| class="wikitable" border="1" |
| + | |- | ||
| + | ! 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. | ||
| + | |} | ||
[[Category:Services]] | [[Category:Services]] | ||
Latest revision as of 07:45, 11 July 2017
APM is utilized for setting system performance profiles; including clocks for CPU, GPU, and memory.
Contents
apm
| Cmd | Name | Notes |
|---|---|---|
| 0 | GetISession | |
| 1 | GetPerformanceMode |
apm:p
| Cmd | Name | Notes |
|---|---|---|
| 0 | GetISession | Same as apm ISession - but more privileged? |
| 1 | ? |
apm:sys
Internally known as ISystemManager
ISession
| Cmd | Name | Notes |
|---|---|---|
| 0 | SetPerformanceConfiguration | Takes u32 PerformanceMode |
| 1 | GetPerformanceConfiguration | Takes u32 PerformanceMode, 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?).
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. |