Difference between revisions of "PCV services"
(78 intermediate revisions by 8 users not shown) | |||
Line 6: | Line 6: | ||
! Cmd || Name | ! Cmd || Name | ||
|- | |- | ||
− | | 0 || ShutdownSystem | + | | 0 || [[#ShutdownSystem]] |
|- | |- | ||
− | | 1 || RebootSystem | + | | 1 || [[#RebootSystem]] |
|- | |- | ||
− | | 2 || GetWakeupReason | + | | 2 || [[#GetWakeupReason]] |
|- | |- | ||
− | | 3 || GetShutdownReason | + | | 3 || [[#GetShutdownReason]] |
|- | |- | ||
− | | 4 || GetAcOk | + | | 4 || [[#GetAcOk]] |
|- | |- | ||
− | | 5 || | + | | 5 || [[#GetPowerEvent]] |
|- | |- | ||
− | | 6 || GetSleepButtonState | + | | 6 || [2.0.0-13.2.1] [[#GetSleepButtonState]] |
|- | |- | ||
− | | 7 || | + | | 7 || [2.0.0+] [[#GetPowerButtonEvent]] |
|- | |- | ||
− | | 8 || | + | | 8 || [2.0.0-9.2.0] [[#CreateWakeupTimer]] |
|- | |- | ||
− | | 9 || | + | | 9 || [2.0.0-9.2.0] [[#CancelWakeupTimer]] |
|- | |- | ||
− | | 10 || | + | | 10 || [2.0.0-9.2.0] [[#EnableWakeupTimerOnDevice]] |
+ | |- | ||
+ | | 11 || [3.0.0-9.2.0] [[#CreateWakeupTimerEx]] | ||
+ | |- | ||
+ | | 12 || [3.0.0-9.2.0] [[#GetLastEnabledWakeupTimerType]] | ||
+ | |- | ||
+ | | 13 || [3.0.0-9.2.0] [[#CleanAllWakeupTimers]] | ||
+ | |- | ||
+ | | 14 || [6.0.0+] [[#GetPowerButton]] | ||
+ | |- | ||
+ | | 15 || [10.0.0+] [[#SetUpRtcResetOnShutdown]] | ||
|} | |} | ||
+ | |||
+ | == ShutdownSystem == | ||
+ | No input/output. | ||
+ | |||
+ | == RebootSystem == | ||
+ | No input/output. | ||
+ | |||
+ | == GetWakeupReason == | ||
+ | No input. Returns an output u32. | ||
+ | |||
+ | == GetShutdownReason == | ||
+ | No input. Returns an output u32. | ||
+ | |||
+ | == GetAcOk == | ||
+ | No input. Returns an output bool. | ||
+ | |||
+ | == GetPowerEvent == | ||
+ | Takes an input [[#BoardPowerControlEventTarget|BoardPowerControlEventTarget]]. Returns an output Event handle. | ||
+ | |||
+ | == GetSleepButtonState == | ||
+ | No input. Returns an output [[#SleepButtonState|SleepButtonState]]. | ||
+ | |||
+ | == GetPowerButtonEvent == | ||
+ | Takes an input [[#EventTarget|EventTarget]]. Returns an output Event handle. | ||
+ | |||
+ | == CreateWakeupTimer == | ||
+ | Takes an input u64. Returns an output u32. | ||
+ | |||
+ | == CancelWakeupTimer == | ||
+ | Takes an input u32. No output. | ||
+ | |||
+ | == EnableWakeupTimerOnDevice == | ||
+ | No input. Returns an output bool '''IsEnabled''' and an output u64 '''Interval'''. | ||
+ | |||
+ | [3.0.0+] Now returns an u32 and an u64. | ||
+ | |||
+ | == CreateWakeupTimerEx == | ||
+ | Takes two input u64s. Returns an output u32. | ||
+ | |||
+ | == GetLastEnabledWakeupTimerType == | ||
+ | No input. Returns an output u32. | ||
+ | |||
+ | == CleanAllWakeupTimers == | ||
+ | Takes an input u32. No output. | ||
+ | |||
+ | == GetPowerButton == | ||
+ | No input. Returns an output bool '''IsPushed'''. | ||
+ | |||
+ | == SetUpRtcResetOnShutdown == | ||
+ | No input/output. Enables an internal wakeup timer when calling [[#ShutdownSystem|ShutdownSystem]] or [[#RebootSystem|RebootSystem]]. | ||
= bpc:r = | = bpc:r = | ||
Line 36: | Line 96: | ||
! Cmd || Name | ! Cmd || Name | ||
|- | |- | ||
− | | 0 || | + | | 0 || [[#GetRtcTime]] |
+ | |- | ||
+ | | 1 || [[#SetRtcTime]] | ||
+ | |- | ||
+ | | 2 || [[#GetRtcResetDetected]] | ||
+ | |- | ||
+ | | 3 || [2.0.0+] [[#ClearRtcResetDetected]] | ||
+ | |- | ||
+ | | 4 || [3.0.0+] [[#SetUpRtcResetOnShutdown]] | ||
+ | |} | ||
+ | |||
+ | == GetRtcTime == | ||
+ | No input. Returns an output u64. | ||
+ | |||
+ | == SetRtcTime == | ||
+ | Takes an input u64. No output. | ||
+ | |||
+ | == GetRtcResetDetected == | ||
+ | No input. Returns an output bool. | ||
+ | |||
+ | == ClearRtcResetDetected == | ||
+ | No input/output. | ||
+ | |||
+ | == SetUpRtcResetOnShutdown == | ||
+ | No input/output. | ||
+ | |||
+ | = bpc:c = | ||
+ | This is "nn::bpc::IBoardPowerControlManager". | ||
+ | |||
+ | [2.0.0+] This service was replaced by [[#bpc|bpc]]. | ||
+ | |||
+ | {| class="wikitable" border="1" | ||
+ | |- | ||
+ | ! Cmd || Name | ||
+ | |- | ||
+ | | 0 || [[#ShutdownSystem]] | ||
+ | |- | ||
+ | | 1 || [[#RebootSystem]] | ||
+ | |- | ||
+ | | 2 || [[#GetWakeupReason]] | ||
+ | |- | ||
+ | | 3 || [[#GetShutdownReason]] | ||
+ | |- | ||
+ | | 4 || [[#GetAcOk]] | ||
+ | |- | ||
+ | | 5 || [[#GetPowerEvent]] | ||
+ | |} | ||
+ | |||
+ | = bpc:b = | ||
+ | This is "nn::bpc::IPowerButtonManager". | ||
+ | |||
+ | [2.0.0+] This service was merged into [[#bpc|bpc]]. | ||
+ | |||
+ | {| class="wikitable" border="1" | ||
|- | |- | ||
− | | | + | ! Cmd || Name |
|- | |- | ||
− | | | + | | 0 || [[#GetSleepButtonState]] |
|- | |- | ||
− | | | + | | 1 || [[#GetPowerButtonEvent]] |
|} | |} | ||
− | + | = bpc:w = | |
+ | This is "nn::bpc::IWakeupConfigManager". | ||
+ | |||
+ | [2.0.0+] This service was merged into [[#bpc|bpc]]. | ||
+ | |||
+ | {| class="wikitable" border="1" | ||
+ | |- | ||
+ | ! Cmd || Name | ||
+ | |- | ||
+ | | 0 || [[#CreateWakeupTimer]] | ||
+ | |- | ||
+ | | 1 || [[#CancelWakeupTimer]] | ||
+ | |- | ||
+ | | 2 || [[#EnableWakeupTimerOnDevice]] | ||
+ | |} | ||
= pcv = | = pcv = | ||
Line 54: | Line 181: | ||
! Cmd || Name | ! Cmd || Name | ||
|- | |- | ||
− | | 0 || SetPowerEnabled | + | | [1.0.0-7.0.1] 0 || [[#SetPowerEnabled]] |
+ | |- | ||
+ | | [1.0.0-7.0.1] 1 || [[#SetClockEnabled]] | ||
+ | |- | ||
+ | | [1.0.0-7.0.1] 2 || [[#SetClockRate]] | ||
|- | |- | ||
− | | 1 || | + | | [1.0.0-7.0.1] 3 || [[#GetClockRate]] |
|- | |- | ||
− | | | + | | [1.0.0-7.0.1] 4 || [[#GetState]] |
|- | |- | ||
− | | | + | | [1.0.0-7.0.1] 5 || [[#GetPossibleClockRates]] |
|- | |- | ||
− | | | + | | [1.0.0-7.0.1] 6 || [[#SetMinVClockRate]] |
|- | |- | ||
− | | | + | | [1.0.0-7.0.1] 7 || [[#SetReset]] |
|- | |- | ||
− | | | + | | [1.0.0-7.0.1] 8 || [[#SetVoltageEnabled]] |
|- | |- | ||
− | | 7 || | + | | [1.0.0-7.0.1] 9 || [[#GetVoltageEnabled]] |
|- | |- | ||
− | | | + | | [1.0.0-7.0.1] 10 || [[#GetVoltageRange]] |
|- | |- | ||
− | | | + | | [1.0.0-7.0.1] 11 || [[#SetVoltageValue]] |
|- | |- | ||
− | | | + | | [1.0.0-7.0.1] 12 || [[#GetVoltageValue]] |
|- | |- | ||
− | | | + | | [1.0.0-7.0.1] 13 || [[#GetTemperatureThresholds]] |
|- | |- | ||
− | | | + | | [1.0.0-7.0.1] 14 || [[#SetTemperature]] |
|- | |- | ||
− | | | + | | [1.0.0-5.1.0] 15 || [[#Initialize]] |
|- | |- | ||
− | | | + | | [1.0.0-5.1.0] 16 || [[#IsInitialized]] |
|- | |- | ||
− | | | + | | [1.0.0-5.1.0] 17 || [[#Finalize]] |
|- | |- | ||
− | | | + | | [3.0.0-7.0.1] 18 || [[#PowerOn]] |
|- | |- | ||
− | | | + | | [3.0.0-7.0.1] 19 || [[#PowerOff]] |
|- | |- | ||
− | | | + | | [3.0.0-7.0.1] 20 || [[#ChangeVoltage]] |
|- | |- | ||
− | | | + | | [3.0.0-7.0.1] 21 || [[#GetPowerClockInfoEvent]] |
|- | |- | ||
− | | | + | | [3.0.0-7.0.1] 22 || [[#GetOscillatorClock]] |
|- | |- | ||
− | | | + | | [3.0.0-7.0.1] 23 || [[#GetDvfsTable]] |
|- | |- | ||
− | | | + | | [3.0.0-7.0.1] 24 || [[#GetModuleStateTable]] |
|- | |- | ||
− | | | + | | [3.0.0-7.0.1] 25 || [[#GetPowerDomainStateTable]] |
|- | |- | ||
− | | | + | | 26 || [3.0.0+] [[#GetFuseInfo]] |
|- | |- | ||
− | | | + | | 27 || [5.0.0+] [[#GetDramId]] |
+ | |- | ||
+ | | [6.0.0-7.0.1] 28 || [[#IsPoweredOn]] | ||
+ | |- | ||
+ | | [6.0.0-7.0.1] 29 || [[#GetVoltage]] | ||
+ | |} | ||
+ | |||
+ | == SetPowerEnabled == | ||
+ | Takes an input [[#Module|ModuleId]] and an input bool '''Enabled'''. No output. | ||
+ | |||
+ | == SetClockEnabled == | ||
+ | Takes an input [[#Module|ModuleId]] and an input bool '''Enabled'''. No output. | ||
+ | |||
+ | == SetClockRate == | ||
+ | Takes an input [[#Module|ModuleId]] and an input u32 '''ClockRateHz'''. No output. | ||
+ | |||
+ | == GetClockRate == | ||
+ | Takes an input [[#Module|ModuleId]]. Returns an output u32 '''ClockRateHz'''. | ||
+ | |||
+ | == GetState == | ||
+ | Takes an input [[#Module|ModuleId]]. Returns an output [[#ModuleState|ModuleState]]. | ||
+ | |||
+ | == GetPossibleClockRates == | ||
+ | Takes a type-0xA output buffer of [[#ClockRatesListType|ClockRatesListType]], an input [[#Module|ModuleId]] and an input s32 '''MaxCount'''. Returns an output s32 '''OutCount''' and an output u32 '''OutRates'''. | ||
+ | |||
+ | == SetMinVClockRate == | ||
+ | Takes an input [[#Module|ModuleId]] and an input u32 '''ClockRateHz'''. No output. | ||
+ | |||
+ | == SetReset == | ||
+ | Takes an input [[#Module|ModuleId]] and an input bool '''Asserted'''. No output. | ||
+ | |||
+ | == SetVoltageEnabled == | ||
+ | Takes an input [[#PowerDomain|PowerDomain]] and an input bool '''Enabled'''. No output. | ||
+ | |||
+ | == GetVoltageEnabled == | ||
+ | Takes an input [[#PowerDomain|PowerDomain]]. Returns an output bool '''Enabled'''. | ||
+ | |||
+ | == GetVoltageRange == | ||
+ | Takes an input [[#PowerDomain|PowerDomain]]. Returns three output s32s '''MinVolt''', '''MaxVolt''' and '''StepVolt'''. | ||
+ | |||
+ | == SetVoltageValue == | ||
+ | Takes an input [[#PowerDomain|PowerDomain]] and an input s32 '''MicroVolt'''. No output. | ||
+ | |||
+ | == GetVoltageValue == | ||
+ | Takes an input [[#PowerDomain|PowerDomain]]. Returns an output s32 '''MicroVolt'''. | ||
+ | |||
+ | == GetTemperatureThresholds == | ||
+ | Takes a type-0xA output buffer of [[#TemperatureThreshold|TemperatureThreshold]] and an input s32 '''MaxCount'''. Returns an output s32 '''OutCount'''. | ||
+ | |||
+ | == SetTemperature == | ||
+ | Takes an input s32 '''TemperatureMilliC'''. No output. | ||
+ | |||
+ | == Initialize == | ||
+ | No input/output. | ||
+ | |||
+ | == IsInitialized == | ||
+ | No input. Returns an output bool. | ||
+ | |||
+ | == Finalize == | ||
+ | No input/output. | ||
+ | |||
+ | == PowerOn == | ||
+ | Takes an input [[#PowerControlTarget|PowerControlTarget]] and an input s32 '''MicroVolt'''. No output. | ||
+ | |||
+ | == PowerOff == | ||
+ | Takes an input [[#PowerControlTarget|PowerControlTarget]]. No output. | ||
+ | |||
+ | == ChangeVoltage == | ||
+ | Takes an input [[#PowerControlTarget|PowerControlTarget]] and an input s32 '''MicroVolt'''. No output. | ||
+ | |||
+ | == GetPowerClockInfoEvent == | ||
+ | No input. Returns an output Event handle. | ||
+ | |||
+ | == GetOscillatorClock == | ||
+ | No input. Returns an output u32. | ||
+ | |||
+ | == GetDvfsTable == | ||
+ | Takes two type-0xA output buffers and two input s32s. Returns an output s32 '''OutCount'''. | ||
+ | |||
+ | [7.0.0+] The type-0xA output buffers were replaced with type-0x22 output buffers. | ||
+ | |||
+ | == GetModuleStateTable == | ||
+ | Takes a type-0xA output buffer of [[#ModuleState|ModuleState]] and an input s32 '''MaxCount'''. Returns an output s32 '''OutCount'''. | ||
+ | |||
+ | [7.0.0+] The type-0xA output buffer was replaced with a type-0x22 output buffer. | ||
+ | |||
+ | == GetPowerDomainStateTable == | ||
+ | Takes a type-0xA output buffer of [[#PowerDomainState|PowerDomainState]] and an input s32 '''MaxCount'''. Returns an output s32 '''OutCount'''. | ||
+ | |||
+ | [7.0.0+] The type-0xA output buffer was replaced with a type-0x22 output buffer. | ||
+ | |||
+ | == GetFuseInfo == | ||
+ | Takes a type-0xA output buffer and an input s32 '''MaxCount'''. Returns an output s32 '''OutCount'''. | ||
+ | |||
+ | == GetDramId == | ||
+ | No input. Returns an u32. | ||
+ | |||
+ | == IsPoweredOn == | ||
+ | Takes an input [[#PowerControlTarget|PowerControlTarget]]. Returns an output bool. | ||
+ | |||
+ | == GetVoltage == | ||
+ | Takes an input [[#PowerControlTarget|PowerControlTarget]]. Returns an output s32. | ||
+ | |||
+ | = pcv:arb = | ||
+ | This is "nn::pcv::IArbitrationManager". | ||
+ | |||
+ | This service no longer exists in [8.0.0+]. | ||
+ | |||
+ | {| class="wikitable" border="1" | ||
|- | |- | ||
− | | | + | ! Cmd || Name |
|- | |- | ||
+ | | 0 || [[#ReleaseControl]] | ||
|} | |} | ||
− | == | + | == ReleaseControl == |
+ | Takes an input [[#Module|ModuleId]]. No output. | ||
− | == | + | = pcv:imm = |
+ | This is "nn::pcv::IImmediateManager". | ||
+ | |||
+ | This service no longer exists in [8.0.0+]. | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
− | ! | + | ! Cmd || Name |
|- | |- | ||
− | | | + | | 0 || [[#SetClockRate]] |
+ | |} | ||
+ | |||
+ | = clkrst, clkrst:i = | ||
+ | These are "nn::clkrst::IClkrstManager" and "nn::clkrst::IImmediateManager". | ||
+ | |||
+ | These were added with [8.0.0+]. | ||
+ | |||
+ | {| class="wikitable" border="1" | ||
|- | |- | ||
− | + | ! Cmd || Name | |
|- | |- | ||
− | | | + | | 0 || [[#OpenSession|OpenSession]] |
|- | |- | ||
− | | | + | | 1 || [[#GetTemperatureThresholds|GetTemperatureThresholds]] |
|- | |- | ||
− | | | + | | 2 || [[#NotifyTemperature|NotifyTemperature]] |
|- | |- | ||
− | | | + | | 3 || [[#GetClkrstStateTable|GetClkrstStateTable]] |
|- | |- | ||
− | | | + | | 4 || [[#GetClkrstStateTableUpdateEvent|GetClkrstStateTableUpdateEvent]] |
|- | |- | ||
− | | | + | | 5 || [[#GetClkrstStateTableCount|GetClkrstStateTableCount]] |
|- | |- | ||
− | | | + | | 6 || [15.0.0+] PrintClockTree |
+ | |} | ||
+ | |||
+ | == OpenSession == | ||
+ | Takes an input [[#Module|DeviceCode]] and an input u32. Returns an [[#IClkrstSession]]. | ||
+ | |||
+ | == NotifyTemperature == | ||
+ | Takes an input float. No output. | ||
+ | |||
+ | == GetClkrstStateTable == | ||
+ | Takes a type-0xA output buffer of [[#ModuleState|ModuleState]] and an input s32 '''MaxCount'''. Returns an output s32 '''OutCount'''. | ||
+ | |||
+ | [7.0.0+] The type-0xA output buffer was replaced with a type-0x22 output buffer. | ||
+ | |||
+ | == GetClkrstStateTableUpdateEvent == | ||
+ | No input. Returns an output Event handle. | ||
+ | |||
+ | == GetClkrstStateTableCount == | ||
+ | No input. Returns 0x1A. | ||
+ | |||
+ | == IClkrstSession == | ||
+ | This is "nn::clkrst::IClkrstSession". | ||
+ | |||
+ | {| class="wikitable" border="1" | ||
|- | |- | ||
− | + | ! Cmd || Name | |
|- | |- | ||
− | | | + | | 0 || EnableClock |
|- | |- | ||
− | | | + | | 1 || DisableClock |
|- | |- | ||
− | | | + | | 2 || AssertReset |
|- | |- | ||
− | | | + | | 3 || DeassertReset |
|- | |- | ||
− | | | + | | 4 || EnablePower |
|- | |- | ||
− | | | + | | 5 || DisablePower |
|- | |- | ||
− | | | + | | 6 || GetModuleState |
|- | |- | ||
− | | | + | | 7 || SetClockRate |
|- | |- | ||
− | | | + | | 8 || GetClockRate |
|- | |- | ||
− | | | + | | 9 || SetMinimumVoltageClockRate |
|- | |- | ||
− | | | + | | 10 || GetPossibleClockRates |
|- | |- | ||
− | | | + | | 11 || GetDvfsTable |
|- | |- | ||
− | | | + | | 12 || [14.0.0+] IsParentClock |
|- | |- | ||
− | | | + | | 13 || [14.0.0+] SetParentClock |
|- | |- | ||
− | | | + | | 14 || [18.0.0+] |
|- | |- | ||
− | | | + | | 15 || [18.0.0+] |
+ | |} | ||
+ | |||
+ | = clkrst:a = | ||
+ | This is "nn::clkrst::IArbitrationManager". | ||
+ | |||
+ | This was added with [8.0.0+]. | ||
+ | |||
+ | {| class="wikitable" border="1" | ||
|- | |- | ||
− | + | ! Cmd || Name | |
|- | |- | ||
− | | | + | | 0 || [[#ReleaseControl_2|ReleaseControl]] |
+ | |} | ||
+ | |||
+ | == ReleaseControl == | ||
+ | Takes an input [[#Module|DeviceCode]]. No output. | ||
+ | |||
+ | = rgltr = | ||
+ | This is "nn::regulator::IRegulatorManager". | ||
+ | |||
+ | This was added with [8.0.0+]. | ||
+ | |||
+ | {| class="wikitable" border="1" | ||
|- | |- | ||
− | + | ! Cmd || Name | |
|- | |- | ||
− | | | + | | 0 || [[#OpenSession_2|OpenSession]] |
|- | |- | ||
− | | | + | | 1 || [[#GetRegulatorStateTable|GetRegulatorStateTable]] |
|- | |- | ||
− | | | + | | 2 || [[#GetRegulatorStateTableUpdateEvent|GetRegulatorStateTableUpdateEvent]] |
|- | |- | ||
− | | | + | | 3 || [[#GetRegulatorStateTableCount|GetRegulatorStateTableCount]] |
+ | |} | ||
+ | |||
+ | == OpenSession == | ||
+ | Takes an input [[#PowerDomain|DeviceCode]] and returns an [[#IRegulatorSession]]. | ||
+ | |||
+ | == GetRegulatorStateTable == | ||
+ | Takes a type-0xA output buffer of [[#PowerDomainState|PowerDomainState]] and an input s32 '''MaxCount'''. Returns an output s32 '''OutCount'''. | ||
+ | |||
+ | [7.0.0+] The type-0xA output buffer was replaced with a type-0x22 output buffer. | ||
+ | |||
+ | == GetRegulatorStateTableUpdateEvent == | ||
+ | No input. Returns an output Event handle. | ||
+ | |||
+ | == GetRegulatorStateTableCount == | ||
+ | No input. Returns 0x3. | ||
+ | |||
+ | == IRegulatorSession == | ||
+ | This is "nn::regulator::IRegulatorSession". | ||
+ | |||
+ | {| class="wikitable" border="1" | ||
|- | |- | ||
− | + | ! Cmd || Name | |
|- | |- | ||
− | | | + | | 0 || RequestOutput |
|- | |- | ||
− | | | + | | 1 || CancelOutputRequest |
|- | |- | ||
− | | | + | | 2 || IsOutputEnabled |
|- | |- | ||
− | | | + | | 3 || GetVoltageRangeInMicroVolt |
|- | |- | ||
− | | | + | | 4 || GetVoltageInMicroVolt |
|- | |- | ||
− | | | + | | 5 || RequestVoltageInMicroVolt |
|- | |- | ||
− | | | + | | 6 || CancelVoltageRequest |
|- | |- | ||
− | | | + | | 7 || [13.0.0+] [[#GetMinimumOffStateHoldTime|GetMinimumOffStateHoldTime]] |
|- | |- | ||
− | | | + | | 8 || [13.0.0+] [[#RequestMinimumOffStateHoldTime|RequestMinimumOffStateHoldTime]] |
|- | |- | ||
− | | | + | | 9 || [13.0.0+] [[#CancelMinimumOffStateHoldTimeRequest|CancelMinimumOffStateHoldTimeRequest]] |
+ | |} | ||
+ | |||
+ | === GetMinimumOffStateHoldTime === | ||
+ | No input. Returns an output u64. | ||
+ | |||
+ | === RequestMinimumOffStateHoldTime === | ||
+ | Takes an input u64. No output. | ||
+ | |||
+ | === CancelMinimumOffStateHoldTimeRequest === | ||
+ | No input/output. | ||
+ | |||
+ | = rtc = | ||
+ | This is "nn::rtc::IRtcManager". | ||
+ | |||
+ | This was added with [8.0.0+]. | ||
+ | |||
+ | {| class="wikitable" border="1" | ||
|- | |- | ||
− | + | ! Cmd || Name | |
|- | |- | ||
− | | | + | | 0 || [[#GetTimeInSeconds|GetTimeInSeconds]] |
|- | |- | ||
− | | | + | | 1 || [[#SetTimeInSeconds|SetTimeInSeconds]] |
|- | |- | ||
− | | | + | | 2 || [[#SetResetOnShutdown|SetResetOnShutdown]] |
|- | |- | ||
− | | | + | | 3 || [[#GetResetDetected|GetResetDetected]] |
|- | |- | ||
− | | | + | | 4 || [[#ClearResetDetected|ClearResetDetected]] |
|- | |- | ||
− | | | + | | 10 || [10.0.0+] [[#EnableAlarm|EnableAlarm]] |
|- | |- | ||
− | | | + | | 11 || [10.0.0+] [[#DisableRtcAlarm|DisableRtcAlarm]] |
|- | |- | ||
− | | | + | | 12 || [18.0.0+] |
|- | |- | ||
− | | | + | | 13 || [18.0.0+] |
+ | |} | ||
+ | |||
+ | == GetTimeInSeconds == | ||
+ | Same as [[#GetRtcTime|GetRtcTime]], but takes an input [[Bus_services#I2cDevice|DeviceCode]] ([[#bpc:r|bpc:r]] uses hardcoded value 0x3B000001). | ||
+ | |||
+ | == SetTimeInSeconds == | ||
+ | Same as [[#SetRtcTime|SetRtcTime]], but takes an input [[Bus_services#I2cDevice|DeviceCode]] ([[#bpc:r|bpc:r]] uses hardcoded value 0x3B000001). | ||
+ | |||
+ | == SetResetOnShutdown == | ||
+ | Takes an input bool '''DoReset''' and an input [[Bus_services#I2cDevice|DeviceCode]]. Similar to [[#SetUpRtcResetOnShutdown|SetUpRtcResetOnShutdown]], but this version assigns the provided boolean value on a per-client basis (instead of a global variable) and checks it when the current [[PSC_services#Power_Management_States|power state]] is '''ReadyShutdown'''. | ||
+ | |||
+ | == GetResetDetected == | ||
+ | Same as [[#GetRtcResetDetected|GetRtcResetDetected]], but takes an input [[Bus_services#I2cDevice|DeviceCode]] ([[#bpc:r|bpc:r]] uses hardcoded value 0x3B000001). | ||
+ | |||
+ | == ClearResetDetected == | ||
+ | Same as [[#ClearRtcResetDetected|ClearRtcResetDetected]], but takes an input [[Bus_services#I2cDevice|DeviceCode]] ([[#bpc:r|bpc:r]] uses hardcoded value 0x3B000001). | ||
+ | |||
+ | == EnableAlarm == | ||
+ | Takes an input [[#Module|DeviceCode]], an input u32 '''RtcAlarmId''' (0 = RtcAlarm1, 1 = RtcAlarm2) and an u64 '''RtcAlarmTime'''. No output. | ||
+ | |||
+ | == DisableAlarm == | ||
+ | Takes an input [[#Module|DeviceCode]] and an input u32 '''RtcAlarmId''' (0 = RtcAlarm1, 1 = RtcAlarm2). No output. | ||
+ | |||
+ | = time:u, time:a, time:s = | ||
+ | This is "nn::timesrv::detail::service::IStaticService". | ||
+ | |||
+ | [9.0.0+] These services were moved to [[Glue_services|Glue]] and [[PSC_services|PSC]]. | ||
+ | |||
+ | {| class="wikitable" border="1" | ||
|- | |- | ||
− | + | ! Cmd || Name | |
|- | |- | ||
− | | | + | | 0 || [[#GetStandardUserSystemClock]] |
|- | |- | ||
− | | | + | | 1 || [[#GetStandardNetworkSystemClock]] |
|- | |- | ||
− | | | + | | 2 || [[#GetStandardSteadyClock]] |
|- | |- | ||
− | | | + | | 3 || [[#GetTimeZoneService]] |
|- | |- | ||
− | | | + | | 4 || [[#GetStandardLocalSystemClock]] |
|- | |- | ||
− | | | + | | 5 || [4.0.0+] [[#GetEphemeralNetworkSystemClock]] |
|- | |- | ||
− | | | + | | 20 || [6.0.0+] GetSharedMemoryNativeHandle |
|- | |- | ||
− | | | + | | 30 || [6.0.0+] GetStandardNetworkClockOperationEventReadableHandle |
|- | |- | ||
− | | | + | | 31 || [6.0.0+] GetEphemeralNetworkClockOperationEventReadableHandle |
|- | |- | ||
− | | | + | | 50 || [4.0.0+] SetStandardSteadyClockInternalOffset |
|- | |- | ||
− | | | + | | 100 || IsStandardUserSystemClockAutomaticCorrectionEnabled |
|- | |- | ||
− | | | + | | 101 || SetStandardUserSystemClockAutomaticCorrectionEnabled |
|- | |- | ||
− | | | + | | 102 || [5.0.0+] GetStandardUserSystemClockInitialYear |
|- | |- | ||
− | | | + | | 200 || [3.0.0+] IsStandardNetworkSystemClockAccuracySufficient |
|- | |- | ||
− | | | + | | 201 || [6.0.0+] GetStandardUserSystemClockAutomaticCorrectionUpdatedTime |
|- | |- | ||
− | | | + | | 300 || [4.0.0+] CalculateMonotonicSystemClockBaseTimePoint |
|- | |- | ||
− | | | + | | 400 || [4.0.0+] GetClockSnapshot |
|- | |- | ||
− | | | + | | 401 || [4.0.0+] GetClockSnapshotFromSystemClockContext |
|- | |- | ||
− | | | + | | 500 || [4.0.0+] CalculateStandardUserSystemClockDifferenceByUser |
|- | |- | ||
− | | | + | | 501 || [4.0.0+] CalculateSpanBetween |
+ | |} | ||
+ | |||
+ | == GetStandardUserSystemClock == | ||
+ | No input. Returns an [[#ISystemClock]]. | ||
+ | |||
+ | == GetStandardNetworkSystemClock == | ||
+ | No input. Returns an [[#ISystemClock]]. | ||
+ | |||
+ | == GetStandardSteadyClock == | ||
+ | No input. Returns an [[#ISteadyClock]]. | ||
+ | |||
+ | == GetTimeZoneService == | ||
+ | No input. Returns an [[#ITimeZoneService]]. | ||
+ | |||
+ | == GetStandardLocalSystemClock == | ||
+ | No input. Returns an [[#ISystemClock]]. | ||
+ | |||
+ | == GetEphemeralNetworkSystemClock == | ||
+ | No input. Returns an [[#ISystemClock]]. | ||
+ | |||
+ | == ISteadyClock == | ||
+ | This is "nn::timesrv::detail::service::ISteadyClock". | ||
+ | |||
+ | {| class="wikitable" border="1" | ||
+ | |- | ||
+ | ! Cmd || Name | ||
|- | |- | ||
− | | | + | | 0 || [[#GetCurrentTimePoint]] |
|- | |- | ||
− | | | + | | 2 || [[#GetTestOffset]] |
|- | |- | ||
− | | | + | | 3 || [[#SetTestOffset]] |
|- | |- | ||
− | | | + | | 100 || [2.0.0+] [[#GetRtcValue]] |
|- | |- | ||
− | | | + | | 101 || [2.0.0+] [[#IsRtcResetDetected]] |
|- | |- | ||
− | | | + | | 102 || [2.0.0+] [[#GetSetupResultValue]] |
|- | |- | ||
− | | | + | | 200 || [3.0.0+] [[#GetInternalOffset]] |
|- | |- | ||
+ | | 201 || [3.0.0-3.0.2] [[#SetInternalOffset]] | ||
|} | |} | ||
− | === | + | === GetCurrentTimePoint === |
+ | No input. Returns an output [[#SteadyClockTimePoint]]. | ||
+ | |||
+ | === GetTestOffset === | ||
+ | No input. Returns an output [[#TimeSpanType]]. | ||
+ | |||
+ | === SetTestOffset === | ||
+ | Takes an input [[#TimeSpanType]]. No output. | ||
+ | |||
+ | === GetRtcValue === | ||
+ | No input. Returns an output s64. | ||
+ | |||
+ | === IsRtcResetDetected === | ||
+ | No input. Returns an output u8 bool. | ||
+ | |||
+ | === GetSetupResultValue === | ||
+ | No input. Returns an output u32. | ||
+ | |||
+ | === GetInternalOffset === | ||
+ | No input. Returns an output [[#TimeSpanType]]. | ||
+ | |||
+ | === SetInternalOffset === | ||
+ | Takes an input [[#TimeSpanType]]. No output. | ||
+ | |||
+ | == ISystemClock == | ||
+ | This is "nn::timesrv::detail::service::ISystemClock". | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
− | ! | + | ! Cmd || Name |
|- | |- | ||
− | | | + | | 0 || [[#GetCurrentTime]] |
|- | |- | ||
− | | | + | | 1 || [[#SetCurrentTime]] |
|- | |- | ||
− | | | + | | 2 || [[#GetSystemClockContext]] |
|- | |- | ||
− | | | + | | 3 || [[#SetSystemClockContext]] |
|- | |- | ||
− | | | + | | 4 || [9.0.0+] GetOperationEventReadableHandle |
+ | |} | ||
+ | |||
+ | === GetCurrentTime === | ||
+ | No input. Returns an output [[#PosixTime]]. | ||
+ | |||
+ | === SetCurrentTime === | ||
+ | Takes an input [[#PosixTime]]. No output. | ||
+ | |||
+ | === GetSystemClockContext === | ||
+ | No input. Returns an output [[#SystemClockContext]]. | ||
+ | |||
+ | === SetSystemClockContext === | ||
+ | Takes an input [[#SystemClockContext]]. No output. | ||
+ | |||
+ | == ITimeZoneService == | ||
+ | This is "nn::timesrv::detail::service::ITimeZoneService". | ||
+ | |||
+ | {| class="wikitable" border="1" | ||
+ | |- | ||
+ | ! Cmd || Name | ||
|- | |- | ||
− | | | + | | 0 || [[#GetDeviceLocationName]] |
|- | |- | ||
− | | | + | | 1 || [[#SetDeviceLocationName]] |
|- | |- | ||
− | | | + | | 2 || [[#GetTotalLocationNameCount]] |
|- | |- | ||
− | | | + | | 3 || [[#LoadLocationNameList]] |
|- | |- | ||
− | | | + | | 4 || [[#LoadTimeZoneRule]] |
|- | |- | ||
− | | | + | | 5 || [2.0.0+] [[#GetTimeZoneRuleVersion]] |
|- | |- | ||
− | | | + | | 6 || [5.0.0+] GetDeviceLocationNameAndUpdatedTime |
|- | |- | ||
− | | | + | | 100 || [[#ToCalendarTime]] |
|- | |- | ||
− | | | + | | 101 || [[#ToCalendarTimeWithMyRule]] |
|- | |- | ||
− | | | + | | 201 || [[#ToPosixTime]] |
|- | |- | ||
+ | | 202 || [[#ToPosixTimeWithMyRule]] | ||
|} | |} | ||
− | + | === GetDeviceLocationName === | |
+ | No input. Returns an output [[#LocationName]]. | ||
− | = | + | === SetDeviceLocationName === |
− | This is "nn::pcv:: | + | Takes an input [[#LocationName]]. No output. |
+ | |||
+ | === GetTotalLocationNameCount === | ||
+ | No input. Returns an output s32. | ||
+ | |||
+ | === LoadLocationNameList === | ||
+ | Takes an input s32 LocationName_index and a type-0x6 output buffer for [[#LocationName]]. Returns an output s32 for total output entries. | ||
+ | |||
+ | === LoadTimeZoneRule === | ||
+ | Takes an input [[#LocationName]] and a type-0x16 output buffer for [[#TimeZoneRule]]. No output. | ||
+ | |||
+ | === GetTimeZoneRuleVersion === | ||
+ | No input. Returns an output [[#TimeZoneRuleVersion]]. | ||
+ | |||
+ | === ToCalendarTime === | ||
+ | Takes an input [[#PosixTime]] and a type-0x15 input buffer for [[#TimeZoneRule]]. Returns an output [[#CalendarTime]] and [[#CalendarAdditionalInfo]]. | ||
+ | |||
+ | === ToCalendarTimeWithMyRule === | ||
+ | Takes an input [[#PosixTime]]. Returns an output [[#CalendarTime]] and [[#CalendarAdditionalInfo]]. | ||
+ | |||
+ | === ToPosixTime === | ||
+ | Takes an input [[#CalendarTime]], a type-0x15 input buffer for [[#TimeZoneRule]], an type-0xA output buffer for [[#PosixTime]] array.R eturns an output s32. | ||
+ | |||
+ | === ToPosixTimeWithMyRule === | ||
+ | Takes an input [[#CalendarTime]], an type-0xA output buffer for [[#PosixTime]] array. Returns an output s32. | ||
+ | |||
+ | = BoardPowerControlEventTarget = | ||
+ | This is "nn::bpc::BoardPowerControlEventTarget". | ||
+ | |||
+ | = SleepButtonState = | ||
+ | This is "nn::bpc::SleepButtonState". | ||
+ | |||
+ | = EventTarget = | ||
+ | This is "nn::bpc::EventTarget". | ||
+ | |||
+ | = Module = | ||
+ | This is "nn::pcv::Module". | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
− | ! | + | ! Value || Name || DeviceCode || Rail |
+ | |- | ||
+ | | 0 || Cpu || 0x40000001 || VddCpu | ||
+ | |- | ||
+ | | 1 || Gpu || 0x40000002 || VddGpu | ||
+ | |- | ||
+ | | 2 || I2s1 || 0x40000003 || VddSoc | ||
+ | |- | ||
+ | | 3 || I2s2 || 0x40000004 || VddSoc | ||
+ | |- | ||
+ | | 4 || I2s3 || 0x40000005 || VddSoc | ||
+ | |- | ||
+ | | 5 || Pwm || 0x40000006 || VddSoc | ||
+ | |- | ||
+ | | 6 || I2c1 || 0x02000001 || VddSoc | ||
+ | |- | ||
+ | | 7 || I2c2 || 0x02000002 || VddSoc | ||
+ | |- | ||
+ | | 8 || I2c3 || 0x02000003 || VddSoc | ||
+ | |- | ||
+ | | 9 || I2c4 || 0x02000004 || VddSoc | ||
+ | |- | ||
+ | | 10 || I2c5 || 0x02000005 || VddSoc | ||
+ | |- | ||
+ | | 11 || I2c6 || 0x02000006 || VddSoc | ||
+ | |- | ||
+ | | 12 || Spi1 || 0x07000000 || VddSoc | ||
+ | |- | ||
+ | | 13 || Spi2 || 0x07000001 || VddSoc | ||
+ | |- | ||
+ | | 14 || Spi3 || 0x07000002 || VddSoc | ||
+ | |- | ||
+ | | 15 || Spi4 || 0x07000003 || VddSoc | ||
+ | |- | ||
+ | | 16 || Disp1 || 0x40000011 || VddSoc | ||
+ | |- | ||
+ | | 17 || Disp2 || 0x40000012 || VddSoc | ||
+ | |- | ||
+ | | 18 || Isp || 0x40000013 || None | ||
+ | |- | ||
+ | | 19 || Vi || 0x40000014 || None | ||
+ | |- | ||
+ | | 20 || Sdmmc1 || 0x40000015 || VddSoc | ||
+ | |- | ||
+ | | 21 || Sdmmc2 || 0x40000016 || VddSoc | ||
+ | |- | ||
+ | | 22 || Sdmmc3 || 0x40000017 || VddSoc | ||
+ | |- | ||
+ | | 23 || Sdmmc4 || 0x40000018 || VddSoc | ||
+ | |- | ||
+ | | 24 || Owr || 0x40000019 || None | ||
+ | |- | ||
+ | | 25 || Csite || 0x4000001A || VddSoc | ||
+ | |- | ||
+ | | 26 || Tsec || 0x4000001B || VddSoc | ||
+ | |- | ||
+ | | 27 || Mselect || 0x4000001C || VddSoc | ||
+ | |- | ||
+ | | 28 || Hda2codec2x || 0x4000001D || VddSoc | ||
+ | |- | ||
+ | | 29 || Actmon || 0x4000001E || VddSoc | ||
+ | |- | ||
+ | | 30 || I2cSlow || 0x4000001F || VddSoc | ||
+ | |- | ||
+ | | 31 || Sor1 || 0x40000020 || VddSoc | ||
+ | |- | ||
+ | | 32 || Sata || 0x40000021 || None | ||
+ | |- | ||
+ | | 33 || Hda || 0x40000022 || VddSoc | ||
+ | |- | ||
+ | | 34 || XusbCoreHostSrc || 0x40000023 || VddSoc | ||
+ | |- | ||
+ | | 35 || XusbFalconSrc || 0x40000024 || VddSoc | ||
+ | |- | ||
+ | | 36 || XusbFsSrc || 0x40000025 || VddSoc | ||
+ | |- | ||
+ | | 37 || XusbCoreDevSrc || 0x40000026 || VddSoc | ||
+ | |- | ||
+ | | 38 || XusbSsSrc || 0x40000027 || VddSoc | ||
+ | |- | ||
+ | | 39 || UartA || 0x03000001 || VddSoc | ||
+ | |- | ||
+ | | 40 || UartB || 0x35000405 || VddSoc | ||
+ | |- | ||
+ | | 41 || UartC || 0x3500040F || VddSoc | ||
+ | |- | ||
+ | | 42 || UartD || 0x37000001 || VddSoc | ||
+ | |- | ||
+ | | 43 || Host1x || 0x4000002C || VddSoc | ||
+ | |- | ||
+ | | 44 || Entropy || 0x4000002D || VddSoc | ||
+ | |- | ||
+ | | 45 || SocTherm || 0x4000002E || VddSoc | ||
+ | |- | ||
+ | | 46 || Vic || 0x4000002F || VddSoc | ||
+ | |- | ||
+ | | 47 || Nvenc || 0x40000030 || VddSoc | ||
+ | |- | ||
+ | | 48 || Nvjpg || 0x40000031 || VddSoc | ||
+ | |- | ||
+ | | 49 || Nvdec || 0x40000032 || VddSoc | ||
+ | |- | ||
+ | | 50 || Qspi || 0x40000033 || VddSoc | ||
+ | |- | ||
+ | | 51 || ViI2c || 0x40000034 || None | ||
+ | |- | ||
+ | | 52 || Tsecb || 0x40000035 || VddSoc | ||
+ | |- | ||
+ | | 53 || Ape || 0x40000036 || VddSoc | ||
+ | |- | ||
+ | | 54 || AudioDsp || 0x40000037 || VddSoc | ||
+ | |- | ||
+ | | 55 || AudioUart || 0x40000038 || VddSoc | ||
+ | |- | ||
+ | | 56 || Emc || 0x40000039 || VddSoc | ||
+ | |- | ||
+ | | 57 || Plle || 0x4000003A || VddSoc | ||
+ | |- | ||
+ | | 58 || PlleHwSeq || 0x4000003B || VddSoc | ||
+ | |- | ||
+ | | 59 || Dsi || 0x4000003C || VddSoc | ||
+ | |- | ||
+ | | 60 || Maud || 0x4000003D || VddSoc | ||
+ | |- | ||
+ | | 61 || Dpaux1 || 0x4000003E || VddSoc | ||
+ | |- | ||
+ | | 62 || MipiCal || 0x4000003F || VddSoc | ||
+ | |- | ||
+ | | 63 || UartFstMipiCal || 0x40000040 || VddSoc | ||
+ | |- | ||
+ | | 64 || Osc || 0x40000041 || VddSoc | ||
+ | |- | ||
+ | | 65 || SysBus || 0x40000042 || VddSoc | ||
+ | |- | ||
+ | | 66 || SorSafe || 0x40000043 || VddSoc | ||
+ | |- | ||
+ | | 67 || XusbSs || 0x40000044 || VddSoc | ||
+ | |- | ||
+ | | 68 || XusbHost || 0x40000045 || VddSoc | ||
+ | |- | ||
+ | | 69 || XusbDevice || 0x40000046 || VddSoc | ||
+ | |- | ||
+ | | 70 || Extperiph1 || 0x40000047 || VddSoc | ||
+ | |- | ||
+ | | 71 || Ahub || 0x40000048 || VddSoc | ||
+ | |- | ||
+ | | 72 || Hda2hdmicodec || 0x40000049 || VddSoc | ||
+ | |- | ||
+ | | 73 || Gpuaux || 0x4000004A || VddSoc | ||
+ | |- | ||
+ | | 74 || UsbD || 0x4000004B || VddSoc | ||
+ | |- | ||
+ | | 75 || Usb2 || 0x4000004C || VddSoc | ||
+ | |- | ||
+ | | 76 || Pcie || 0x4000004D || VddSoc | ||
+ | |- | ||
+ | | 77 || Afi || 0x4000004E || VddSoc | ||
+ | |- | ||
+ | | 78 || PciExClk || 0x4000004F || VddSoc | ||
+ | |- | ||
+ | | 79 || PExUsbPhy || 0x40000050 || VddSoc | ||
+ | |- | ||
+ | | 80 || XUsbPadCtl || 0x40000051 || VddSoc | ||
+ | |- | ||
+ | | 81 || Apbdma || 0x40000052 || VddSoc | ||
+ | |- | ||
+ | | 82 || Usb2TrkClk || 0x40000053 || VddSoc | ||
+ | |- | ||
+ | | 83 || XUsbIoPll || 0x40000054 || VddSoc | ||
+ | |- | ||
+ | | 84 || XUsbIoPllHwSeq || 0x40000055 || VddSoc | ||
+ | |- | ||
+ | | 85 || Cec || 0x40000056 || VddSoc | ||
|- | |- | ||
− | | 0 || | + | | [6.0.0+] 86 || Extperiph2 || 0x40000057 || VddSoc |
|- | |- | ||
+ | | [8.0.0+] - || OscClk || 0x40000080 || None | ||
|} | |} | ||
− | = | + | = PowerDomain = |
− | This is "nn::pcv:: | + | This is "nn::pcv::PowerDomain". |
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
− | ! | + | ! Value || Name || DeviceCode || Description |
+ | |- | ||
+ | | 0 || Max77620_Sd0 || 0x3A000080 || SoC (1.125v) | ||
+ | |- | ||
+ | | 1 || Max77620_Sd1 || 0x3A000081 || Dram (1.1v) | ||
+ | |- | ||
+ | | 2 || Max77620_Sd2 || 0x3A000082 || Ldo0, Ldo1, Ldo7, Ldo8 (1.325v) | ||
+ | |- | ||
+ | | 3 || Max77620_Sd3 || 0x3A000083 || Reserved (1.8v) | ||
+ | |- | ||
+ | | 4 || Max77620_Ldo0 || 0x3A0000A0 || Panel (1.2v) | ||
+ | |- | ||
+ | | 5 || Max77620_Ldo1 || 0x3A0000A1 || Xusb, PCIe (1.05v) | ||
+ | |- | ||
+ | | 6 || Max77620_Ldo2 || 0x3A0000A2 || SdCard (1.8v, 3.3v) | ||
+ | |- | ||
+ | | 7 || Max77620_Ldo3 || 0x3A0000A3 || GcCard (3.1v) | ||
+ | |- | ||
+ | | 8 || Max77620_Ldo4 || 0x3A0000A4 || Rtc (0.85v) | ||
+ | |- | ||
+ | | 9 || Max77620_Ldo5 || 0x3A0000A5 || GcCard (1.8v) | ||
+ | |- | ||
+ | | 10 || Max77620_Ldo6 || 0x3A0000A6 || TouchPanel, ALS (2.9v) | ||
+ | |- | ||
+ | | 11 || Max77620_Ldo7 || 0x3A0000A7 || Xusb (1.05v) | ||
+ | |- | ||
+ | | 12 || Max77620_Ldo8 || 0x3A0000A8 || DisplayPort, HDMI, SioMcu (1.05v) | ||
+ | |- | ||
+ | | 13 || Max77621_Cpu || 0x3A000003 || | ||
+ | |- | ||
+ | | 14 || Max77621_Gpu || 0x3A000004 || | ||
+ | |- | ||
+ | | [6.0.0+] 15 || Max77812_Cpu || 0x3A000003 || | ||
|- | |- | ||
− | | 0 || | + | | [6.0.0+] 16 || Max77812_Gpu || 0x3A000004 || |
|- | |- | ||
+ | | [6.0.0+] 17 || Max77812_Dram || 0x3A000005 || | ||
|} | |} | ||
− | = | + | = PowerControlTarget = |
− | This is "nn:: | + | This is "nn::pcv::PowerControlTarget". |
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
− | ! | + | ! Value || Name || DeviceCode || Description |
|- | |- | ||
− | | 0 || | + | | 0 || || 0x3C000004 || SdCard (Ldo2) |
|- | |- | ||
− | | 1 || | + | | [6.0.0+] 1 || || 0x34000007 || DisplayPort, HDMI (Ldo8) |
|- | |- | ||
− | | 2 || | + | | [6.0.0+] 2 || || || Debug (Ldo7, Hoag only) |
|- | |- | ||
− | | 3 || | + | | [6.0.0+] 3 || || 0x3500041A || SioMcu (Ldo8, Hoag only) |
|- | |- | ||
− | | | + | | [14.0.0+] - || || 0x3C000404 || GcCard (Ldo3) |
+ | |- | ||
+ | | [14.0.0+] - || || 0x3C000405 || GcCard (Ldo5) | ||
+ | |} | ||
+ | |||
+ | = ModuleState = | ||
+ | This is "nn::pcv::ModuleState". This is a 0xC-byte struct. | ||
+ | |||
+ | {| class="wikitable" border="1" | ||
|- | |- | ||
− | | | + | ! Offset || Size || Description |
|- | |- | ||
− | | | + | | 0x0 || 0x4 || ClockFrequency |
|- | |- | ||
− | | | + | | 0x4 || 0x1 || ClockEnabled |
|- | |- | ||
− | | | + | | 0x5 || 0x1 || PowerEnabled |
|- | |- | ||
− | | | + | | 0x6 || 0x1 || ResetAsserted |
|- | |- | ||
− | | | + | | 0x7 || 0x1 || Reserved |
|- | |- | ||
− | | | + | | 0x8 || 0x4 || MinVClockRate |
+ | |} | ||
+ | |||
+ | = PowerDomainState = | ||
+ | This is "nn::pcv::PowerDomainState". This is a 0x8-byte struct. | ||
+ | |||
+ | {| class="wikitable" border="1" | ||
|- | |- | ||
− | | | + | ! Offset || Size || Description |
|- | |- | ||
− | | | + | | 0x0 || 0x1 || Enabled |
|- | |- | ||
− | | | + | | 0x1 || 0x3 || Reserved |
|- | |- | ||
− | | | + | | 0x4 || 0x4 || Voltage |
|} | |} | ||
− | + | [8.0.0+] This is a 0xC-byte struct. | |
− | This is | ||
− | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
− | ! | + | ! Offset || Size || Description |
|- | |- | ||
− | | | + | | 0x0 || 0x4 || DeviceCode |
|- | |- | ||
− | | | + | | 0x4 || 0x1 || Enabled |
|- | |- | ||
− | | | + | | 0x5 || 0x3 || Reserved |
|- | |- | ||
− | | | + | | 0x8 || 0x4 || Voltage |
+ | |} | ||
+ | |||
+ | = TemperatureThreshold = | ||
+ | This is "nn::pcv::TemperatureThreshold". This is a 0x8-byte struct. | ||
+ | |||
+ | {| class="wikitable" border="1" | ||
|- | |- | ||
− | | | + | ! Offset || Size || Description |
|- | |- | ||
− | | | + | | 0x0 || 0x4 || MinMilliC |
|- | |- | ||
− | | | + | | 0x4 || 0x4 || MaxMilliC |
+ | |} | ||
+ | |||
+ | = ClockRatesListType = | ||
+ | This is "nn::pcv::ClockRatesListType". | ||
+ | |||
+ | {| class="wikitable" border="1" | ||
+ | |- | ||
+ | ! Value || Description | ||
|- | |- | ||
− | | | + | | 0 || Invalid |
+ | |- | ||
+ | | 1 || Discrete | ||
+ | |- | ||
+ | | 2 || Range | ||
|} | |} | ||
− | + | = SteadyClockTimePoint = | |
This is a 0x18-byte struct. | This is a 0x18-byte struct. | ||
− | === TimeSpanType | + | {| class="wikitable" border="1" |
+ | |- | ||
+ | ! Offset || Size || Description | ||
+ | |- | ||
+ | | 0x0 || 0x8 || A u64 representing a point in time. | ||
+ | |- | ||
+ | | 0x8 || 0x10 || An ID representing the clock source. | ||
+ | |} | ||
+ | |||
+ | = TimeSpanType = | ||
This is an u64. | This is an u64. | ||
− | == | + | = PosixTime = |
− | This is | + | This is an s64 for UTC POSIX time. |
+ | |||
+ | = SystemClockContext = | ||
+ | This is an 0x20-byte struct. | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
− | ! | + | ! Offset || Size || Description |
|- | |- | ||
− | | | + | | 0x0 || 0x8|| a [[#PosixTime]] representing the system clock epoch. |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
+ | | 0x8 || 0x18 || a [[#SteadyClockTimePoint]] | ||
|} | |} | ||
− | === | + | = LocationName = |
− | This is an | + | This contains a TimeZone location string with a max size of 0x24 bytes. |
+ | |||
+ | = TimeZoneRule = | ||
+ | This is an 0x4000-byte struct. Official sw uses fixed-size 0x4000 for the buffer size with the above commands. | ||
+ | |||
+ | This is loaded from the [[Title_list|TimeZoneBinary]] title with the specified LocationName under the zoneinfo/ directory, the content is then converted into this TimeZoneRule structure. | ||
− | + | The files contained under zoneinfo/ directory are Tzif2 files without Tzif1 header and data at the begining of them (see [https://tools.ietf.org/html/rfc8536 RFC8536] for more information). | |
− | |||
− | + | The conversion of a Tzif2 file to a TimeZoneRule structure is based on [https://github.com/eggert/tz/blob/master/localtime.c tz database code] with some custom modifications (Leap seconds aren't handled, no usage of "posixrules" and Tzif1 support stripped out). | |
− | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
− | ! | + | ! Offset || Size || Description |
+ | |- | ||
+ | | 0x0 || 0x4 || timecnt | ||
|- | |- | ||
− | | | + | | 0x4 || 0x4 || typecnt |
|- | |- | ||
− | | | + | | 0x8 || 0x4 || charcnt |
|- | |- | ||
− | | | + | | 0xC || 0x1 || goback |
|- | |- | ||
− | | | + | | 0xD || 0x1 || goahead |
|- | |- | ||
− | | | + | | 0xE || 0x2 || Padding |
|- | |- | ||
− | | | + | | 0x10 || 0x8 * 1000 || ats |
|- | |- | ||
− | | | + | | 0x1f50 || 0x1 * 1000 || types |
|- | |- | ||
− | | | + | | 0x2338 || 0x10 * 128 || ttis (time type information), struct ttinfo[1000] |
|- | |- | ||
− | | | + | | 0x2b38 || 0x1 * 512 || chars |
|- | |- | ||
− | | | + | | 0x2d38 || 0x4 || defaulttype |
|- | |- | ||
+ | | 0x2d3c || 0x12c4 || Reserved / Unused | ||
|} | |} | ||
− | = | + | = ttinfo = |
− | + | This is an 0x10-byte struct. Represents a Time Type Information used in [[#TimeZoneRule]]. | |
− | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
! Offset || Size || Description | ! Offset || Size || Description | ||
|- | |- | ||
− | | 0x0 || | + | | 0x0 || 0x4 || tt_gmtoff |
+ | |- | ||
+ | | 0x4 || 0x1 || tt_isdst | ||
+ | |- | ||
+ | | 0x5 || 0x3 || Padding | ||
+ | |- | ||
+ | | 0x8 || 0x4 || tt_abbrind | ||
|- | |- | ||
− | | | + | | 0xC || 0x1 || tt_ttisstd |
|- | |- | ||
− | | | + | | 0xD || 0x1 || tt_ttisgmt |
|- | |- | ||
− | | | + | | 0xE || 0x2 || Padding |
|} | |} | ||
− | This is an | + | = TimeZoneRuleVersion = |
+ | This is an u128. | ||
− | = | + | = CalendarTime = |
− | This is an | + | This is an 0x8-byte struct. |
− | |||
− | |||
− | |||
− | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 513: | Line 1,234: | ||
|} | |} | ||
− | This is an | + | = CalendarAdditionalInfo = |
+ | This is an 0x18-byte struct. This stores timezone info. | ||
− | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 524: | Line 1,245: | ||
| 0x4 || 0x4 || 0-based day-of-year. | | 0x4 || 0x4 || 0-based day-of-year. | ||
|- | |- | ||
− | | 0x8 || | + | | 0x8 || 0x8 || Timezone name string. |
|- | |- | ||
| 0x10 || 0x4 || 0 = no DST, 1 = DST. | | 0x10 || 0x4 || 0 = no DST, 1 = DST. | ||
Line 530: | Line 1,251: | ||
| 0x14 || 0x4 || s32 seconds relative to UTC for this timezone. | | 0x14 || 0x4 || s32 seconds relative to UTC for this timezone. | ||
|} | |} | ||
− | |||
− | |||
[[Category:Services]] | [[Category:Services]] |
Latest revision as of 19:33, 26 March 2024
bpc
This is "nn::bpc::IBoardPowerControlManager".
Cmd | Name |
---|---|
0 | #ShutdownSystem |
1 | #RebootSystem |
2 | #GetWakeupReason |
3 | #GetShutdownReason |
4 | #GetAcOk |
5 | #GetPowerEvent |
6 | [2.0.0-13.2.1] #GetSleepButtonState |
7 | [2.0.0+] #GetPowerButtonEvent |
8 | [2.0.0-9.2.0] #CreateWakeupTimer |
9 | [2.0.0-9.2.0] #CancelWakeupTimer |
10 | [2.0.0-9.2.0] #EnableWakeupTimerOnDevice |
11 | [3.0.0-9.2.0] #CreateWakeupTimerEx |
12 | [3.0.0-9.2.0] #GetLastEnabledWakeupTimerType |
13 | [3.0.0-9.2.0] #CleanAllWakeupTimers |
14 | [6.0.0+] #GetPowerButton |
15 | [10.0.0+] #SetUpRtcResetOnShutdown |
ShutdownSystem
No input/output.
RebootSystem
No input/output.
GetWakeupReason
No input. Returns an output u32.
GetShutdownReason
No input. Returns an output u32.
GetAcOk
No input. Returns an output bool.
GetPowerEvent
Takes an input BoardPowerControlEventTarget. Returns an output Event handle.
GetSleepButtonState
No input. Returns an output SleepButtonState.
GetPowerButtonEvent
Takes an input EventTarget. Returns an output Event handle.
CreateWakeupTimer
Takes an input u64. Returns an output u32.
CancelWakeupTimer
Takes an input u32. No output.
EnableWakeupTimerOnDevice
No input. Returns an output bool IsEnabled and an output u64 Interval.
[3.0.0+] Now returns an u32 and an u64.
CreateWakeupTimerEx
Takes two input u64s. Returns an output u32.
GetLastEnabledWakeupTimerType
No input. Returns an output u32.
CleanAllWakeupTimers
Takes an input u32. No output.
GetPowerButton
No input. Returns an output bool IsPushed.
SetUpRtcResetOnShutdown
No input/output. Enables an internal wakeup timer when calling ShutdownSystem or RebootSystem.
bpc:r
This is "nn::bpc::IRtcManager".
Cmd | Name |
---|---|
0 | #GetRtcTime |
1 | #SetRtcTime |
2 | #GetRtcResetDetected |
3 | [2.0.0+] #ClearRtcResetDetected |
4 | [3.0.0+] #SetUpRtcResetOnShutdown |
GetRtcTime
No input. Returns an output u64.
SetRtcTime
Takes an input u64. No output.
GetRtcResetDetected
No input. Returns an output bool.
ClearRtcResetDetected
No input/output.
SetUpRtcResetOnShutdown
No input/output.
bpc:c
This is "nn::bpc::IBoardPowerControlManager".
[2.0.0+] This service was replaced by bpc.
Cmd | Name |
---|---|
0 | #ShutdownSystem |
1 | #RebootSystem |
2 | #GetWakeupReason |
3 | #GetShutdownReason |
4 | #GetAcOk |
5 | #GetPowerEvent |
bpc:b
This is "nn::bpc::IPowerButtonManager".
[2.0.0+] This service was merged into bpc.
Cmd | Name |
---|---|
0 | #GetSleepButtonState |
1 | #GetPowerButtonEvent |
bpc:w
This is "nn::bpc::IWakeupConfigManager".
[2.0.0+] This service was merged into bpc.
Cmd | Name |
---|---|
0 | #CreateWakeupTimer |
1 | #CancelWakeupTimer |
2 | #EnableWakeupTimerOnDevice |
pcv
This is "nn::pcv::detail::IPcvService".
Cmd | Name |
---|---|
[1.0.0-7.0.1] 0 | #SetPowerEnabled |
[1.0.0-7.0.1] 1 | #SetClockEnabled |
[1.0.0-7.0.1] 2 | #SetClockRate |
[1.0.0-7.0.1] 3 | #GetClockRate |
[1.0.0-7.0.1] 4 | #GetState |
[1.0.0-7.0.1] 5 | #GetPossibleClockRates |
[1.0.0-7.0.1] 6 | #SetMinVClockRate |
[1.0.0-7.0.1] 7 | #SetReset |
[1.0.0-7.0.1] 8 | #SetVoltageEnabled |
[1.0.0-7.0.1] 9 | #GetVoltageEnabled |
[1.0.0-7.0.1] 10 | #GetVoltageRange |
[1.0.0-7.0.1] 11 | #SetVoltageValue |
[1.0.0-7.0.1] 12 | #GetVoltageValue |
[1.0.0-7.0.1] 13 | #GetTemperatureThresholds |
[1.0.0-7.0.1] 14 | #SetTemperature |
[1.0.0-5.1.0] 15 | #Initialize |
[1.0.0-5.1.0] 16 | #IsInitialized |
[1.0.0-5.1.0] 17 | #Finalize |
[3.0.0-7.0.1] 18 | #PowerOn |
[3.0.0-7.0.1] 19 | #PowerOff |
[3.0.0-7.0.1] 20 | #ChangeVoltage |
[3.0.0-7.0.1] 21 | #GetPowerClockInfoEvent |
[3.0.0-7.0.1] 22 | #GetOscillatorClock |
[3.0.0-7.0.1] 23 | #GetDvfsTable |
[3.0.0-7.0.1] 24 | #GetModuleStateTable |
[3.0.0-7.0.1] 25 | #GetPowerDomainStateTable |
26 | [3.0.0+] #GetFuseInfo |
27 | [5.0.0+] #GetDramId |
[6.0.0-7.0.1] 28 | #IsPoweredOn |
[6.0.0-7.0.1] 29 | #GetVoltage |
SetPowerEnabled
Takes an input ModuleId and an input bool Enabled. No output.
SetClockEnabled
Takes an input ModuleId and an input bool Enabled. No output.
SetClockRate
Takes an input ModuleId and an input u32 ClockRateHz. No output.
GetClockRate
Takes an input ModuleId. Returns an output u32 ClockRateHz.
GetState
Takes an input ModuleId. Returns an output ModuleState.
GetPossibleClockRates
Takes a type-0xA output buffer of ClockRatesListType, an input ModuleId and an input s32 MaxCount. Returns an output s32 OutCount and an output u32 OutRates.
SetMinVClockRate
Takes an input ModuleId and an input u32 ClockRateHz. No output.
SetReset
Takes an input ModuleId and an input bool Asserted. No output.
SetVoltageEnabled
Takes an input PowerDomain and an input bool Enabled. No output.
GetVoltageEnabled
Takes an input PowerDomain. Returns an output bool Enabled.
GetVoltageRange
Takes an input PowerDomain. Returns three output s32s MinVolt, MaxVolt and StepVolt.
SetVoltageValue
Takes an input PowerDomain and an input s32 MicroVolt. No output.
GetVoltageValue
Takes an input PowerDomain. Returns an output s32 MicroVolt.
GetTemperatureThresholds
Takes a type-0xA output buffer of TemperatureThreshold and an input s32 MaxCount. Returns an output s32 OutCount.
SetTemperature
Takes an input s32 TemperatureMilliC. No output.
Initialize
No input/output.
IsInitialized
No input. Returns an output bool.
Finalize
No input/output.
PowerOn
Takes an input PowerControlTarget and an input s32 MicroVolt. No output.
PowerOff
Takes an input PowerControlTarget. No output.
ChangeVoltage
Takes an input PowerControlTarget and an input s32 MicroVolt. No output.
GetPowerClockInfoEvent
No input. Returns an output Event handle.
GetOscillatorClock
No input. Returns an output u32.
GetDvfsTable
Takes two type-0xA output buffers and two input s32s. Returns an output s32 OutCount.
[7.0.0+] The type-0xA output buffers were replaced with type-0x22 output buffers.
GetModuleStateTable
Takes a type-0xA output buffer of ModuleState and an input s32 MaxCount. Returns an output s32 OutCount.
[7.0.0+] The type-0xA output buffer was replaced with a type-0x22 output buffer.
GetPowerDomainStateTable
Takes a type-0xA output buffer of PowerDomainState and an input s32 MaxCount. Returns an output s32 OutCount.
[7.0.0+] The type-0xA output buffer was replaced with a type-0x22 output buffer.
GetFuseInfo
Takes a type-0xA output buffer and an input s32 MaxCount. Returns an output s32 OutCount.
GetDramId
No input. Returns an u32.
IsPoweredOn
Takes an input PowerControlTarget. Returns an output bool.
GetVoltage
Takes an input PowerControlTarget. Returns an output s32.
pcv:arb
This is "nn::pcv::IArbitrationManager".
This service no longer exists in [8.0.0+].
Cmd | Name |
---|---|
0 | #ReleaseControl |
ReleaseControl
Takes an input ModuleId. No output.
pcv:imm
This is "nn::pcv::IImmediateManager".
This service no longer exists in [8.0.0+].
Cmd | Name |
---|---|
0 | #SetClockRate |
clkrst, clkrst:i
These are "nn::clkrst::IClkrstManager" and "nn::clkrst::IImmediateManager".
These were added with [8.0.0+].
Cmd | Name |
---|---|
0 | OpenSession |
1 | GetTemperatureThresholds |
2 | NotifyTemperature |
3 | GetClkrstStateTable |
4 | GetClkrstStateTableUpdateEvent |
5 | GetClkrstStateTableCount |
6 | [15.0.0+] PrintClockTree |
OpenSession
Takes an input DeviceCode and an input u32. Returns an #IClkrstSession.
NotifyTemperature
Takes an input float. No output.
GetClkrstStateTable
Takes a type-0xA output buffer of ModuleState and an input s32 MaxCount. Returns an output s32 OutCount.
[7.0.0+] The type-0xA output buffer was replaced with a type-0x22 output buffer.
GetClkrstStateTableUpdateEvent
No input. Returns an output Event handle.
GetClkrstStateTableCount
No input. Returns 0x1A.
IClkrstSession
This is "nn::clkrst::IClkrstSession".
Cmd | Name |
---|---|
0 | EnableClock |
1 | DisableClock |
2 | AssertReset |
3 | DeassertReset |
4 | EnablePower |
5 | DisablePower |
6 | GetModuleState |
7 | SetClockRate |
8 | GetClockRate |
9 | SetMinimumVoltageClockRate |
10 | GetPossibleClockRates |
11 | GetDvfsTable |
12 | [14.0.0+] IsParentClock |
13 | [14.0.0+] SetParentClock |
14 | [18.0.0+] |
15 | [18.0.0+] |
clkrst:a
This is "nn::clkrst::IArbitrationManager".
This was added with [8.0.0+].
Cmd | Name |
---|---|
0 | ReleaseControl |
ReleaseControl
Takes an input DeviceCode. No output.
rgltr
This is "nn::regulator::IRegulatorManager".
This was added with [8.0.0+].
Cmd | Name |
---|---|
0 | OpenSession |
1 | GetRegulatorStateTable |
2 | GetRegulatorStateTableUpdateEvent |
3 | GetRegulatorStateTableCount |
OpenSession
Takes an input DeviceCode and returns an #IRegulatorSession.
GetRegulatorStateTable
Takes a type-0xA output buffer of PowerDomainState and an input s32 MaxCount. Returns an output s32 OutCount.
[7.0.0+] The type-0xA output buffer was replaced with a type-0x22 output buffer.
GetRegulatorStateTableUpdateEvent
No input. Returns an output Event handle.
GetRegulatorStateTableCount
No input. Returns 0x3.
IRegulatorSession
This is "nn::regulator::IRegulatorSession".
Cmd | Name |
---|---|
0 | RequestOutput |
1 | CancelOutputRequest |
2 | IsOutputEnabled |
3 | GetVoltageRangeInMicroVolt |
4 | GetVoltageInMicroVolt |
5 | RequestVoltageInMicroVolt |
6 | CancelVoltageRequest |
7 | [13.0.0+] GetMinimumOffStateHoldTime |
8 | [13.0.0+] RequestMinimumOffStateHoldTime |
9 | [13.0.0+] CancelMinimumOffStateHoldTimeRequest |
GetMinimumOffStateHoldTime
No input. Returns an output u64.
RequestMinimumOffStateHoldTime
Takes an input u64. No output.
CancelMinimumOffStateHoldTimeRequest
No input/output.
rtc
This is "nn::rtc::IRtcManager".
This was added with [8.0.0+].
Cmd | Name |
---|---|
0 | GetTimeInSeconds |
1 | SetTimeInSeconds |
2 | SetResetOnShutdown |
3 | GetResetDetected |
4 | ClearResetDetected |
10 | [10.0.0+] EnableAlarm |
11 | [10.0.0+] DisableRtcAlarm |
12 | [18.0.0+] |
13 | [18.0.0+] |
GetTimeInSeconds
Same as GetRtcTime, but takes an input DeviceCode (bpc:r uses hardcoded value 0x3B000001).
SetTimeInSeconds
Same as SetRtcTime, but takes an input DeviceCode (bpc:r uses hardcoded value 0x3B000001).
SetResetOnShutdown
Takes an input bool DoReset and an input DeviceCode. Similar to SetUpRtcResetOnShutdown, but this version assigns the provided boolean value on a per-client basis (instead of a global variable) and checks it when the current power state is ReadyShutdown.
GetResetDetected
Same as GetRtcResetDetected, but takes an input DeviceCode (bpc:r uses hardcoded value 0x3B000001).
ClearResetDetected
Same as ClearRtcResetDetected, but takes an input DeviceCode (bpc:r uses hardcoded value 0x3B000001).
EnableAlarm
Takes an input DeviceCode, an input u32 RtcAlarmId (0 = RtcAlarm1, 1 = RtcAlarm2) and an u64 RtcAlarmTime. No output.
DisableAlarm
Takes an input DeviceCode and an input u32 RtcAlarmId (0 = RtcAlarm1, 1 = RtcAlarm2). No output.
time:u, time:a, time:s
This is "nn::timesrv::detail::service::IStaticService".
[9.0.0+] These services were moved to Glue and PSC.
Cmd | Name |
---|---|
0 | #GetStandardUserSystemClock |
1 | #GetStandardNetworkSystemClock |
2 | #GetStandardSteadyClock |
3 | #GetTimeZoneService |
4 | #GetStandardLocalSystemClock |
5 | [4.0.0+] #GetEphemeralNetworkSystemClock |
20 | [6.0.0+] GetSharedMemoryNativeHandle |
30 | [6.0.0+] GetStandardNetworkClockOperationEventReadableHandle |
31 | [6.0.0+] GetEphemeralNetworkClockOperationEventReadableHandle |
50 | [4.0.0+] SetStandardSteadyClockInternalOffset |
100 | IsStandardUserSystemClockAutomaticCorrectionEnabled |
101 | SetStandardUserSystemClockAutomaticCorrectionEnabled |
102 | [5.0.0+] GetStandardUserSystemClockInitialYear |
200 | [3.0.0+] IsStandardNetworkSystemClockAccuracySufficient |
201 | [6.0.0+] GetStandardUserSystemClockAutomaticCorrectionUpdatedTime |
300 | [4.0.0+] CalculateMonotonicSystemClockBaseTimePoint |
400 | [4.0.0+] GetClockSnapshot |
401 | [4.0.0+] GetClockSnapshotFromSystemClockContext |
500 | [4.0.0+] CalculateStandardUserSystemClockDifferenceByUser |
501 | [4.0.0+] CalculateSpanBetween |
GetStandardUserSystemClock
No input. Returns an #ISystemClock.
GetStandardNetworkSystemClock
No input. Returns an #ISystemClock.
GetStandardSteadyClock
No input. Returns an #ISteadyClock.
GetTimeZoneService
No input. Returns an #ITimeZoneService.
GetStandardLocalSystemClock
No input. Returns an #ISystemClock.
GetEphemeralNetworkSystemClock
No input. Returns an #ISystemClock.
ISteadyClock
This is "nn::timesrv::detail::service::ISteadyClock".
Cmd | Name |
---|---|
0 | #GetCurrentTimePoint |
2 | #GetTestOffset |
3 | #SetTestOffset |
100 | [2.0.0+] #GetRtcValue |
101 | [2.0.0+] #IsRtcResetDetected |
102 | [2.0.0+] #GetSetupResultValue |
200 | [3.0.0+] #GetInternalOffset |
201 | [3.0.0-3.0.2] #SetInternalOffset |
GetCurrentTimePoint
No input. Returns an output #SteadyClockTimePoint.
GetTestOffset
No input. Returns an output #TimeSpanType.
SetTestOffset
Takes an input #TimeSpanType. No output.
GetRtcValue
No input. Returns an output s64.
IsRtcResetDetected
No input. Returns an output u8 bool.
GetSetupResultValue
No input. Returns an output u32.
GetInternalOffset
No input. Returns an output #TimeSpanType.
SetInternalOffset
Takes an input #TimeSpanType. No output.
ISystemClock
This is "nn::timesrv::detail::service::ISystemClock".
Cmd | Name |
---|---|
0 | #GetCurrentTime |
1 | #SetCurrentTime |
2 | #GetSystemClockContext |
3 | #SetSystemClockContext |
4 | [9.0.0+] GetOperationEventReadableHandle |
GetCurrentTime
No input. Returns an output #PosixTime.
SetCurrentTime
Takes an input #PosixTime. No output.
GetSystemClockContext
No input. Returns an output #SystemClockContext.
SetSystemClockContext
Takes an input #SystemClockContext. No output.
ITimeZoneService
This is "nn::timesrv::detail::service::ITimeZoneService".
Cmd | Name |
---|---|
0 | #GetDeviceLocationName |
1 | #SetDeviceLocationName |
2 | #GetTotalLocationNameCount |
3 | #LoadLocationNameList |
4 | #LoadTimeZoneRule |
5 | [2.0.0+] #GetTimeZoneRuleVersion |
6 | [5.0.0+] GetDeviceLocationNameAndUpdatedTime |
100 | #ToCalendarTime |
101 | #ToCalendarTimeWithMyRule |
201 | #ToPosixTime |
202 | #ToPosixTimeWithMyRule |
GetDeviceLocationName
No input. Returns an output #LocationName.
SetDeviceLocationName
Takes an input #LocationName. No output.
GetTotalLocationNameCount
No input. Returns an output s32.
LoadLocationNameList
Takes an input s32 LocationName_index and a type-0x6 output buffer for #LocationName. Returns an output s32 for total output entries.
LoadTimeZoneRule
Takes an input #LocationName and a type-0x16 output buffer for #TimeZoneRule. No output.
GetTimeZoneRuleVersion
No input. Returns an output #TimeZoneRuleVersion.
ToCalendarTime
Takes an input #PosixTime and a type-0x15 input buffer for #TimeZoneRule. Returns an output #CalendarTime and #CalendarAdditionalInfo.
ToCalendarTimeWithMyRule
Takes an input #PosixTime. Returns an output #CalendarTime and #CalendarAdditionalInfo.
ToPosixTime
Takes an input #CalendarTime, a type-0x15 input buffer for #TimeZoneRule, an type-0xA output buffer for #PosixTime array.R eturns an output s32.
ToPosixTimeWithMyRule
Takes an input #CalendarTime, an type-0xA output buffer for #PosixTime array. Returns an output s32.
BoardPowerControlEventTarget
This is "nn::bpc::BoardPowerControlEventTarget".
SleepButtonState
This is "nn::bpc::SleepButtonState".
EventTarget
This is "nn::bpc::EventTarget".
Module
This is "nn::pcv::Module".
Value | Name | DeviceCode | Rail |
---|---|---|---|
0 | Cpu | 0x40000001 | VddCpu |
1 | Gpu | 0x40000002 | VddGpu |
2 | I2s1 | 0x40000003 | VddSoc |
3 | I2s2 | 0x40000004 | VddSoc |
4 | I2s3 | 0x40000005 | VddSoc |
5 | Pwm | 0x40000006 | VddSoc |
6 | I2c1 | 0x02000001 | VddSoc |
7 | I2c2 | 0x02000002 | VddSoc |
8 | I2c3 | 0x02000003 | VddSoc |
9 | I2c4 | 0x02000004 | VddSoc |
10 | I2c5 | 0x02000005 | VddSoc |
11 | I2c6 | 0x02000006 | VddSoc |
12 | Spi1 | 0x07000000 | VddSoc |
13 | Spi2 | 0x07000001 | VddSoc |
14 | Spi3 | 0x07000002 | VddSoc |
15 | Spi4 | 0x07000003 | VddSoc |
16 | Disp1 | 0x40000011 | VddSoc |
17 | Disp2 | 0x40000012 | VddSoc |
18 | Isp | 0x40000013 | None |
19 | Vi | 0x40000014 | None |
20 | Sdmmc1 | 0x40000015 | VddSoc |
21 | Sdmmc2 | 0x40000016 | VddSoc |
22 | Sdmmc3 | 0x40000017 | VddSoc |
23 | Sdmmc4 | 0x40000018 | VddSoc |
24 | Owr | 0x40000019 | None |
25 | Csite | 0x4000001A | VddSoc |
26 | Tsec | 0x4000001B | VddSoc |
27 | Mselect | 0x4000001C | VddSoc |
28 | Hda2codec2x | 0x4000001D | VddSoc |
29 | Actmon | 0x4000001E | VddSoc |
30 | I2cSlow | 0x4000001F | VddSoc |
31 | Sor1 | 0x40000020 | VddSoc |
32 | Sata | 0x40000021 | None |
33 | Hda | 0x40000022 | VddSoc |
34 | XusbCoreHostSrc | 0x40000023 | VddSoc |
35 | XusbFalconSrc | 0x40000024 | VddSoc |
36 | XusbFsSrc | 0x40000025 | VddSoc |
37 | XusbCoreDevSrc | 0x40000026 | VddSoc |
38 | XusbSsSrc | 0x40000027 | VddSoc |
39 | UartA | 0x03000001 | VddSoc |
40 | UartB | 0x35000405 | VddSoc |
41 | UartC | 0x3500040F | VddSoc |
42 | UartD | 0x37000001 | VddSoc |
43 | Host1x | 0x4000002C | VddSoc |
44 | Entropy | 0x4000002D | VddSoc |
45 | SocTherm | 0x4000002E | VddSoc |
46 | Vic | 0x4000002F | VddSoc |
47 | Nvenc | 0x40000030 | VddSoc |
48 | Nvjpg | 0x40000031 | VddSoc |
49 | Nvdec | 0x40000032 | VddSoc |
50 | Qspi | 0x40000033 | VddSoc |
51 | ViI2c | 0x40000034 | None |
52 | Tsecb | 0x40000035 | VddSoc |
53 | Ape | 0x40000036 | VddSoc |
54 | AudioDsp | 0x40000037 | VddSoc |
55 | AudioUart | 0x40000038 | VddSoc |
56 | Emc | 0x40000039 | VddSoc |
57 | Plle | 0x4000003A | VddSoc |
58 | PlleHwSeq | 0x4000003B | VddSoc |
59 | Dsi | 0x4000003C | VddSoc |
60 | Maud | 0x4000003D | VddSoc |
61 | Dpaux1 | 0x4000003E | VddSoc |
62 | MipiCal | 0x4000003F | VddSoc |
63 | UartFstMipiCal | 0x40000040 | VddSoc |
64 | Osc | 0x40000041 | VddSoc |
65 | SysBus | 0x40000042 | VddSoc |
66 | SorSafe | 0x40000043 | VddSoc |
67 | XusbSs | 0x40000044 | VddSoc |
68 | XusbHost | 0x40000045 | VddSoc |
69 | XusbDevice | 0x40000046 | VddSoc |
70 | Extperiph1 | 0x40000047 | VddSoc |
71 | Ahub | 0x40000048 | VddSoc |
72 | Hda2hdmicodec | 0x40000049 | VddSoc |
73 | Gpuaux | 0x4000004A | VddSoc |
74 | UsbD | 0x4000004B | VddSoc |
75 | Usb2 | 0x4000004C | VddSoc |
76 | Pcie | 0x4000004D | VddSoc |
77 | Afi | 0x4000004E | VddSoc |
78 | PciExClk | 0x4000004F | VddSoc |
79 | PExUsbPhy | 0x40000050 | VddSoc |
80 | XUsbPadCtl | 0x40000051 | VddSoc |
81 | Apbdma | 0x40000052 | VddSoc |
82 | Usb2TrkClk | 0x40000053 | VddSoc |
83 | XUsbIoPll | 0x40000054 | VddSoc |
84 | XUsbIoPllHwSeq | 0x40000055 | VddSoc |
85 | Cec | 0x40000056 | VddSoc |
[6.0.0+] 86 | Extperiph2 | 0x40000057 | VddSoc |
[8.0.0+] - | OscClk | 0x40000080 | None |
PowerDomain
This is "nn::pcv::PowerDomain".
Value | Name | DeviceCode | Description |
---|---|---|---|
0 | Max77620_Sd0 | 0x3A000080 | SoC (1.125v) |
1 | Max77620_Sd1 | 0x3A000081 | Dram (1.1v) |
2 | Max77620_Sd2 | 0x3A000082 | Ldo0, Ldo1, Ldo7, Ldo8 (1.325v) |
3 | Max77620_Sd3 | 0x3A000083 | Reserved (1.8v) |
4 | Max77620_Ldo0 | 0x3A0000A0 | Panel (1.2v) |
5 | Max77620_Ldo1 | 0x3A0000A1 | Xusb, PCIe (1.05v) |
6 | Max77620_Ldo2 | 0x3A0000A2 | SdCard (1.8v, 3.3v) |
7 | Max77620_Ldo3 | 0x3A0000A3 | GcCard (3.1v) |
8 | Max77620_Ldo4 | 0x3A0000A4 | Rtc (0.85v) |
9 | Max77620_Ldo5 | 0x3A0000A5 | GcCard (1.8v) |
10 | Max77620_Ldo6 | 0x3A0000A6 | TouchPanel, ALS (2.9v) |
11 | Max77620_Ldo7 | 0x3A0000A7 | Xusb (1.05v) |
12 | Max77620_Ldo8 | 0x3A0000A8 | DisplayPort, HDMI, SioMcu (1.05v) |
13 | Max77621_Cpu | 0x3A000003 | |
14 | Max77621_Gpu | 0x3A000004 | |
[6.0.0+] 15 | Max77812_Cpu | 0x3A000003 | |
[6.0.0+] 16 | Max77812_Gpu | 0x3A000004 | |
[6.0.0+] 17 | Max77812_Dram | 0x3A000005 |
PowerControlTarget
This is "nn::pcv::PowerControlTarget".
Value | Name | DeviceCode | Description |
---|---|---|---|
0 | 0x3C000004 | SdCard (Ldo2) | |
[6.0.0+] 1 | 0x34000007 | DisplayPort, HDMI (Ldo8) | |
[6.0.0+] 2 | Debug (Ldo7, Hoag only) | ||
[6.0.0+] 3 | 0x3500041A | SioMcu (Ldo8, Hoag only) | |
[14.0.0+] - | 0x3C000404 | GcCard (Ldo3) | |
[14.0.0+] - | 0x3C000405 | GcCard (Ldo5) |
ModuleState
This is "nn::pcv::ModuleState". This is a 0xC-byte struct.
Offset | Size | Description |
---|---|---|
0x0 | 0x4 | ClockFrequency |
0x4 | 0x1 | ClockEnabled |
0x5 | 0x1 | PowerEnabled |
0x6 | 0x1 | ResetAsserted |
0x7 | 0x1 | Reserved |
0x8 | 0x4 | MinVClockRate |
PowerDomainState
This is "nn::pcv::PowerDomainState". This is a 0x8-byte struct.
Offset | Size | Description |
---|---|---|
0x0 | 0x1 | Enabled |
0x1 | 0x3 | Reserved |
0x4 | 0x4 | Voltage |
[8.0.0+] This is a 0xC-byte struct.
Offset | Size | Description |
---|---|---|
0x0 | 0x4 | DeviceCode |
0x4 | 0x1 | Enabled |
0x5 | 0x3 | Reserved |
0x8 | 0x4 | Voltage |
TemperatureThreshold
This is "nn::pcv::TemperatureThreshold". This is a 0x8-byte struct.
Offset | Size | Description |
---|---|---|
0x0 | 0x4 | MinMilliC |
0x4 | 0x4 | MaxMilliC |
ClockRatesListType
This is "nn::pcv::ClockRatesListType".
Value | Description |
---|---|
0 | Invalid |
1 | Discrete |
2 | Range |
SteadyClockTimePoint
This is a 0x18-byte struct.
Offset | Size | Description |
---|---|---|
0x0 | 0x8 | A u64 representing a point in time. |
0x8 | 0x10 | An ID representing the clock source. |
TimeSpanType
This is an u64.
PosixTime
This is an s64 for UTC POSIX time.
SystemClockContext
This is an 0x20-byte struct.
Offset | Size | Description |
---|---|---|
0x0 | 0x8 | a #PosixTime representing the system clock epoch. |
0x8 | 0x18 | a #SteadyClockTimePoint |
LocationName
This contains a TimeZone location string with a max size of 0x24 bytes.
TimeZoneRule
This is an 0x4000-byte struct. Official sw uses fixed-size 0x4000 for the buffer size with the above commands.
This is loaded from the TimeZoneBinary title with the specified LocationName under the zoneinfo/ directory, the content is then converted into this TimeZoneRule structure.
The files contained under zoneinfo/ directory are Tzif2 files without Tzif1 header and data at the begining of them (see RFC8536 for more information).
The conversion of a Tzif2 file to a TimeZoneRule structure is based on tz database code with some custom modifications (Leap seconds aren't handled, no usage of "posixrules" and Tzif1 support stripped out).
Offset | Size | Description |
---|---|---|
0x0 | 0x4 | timecnt |
0x4 | 0x4 | typecnt |
0x8 | 0x4 | charcnt |
0xC | 0x1 | goback |
0xD | 0x1 | goahead |
0xE | 0x2 | Padding |
0x10 | 0x8 * 1000 | ats |
0x1f50 | 0x1 * 1000 | types |
0x2338 | 0x10 * 128 | ttis (time type information), struct ttinfo[1000] |
0x2b38 | 0x1 * 512 | chars |
0x2d38 | 0x4 | defaulttype |
0x2d3c | 0x12c4 | Reserved / Unused |
ttinfo
This is an 0x10-byte struct. Represents a Time Type Information used in #TimeZoneRule.
Offset | Size | Description |
---|---|---|
0x0 | 0x4 | tt_gmtoff |
0x4 | 0x1 | tt_isdst |
0x5 | 0x3 | Padding |
0x8 | 0x4 | tt_abbrind |
0xC | 0x1 | tt_ttisstd |
0xD | 0x1 | tt_ttisgmt |
0xE | 0x2 | Padding |
TimeZoneRuleVersion
This is an u128.
CalendarTime
This is an 0x8-byte struct.
Offset | Size | Description |
---|---|---|
0x0 | 0x2 | Year |
0x2 | 0x1 | Month |
0x3 | 0x1 | Day |
0x4 | 0x1 | Hour |
0x5 | 0x1 | Minute |
0x6 | 0x1 | Second |
0x7 | 0x1 | Padding / unknown? |
CalendarAdditionalInfo
This is an 0x18-byte struct. This stores timezone info.
Offset | Size | Description |
---|---|---|
0x0 | 0x4 | 0-based day-of-week. |
0x4 | 0x4 | 0-based day-of-year. |
0x8 | 0x8 | Timezone name string. |
0x10 | 0x4 | 0 = no DST, 1 = DST. |
0x14 | 0x4 | s32 seconds relative to UTC for this timezone. |