Difference between revisions of "Bus services"
(98 intermediate revisions by 6 users not shown) | |||
Line 6: | Line 6: | ||
! Cmd || Name | ! Cmd || Name | ||
|- | |- | ||
− | | 0 || [[# | + | | 0 || [5.0.0+] [[#OpenSessionForDevDeprecated|OpenSessionForDevDeprecated]] ([1.0.0-4.1.0] OpenSessionForDev) |
|- | |- | ||
− | | 1 || [[# | + | | 1 || [5.0.0+] [[#OpenSessionDeprecated|OpenSessionDeprecated]] ([1.0.0-4.1.0] OpenSession) |
|- | |- | ||
− | | 2 || [[# | + | | 2 || [5.0.0+] [[#OpenSessionForTestDeprecated|OpenSessionForTestDeprecated]] ([1.0.0-4.1.0] OpenSessionForTest) |
|- | |- | ||
− | | 3 || [ | + | | 3 || [5.0.0-6.2.0] [[#IsWakeEventActiveDeprecated|IsWakeEventActiveDeprecated]] ([1.0.0-4.1.0] IsWakeEventActive) |
|- | |- | ||
− | | 4 || [ | + | | 4 || [5.0.0-6.2.0] [[#GetWakeEventActiveFlagSetDeprecated|GetWakeEventActiveFlagSetDeprecated]] ([1.0.0-4.1.0] GetWakeEventActiveFlagSet) |
|- | |- | ||
− | | 5 || [ | + | | 5 || [5.0.0-6.2.0] [[#SetWakeEventActiveFlagSetForDebugDeprecated|SetWakeEventActiveFlagSetForDebugDeprecated]] ([1.0.0-4.1.0] SetWakeEventActiveFlagSetForDebug) |
|- | |- | ||
− | | 6 || SetWakePinDebugMode | + | | 6 || [[#SetWakePinDebugMode|SetWakePinDebugMode]] |
|- | |- | ||
− | | 7 || [5.0.0+] [[# | + | | 7 || [5.0.0+] [[#OpenSession|OpenSession]] |
|- | |- | ||
− | | 8 || [5.0.0+] | + | | 8 || [5.0.0+] [[#IsWakeEventActive|IsWakeEventActive]] |
|- | |- | ||
− | | 9 || [5.0.0+] | + | | 9 || [5.0.0+] [[#SetWakeEventActiveFlagSetForDebug|SetWakeEventActiveFlagSetForDebug]] |
|- | |- | ||
− | | 10 || [6.0.0+] | + | | 10 || [6.0.0+] [[#DumpStateForDebug|DumpStateForDebug]] |
|} | |} | ||
− | == | + | == OpenSessionForDevDeprecated == |
− | {| class="wikitable | + | Takes an input [[#GpioPadDescriptor]]. Returns an [[#IPadSession]]. |
+ | |||
+ | == OpenSessionDeprecated == | ||
+ | Same as [[#OpenSessionForDevDeprecated]] except it takes a [[#GpioPadName]] which is then converted to a [[#GpioPadDescriptor]]. Returns an [[#IPadSession]]. | ||
+ | |||
+ | == OpenSessionForTestDeprecated == | ||
+ | Same as [[#OpenSessionDeprecated]] but panics on failure. | ||
+ | |||
+ | == IsWakeEventActiveDeprecated == | ||
+ | Takes an input [[#GpioPadName]]. Returns a bool '''IsActive'''. | ||
+ | |||
+ | == GetWakeEventActiveFlagSetDeprecated == | ||
+ | No input. Returns an output u128 [[#WakeBitFlag]]. | ||
+ | |||
+ | == SetWakeEventActiveFlagSetForDebugDeprecated == | ||
+ | Takes an input [[#GpioPadName]] and an input bool '''IsEnabled'''. No output. | ||
+ | |||
+ | == SetWakePinDebugMode == | ||
+ | Takes an input u32 '''WakePinDebugMode'''. No output. | ||
+ | |||
+ | == OpenSession == | ||
+ | Same as [[#OpenSessionDeprecated]] but takes a [[#GpioPadName|DeviceCode]] and an input [[#OpenMode]]. | ||
+ | |||
+ | == IsWakeEventActive == | ||
+ | Same as [[#IsWakeEventActiveDeprecated]] but takes a [[#GpioPadName|DeviceCode]]. | ||
+ | |||
+ | == SetWakeEventActiveFlagSetForDebug == | ||
+ | Same as [[#SetWakeEventActiveFlagSetForDebugDeprecated]] but takes a [[#GpioPadName|DeviceCode]]. | ||
+ | |||
+ | == DumpStateForDebug == | ||
+ | Stubbed. Returns 0. | ||
+ | |||
+ | == IPadSession == | ||
+ | This is "nn::gpio::IPadSession". | ||
+ | |||
+ | {| class="wikitable" border="1" | ||
|- | |- | ||
− | ! | + | ! Cmd || Name |
|- | |- | ||
− | | | + | | 0 || [12.0.0+] [[#SetDirectionDeprecated|SetDirectionDeprecated]] ([1.0.0-11.0.1] SetDirection) |
|- | |- | ||
− | | | + | | 1 || [[#GetDirection|GetDirection]] |
|- | |- | ||
− | | | + | | 2 || [[#SetInterruptMode|SetInterruptMode]] |
|- | |- | ||
− | | | + | | 3 || [[#GetInterruptMode|GetInterruptMode]] |
|- | |- | ||
− | | | + | | 4 || [[#SetInterruptEnable|SetInterruptEnable]] |
|- | |- | ||
− | | | + | | 5 || [[#GetInterruptEnable|GetInterruptEnable]] |
|- | |- | ||
− | | | + | | 6 || [1.0.0-16.1.0] [[#GetInterruptStatus|GetInterruptStatus]] |
|- | |- | ||
− | | | + | | 7 || [1.0.0-16.1.0] [[#ClearInterruptStatus|ClearInterruptStatus]] |
|- | |- | ||
− | | | + | | 8 || [[#SetValue|SetValue]] |
|- | |- | ||
− | | | + | | 9 || [[#GetValue|GetValue]] |
|- | |- | ||
− | | | + | | 10 || [[#BindInterrupt|BindInterrupt]] |
|- | |- | ||
− | | | + | | 11 || [[#UnbindInterrupt|UnbindInterrupt]] |
|- | |- | ||
− | | | + | | 12 || [[#SetDebounceEnabled|SetDebounceEnabled]] |
|- | |- | ||
− | | | + | | 13 || [[#GetDebounceEnabled|GetDebounceEnabled]] |
|- | |- | ||
− | | | + | | 14 || [[#SetDebounceTime|SetDebounceTime]] |
|- | |- | ||
− | | | + | | 15 || [[#GetDebounceTime|GetDebounceTime]] |
|- | |- | ||
− | | | + | | 16 || [4.0.0+] [[#SetValueForSleepState|SetValueForSleepState]] |
|- | |- | ||
− | | | + | | 17 || [6.0.0+] [[#GetMaxDebounceTime|GetMaxDebounceTime]] |
|- | |- | ||
− | | | + | | 18 || [12.0.0+] [[#SetDirectionInput|SetDirectionInput]] |
|- | |- | ||
− | | | + | | 19 || [12.0.0+] [[#SetDirectionOutput|SetDirectionOutput]] |
+ | |} | ||
+ | |||
+ | === SetDirectionDeprecated === | ||
+ | Takes an input u32 [[#Direction]]. No output. | ||
+ | |||
+ | === GetDirection === | ||
+ | No input. Returns an output u32 [[#Direction]]. | ||
+ | |||
+ | === SetInterruptMode === | ||
+ | Takes an input u32 [[#InterruptMode]]. No output. | ||
+ | |||
+ | === GetInterruptMode === | ||
+ | No input. Returns an output u32 [[#InterruptMode]]. | ||
+ | |||
+ | === SetInterruptEnable === | ||
+ | Takes an input bool '''IsEnable'''. No output. | ||
+ | |||
+ | === GetInterruptEnable === | ||
+ | No input. Returns an output bool '''IsEnable'''. | ||
+ | |||
+ | === GetInterruptStatus === | ||
+ | No input. Returns an output u32 [[#InterruptStatus]]. | ||
+ | |||
+ | === ClearInterruptStatus === | ||
+ | No input/output. | ||
+ | |||
+ | === SetValue === | ||
+ | Takes an input u32 [[#GpioValue]]. No output. | ||
+ | |||
+ | === GetValue === | ||
+ | No input. Returns an output u32 [[#GpioValue]]. | ||
+ | |||
+ | === BindInterrupt === | ||
+ | No input. Returns an output Event handle. | ||
+ | |||
+ | === UnbindInterrupt === | ||
+ | No input/output. | ||
+ | |||
+ | === SetDebounceEnabled === | ||
+ | Takes an input bool '''IsEnable'''. No output. | ||
+ | |||
+ | === GetDebounceEnabled === | ||
+ | No input. Returns an output bool '''IsEnable'''. | ||
+ | |||
+ | === SetDebounceTime === | ||
+ | Takes an input s32 '''MsecTime'''. No output. | ||
+ | |||
+ | === GetDebounceTime === | ||
+ | No input. Returns an output s32 '''MsecTime'''. | ||
+ | |||
+ | === SetValueForSleepState === | ||
+ | Takes an input u32 '''ValueForSleepState'''. No output. | ||
+ | |||
+ | === GetMaxDebounceTime === | ||
+ | No input. Returns an output u32 '''MaxDebounceTime'''. | ||
+ | |||
+ | === SetDirectionInput === | ||
+ | No input/output. | ||
+ | |||
+ | === SetDirectionOutput === | ||
+ | Takes an input u32 [[#GpioValue]]. No output. | ||
+ | |||
+ | = i2c, i2c:pcv = | ||
+ | This is "nn::i2c::IManager". | ||
+ | |||
+ | {| class="wikitable" border="1" | ||
|- | |- | ||
− | | | + | ! Cmd || Name |
|- | |- | ||
− | | | + | | 0 || [[#OpenSessionForDev_2|OpenSessionForDev]] |
|- | |- | ||
− | | | + | | 1 || [[#OpenSession_2|OpenSession]] |
|- | |- | ||
− | | | + | | 2 || [1.0.0-5.1.0] [[#HasDevice|HasDevice]] |
|- | |- | ||
− | | | + | | 3 || [1.0.0-5.1.0] [[#HasDeviceForDev|HasDeviceForDev]] |
|- | |- | ||
− | | | + | | 4 || [6.0.0+] [[#OpenSession2_2|OpenSession2]] |
+ | |} | ||
+ | |||
+ | == OpenSessionForDev == | ||
+ | Takes an input u16 '''SlaveAddress''' (padded to u32) and 3 input u32s '''BusIdx''', [[#AddressingMode]] and [[#SpeedMode]]. Returns an [[#II2cSession]]. | ||
+ | |||
+ | == OpenSession == | ||
+ | Takes an input [[#I2cDevice]]. Returns an output [[#II2cSession]]. | ||
+ | |||
+ | == HasDevice == | ||
+ | Takes an input [[#I2cDevice]]. Returns an output boolean success value. | ||
+ | |||
+ | == HasDeviceForDev == | ||
+ | Takes an input u16 '''SlaveAddress''' (padded to u32) and 3 input u32s '''BusIdx''', [[#AddressingMode]] and [[#SpeedMode]]. Returns an output boolean success value. | ||
+ | |||
+ | == OpenSession2 == | ||
+ | Same as [[#OpenSession_2|OpenSession]], but takes an input u32 [[#I2cDevice|DeviceCode]]. | ||
+ | |||
+ | == II2cSession == | ||
+ | This is "nn::i2c::ISession". | ||
+ | |||
+ | {| class="wikitable" border="1" | ||
|- | |- | ||
− | | | + | ! Cmd || Name |
|- | |- | ||
− | | | + | | 0 || [1.0.0-5.1.0] SendOld |
|- | |- | ||
− | | | + | | 1 || [1.0.0-5.1.0] ReceiveOld |
|- | |- | ||
− | | | + | | 2 || [1.0.0-5.1.0] ExecuteCommandListOld |
|- | |- | ||
− | | | + | | 10 || [[#Send|Send]] |
|- | |- | ||
− | | | + | | 11 || [[#Receive|Receive]] |
|- | |- | ||
− | | | + | | 12 || [[#ExecuteCommandList|ExecuteCommandList]] |
|- | |- | ||
− | | | + | | 13 || [6.0.0+] [[#SetRetryPolicy_2|SetRetryPolicy]] |
+ | |} | ||
+ | |||
+ | == Send == | ||
+ | Takes a type-0x21 input buffer '''InData''' and an input u32 [[#TransactionOption]]. No output. | ||
+ | |||
+ | == Receive == | ||
+ | Takes a type-0x22 output buffer '''OutData''' and an input u32 [[#TransactionOption]]. No output. | ||
+ | |||
+ | == ExecuteCommandList == | ||
+ | Takes a type-0x22 output buffer '''ReceiveBuffer''' and a type-0x9 input buffer '''CommandList'''. No output. | ||
+ | |||
+ | === Commands === | ||
+ | This is "nn::i2c::I2cCommand". | ||
+ | |||
+ | {| class=wikitable | ||
+ | ! Bits || Name | ||
|- | |- | ||
− | | | + | | 0-5 || [[#CommandId]] |
|- | |- | ||
− | | | + | | 6-7 || [[#TransactionOption]] |
+ | |} | ||
+ | |||
+ | A send command will write bytes to the device using the format: [u8 cmd_send] [u8 len] <bytes> | ||
+ | |||
+ | A receive command will read bytes from the device using the format: [u8 cmd_receive] [u8 len] | ||
+ | |||
+ | An extension sleep command will stall the device using the format: [u8 cmd_extension] [u8 ms] | ||
+ | |||
+ | == SetRetryPolicy == | ||
+ | Takes 2 input u32s '''MaxRetries''' and '''RetryIntervalMicroSeconds'''. No output. | ||
+ | |||
+ | = uart = | ||
+ | This is "nn::uart::IManager". | ||
+ | |||
+ | {| class="wikitable" border="1" | ||
|- | |- | ||
− | | | + | ! Cmd || Name |
|- | |- | ||
− | | | + | | 0 || [1.0.0-16.1.0] [[#HasPort|HasPort]] |
|- | |- | ||
− | | | + | | 1 || [1.0.0-16.1.0] [[#HasPortForDev|HasPortForDev]] |
|- | |- | ||
− | | | + | | 2 || [1.0.0-16.1.0] [[#IsSupportedBaudRate|IsSupportedBaudRate]] |
|- | |- | ||
− | | | + | | 3 || [1.0.0-16.1.0] [[#IsSupportedBaudRateForDev|IsSupportedBaudRateForDev]] |
|- | |- | ||
− | | | + | | 4 || [1.0.0-16.1.0] [[#IsSupportedFlowControlMode|IsSupportedFlowControlMode]] |
|- | |- | ||
− | | | + | | 5 || [1.0.0-16.1.0] [[#IsSupportedFlowControlModeForDev|IsSupportedFlowControlModeForDev]] |
|- | |- | ||
− | | | + | | 6 || [[#CreatePortSession|CreatePortSession]] |
|- | |- | ||
− | | | + | | 7 || [1.0.0-16.1.0] [[#IsSupportedPortEvent|IsSupportedPortEvent]] |
|- | |- | ||
− | | | + | | 8 || [1.0.0-16.1.0] [[#IsSupportedPortEventForDev|IsSupportedPortEventForDev]] |
|- | |- | ||
− | | | + | | 9 || [7.0.0-16.1.0] [[#IsSupportedDeviceVariation|IsSupportedDeviceVariation]] |
|- | |- | ||
− | | | + | | 10 || [7.0.0-16.1.0] [[#IsSupportedDeviceVariationForDev|IsSupportedDeviceVariationForDev]] |
+ | |} | ||
+ | |||
+ | == HasPort == | ||
+ | Takes an input [[#UartPort]]. Returns an output boolean success value. | ||
+ | |||
+ | == HasPortForDev == | ||
+ | Takes an input [[#UartPortForDev]]. Returns an output boolean success value. | ||
+ | |||
+ | == IsSupportedBaudRate == | ||
+ | Takes 2 input u32s [[#UartPort]] and '''BaudRate'''. Returns an output boolean success value. | ||
+ | |||
+ | Supported baud rates are 57600, 115200, 1000000 and 3000000. | ||
+ | |||
+ | == IsSupportedBaudRateForDev == | ||
+ | Takes 2 input u32s [[#UartPortForDev]] and '''BaudRate'''. Returns an output boolean success value. | ||
+ | |||
+ | Supported baud rates are 57600, 115200, 1000000 and 3000000. | ||
+ | |||
+ | == IsSupportedFlowControlMode == | ||
+ | Takes 2 input u32s [[#UartPort]] and [[#FlowControlMode]]. Returns an output boolean success value. | ||
+ | |||
+ | == IsSupportedFlowControlModeForDev == | ||
+ | Takes 2 input u32s [[#UartPortForDev]] and [[#FlowControlMode]]. Returns an output boolean success value. | ||
+ | |||
+ | == CreatePortSession == | ||
+ | No input. Returns an output [[#IPortSession]]. | ||
+ | |||
+ | == IsSupportedPortEvent == | ||
+ | Takes 2 input u32s [[#UartPort]] and [[#PortEventType]]. Returns an output boolean success value. | ||
+ | |||
+ | == IsSupportedPortEventForDev == | ||
+ | Takes 2 input u32s [[#UartPortForDev]] and [[#PortEventType]]. Returns an output boolean success value. | ||
+ | |||
+ | == IsSupportedDeviceVariation == | ||
+ | Takes 2 input u32s [[#UartPort]] and '''DeviceVariation'''. Returns an output boolean success value. | ||
+ | |||
+ | Supported device variations are 0 (Bluetooth) for UART-D, 0 (Joy-Con(R)) for UART-B, 0 (Joy-Con(L)) and 1 (SioMcu) for UART-C. | ||
+ | |||
+ | == IsSupportedDeviceVariationForDev == | ||
+ | Takes 2 input u32s [[#UartPortForDev]] and '''DeviceVariation'''. Returns an output boolean success value. | ||
+ | |||
+ | Supported device variations are 0 (Bluetooth) for UART-D, 0 (Joy-Con(R)) for UART-B, 0 (Joy-Con(L)) and 1 (SioMcu) for UART-C. | ||
+ | |||
+ | == IPortSession == | ||
+ | This is "nn::uart::IPortSession". | ||
+ | |||
+ | {| class="wikitable" border="1" | ||
|- | |- | ||
− | | | + | ! Cmd || Name |
|- | |- | ||
− | | | + | | 0 || [[#OpenPort|OpenPort]] |
|- | |- | ||
− | | | + | | 1 || [[#OpenPortForDev|OpenPortForDev]] |
|- | |- | ||
− | | | + | | 2 || [[#GetWritableLength|GetWritableLength]] |
|- | |- | ||
− | | | + | | 3 || [[#Send_2|Send]] |
|- | |- | ||
− | | | + | | 4 || [[#GetReadableLength|GetReadableLength]] |
|- | |- | ||
− | | | + | | 5 || [[#Receive_2|Receive]] |
|- | |- | ||
− | | | + | | 6 || [[#BindPortEvent|BindPortEvent]] |
|- | |- | ||
− | | | + | | 7 || [[#UnbindPortEvent|UnbindPortEvent]] |
|- | |- | ||
− | | | + | | 8 || [14.0.0+] [[#OpenPort2|OpenPort2]] |
+ | |} | ||
+ | |||
+ | === OpenPort === | ||
+ | Takes 3 input u32s [[#UartPort]], '''BaudRate''' and [[#FlowControlMode]], 2 input u64s '''SendBufferLength''' and '''ReceiveBufferLength''' and 2 input TransferMemory handles '''SendHandle''' and '''ReceiveHandle'''. Returns an output boolean success value. | ||
+ | |||
+ | [6.0.0+] Takes 4 input u8s (padded as u32) '''IsInvertTx''', '''IsInvertRx''', '''IsInvertRts''' and '''IsInvertCts''', 3 input u32s [[#UartPort]], '''BaudRate''' and [[#FlowControlMode]], 2 input u64s '''SendBufferLength''' and '''ReceiveBufferLength''' and 2 input TransferMemory handles '''SendHandle''' and '''ReceiveHandle'''. Returns an output boolean success value. | ||
+ | |||
+ | [7.0.0+] Takes 4 input u8s (padded as u32) '''IsInvertTx''', '''IsInvertRx''', '''IsInvertRts''' and '''IsInvertCts''', 4 input u32s [[#UartPort]], '''BaudRate''', [[#FlowControlMode]] and '''DeviceVariation''', 2 input u64s '''SendBufferLength''' and '''ReceiveBufferLength''' and 2 input TransferMemory handles '''SendHandle''' and '''ReceiveHandle'''. Returns an output boolean success value. | ||
+ | |||
+ | This will Abort when the specified [[#UartPort]] is already being used, due to a [[SVC]] failing. | ||
+ | |||
+ | === OpenPortForDev === | ||
+ | Same as [[#OpenPort]], but takes an input [[#UartPortForDev]] instead. | ||
+ | |||
+ | === GetWritableLength === | ||
+ | No input. Returns an output u64 '''WritableLength'''. | ||
+ | |||
+ | === Send === | ||
+ | Takes a type-0x21 input buffer '''InData'''. Returns an output u64 size. | ||
+ | |||
+ | === GetReadableLength === | ||
+ | No input. Returns an output u64 '''ReadableLength'''. | ||
+ | |||
+ | === Receive === | ||
+ | Takes a type-0x22 output buffer '''OutData'''. Returns an output u64 size. | ||
+ | |||
+ | === BindPortEvent === | ||
+ | Takes an input u32 [[#PortEventType]] and an input s64 '''Threshold'''. Returns an output boolean success value and an Event handle with EventClearMode=0. | ||
+ | |||
+ | === UnbindPortEvent === | ||
+ | Takes an input u32 [[#PortEventType]]. Returns an output boolean success value. | ||
+ | |||
+ | === OpenPort2 === | ||
+ | Same as [[#OpenPort]], but takes an input u32 [[#UartPort|DeviceCode]] instead of an [[#UartPort]] and no longer returns an output boolean success value. | ||
+ | |||
+ | = pwm = | ||
+ | This is "nn::pwm::IManager". | ||
+ | |||
+ | {| class="wikitable" border="1" | ||
|- | |- | ||
− | | | + | ! Cmd || Name |
|- | |- | ||
− | | | + | | 0 || OpenSessionForDev |
|- | |- | ||
− | | | + | | 1 || OpenSession |
|- | |- | ||
− | | | + | | 2 || [6.0.0+] [[#OpenSession2_3|OpenSession2]] |
+ | |} | ||
+ | |||
+ | == OpenSession2 == | ||
+ | Takes a [[#ChannelName|DeviceCode]] and returns an [[#IChannelSession]]. | ||
+ | |||
+ | == IChannelSession == | ||
+ | This is "nn::pwm::IChannelSession". | ||
+ | |||
+ | {| class="wikitable" border="1" | ||
|- | |- | ||
− | + | ! Cmd || Name | |
|- | |- | ||
− | | | + | | 0 || SetPeriod |
|- | |- | ||
− | | | + | | 1 || GetPeriod |
|- | |- | ||
− | | | + | | 2 || [1.0.0-13.2.1] SetDuty |
|- | |- | ||
− | | | + | | 3 || [1.0.0-13.2.1] GetDuty |
|- | |- | ||
− | | | + | | 4 || SetEnabled |
|- | |- | ||
− | | | + | | 5 || GetEnabled |
|- | |- | ||
− | | | + | | 6 || [6.0.0+] [[#SetDutyCycle|SetDutyCycle]] |
|- | |- | ||
− | | | + | | 7 || [6.0.0+] [[#GetDutyCycle|GetDutyCycle]] |
+ | |} | ||
+ | |||
+ | === SetDutyCycle === | ||
+ | Takes an input double '''DutyCycle'''. No output. | ||
+ | |||
+ | === GetDutyCycle === | ||
+ | No input. Returns an output double '''DutyCycle'''. | ||
+ | |||
+ | = pinmux = | ||
+ | This is "nn::pinmux::IManager". | ||
+ | |||
+ | {| class="wikitable" border="1" | ||
|- | |- | ||
− | | | + | ! Cmd || Name |
|- | |- | ||
− | | | + | | 0 || [[#OpenSession_3|OpenSession]] |
+ | |} | ||
+ | |||
+ | == OpenSession == | ||
+ | Takes an [[#AssignablePinGroupName]] or an [[#AssignablePinGroupNameForHardwareTest]] and returns an [[#ISession|ISession]]. | ||
+ | |||
+ | == ISession == | ||
+ | This is "nn::pinmux::ISession". | ||
+ | |||
+ | {| class="wikitable" border="1" | ||
|- | |- | ||
− | | | + | ! Cmd || Name |
|- | |- | ||
− | | | + | | 0 || [[#SetPinAssignment|SetPinAssignment]] |
|- | |- | ||
− | | | + | | 1 || [[#GetPinAssignment|GetPinAssignment]] |
|- | |- | ||
− | | | + | | 2 || [[#SetPinAssignmentForHardwareTest|SetPinAssignmentForHardwareTest]] |
|- | |- | ||
− | | [ | + | | 3 || [17.0.0+] SetSfioConfiguration |
|- | |- | ||
− | | [ | + | | 4 || [17.0.0+] GetSfioConfiguration |
|- | |- | ||
− | | [ | + | | 5 || [17.0.0+] SetInputEnableConfiguration |
|- | |- | ||
− | | [ | + | | 6 || [17.0.0+] GetInputEnableConfiguration |
|- | |- | ||
− | | [ | + | | 7 || [17.0.0+] SetPullConfiguration |
|- | |- | ||
− | | [ | + | | 8 || [17.0.0+] GetPullConfiguration |
|- | |- | ||
− | | [ | + | | 9 || [17.0.0+] SetPmConfiguration |
|- | |- | ||
− | | [ | + | | 10 || [17.0.0+] GetPmConfiguration |
+ | |} | ||
+ | |||
+ | === SetPinAssignment === | ||
+ | Takes a [[#PinAssignment]]. No output. | ||
+ | |||
+ | === GetPinAssignment === | ||
+ | No input. Returns a [[#PinAssignment]]. | ||
+ | |||
+ | === SetPinAssignmentForHardwareTest === | ||
+ | Takes a [[#PinAssignmentForHardwareTest]]. No output. | ||
+ | |||
+ | = sasbus = | ||
+ | This is "nn::sasbus::IManager". | ||
+ | |||
+ | This was added with [3.0.0+]. | ||
+ | |||
+ | {| class="wikitable" border="1" | ||
|- | |- | ||
− | | | + | ! Cmd || Name |
|- | |- | ||
− | | | + | | 0 || [[#OpenSession_4|OpenSession]] |
+ | |} | ||
+ | |||
+ | == OpenSession == | ||
+ | Takes a [[#SasbusPort]] and returns an [[#ISession_2|ISession]]. | ||
+ | |||
+ | == ISession == | ||
+ | This is "nn::sasbus::ISession". | ||
+ | |||
+ | {| class="wikitable" border="1" | ||
|- | |- | ||
− | | | + | ! Cmd || Name |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
− | | | + | | 0 || [[#Send_3|Send]] |
|- | |- | ||
− | | | + | | 1 || [[#Receive_3|Receive]] |
|- | |- | ||
− | | | + | | 2 || [[#StartPeriodicReceiveMode|StartPeriodicReceiveMode]] |
|- | |- | ||
− | | | + | | 3 || [[#StopPeriodicReceiveMode|StopPeriodicReceiveMode]] |
|- | |- | ||
− | | [ | + | | 4 || [19.0.0+] |
|- | |- | ||
− | | [ | + | | 5 || [19.0.0+] |
|} | |} | ||
− | == | + | === Send === |
+ | Takes a type-0x21 input buffer and an u8 '''SpiCommand'''. No output. | ||
+ | |||
+ | === Receive === | ||
+ | Takes a type-0x22 output buffer and an u8 '''SpiCommand'''. No output. | ||
+ | |||
+ | === StartPeriodicReceiveMode === | ||
+ | Takes an u8 '''SpiCommand''' (padded to u32), an u32, two u64s and a copy handle. No output. | ||
+ | |||
+ | === StopPeriodicReceiveMode === | ||
+ | No input/output. | ||
+ | |||
+ | === Cmd4 === | ||
+ | Takes a total of 0x10-bytes of input and an input handle. No output. | ||
+ | |||
+ | This is similar to [[#StartPeriodicReceiveMode|StartPeriodicReceiveMode]]. This eventually calls an impl func which just writes some input fields into state, then (on NX) Aborts. | ||
+ | |||
+ | === Cmd5 === | ||
+ | No input/output. | ||
+ | |||
+ | This is identical to [[#StopPeriodicReceiveMode|StopPeriodicReceiveMode]]. | ||
+ | |||
+ | = led = | ||
+ | This is "nn::led::detail::IManager". | ||
+ | |||
+ | This was added with [8.1.1+]. | ||
+ | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
− | ! | + | ! Cmd || Name |
− | |||
− | |||
|- | |- | ||
− | | | + | | 0 || [[#OpenController|OpenController]] |
− | |||
− | |||
|} | |} | ||
− | == | + | == OpenController == |
− | Takes a | + | Takes a '''DeviceCode''' (which must be 0x35000065) and returns an [[#IController]] session for it. |
− | == | + | == IController == |
− | + | This is "nn::led::detail::IController". | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | This was added with [8.1.1+]. | |
− | This | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
Line 262: | Line 564: | ||
! Cmd || Name | ! Cmd || Name | ||
|- | |- | ||
− | | 0 || | + | | 0 || StartLighting |
+ | |- | ||
+ | | 1 || StopLighting | ||
+ | |- | ||
+ | | 2 || SetLightingMode | ||
+ | |- | ||
+ | | 3 || GetLightingMode | ||
+ | |- | ||
+ | | 4 || IsLighting | ||
|- | |- | ||
− | | | + | | 5 || SetRisingTime |
|- | |- | ||
− | | | + | | 6 || GetRisingTime |
|- | |- | ||
− | | | + | | 7 || SetFallingTime |
|- | |- | ||
− | | | + | | 8 || GetFallingTime |
|- | |- | ||
− | | | + | | 9 || SetPeakTime |
|- | |- | ||
− | | | + | | 10 || GetPeakTime |
|- | |- | ||
− | | | + | | 11 || SetPulseInterval |
|- | |- | ||
− | | | + | | 12 || GetPulseInterval |
|- | |- | ||
− | | | + | | 13 || SetPulseCount |
|- | |- | ||
− | | | + | | 14 || GetPulseCount |
|- | |- | ||
− | | | + | | 15 || GetMaxPulseCount |
|- | |- | ||
− | | | + | | 16 || SetBreathInterval |
|- | |- | ||
− | | | + | | 17 || GetBreathInterval |
|- | |- | ||
− | | | + | | 18 || SetConstantBrightness |
|- | |- | ||
− | | | + | | 19 || GetConstantBrightness |
|- | |- | ||
− | | | + | | 20 || [10.0.0+] GetBreathingStatus ([8.1.1-9.2.0] RegisterPwmChannel) |
|- | |- | ||
− | | | + | | 21 || [8.1.1-9.2.0] UnregisterPwmChannel |
|} | |} | ||
− | = | + | = GpioPadName = |
− | This is "nn:: | + | This is "nn::gpio::GpioPadName". |
− | {| class="wikitable" border="1" | + | {| class="wikitable sortable" border="1" |
+ | |- | ||
+ | ! Value || Name || [[#GpioPadDescriptor|GpioPadDescriptor]] || DeviceCode || Tegra (port, pin) || Description || Direction || Used by (services) || Used by (hardware) | ||
+ | |- | ||
+ | | 0x01 || CodecLdoEnTemp || 0xCC || 0x33000002 || Z, 4 || Audio Codec (ALC5639) Power || Out || [[Audio services]], [[Fatal services]] || Icosa, Hoag, Iowa, Aula | ||
+ | |- | ||
+ | | 0x02 || PowSdEn || 0x24 || 0x3C000001 || E, 4 || SdCard Power || Out || [[PCV services]] || Icosa, Copper, Hoag, Iowa, Calcio, Aula | ||
+ | |- | ||
+ | | 0x03 || BtRst || 0x3C || 0x37000002 || H, 4 || Bluetooth Reset || Out || [[Bluetooth Driver services]] || Icosa, Copper, Hoag, Iowa, Calcio, Aula | ||
+ | |- | ||
+ | | 0x04 || RamCode3 || 0xDA || 0xC9000402 || BB, 2 || Secondary Boot Device Configration || In || || Icosa, Iowa | ||
+ | |- | ||
+ | | 0x05 || GameCardReset || 0xDB || 0x3C000402 || BB, 3 || Gamecard Reset || Out || [[Filesystem services]] || Icosa, Copper, Hoag, Iowa, Aula | ||
+ | |- | ||
+ | | 0x06 || CodecAlert || 0xDC || 0x33000003 || BB, 4 || Audio Codec (ALC5639) Alert || In || [[Audio services]] || Icosa, Hoag, Iowa, Aula | ||
+ | |- | ||
+ | | 0x07 || PowGc || 0x25 || 0x3C000401 || E, 5 || Gamecard Power || Out || || Icosa, Copper | ||
+ | |- | ||
+ | | 0x08 || DebugControllerDet || 0x90 || 0x350000CA || S, 0 || Debug Pad Detect || In || [[HID services]] || Icosa, Iowa | ||
+ | |- | ||
+ | | 0x09 || BattChgStatus || 0x91 || 0x39000407 || S, 1 || Battery Charge Status || In || || Icosa, Hoag, Iowa, Aula | ||
+ | |- | ||
+ | | 0x0A || BattChgEnableN || 0x96 || 0x39000003 || S, 6 || Charger IC (BQ24193) Charge Enable || Out || [[PTM services]] || Icosa, Hoag, Iowa, Aula | ||
+ | |- | ||
+ | | 0x0B || FanTach || 0x97 || 0x3D000002 || S, 7 || Fan Tachometer || In || || Icosa, Hoag, Iowa, Calcio, Aula | ||
+ | |- | ||
+ | | 0x0C || ExtconDetS || 0x26 || 0x3500040B || E, 6 || Joy-Con(L) IsAttached (insertion, Joy-Con pin 5/console TX, pulled low on insert) || In || [[HID services]], [[AM services]] || Icosa, Iowa, Aula | ||
+ | |- | ||
+ | | 0x0D || Vdd50AEn || 0x05 || 0x39000401 || A, 5 || Fan and Joy-Con 5V Power (Battery) || Out || [[PTM services]] || Icosa, Hoag, Iowa, Aula | ||
+ | |- | ||
+ | | 0x0E || SdevCoaxSel1 || 0x78 || 0xCA000406 ([1.0.0-10.0.0] 0xCA000402) || P, 0 || SDEV Coax Select || In || || Icosa, Iowa | ||
+ | |- | ||
+ | | 0x0F || GameCardCd || 0x93 || 0x3C000403 || S, 3 || Gamecard Card Detect || In || [[Filesystem services]], [[AM services]] || Icosa, Copper, Hoag, Iowa, Aula | ||
+ | |- | ||
+ | | 0x10 || ProdType0 || 0x7D || 0xC900040B || P, 5 || || In || || Icosa, Copper, Iowa | ||
+ | |- | ||
+ | | 0x11 || ProdType1 || 0x7C || 0xC900040C || P, 4 || || In || || Icosa, Copper, Iowa | ||
+ | |- | ||
+ | | 0x12 || ProdType2 || 0x7B || 0xC900040D || P, 3 || || In || || Icosa, Copper, Iowa | ||
+ | |- | ||
+ | | 0x13 || ProdType3 || 0x7A || 0xC900040E || P, 2 || || In || || Icosa, Copper, Iowa | ||
+ | |- | ||
+ | | 0x14 || TempAlert || 0xBC || 0x3E000002 || X, 4 || Temperature Sensor || In || || Icosa, Copper, Hoag, Iowa, Calcio, Aula | ||
+ | |- | ||
+ | | 0x15 || CodecHpDetIrq || 0xAE || 0x33000004 || V, 6 || Audio Codec (ALC5639) Headphone Detect || In || [[Audio services]] || Icosa, Hoag, Iowa, Aula | ||
+ | |- | ||
+ | | 0x16 || MotionInt || 0xBA || 0x35000041 || X, 2 || Built-in IMU IRQ || In || || Icosa, Hoag, Iowa, Aula | ||
+ | |- | ||
+ | | 0x17 || TpIrq || 0xB9 || 0x35000036 || X, 1 || TouchPanel IRQ || In || [[HID services]] || Icosa, Hoag, Iowa, Aula | ||
+ | |- | ||
+ | | 0x18 || ButtonSleep2 || 0xBD || 0x35000001 || X, 5 || Power Button (Connected only on Hoag) || In || || Icosa, Copper, Hoag, Iowa, Calcio, Aula | ||
+ | |- | ||
+ | | 0x19 || ButtonVolUp || 0xBE || 0x35000002 || X, 6 || Volume Up || In || [[Boot2]], [[Audio services]], [[Fatal services]] || Icosa, Copper, Hoag, Iowa, Calcio, Aula | ||
+ | |- | ||
+ | | 0x1A || ButtonVolDn || 0xBF || 0x35000003 || X, 7 || Volume Down || In || [[Boot2]], [[Audio services]] || Icosa, Copper, Hoag, Iowa, Calcio , Aula | ||
+ | |- | ||
+ | | 0x1B || BattMgicIrq || 0xC0 || 0x39000034 || Y, 0 || Fuel Gauge IC (MAX17050) IRQ || In || [[PTM services]], [[AM services]] || Icosa, Hoag, Iowa, Aula | ||
+ | |- | ||
+ | | 0x1C || RecoveryKey || 0xC1 || 0x35000004 || Y, 1 || Recovery Mode Key (HOME Button) || In || || Icosa, Copper, Hoag, Iowa, Calcio, Aula | ||
+ | |- | ||
+ | | 0x1D || PowLcdBlEn || 0xA9 || 0x3400003E || V, 1 || LCD Backlight Power || Out || [[NV services]], [[Backlight services]] || Icosa, Hoag, Iowa | ||
+ | |- | ||
+ | | 0x1E || LcdReset || 0xAA || 0x34000033 || V, 2 || LCD Reset || Out || [[NV services]] || Icosa, Hoag, Iowa, Aula | ||
+ | |- | ||
+ | | 0x1F || PdVconnEn || 0x55 || 0x040000CC || K, 5 || USB-PD Controller (RHOM BM92T30MWV) VCONN Power || Out || [[PTM services]], [[USB services]] || Icosa, Hoag, Iowa, Aula | ||
+ | |- | ||
+ | | 0x20 || PdRstN || 0xAD || 0x040000CA || V, 5 || USB-PD Controller (RHOM BM92T30MWV) ResetN || Out || [[USB services]] || Icosa, Copper, Hoag, Iowa, Calcio, Aula | ||
+ | |- | ||
+ | | 0x21 || Bq24190Irq || 0xC8 || 0x39000002 || Z, 0 || Charger IC (BQ24193) IRQ || In || [[PTM services]], [[AM services]] || Icosa, Hoag, Iowa, Aula | ||
+ | |- | ||
+ | | 0x22 || SdevCoaxSel0 || 0xCA || 0xCA000405 ([1.0.0-10.0.0] 0xCA000401) || Z, 2 || SDEV Coax Select || In || || Icosa, Iowa | ||
+ | |- | ||
+ | | 0x23 || SdWp || 0xCB || 0x3C000003 || Z, 3 || SdCard Write Protect || In || || Icosa, Copper, Hoag, Iowa, Calcio, Aula | ||
+ | |- | ||
+ | | 0x24 || TpReset || 0x4F || 0x35000035 || J, 7 || TouchPanel Reset || Out || [[HID services]] || Icosa, Hoag, Iowa, Aula | ||
+ | |- | ||
+ | | 0x25 || BtGpio2 || 0x50 || 0x37000401 || K, 0 || || In || || Icosa, Copper, Hoag, Iowa, Calcio, Aula | ||
+ | |- | ||
+ | | 0x26 || BtGpio3 || 0x51 || 0x37000402 || K, 1 || || In || || Icosa, Copper, Hoag, Iowa, Calcio, Aula | ||
+ | |- | ||
+ | | 0x27 || BtGpio4 || 0x52 || 0x37000403 || K, 2 || || In || || Icosa, Copper, Hoag, Iowa, Calcio, Aula | ||
+ | |- | ||
+ | | 0x28 || CradleIrq || 0x54 || 0x040000CB || K, 4 || USB-PD Controller (RHOM BM92T30MWV) IRQ || In || [[USB services]], [[AM services]] || Icosa, Copper, Hoag, Iowa, Calcio, Aula | ||
+ | |- | ||
+ | | 0x29 || PowVcpuInt || 0x56 || 0x3E000003 || K, 6 || Sub-PMIC for CPU (MAX77621) IRQ || In || || Icosa, Copper, Aula | ||
+ | |- | ||
+ | | 0x2A || Max77621GpuInt || 0x57 || 0x3E000004 || K, 7 || Sub-PMIC for GPU (MAX77621) IRQ || In || || Icosa, Copper | ||
+ | |- | ||
+ | | 0x2B || ExtconChgU || 0x53 || 0x35000402 || K, 3 || Joy-Con(R) Charge || Out || [[HID services]] || Icosa, Iowa, Aula | ||
|- | |- | ||
− | + | | 0x2C || ExtconChgS || 0xE3 || 0x3500040C || CC, 3 || Joy-Con(L) Charge || Out || [[HID services]] || Icosa, Iowa, Aula | |
|- | |- | ||
− | | 0 || | + | | 0x2D || WifiRfDisable || 0x38 || 0x38000003 || H, 0 || || Out || || Icosa, Copper, Hoag, Iowa, Calcio |
|- | |- | ||
− | | 1 || [[ | + | | 0x2E || WifiReset || 0x39 || 0x38000002 || H, 1 || WiFi Reset || Out || [[WLAN services]], [[PCIe services]] || Icosa, Copper, Hoag, Iowa, Calcio, Aula |
|- | |- | ||
− | | | + | | 0x2F || ApWakeBt || 0x3B || 0x37000003 || H, 3 || Wake Bluetooth from Host || Out || [[Bluetooth Driver services]] || Icosa, Copper, Hoag, Iowa, Calcio, Aula |
|- | |- | ||
− | | | + | | 0x30 || BtWakeAp || 0x3D || 0x37000004 || H, 5 || Wake Host from Bluetooth || In || [[AM services]] || Icosa, Copper, Hoag, Iowa, Calcio, Aula |
|- | |- | ||
− | | | + | | 0x31 || BtGpio5 || 0x3F || 0x37000404 || H, 7 || || Out || || Icosa, Copper, Hoag, Iowa, Calcio, Aula |
− | | | ||
− | |||
− | |||
− | |||
|- | |- | ||
− | + | | 0x32 || PowLcdVddPEn || 0x40 || 0x34000034 || I, 0 || LCD Backlight PAVDD +5V || Out || [[NV services]] || Icosa, Hoag, Iowa | |
|- | |- | ||
− | | | + | | 0x33 || PowLcdVddNEn || 0x41 || 0x34000035 || I, 1 || LCD Backlight NAVDD -5V || Out || [[NV services]] || Icosa, Hoag, Iowa |
|- | |- | ||
− | | | + | | 0x34 || ExtconDetU || 0x3E || 0x35000401 || H, 6 || Joy-Con(R) IsAttached (insertion, Joy-Con pin 5/console TX, pulled low on insert) || In || [[HID services]], [[AM services]] || Icosa, Iowa, Aula |
|- | |- | ||
− | | | + | | 0x35 || RamCode2 || 0xE2 || 0xC9000401 || CC, 2 || Secondary Boot Device Configration || In || || Icosa, Iowa |
|- | |- | ||
− | | | + | | 0x36 || Vdd50BEn || 0xE4 || 0x39000402 || CC, 4 || Fan and Joy-Con 5V Power (USB) || Out || [[PTM services]] || Icosa, Iowa |
|- | |- | ||
− | | | + | | 0x37 || WifiWakeHost || 0x3A || 0x38000004 || H, 2 || Wake Host from Wifi || In || [[AM services]] || Icosa, Copper, Hoag, Iowa, Calcio, Aula |
|- | |- | ||
− | | | + | | 0x38 || SdCd || 0xC9 || 0x3C000002 || Z, 1 || SdCard Card Detect || In || [[Filesystem services]], [[AM services]] || Icosa, Copper, Hoag, Iowa, Calcio, Aula |
|- | |- | ||
− | | | + | | 0x39 || OtgFet1ForSdev || 0x4D || 0x39000404 || J, 5 || Charger IC (BQ24193) OTG Charge Select || Out || [[PTM services]], [[USB services]] || Icosa, Iowa |
|- | |- | ||
− | | | + | | 0x3A || OtgFet2ForSdev || 0x58 || 0x39000405 || L, 0 || Charger IC (BQ24193) OTG Charge Select || Out || [[PTM services]], [[USB services]] || Icosa, Iowa |
|- | |- | ||
− | | | + | | 0x3B || ExtConWakeU || 0x3E || 0x35000403 || H, 6 || Joy-Con(R) Wake Detect || In || || Icosa, Hoag, Iowa, Aula |
|- | |- | ||
− | | | + | | 0x3C || ExtConWakeS || 0x26 || 0x3500040D || E, 6 || Joy-Con(L) Wake Detect || In || || Icosa, Hoag, Iowa, Aula |
|- | |- | ||
− | | | + | | 0x3D || PmuIrq || -1 || 0x39000406 || GIC 86 || Main PMIC IRQ (PMU_EXT IRQ) || || || |
|- | |- | ||
− | | | + | | 0x3E || ExtUart2Cts || 0x33 || 0x35000404 || G, 3 || Joy-Con(R) CTS (checked low) || In || [[HID services]], [[AM services]] || |
|- | |- | ||
− | | | + | | 0x3F || ExtUart3Cts || 0x1C || 0x3500040E || D, 4 || Joy-Con(L) CTS (checked low) || In || [[HID services]], [[AM services]] || |
|- | |- | ||
− | | | + | | 0x40 || 5VStepDownEn || 0xD9 || 0x39000408 || BB, 1 || 5V Step-Down Regulator Power || Out || || Copper |
|- | |- | ||
− | | | + | | 0x41 || UsbSwitchB2Oc || 0x0C || 0x04000401 || B, 4 || USB Root Port 2 Over Current || In || [[USB services]] || Copper |
|- | |- | ||
− | | | + | | 0x42 || 5VStepDownPg || 0x0D || 0x39000409 || B, 5 || 5V Step-Down Regulator Power Good Flag || In || || Copper |
|- | |- | ||
− | | | + | | 0x43 || UsbSwitchAEn || 0x21 || 0x04000402 || E, 1 || USB Power || Out || [[USB services]] || Copper |
|- | |- | ||
− | | | + | | 0x44 || UsbSwitchAFlag || 0x27 || 0x04000403 || E, 7 || USB Power Flag || In || [[USB services]] || Copper |
|- | |- | ||
− | | | + | | 0x45 || UsbSwitchB3Oc || 0x92 || 0x04000404 || S, 2 || USB Root Port 3 Over Current || In || [[USB services]] || Copper |
|- | |- | ||
− | | | + | | 0x46 || UsbSwitchB3En || 0x95 || 0x04000405 || S, 5 || USB Root Port 3 Power || Out || [[USB services]] || Copper |
|- | |- | ||
− | | | + | | 0x47 || UsbSwitchB2En || 0x98 || 0x04000406 || T, 0 || USB Root Port 2 Power || Out || [[USB services]] || Copper |
|- | |- | ||
− | | | + | | 0x48 || Hdmi5VEn || 0x10 || 0x34000004 || C, 0 || HDMI 5V Power || Out || [[NV services]] || Copper, Calcio |
|- | |- | ||
− | | | + | | 0x49 || UsbSwitchB1En || 0x11 || 0x04000407 || C, 1 || USB Root Port 1 Power || Out || [[USB services]] || Copper, Calcio |
|- | |- | ||
− | | | + | | 0x4A || HdmiPdTrEn || 0x12 || 0x34000005 || C, 2 || HDMI/Power Delivery Switch || Out || [[NV services]] || Copper, Calcio |
|- | |- | ||
− | | | + | | 0x4B || FanEn || 0x42 || 0x3D000003 || I, 2 || Fan Power || Out || [[PTM services]] || Copper |
|- | |- | ||
− | | | + | | 0x4C || UsbSwitchB1Oc || 0xE6 || 0x04000408 || CC, 6 || USB Root Port 1 Over Current || In || [[USB services]] || Copper, Calcio |
|- | |- | ||
− | | [2.0.0+] | + | | [2.0.0+] 0x4D || PwmFan || 0xAC || 0x3D000001 || V, 4 || Pulse-Width Modulation Fan Control || Out || [[PTM services]] || Copper |
|- | |- | ||
− | | [ | + | | [2.0.0+] 0x4E || HdmiHpd || 0xE1 || 0x34000006 || CC, 1 || HDMI Hot Plug Detect || In || [[NV services]] || Copper, Calcio |
|- | |- | ||
− | | [ | + | | [5.0.0+] 0x4F || Max77812Irq || 0x56 || 0x3E000003 || K, 6 || Sub-PMIC (CPU/GPU/RAM) IRQ || In || || Hoag, Iowa, Calcio |
|- | |- | ||
− | | [ | + | | [6.0.0+] 0x50 || Debug0 || 0x20 || 0xCA000001 || E, 0 || || Out || || Hoag, Calcio, Aula |
|- | |- | ||
− | | [ | + | | [6.0.0+] 0x51 || Debug1 || 0x21 || 0xCA000002 || E, 1 || || Out || || Hoag, Calcio, Aula |
|- | |- | ||
− | | [ | + | | [6.0.0+] 0x52 || Debug2 || 0x22 || 0xCA000003 || E, 2 || || Out || || Hoag, Calcio, Aula |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
− | + | | [6.0.0+] 0x53 || Debug3 || 0x23 || 0xCA000004 || E, 3 || || Out || || Hoag, Calcio, Aula | |
|- | |- | ||
− | | [ | + | | [6.0.0+] 0x54 || NfcIrq || 0x4C || 0x36000004 || J, 4 || NFC Controller IRQ || In || [[NFC services]] || Hoag |
|- | |- | ||
− | | [ | + | | [6.0.0+] 0x55 || NfcRst || 0x57 || 0x36000003 || K, 7 || NFC Controller Reset || Out || [[NFC services]] || Hoag |
|- | |- | ||
− | | [ | + | | [6.0.0+] 0x56 || McuIrq || 0x27 ([6.0.0-8.0.0] 0x94) || 0x35000415 || E, 7 || Sio MCU IRQ || In || || Hoag |
|- | |- | ||
− | | | + | | [6.0.0+] 0x57 || McuBoot || 0x98 || 0x35000416 || T, 0 || Sio MCU BOOT0 Select (0: Flash, 1: SRAM) || Out || [[HID services]] || Hoag |
|- | |- | ||
− | | | + | | [6.0.0+] 0x58 || McuRst || 0x99 || 0x35000417 || T, 1 || Sio MCU ResetN (Output LOW -> Input) || In || [[HID services]] || Hoag |
|- | |- | ||
− | | | + | | [6.0.0+] 0x59 || Vdd5V3En || 0xBB || 0x39000403 || X, 3 || OTG VBUS Power || Out || [[PTM services]] || Hoag, Iowa, Aula |
|- | |- | ||
− | + | | [6.0.0+] 0x5A || McuPor || 0xE5 || 0x35000418 || CC, 5 || Sio MCU NPOR || Out || [[HID services]] || Hoag | |
− | | | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
− | + | | [6.0.0+] 0x5B || (McuHome) || 0xAB || 0x35000005 || V, 3 || Sio MCU Home Button || In || [[HID services]], [[AM services]] || Hoag | |
|- | |- | ||
− | | 0 || [[ | + | | [6.0.0+] 0x5C || NfcEn || 0x4E || 0x36000002 || J, 6 || NFC Controller Power || Out || [[NFC services]] || Hoag |
|- | |- | ||
− | | | + | | [7.0.0+] - || ExtUart2Rts || 0x32 || 0x35000406 || G, 2 || Joy-Con(R) RTS || In || || |
|- | |- | ||
− | | | + | | [7.0.0+] - || ExtUart3Rts || 0x1B || 0x35000410 || D, 3 || Joy-Con(L) RTS || In || || |
|- | |- | ||
− | | | + | | [7.0.0+] - || || 0x17 || 0x3500041B || C, 7 || SPI4 MOSI (Built-in IMU, set as gpio-input so Sio can use IMU) || In || || Hoag |
|- | |- | ||
− | | | + | | [7.0.0+] - || || 0x18 || 0x3500041C || D, 0 || SPI4 MISO (Built-in IMU, set as gpio-input so Sio can use IMU) || In || || Hoag |
|- | |- | ||
− | | 5 || | + | | [7.0.0+] - || || 0x15 || 0x3500041D || C, 5 || SPI4 SCLK (Built-in IMU, set as gpio-input so Sio can use IMU) || In || || Hoag |
|- | |- | ||
− | | 6 || | + | | [7.0.0+] - || || 0x16 || 0x3500041E || C, 6 || SPI4 CS0 (Built-in IMU, set as gpio-input so Sio can use IMU) || In || || Hoag |
|- | |- | ||
− | | | + | | [10.0.0+] - || || 0xC5 || 0x35000065 || Y, 5 || Notification LED PWM (CLK 32K OUT) || Out || || Hoag |
|- | |- | ||
− | | | + | | [10.0.0+] - || || 0x29 || 0x04000409 || F, 1 || || Out || || Calcio |
|- | |- | ||
− | + | | [10.0.0+] - || || 0x38 || 0x34000401 || H, 0 || OLED Panel IRQ || In || [[Display services]] || Aula | |
|- | |- | ||
− | + | | [13.0.0+] - || (BtGpio6) || 0x46 || 0x37000405 || I, 6 || UART-D RTS (Bluetooth) || In || || | |
|} | |} | ||
− | == | + | = GpioPadDescriptor = |
− | + | {| class="wikitable" border="1" | |
+ | |- | ||
+ | ! Bits || Description | ||
+ | |- | ||
+ | | 7-5 || Controller index | ||
+ | |- | ||
+ | | 4-3 || Port index | ||
+ | |- | ||
+ | | 2-0 || Pin number | ||
+ | |} | ||
− | = | + | = Direction = |
− | + | This is "nn::gpio::Direction". | |
− | == | + | {| class="wikitable sortable" border="1" |
− | + | |- | |
+ | ! Value || Name | ||
+ | |- | ||
+ | | 0 || Input | ||
+ | |- | ||
+ | | 1 || Output | ||
+ | |} | ||
− | + | = GpioValue = | |
+ | This is "nn::gpio::GpioValue". | ||
− | == | + | {| class="wikitable sortable" border="1" |
− | + | |- | |
+ | ! Value || Name | ||
+ | |- | ||
+ | | 0 || Low | ||
+ | |- | ||
+ | | 1 || High | ||
+ | |} | ||
− | + | = InterruptMode = | |
+ | This is "nn::gpio::InterruptMode". | ||
− | == | + | {| class="wikitable sortable" border="1" |
− | + | |- | |
+ | ! Value || Name | ||
+ | |- | ||
+ | | 0 || LowLevel | ||
+ | |- | ||
+ | | 1 || HighLevel | ||
+ | |- | ||
+ | | 2 || RisingEdge | ||
+ | |- | ||
+ | | 3 || FallingEdge | ||
+ | |- | ||
+ | | 4 || AnyEdge | ||
+ | |} | ||
− | + | = InterruptStatus = | |
+ | This is "nn::gpio::InterruptStatus". | ||
− | == | + | {| class="wikitable sortable" border="1" |
− | + | |- | |
+ | ! Value || Name | ||
+ | |- | ||
+ | | 0 || Inactive | ||
+ | |- | ||
+ | | 1 || Active | ||
+ | |} | ||
− | + | = WakeBitFlag = | |
+ | This is "nn::gpio::WakeBitFlag". This is a 128-bit flag. | ||
− | = | + | = OpenMode = |
− | + | This is "nn::gpio::OpenMode". | |
− | == | + | {| class="wikitable sortable" border="1" |
− | + | |- | |
− | + | ! Value || Name | |
− | + | |- | |
+ | | 0 || None | ||
+ | |- | ||
+ | | 1 || Read | ||
+ | |- | ||
+ | | 2 || Write | ||
+ | |- | ||
+ | | 3 || ReadWrite | ||
+ | |} | ||
− | = | + | = I2cDevice = |
− | + | This is "nn::i2c::I2cDevice". | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
{| class="wikitable sortable" border="1" | {| class="wikitable sortable" border="1" | ||
|- | |- | ||
− | ! Name || DeviceCode ( | + | ! Value || Name || DeviceCode || Port:Addr || Is10bit || Speed || Max Retries || Retry Delay || Description || Used by (services) || Used by (hardware) |
+ | |- | ||
+ | | 0 || ClassicController || 0x350000C9 || 0:52 || N || 100000 || 0 || 0 || DebugPad Driver || [[HID services]] || Icosa, Iowa, Aula | ||
+ | |- | ||
+ | | 1 || Ftm3bd56 || 0x35000033 || 2:49 || N || 400000 || 0 || 0 || TouchPanel || [[HID services]] || Icosa, Hoag, Iowa, Aula | ||
+ | |- | ||
+ | | 2 || Tmp451 || 0x3E000001 || 0:4C || N || 100000 || 0 || 0 || Temperature Sensor || [[PTM services]] || Icosa, Copper, Hoag, Iowa, Calcio, Aula | ||
+ | |- | ||
+ | | 3 || Nct72 || 0x3E000001 || 0:4C || N || 100000 || 0 || 0 || Temperature Sensor || [[PTM services]] || Icosa, Copper, Hoag, Iowa, Calcio, Aula | ||
+ | |- | ||
+ | | 4 || Alc5639 || 0x33000001 || 0:1C || N || 100000 || 0 || 0 || Audio Codec || [[Audio services]], [[Fatal services]] || Icosa, Hoag, Iowa, Aula | ||
+ | |- | ||
+ | | 5 || Max77620Rtc || 0x3B000001 || 4:68 || N || 400000 || 3 || 5000000 || PMIC RTC || [[PCV services]] || Icosa, Copper | ||
+ | |- | ||
+ | | 6 || Max77620Pmic || 0x3A000001 || 4:3C || N || 400000 || 3 || 5000000 || PMIC || [[PCV services]] || Icosa, Copper | ||
+ | |- | ||
+ | | 7 || Max77621Cpu || 0x3A000003 || 4:1B || N || 400000 || 3 || 5000000 || Sub-PMIC for CPU || [[PCV services]] || Icosa, Copper | ||
+ | |- | ||
+ | | 8 || Max77621Gpu || 0x3A000004 || 4:1C || N || 400000 || 3 || 5000000 || Sub-PMIC for GPU || [[PCV services]] || Icosa, Copper | ||
+ | |- | ||
+ | | 9 || Bq24193 || 0x39000001 || 0:6B || N || 100000 || 3 || 5000000 || Charger IC || [[PTM services]] || Icosa, Hoag, Iowa, Aula | ||
+ | |- | ||
+ | | 10 || Max17050 || 0x39000033 || 0:36 || N || 100000 || 3 || 5000000 || Fuel Gauge IC || [[PTM services]], [[PCV services]] || Icosa, Hoag, Iowa, Aula | ||
+ | |- | ||
+ | | 11 || Bm92t30mwv || 0x040000C9 || 0:18 || N || 100000 || 3 || 5000000 || USB-PD controller || [[USB services]] || Icosa, Copper, Hoag, Iowa, Calcio, Aula | ||
+ | |- | ||
+ | | 12 || Ina226Vdd15v0Hb || 0x3F000401 || 1:40 || N || 400000 || 3 || 5000000 || Power Monitor || nvdbgsvc || Factory | ||
+ | |- | ||
+ | | 13 || Ina226VsysCpuDs or Ina226VddCpuAp (SdevMariko) || 0x3F000001 || 1:41 || N || 400000 || 3 || 5000000 || Power Monitor || nvdbgsvc || Factory | ||
|- | |- | ||
− | | | + | | 14 || Ina226VsysGpuDs or Ina226VddGpuAp (SdevMariko) || 0x3F000002 || 1:44 || N || 400000 || 3 || 5000000 || Power Monitor || nvdbgsvc || Factory |
|- | |- | ||
− | | 1 || | + | | 15 || Ina226VsysDdrDs or Ina226VddDdr1V1Pmic (SdevMariko) || 0x3F000003 || 1:45 || N || 400000 || 3 || 5000000 || Power Monitor || nvdbgsvc || Factory |
|- | |- | ||
− | | | + | | 16 || Ina226VsysAp || 0x3F000402 || 1:46 || N || 400000 || 3 || 5000000 || Power Monitor || nvdbgsvc || Factory |
|- | |- | ||
− | | 3 || | + | | 17 || Ina226VsysBlDs || 0x3F000403 || 1:47 || N || 400000 || 3 || 5000000 || Power Monitor || nvdbgsvc || Factory |
|- | |- | ||
− | | | + | | 18 || Bh1730 || 0x35000047 || 1:29 || N || 400000 || 3 || 5000000 || Ambient Light Sensor || [[Backlight services]] || Icosa, Hoag, Iowa, Aula |
− | | | ||
− | |||
− | |||
− | |||
|- | |- | ||
− | + | | 19 || Ina226VsysCore or Ina226VddCoreAp (SdevMariko) || 0x3F000404 || 1:48 || N || 400000 || 3 || 5000000 || Power Monitor || nvdbgsvc || Factory | |
|- | |- | ||
− | | | + | | 20 || Ina226Soc1V8 or Ina226VddSoc1V8 (SdevMariko) || 0x3F000405 || 1:49 || N || 400000 || 3 || 5000000 || Power Monitor || nvdbgsvc || Factory |
|- | |- | ||
− | | 1 || | + | | 21 || Ina226Lpddr1V8 or Ina226Vdd1V8 (SdevMariko) || 0x3F000406 || 1:4A || N || 400000 || 3 || 5000000 || Power Monitor || nvdbgsvc || Factory |
|- | |- | ||
− | | | + | | 22 || Ina226Reg1V32 || 0x3F000407 || 1:4B || N || 400000 || 3 || 5000000 || Power Monitor || nvdbgsvc || Factory |
|- | |- | ||
− | | | + | | 23 || Ina226Vdd3V3Sys || 0x3F000408 || 1:4D || N || 400000 || 3 || 5000000 || Power Monitor || nvdbgsvc || Factory |
− | | | ||
− | |||
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
− | + | | [2.0.0+] 24 || HdmiDdc || 0x34000001 || 3:50 || N || 100000 || 0 || 0 || HDMI DDC || [[NV services]] || Copper, Calcio | |
|- | |- | ||
− | | 0 || [[ | + | | [2.0.0+] 25 || HdmiScdc || 0x34000002 || 3:54 || N || 100000 || 0 || 0 || HDMI SCDC || [[NV services]] || Copper, Calcio |
|- | |- | ||
− | | | + | | [2.0.0+] 26 || HdmiHdcp || 0x34000003 || 3:3A || N || 100000 || 0 || 0 || HDMI HDCP || [[NV services]] || Copper, Calcio |
|- | |- | ||
− | | | + | | [4.0.0+] 27 || Fan53528 || 0x3A000005 || 4:52 ([4.0.0-8.0.0] 4:A4) || N || 400000 || 0 || 0 || RAM Regulator (tied to Max77812Pmic) || || Hoag, Iowa, Calcio, Aula |
|- | |- | ||
− | | | + | | [4.0.0+] 28 || Max77812Pmic || 0x3A000002 || 4:31 ([8.0.0-9.2.0] 4:33, [4.0.0-8.0.0] 4:31) || N || 400000 || 0 || 0 || Sub-PMIC for CPU and GPU (tied to Fan53528) (Phase 31) || [[PCV services]] || Hoag, Iowa, Calcio, Aula |
|- | |- | ||
− | | 4 || | + | | [4.0.0+] 29 || Max77812Pmic || 0x3A000006 ([4.0.0-9.2.0] 0x3A000002) || 4:33 ([4.0.0-8.0.0] 4:31) || N || 400000 || 0 || 0 || Sub-PMIC for GPU, CPU and RAM (Phase 211) || [[PCV services]] || Hoag, Iowa, Calcio, Aula |
|- | |- | ||
− | | | + | | [4.0.0+] 30 || Ina226VddDdr0V6 (SdevMariko) || 0x3F000409 || 1:4E || N || 400000 || 3 || 5000000 || Power Monitor || nvdbgsvc || Factory |
|- | |- | ||
− | | | + | | [8.0.0+] 31 || (MillauNfc) || 0x36000001 || 1:08 || N || 400000 || 3 || 5000000 || NFC Controller || [[NFC services]] || Hoag |
|- | |- | ||
− | | | + | | [12.0.0+] - || (Max77801) || 0x3A000007 || 4:18 || N || 400000 || 0 || 0 || Audio Codec (ALC5639) Regulator || [[PCV services]] || Aula |
|} | |} | ||
− | = | + | = AddressingMode = |
− | + | This is "nn::i2c::AddressingMode". | |
− | + | {| class="wikitable sortable" border="1" | |
+ | |- | ||
+ | ! Value || Name | ||
+ | |- | ||
+ | | 0 || BitWidth7 | ||
+ | |- | ||
+ | | 1 || BitWidth10 | ||
+ | |} | ||
− | = | + | = TransactionOption = |
− | + | This is "nn::i2c::TransactionOption". | |
− | + | {| class="wikitable sortable" border="1" | |
+ | |- | ||
+ | ! Value || Name | ||
+ | |- | ||
+ | | 1 || StartCondition | ||
+ | |- | ||
+ | | 2 || StopCondition | ||
+ | |} | ||
− | = | + | = SpeedMode = |
− | This is "nn:: | + | This is "nn::i2c::SpeedMode". |
− | {| class="wikitable" border="1" | + | {| class="wikitable sortable" border="1" |
+ | |- | ||
+ | ! Value || Name | ||
|- | |- | ||
− | + | | 0x186A0 || Standard | |
|- | |- | ||
− | | | + | | 0x61A80 || Fast |
|- | |- | ||
− | | | + | | 0xF4240 || FastPlus |
|- | |- | ||
− | | | + | | 0x33E140 || HighSpeed |
|} | |} | ||
− | == | + | = CommandId = |
+ | This is "nn::i2c::detail::CommandId". | ||
+ | |||
{| class="wikitable sortable" border="1" | {| class="wikitable sortable" border="1" | ||
|- | |- | ||
− | ! | + | ! Value || Name |
|- | |- | ||
− | | | + | | 0 || Send |
|- | |- | ||
− | | | + | | 1 || Receive |
|- | |- | ||
− | | | + | | 2 || Extension |
|} | |} | ||
− | = | + | = SubCommandId = |
− | This is "nn:: | + | This is "nn::i2c::detail::SubCommandId". |
− | {| class="wikitable" border="1" | + | {| class="wikitable sortable" border="1" |
|- | |- | ||
− | ! | + | ! Value || Name |
|- | |- | ||
− | | 0 || | + | | 0 || Sleep |
+ | |} | ||
+ | |||
+ | = UartPort = | ||
+ | This is "nn::uart::UartPort". | ||
+ | |||
+ | {| class="wikitable sortable" border="1" | ||
|- | |- | ||
− | | | + | ! Value || Name || DeviceCode (internal) || DeviceCode (mapped) || Description |
|- | |- | ||
− | | | + | | 0 || UART-A || 0x03000001 || || Invalid |
|- | |- | ||
− | | | + | | 1 || UART-D || 0x03000004 || 0x37000001 || Bluetooth |
|- | |- | ||
− | | | + | | 2 || UART-B || 0x03000002 || 0x35000405 || Joy-Con(R) |
|- | |- | ||
− | | | + | | 3 || UART-C || 0x03000003 || 0x3500040F || Joy-Con(L) |
|- | |- | ||
− | | | + | | 4 || UART-C || 0x03000003 || 0x35000419 || SioMcu |
− | | | ||
− | | | ||
|} | |} | ||
− | = | + | = UartPortForDev = |
− | This is "nn:: | + | This is "nn::uart::UartPortForDev". |
− | {| class="wikitable" border="1" | + | {| class="wikitable sortable" border="1" |
+ | |- | ||
+ | ! Value || Name || DeviceCode (internal) || DeviceCode (mapped) || Description | ||
+ | |- | ||
+ | | 0 || UART-A || 0x03000001 || || Invalid | ||
+ | |- | ||
+ | | 1 || UART-B || 0x03000002 || 0x35000405 || Joy-Con(R) | ||
|- | |- | ||
− | + | | 2 || UART-C || 0x03000003 || 0x3500040F || Joy-Con(L) | |
|- | |- | ||
− | | | + | | 3 || UART-D || 0x03000004 || 0x37000001 || Bluetooth |
|} | |} | ||
− | = | + | = FlowControlMode = |
− | This is "nn:: | + | This is "nn::uart::FlowControlMode". |
− | {| class="wikitable" border="1" | + | {| class="wikitable sortable" border="1" |
− | |||
− | |||
|- | |- | ||
− | | | + | ! Value || Name |
|- | |- | ||
− | | | + | | 0 || None |
|- | |- | ||
− | | | + | | 1 || Hardware |
|} | |} | ||
− | = | + | = PortEventType = |
− | This is "nn:: | + | This is "nn::uart::PortEventType". |
− | + | {| class="wikitable sortable" border="1" | |
− | + | |- | |
− | {| class="wikitable" border="1" | + | ! Value || Name |
+ | |- | ||
+ | | 0 || SendBufferEmpty | ||
+ | |- | ||
+ | | 1 || SendBufferReady | ||
|- | |- | ||
− | + | | 2 || ReceiveBufferReady | |
|- | |- | ||
− | | | + | | 3 || ReceiveEnd |
|} | |} | ||
− | == | + | = ChannelName = |
− | + | This is "nn::pwm::ChannelName". | |
− | |||
− | This | ||
− | + | {| class="wikitable sortable" border="1" | |
− | |||
− | |||
− | {| class="wikitable" border="1" | ||
|- | |- | ||
− | ! | + | ! Value || Name || DeviceCode || Description || Used by |
|- | |- | ||
− | | 0 || | + | | 0 || Invalid || || || |
|- | |- | ||
− | | 1 || [[# | + | | 1 || CpuFan || 0x3D000001 || PWM Channel 1 || [[PTM_services#fan|PTM services]] |
|- | |- | ||
− | | 2 || [[ | + | | 2 || LcdBacklight || 0x3400003D || PWM Channel 0 || [[Backlight services]], [[NV services]] |
|- | |- | ||
− | | 3 || [[# | + | | 3 || Led || 0x35000065 || PMC LED Soft Blink || [[Bus services#led|Bus services]] |
|} | |} | ||
− | = | + | = AssignablePinGroupName = |
− | + | This is "nn::pinmux::AssignablePinGroupName". | |
− | == | + | {| class="wikitable sortable" border="1" |
− | + | |- | |
− | + | ! Value || Description | |
− | + | |- | |
− | + | | 0 || ExtConUartB | |
− | + | |- | |
− | + | | 1 || ExtConUartC | |
− | + | |- | |
− | + | | 2 || Sdmmc1 | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
− | + | | 3 || PwmFan | |
|- | |- | ||
− | | | + | | 100 || Invalid |
|} | |} | ||
− | = | + | = AssignablePinGroupNameForHardwareTest = |
− | This is "nn:: | + | This is "nn::pinmux::AssignablePinGroupNameForHardwareTest". |
− | {| class="wikitable" border="1" | + | {| class="wikitable sortable" border="1" |
|- | |- | ||
− | ! | + | ! Value || Description |
|- | |- | ||
− | | 0 || | + | | 0 || Invalid |
|- | |- | ||
− | | 1 || | + | | 1 || Invalid |
|- | |- | ||
− | | 2 || | + | | 2 || Invalid |
|- | |- | ||
− | | 3 || | + | | 3 || Invalid |
|- | |- | ||
− | | | + | | 100 || UartD |
+ | |} | ||
+ | |||
+ | = PinAssignment = | ||
+ | This is "nn::pinmux::PinAssignment". | ||
+ | |||
+ | {| class="wikitable sortable" border="1" | ||
|- | |- | ||
− | + | ! Value || Name | |
|- | |- | ||
− | | | + | | 0 || ExtConUartOutputEnable |
|- | |- | ||
− | | | + | | 1 || ExtConUartOutputHiZ |
|- | |- | ||
− | | | + | | 2 || Sdmmc1OutputHigh |
|- | |- | ||
− | | | + | | 3 || Sdmmc1ResetState |
|- | |- | ||
− | | | + | | 4 || Sdmmc1SchmtEnable |
|- | |- | ||
− | | | + | | 5 || Sdmmc1SchmtDisable |
|- | |- | ||
− | | | + | | 6 || PwmFanEnable |
|- | |- | ||
− | | | + | | 7 || PwmFanHiZ |
+ | |} | ||
+ | |||
+ | = PinAssignmentForHardwareTest = | ||
+ | This is "nn::pinmux::PinAssignmentForHardwareTest". | ||
+ | |||
+ | {| class="wikitable sortable" border="1" | ||
|- | |- | ||
− | + | ! Value || Name | |
|- | |- | ||
− | | | + | | 100 || UartDHiZ |
|- | |- | ||
− | | | + | | 101 || UartDEnable |
− | | | + | |} |
− | | | + | |
+ | = SasbusPort = | ||
+ | {| class="wikitable sortable" border="1" | ||
|- | |- | ||
− | | | + | ! Value || Name || DeviceCode || Description |
|- | |- | ||
− | | | + | | 0 || SPI4 || 0x3500003D || Lsm6ds3 (WHOAMI 0x69, 0x6A and 0x6C) |
|- | |- | ||
− | | | + | | [10.0.0+] 1 || SPI4 || 0x3500003D || Icm40607 (WHOAMI 0x38) |
|- | |- | ||
− | | | + | | [13.0.0+] 2 || SPI4 || 0x3500003D || Icm42607p (WHOAMI 0x60) |
|} | |} | ||
[[Category:Services]] | [[Category:Services]] |
Latest revision as of 04:50, 9 October 2024
gpio
This is "nn::gpio::IManager".
Cmd | Name |
---|---|
0 | [5.0.0+] OpenSessionForDevDeprecated ([1.0.0-4.1.0] OpenSessionForDev) |
1 | [5.0.0+] OpenSessionDeprecated ([1.0.0-4.1.0] OpenSession) |
2 | [5.0.0+] OpenSessionForTestDeprecated ([1.0.0-4.1.0] OpenSessionForTest) |
3 | [5.0.0-6.2.0] IsWakeEventActiveDeprecated ([1.0.0-4.1.0] IsWakeEventActive) |
4 | [5.0.0-6.2.0] GetWakeEventActiveFlagSetDeprecated ([1.0.0-4.1.0] GetWakeEventActiveFlagSet) |
5 | [5.0.0-6.2.0] SetWakeEventActiveFlagSetForDebugDeprecated ([1.0.0-4.1.0] SetWakeEventActiveFlagSetForDebug) |
6 | SetWakePinDebugMode |
7 | [5.0.0+] OpenSession |
8 | [5.0.0+] IsWakeEventActive |
9 | [5.0.0+] SetWakeEventActiveFlagSetForDebug |
10 | [6.0.0+] DumpStateForDebug |
OpenSessionForDevDeprecated
Takes an input #GpioPadDescriptor. Returns an #IPadSession.
OpenSessionDeprecated
Same as #OpenSessionForDevDeprecated except it takes a #GpioPadName which is then converted to a #GpioPadDescriptor. Returns an #IPadSession.
OpenSessionForTestDeprecated
Same as #OpenSessionDeprecated but panics on failure.
IsWakeEventActiveDeprecated
Takes an input #GpioPadName. Returns a bool IsActive.
GetWakeEventActiveFlagSetDeprecated
No input. Returns an output u128 #WakeBitFlag.
SetWakeEventActiveFlagSetForDebugDeprecated
Takes an input #GpioPadName and an input bool IsEnabled. No output.
SetWakePinDebugMode
Takes an input u32 WakePinDebugMode. No output.
OpenSession
Same as #OpenSessionDeprecated but takes a DeviceCode and an input #OpenMode.
IsWakeEventActive
Same as #IsWakeEventActiveDeprecated but takes a DeviceCode.
SetWakeEventActiveFlagSetForDebug
Same as #SetWakeEventActiveFlagSetForDebugDeprecated but takes a DeviceCode.
DumpStateForDebug
Stubbed. Returns 0.
IPadSession
This is "nn::gpio::IPadSession".
Cmd | Name |
---|---|
0 | [12.0.0+] SetDirectionDeprecated ([1.0.0-11.0.1] SetDirection) |
1 | GetDirection |
2 | SetInterruptMode |
3 | GetInterruptMode |
4 | SetInterruptEnable |
5 | GetInterruptEnable |
6 | [1.0.0-16.1.0] GetInterruptStatus |
7 | [1.0.0-16.1.0] ClearInterruptStatus |
8 | SetValue |
9 | GetValue |
10 | BindInterrupt |
11 | UnbindInterrupt |
12 | SetDebounceEnabled |
13 | GetDebounceEnabled |
14 | SetDebounceTime |
15 | GetDebounceTime |
16 | [4.0.0+] SetValueForSleepState |
17 | [6.0.0+] GetMaxDebounceTime |
18 | [12.0.0+] SetDirectionInput |
19 | [12.0.0+] SetDirectionOutput |
SetDirectionDeprecated
Takes an input u32 #Direction. No output.
GetDirection
No input. Returns an output u32 #Direction.
SetInterruptMode
Takes an input u32 #InterruptMode. No output.
GetInterruptMode
No input. Returns an output u32 #InterruptMode.
SetInterruptEnable
Takes an input bool IsEnable. No output.
GetInterruptEnable
No input. Returns an output bool IsEnable.
GetInterruptStatus
No input. Returns an output u32 #InterruptStatus.
ClearInterruptStatus
No input/output.
SetValue
Takes an input u32 #GpioValue. No output.
GetValue
No input. Returns an output u32 #GpioValue.
BindInterrupt
No input. Returns an output Event handle.
UnbindInterrupt
No input/output.
SetDebounceEnabled
Takes an input bool IsEnable. No output.
GetDebounceEnabled
No input. Returns an output bool IsEnable.
SetDebounceTime
Takes an input s32 MsecTime. No output.
GetDebounceTime
No input. Returns an output s32 MsecTime.
SetValueForSleepState
Takes an input u32 ValueForSleepState. No output.
GetMaxDebounceTime
No input. Returns an output u32 MaxDebounceTime.
SetDirectionInput
No input/output.
SetDirectionOutput
Takes an input u32 #GpioValue. No output.
i2c, i2c:pcv
This is "nn::i2c::IManager".
Cmd | Name |
---|---|
0 | OpenSessionForDev |
1 | OpenSession |
2 | [1.0.0-5.1.0] HasDevice |
3 | [1.0.0-5.1.0] HasDeviceForDev |
4 | [6.0.0+] OpenSession2 |
OpenSessionForDev
Takes an input u16 SlaveAddress (padded to u32) and 3 input u32s BusIdx, #AddressingMode and #SpeedMode. Returns an #II2cSession.
OpenSession
Takes an input #I2cDevice. Returns an output #II2cSession.
HasDevice
Takes an input #I2cDevice. Returns an output boolean success value.
HasDeviceForDev
Takes an input u16 SlaveAddress (padded to u32) and 3 input u32s BusIdx, #AddressingMode and #SpeedMode. Returns an output boolean success value.
OpenSession2
Same as OpenSession, but takes an input u32 DeviceCode.
II2cSession
This is "nn::i2c::ISession".
Cmd | Name |
---|---|
0 | [1.0.0-5.1.0] SendOld |
1 | [1.0.0-5.1.0] ReceiveOld |
2 | [1.0.0-5.1.0] ExecuteCommandListOld |
10 | Send |
11 | Receive |
12 | ExecuteCommandList |
13 | [6.0.0+] SetRetryPolicy |
Send
Takes a type-0x21 input buffer InData and an input u32 #TransactionOption. No output.
Receive
Takes a type-0x22 output buffer OutData and an input u32 #TransactionOption. No output.
ExecuteCommandList
Takes a type-0x22 output buffer ReceiveBuffer and a type-0x9 input buffer CommandList. No output.
Commands
This is "nn::i2c::I2cCommand".
Bits | Name |
---|---|
0-5 | #CommandId |
6-7 | #TransactionOption |
A send command will write bytes to the device using the format: [u8 cmd_send] [u8 len] <bytes>
A receive command will read bytes from the device using the format: [u8 cmd_receive] [u8 len]
An extension sleep command will stall the device using the format: [u8 cmd_extension] [u8 ms]
SetRetryPolicy
Takes 2 input u32s MaxRetries and RetryIntervalMicroSeconds. No output.
uart
This is "nn::uart::IManager".
Cmd | Name |
---|---|
0 | [1.0.0-16.1.0] HasPort |
1 | [1.0.0-16.1.0] HasPortForDev |
2 | [1.0.0-16.1.0] IsSupportedBaudRate |
3 | [1.0.0-16.1.0] IsSupportedBaudRateForDev |
4 | [1.0.0-16.1.0] IsSupportedFlowControlMode |
5 | [1.0.0-16.1.0] IsSupportedFlowControlModeForDev |
6 | CreatePortSession |
7 | [1.0.0-16.1.0] IsSupportedPortEvent |
8 | [1.0.0-16.1.0] IsSupportedPortEventForDev |
9 | [7.0.0-16.1.0] IsSupportedDeviceVariation |
10 | [7.0.0-16.1.0] IsSupportedDeviceVariationForDev |
HasPort
Takes an input #UartPort. Returns an output boolean success value.
HasPortForDev
Takes an input #UartPortForDev. Returns an output boolean success value.
IsSupportedBaudRate
Takes 2 input u32s #UartPort and BaudRate. Returns an output boolean success value.
Supported baud rates are 57600, 115200, 1000000 and 3000000.
IsSupportedBaudRateForDev
Takes 2 input u32s #UartPortForDev and BaudRate. Returns an output boolean success value.
Supported baud rates are 57600, 115200, 1000000 and 3000000.
IsSupportedFlowControlMode
Takes 2 input u32s #UartPort and #FlowControlMode. Returns an output boolean success value.
IsSupportedFlowControlModeForDev
Takes 2 input u32s #UartPortForDev and #FlowControlMode. Returns an output boolean success value.
CreatePortSession
No input. Returns an output #IPortSession.
IsSupportedPortEvent
Takes 2 input u32s #UartPort and #PortEventType. Returns an output boolean success value.
IsSupportedPortEventForDev
Takes 2 input u32s #UartPortForDev and #PortEventType. Returns an output boolean success value.
IsSupportedDeviceVariation
Takes 2 input u32s #UartPort and DeviceVariation. Returns an output boolean success value.
Supported device variations are 0 (Bluetooth) for UART-D, 0 (Joy-Con(R)) for UART-B, 0 (Joy-Con(L)) and 1 (SioMcu) for UART-C.
IsSupportedDeviceVariationForDev
Takes 2 input u32s #UartPortForDev and DeviceVariation. Returns an output boolean success value.
Supported device variations are 0 (Bluetooth) for UART-D, 0 (Joy-Con(R)) for UART-B, 0 (Joy-Con(L)) and 1 (SioMcu) for UART-C.
IPortSession
This is "nn::uart::IPortSession".
Cmd | Name |
---|---|
0 | OpenPort |
1 | OpenPortForDev |
2 | GetWritableLength |
3 | Send |
4 | GetReadableLength |
5 | Receive |
6 | BindPortEvent |
7 | UnbindPortEvent |
8 | [14.0.0+] OpenPort2 |
OpenPort
Takes 3 input u32s #UartPort, BaudRate and #FlowControlMode, 2 input u64s SendBufferLength and ReceiveBufferLength and 2 input TransferMemory handles SendHandle and ReceiveHandle. Returns an output boolean success value.
[6.0.0+] Takes 4 input u8s (padded as u32) IsInvertTx, IsInvertRx, IsInvertRts and IsInvertCts, 3 input u32s #UartPort, BaudRate and #FlowControlMode, 2 input u64s SendBufferLength and ReceiveBufferLength and 2 input TransferMemory handles SendHandle and ReceiveHandle. Returns an output boolean success value.
[7.0.0+] Takes 4 input u8s (padded as u32) IsInvertTx, IsInvertRx, IsInvertRts and IsInvertCts, 4 input u32s #UartPort, BaudRate, #FlowControlMode and DeviceVariation, 2 input u64s SendBufferLength and ReceiveBufferLength and 2 input TransferMemory handles SendHandle and ReceiveHandle. Returns an output boolean success value.
This will Abort when the specified #UartPort is already being used, due to a SVC failing.
OpenPortForDev
Same as #OpenPort, but takes an input #UartPortForDev instead.
GetWritableLength
No input. Returns an output u64 WritableLength.
Send
Takes a type-0x21 input buffer InData. Returns an output u64 size.
GetReadableLength
No input. Returns an output u64 ReadableLength.
Receive
Takes a type-0x22 output buffer OutData. Returns an output u64 size.
BindPortEvent
Takes an input u32 #PortEventType and an input s64 Threshold. Returns an output boolean success value and an Event handle with EventClearMode=0.
UnbindPortEvent
Takes an input u32 #PortEventType. Returns an output boolean success value.
OpenPort2
Same as #OpenPort, but takes an input u32 DeviceCode instead of an #UartPort and no longer returns an output boolean success value.
pwm
This is "nn::pwm::IManager".
Cmd | Name |
---|---|
0 | OpenSessionForDev |
1 | OpenSession |
2 | [6.0.0+] OpenSession2 |
OpenSession2
Takes a DeviceCode and returns an #IChannelSession.
IChannelSession
This is "nn::pwm::IChannelSession".
Cmd | Name |
---|---|
0 | SetPeriod |
1 | GetPeriod |
2 | [1.0.0-13.2.1] SetDuty |
3 | [1.0.0-13.2.1] GetDuty |
4 | SetEnabled |
5 | GetEnabled |
6 | [6.0.0+] SetDutyCycle |
7 | [6.0.0+] GetDutyCycle |
SetDutyCycle
Takes an input double DutyCycle. No output.
GetDutyCycle
No input. Returns an output double DutyCycle.
pinmux
This is "nn::pinmux::IManager".
Cmd | Name |
---|---|
0 | OpenSession |
OpenSession
Takes an #AssignablePinGroupName or an #AssignablePinGroupNameForHardwareTest and returns an ISession.
ISession
This is "nn::pinmux::ISession".
Cmd | Name |
---|---|
0 | SetPinAssignment |
1 | GetPinAssignment |
2 | SetPinAssignmentForHardwareTest |
3 | [17.0.0+] SetSfioConfiguration |
4 | [17.0.0+] GetSfioConfiguration |
5 | [17.0.0+] SetInputEnableConfiguration |
6 | [17.0.0+] GetInputEnableConfiguration |
7 | [17.0.0+] SetPullConfiguration |
8 | [17.0.0+] GetPullConfiguration |
9 | [17.0.0+] SetPmConfiguration |
10 | [17.0.0+] GetPmConfiguration |
SetPinAssignment
Takes a #PinAssignment. No output.
GetPinAssignment
No input. Returns a #PinAssignment.
SetPinAssignmentForHardwareTest
Takes a #PinAssignmentForHardwareTest. No output.
sasbus
This is "nn::sasbus::IManager".
This was added with [3.0.0+].
Cmd | Name |
---|---|
0 | OpenSession |
OpenSession
Takes a #SasbusPort and returns an ISession.
ISession
This is "nn::sasbus::ISession".
Cmd | Name |
---|---|
0 | Send |
1 | Receive |
2 | StartPeriodicReceiveMode |
3 | StopPeriodicReceiveMode |
4 | [19.0.0+] |
5 | [19.0.0+] |
Send
Takes a type-0x21 input buffer and an u8 SpiCommand. No output.
Receive
Takes a type-0x22 output buffer and an u8 SpiCommand. No output.
StartPeriodicReceiveMode
Takes an u8 SpiCommand (padded to u32), an u32, two u64s and a copy handle. No output.
StopPeriodicReceiveMode
No input/output.
Cmd4
Takes a total of 0x10-bytes of input and an input handle. No output.
This is similar to StartPeriodicReceiveMode. This eventually calls an impl func which just writes some input fields into state, then (on NX) Aborts.
Cmd5
No input/output.
This is identical to StopPeriodicReceiveMode.
led
This is "nn::led::detail::IManager".
This was added with [8.1.1+].
Cmd | Name |
---|---|
0 | OpenController |
OpenController
Takes a DeviceCode (which must be 0x35000065) and returns an #IController session for it.
IController
This is "nn::led::detail::IController".
This was added with [8.1.1+].
Cmd | Name |
---|---|
0 | StartLighting |
1 | StopLighting |
2 | SetLightingMode |
3 | GetLightingMode |
4 | IsLighting |
5 | SetRisingTime |
6 | GetRisingTime |
7 | SetFallingTime |
8 | GetFallingTime |
9 | SetPeakTime |
10 | GetPeakTime |
11 | SetPulseInterval |
12 | GetPulseInterval |
13 | SetPulseCount |
14 | GetPulseCount |
15 | GetMaxPulseCount |
16 | SetBreathInterval |
17 | GetBreathInterval |
18 | SetConstantBrightness |
19 | GetConstantBrightness |
20 | [10.0.0+] GetBreathingStatus ([8.1.1-9.2.0] RegisterPwmChannel) |
21 | [8.1.1-9.2.0] UnregisterPwmChannel |
GpioPadName
This is "nn::gpio::GpioPadName".
Value | Name | GpioPadDescriptor | DeviceCode | Tegra (port, pin) | Description | Direction | Used by (services) | Used by (hardware) |
---|---|---|---|---|---|---|---|---|
0x01 | CodecLdoEnTemp | 0xCC | 0x33000002 | Z, 4 | Audio Codec (ALC5639) Power | Out | Audio services, Fatal services | Icosa, Hoag, Iowa, Aula |
0x02 | PowSdEn | 0x24 | 0x3C000001 | E, 4 | SdCard Power | Out | PCV services | Icosa, Copper, Hoag, Iowa, Calcio, Aula |
0x03 | BtRst | 0x3C | 0x37000002 | H, 4 | Bluetooth Reset | Out | Bluetooth Driver services | Icosa, Copper, Hoag, Iowa, Calcio, Aula |
0x04 | RamCode3 | 0xDA | 0xC9000402 | BB, 2 | Secondary Boot Device Configration | In | Icosa, Iowa | |
0x05 | GameCardReset | 0xDB | 0x3C000402 | BB, 3 | Gamecard Reset | Out | Filesystem services | Icosa, Copper, Hoag, Iowa, Aula |
0x06 | CodecAlert | 0xDC | 0x33000003 | BB, 4 | Audio Codec (ALC5639) Alert | In | Audio services | Icosa, Hoag, Iowa, Aula |
0x07 | PowGc | 0x25 | 0x3C000401 | E, 5 | Gamecard Power | Out | Icosa, Copper | |
0x08 | DebugControllerDet | 0x90 | 0x350000CA | S, 0 | Debug Pad Detect | In | HID services | Icosa, Iowa |
0x09 | BattChgStatus | 0x91 | 0x39000407 | S, 1 | Battery Charge Status | In | Icosa, Hoag, Iowa, Aula | |
0x0A | BattChgEnableN | 0x96 | 0x39000003 | S, 6 | Charger IC (BQ24193) Charge Enable | Out | PTM services | Icosa, Hoag, Iowa, Aula |
0x0B | FanTach | 0x97 | 0x3D000002 | S, 7 | Fan Tachometer | In | Icosa, Hoag, Iowa, Calcio, Aula | |
0x0C | ExtconDetS | 0x26 | 0x3500040B | E, 6 | Joy-Con(L) IsAttached (insertion, Joy-Con pin 5/console TX, pulled low on insert) | In | HID services, AM services | Icosa, Iowa, Aula |
0x0D | Vdd50AEn | 0x05 | 0x39000401 | A, 5 | Fan and Joy-Con 5V Power (Battery) | Out | PTM services | Icosa, Hoag, Iowa, Aula |
0x0E | SdevCoaxSel1 | 0x78 | 0xCA000406 ([1.0.0-10.0.0] 0xCA000402) | P, 0 | SDEV Coax Select | In | Icosa, Iowa | |
0x0F | GameCardCd | 0x93 | 0x3C000403 | S, 3 | Gamecard Card Detect | In | Filesystem services, AM services | Icosa, Copper, Hoag, Iowa, Aula |
0x10 | ProdType0 | 0x7D | 0xC900040B | P, 5 | In | Icosa, Copper, Iowa | ||
0x11 | ProdType1 | 0x7C | 0xC900040C | P, 4 | In | Icosa, Copper, Iowa | ||
0x12 | ProdType2 | 0x7B | 0xC900040D | P, 3 | In | Icosa, Copper, Iowa | ||
0x13 | ProdType3 | 0x7A | 0xC900040E | P, 2 | In | Icosa, Copper, Iowa | ||
0x14 | TempAlert | 0xBC | 0x3E000002 | X, 4 | Temperature Sensor | In | Icosa, Copper, Hoag, Iowa, Calcio, Aula | |
0x15 | CodecHpDetIrq | 0xAE | 0x33000004 | V, 6 | Audio Codec (ALC5639) Headphone Detect | In | Audio services | Icosa, Hoag, Iowa, Aula |
0x16 | MotionInt | 0xBA | 0x35000041 | X, 2 | Built-in IMU IRQ | In | Icosa, Hoag, Iowa, Aula | |
0x17 | TpIrq | 0xB9 | 0x35000036 | X, 1 | TouchPanel IRQ | In | HID services | Icosa, Hoag, Iowa, Aula |
0x18 | ButtonSleep2 | 0xBD | 0x35000001 | X, 5 | Power Button (Connected only on Hoag) | In | Icosa, Copper, Hoag, Iowa, Calcio, Aula | |
0x19 | ButtonVolUp | 0xBE | 0x35000002 | X, 6 | Volume Up | In | Boot2, Audio services, Fatal services | Icosa, Copper, Hoag, Iowa, Calcio, Aula |
0x1A | ButtonVolDn | 0xBF | 0x35000003 | X, 7 | Volume Down | In | Boot2, Audio services | Icosa, Copper, Hoag, Iowa, Calcio , Aula |
0x1B | BattMgicIrq | 0xC0 | 0x39000034 | Y, 0 | Fuel Gauge IC (MAX17050) IRQ | In | PTM services, AM services | Icosa, Hoag, Iowa, Aula |
0x1C | RecoveryKey | 0xC1 | 0x35000004 | Y, 1 | Recovery Mode Key (HOME Button) | In | Icosa, Copper, Hoag, Iowa, Calcio, Aula | |
0x1D | PowLcdBlEn | 0xA9 | 0x3400003E | V, 1 | LCD Backlight Power | Out | NV services, Backlight services | Icosa, Hoag, Iowa |
0x1E | LcdReset | 0xAA | 0x34000033 | V, 2 | LCD Reset | Out | NV services | Icosa, Hoag, Iowa, Aula |
0x1F | PdVconnEn | 0x55 | 0x040000CC | K, 5 | USB-PD Controller (RHOM BM92T30MWV) VCONN Power | Out | PTM services, USB services | Icosa, Hoag, Iowa, Aula |
0x20 | PdRstN | 0xAD | 0x040000CA | V, 5 | USB-PD Controller (RHOM BM92T30MWV) ResetN | Out | USB services | Icosa, Copper, Hoag, Iowa, Calcio, Aula |
0x21 | Bq24190Irq | 0xC8 | 0x39000002 | Z, 0 | Charger IC (BQ24193) IRQ | In | PTM services, AM services | Icosa, Hoag, Iowa, Aula |
0x22 | SdevCoaxSel0 | 0xCA | 0xCA000405 ([1.0.0-10.0.0] 0xCA000401) | Z, 2 | SDEV Coax Select | In | Icosa, Iowa | |
0x23 | SdWp | 0xCB | 0x3C000003 | Z, 3 | SdCard Write Protect | In | Icosa, Copper, Hoag, Iowa, Calcio, Aula | |
0x24 | TpReset | 0x4F | 0x35000035 | J, 7 | TouchPanel Reset | Out | HID services | Icosa, Hoag, Iowa, Aula |
0x25 | BtGpio2 | 0x50 | 0x37000401 | K, 0 | In | Icosa, Copper, Hoag, Iowa, Calcio, Aula | ||
0x26 | BtGpio3 | 0x51 | 0x37000402 | K, 1 | In | Icosa, Copper, Hoag, Iowa, Calcio, Aula | ||
0x27 | BtGpio4 | 0x52 | 0x37000403 | K, 2 | In | Icosa, Copper, Hoag, Iowa, Calcio, Aula | ||
0x28 | CradleIrq | 0x54 | 0x040000CB | K, 4 | USB-PD Controller (RHOM BM92T30MWV) IRQ | In | USB services, AM services | Icosa, Copper, Hoag, Iowa, Calcio, Aula |
0x29 | PowVcpuInt | 0x56 | 0x3E000003 | K, 6 | Sub-PMIC for CPU (MAX77621) IRQ | In | Icosa, Copper, Aula | |
0x2A | Max77621GpuInt | 0x57 | 0x3E000004 | K, 7 | Sub-PMIC for GPU (MAX77621) IRQ | In | Icosa, Copper | |
0x2B | ExtconChgU | 0x53 | 0x35000402 | K, 3 | Joy-Con(R) Charge | Out | HID services | Icosa, Iowa, Aula |
0x2C | ExtconChgS | 0xE3 | 0x3500040C | CC, 3 | Joy-Con(L) Charge | Out | HID services | Icosa, Iowa, Aula |
0x2D | WifiRfDisable | 0x38 | 0x38000003 | H, 0 | Out | Icosa, Copper, Hoag, Iowa, Calcio | ||
0x2E | WifiReset | 0x39 | 0x38000002 | H, 1 | WiFi Reset | Out | WLAN services, PCIe services | Icosa, Copper, Hoag, Iowa, Calcio, Aula |
0x2F | ApWakeBt | 0x3B | 0x37000003 | H, 3 | Wake Bluetooth from Host | Out | Bluetooth Driver services | Icosa, Copper, Hoag, Iowa, Calcio, Aula |
0x30 | BtWakeAp | 0x3D | 0x37000004 | H, 5 | Wake Host from Bluetooth | In | AM services | Icosa, Copper, Hoag, Iowa, Calcio, Aula |
0x31 | BtGpio5 | 0x3F | 0x37000404 | H, 7 | Out | Icosa, Copper, Hoag, Iowa, Calcio, Aula | ||
0x32 | PowLcdVddPEn | 0x40 | 0x34000034 | I, 0 | LCD Backlight PAVDD +5V | Out | NV services | Icosa, Hoag, Iowa |
0x33 | PowLcdVddNEn | 0x41 | 0x34000035 | I, 1 | LCD Backlight NAVDD -5V | Out | NV services | Icosa, Hoag, Iowa |
0x34 | ExtconDetU | 0x3E | 0x35000401 | H, 6 | Joy-Con(R) IsAttached (insertion, Joy-Con pin 5/console TX, pulled low on insert) | In | HID services, AM services | Icosa, Iowa, Aula |
0x35 | RamCode2 | 0xE2 | 0xC9000401 | CC, 2 | Secondary Boot Device Configration | In | Icosa, Iowa | |
0x36 | Vdd50BEn | 0xE4 | 0x39000402 | CC, 4 | Fan and Joy-Con 5V Power (USB) | Out | PTM services | Icosa, Iowa |
0x37 | WifiWakeHost | 0x3A | 0x38000004 | H, 2 | Wake Host from Wifi | In | AM services | Icosa, Copper, Hoag, Iowa, Calcio, Aula |
0x38 | SdCd | 0xC9 | 0x3C000002 | Z, 1 | SdCard Card Detect | In | Filesystem services, AM services | Icosa, Copper, Hoag, Iowa, Calcio, Aula |
0x39 | OtgFet1ForSdev | 0x4D | 0x39000404 | J, 5 | Charger IC (BQ24193) OTG Charge Select | Out | PTM services, USB services | Icosa, Iowa |
0x3A | OtgFet2ForSdev | 0x58 | 0x39000405 | L, 0 | Charger IC (BQ24193) OTG Charge Select | Out | PTM services, USB services | Icosa, Iowa |
0x3B | ExtConWakeU | 0x3E | 0x35000403 | H, 6 | Joy-Con(R) Wake Detect | In | Icosa, Hoag, Iowa, Aula | |
0x3C | ExtConWakeS | 0x26 | 0x3500040D | E, 6 | Joy-Con(L) Wake Detect | In | Icosa, Hoag, Iowa, Aula | |
0x3D | PmuIrq | -1 | 0x39000406 | GIC 86 | Main PMIC IRQ (PMU_EXT IRQ) | |||
0x3E | ExtUart2Cts | 0x33 | 0x35000404 | G, 3 | Joy-Con(R) CTS (checked low) | In | HID services, AM services | |
0x3F | ExtUart3Cts | 0x1C | 0x3500040E | D, 4 | Joy-Con(L) CTS (checked low) | In | HID services, AM services | |
0x40 | 5VStepDownEn | 0xD9 | 0x39000408 | BB, 1 | 5V Step-Down Regulator Power | Out | Copper | |
0x41 | UsbSwitchB2Oc | 0x0C | 0x04000401 | B, 4 | USB Root Port 2 Over Current | In | USB services | Copper |
0x42 | 5VStepDownPg | 0x0D | 0x39000409 | B, 5 | 5V Step-Down Regulator Power Good Flag | In | Copper | |
0x43 | UsbSwitchAEn | 0x21 | 0x04000402 | E, 1 | USB Power | Out | USB services | Copper |
0x44 | UsbSwitchAFlag | 0x27 | 0x04000403 | E, 7 | USB Power Flag | In | USB services | Copper |
0x45 | UsbSwitchB3Oc | 0x92 | 0x04000404 | S, 2 | USB Root Port 3 Over Current | In | USB services | Copper |
0x46 | UsbSwitchB3En | 0x95 | 0x04000405 | S, 5 | USB Root Port 3 Power | Out | USB services | Copper |
0x47 | UsbSwitchB2En | 0x98 | 0x04000406 | T, 0 | USB Root Port 2 Power | Out | USB services | Copper |
0x48 | Hdmi5VEn | 0x10 | 0x34000004 | C, 0 | HDMI 5V Power | Out | NV services | Copper, Calcio |
0x49 | UsbSwitchB1En | 0x11 | 0x04000407 | C, 1 | USB Root Port 1 Power | Out | USB services | Copper, Calcio |
0x4A | HdmiPdTrEn | 0x12 | 0x34000005 | C, 2 | HDMI/Power Delivery Switch | Out | NV services | Copper, Calcio |
0x4B | FanEn | 0x42 | 0x3D000003 | I, 2 | Fan Power | Out | PTM services | Copper |
0x4C | UsbSwitchB1Oc | 0xE6 | 0x04000408 | CC, 6 | USB Root Port 1 Over Current | In | USB services | Copper, Calcio |
[2.0.0+] 0x4D | PwmFan | 0xAC | 0x3D000001 | V, 4 | Pulse-Width Modulation Fan Control | Out | PTM services | Copper |
[2.0.0+] 0x4E | HdmiHpd | 0xE1 | 0x34000006 | CC, 1 | HDMI Hot Plug Detect | In | NV services | Copper, Calcio |
[5.0.0+] 0x4F | Max77812Irq | 0x56 | 0x3E000003 | K, 6 | Sub-PMIC (CPU/GPU/RAM) IRQ | In | Hoag, Iowa, Calcio | |
[6.0.0+] 0x50 | Debug0 | 0x20 | 0xCA000001 | E, 0 | Out | Hoag, Calcio, Aula | ||
[6.0.0+] 0x51 | Debug1 | 0x21 | 0xCA000002 | E, 1 | Out | Hoag, Calcio, Aula | ||
[6.0.0+] 0x52 | Debug2 | 0x22 | 0xCA000003 | E, 2 | Out | Hoag, Calcio, Aula | ||
[6.0.0+] 0x53 | Debug3 | 0x23 | 0xCA000004 | E, 3 | Out | Hoag, Calcio, Aula | ||
[6.0.0+] 0x54 | NfcIrq | 0x4C | 0x36000004 | J, 4 | NFC Controller IRQ | In | NFC services | Hoag |
[6.0.0+] 0x55 | NfcRst | 0x57 | 0x36000003 | K, 7 | NFC Controller Reset | Out | NFC services | Hoag |
[6.0.0+] 0x56 | McuIrq | 0x27 ([6.0.0-8.0.0] 0x94) | 0x35000415 | E, 7 | Sio MCU IRQ | In | Hoag | |
[6.0.0+] 0x57 | McuBoot | 0x98 | 0x35000416 | T, 0 | Sio MCU BOOT0 Select (0: Flash, 1: SRAM) | Out | HID services | Hoag |
[6.0.0+] 0x58 | McuRst | 0x99 | 0x35000417 | T, 1 | Sio MCU ResetN (Output LOW -> Input) | In | HID services | Hoag |
[6.0.0+] 0x59 | Vdd5V3En | 0xBB | 0x39000403 | X, 3 | OTG VBUS Power | Out | PTM services | Hoag, Iowa, Aula |
[6.0.0+] 0x5A | McuPor | 0xE5 | 0x35000418 | CC, 5 | Sio MCU NPOR | Out | HID services | Hoag |
[6.0.0+] 0x5B | (McuHome) | 0xAB | 0x35000005 | V, 3 | Sio MCU Home Button | In | HID services, AM services | Hoag |
[6.0.0+] 0x5C | NfcEn | 0x4E | 0x36000002 | J, 6 | NFC Controller Power | Out | NFC services | Hoag |
[7.0.0+] - | ExtUart2Rts | 0x32 | 0x35000406 | G, 2 | Joy-Con(R) RTS | In | ||
[7.0.0+] - | ExtUart3Rts | 0x1B | 0x35000410 | D, 3 | Joy-Con(L) RTS | In | ||
[7.0.0+] - | 0x17 | 0x3500041B | C, 7 | SPI4 MOSI (Built-in IMU, set as gpio-input so Sio can use IMU) | In | Hoag | ||
[7.0.0+] - | 0x18 | 0x3500041C | D, 0 | SPI4 MISO (Built-in IMU, set as gpio-input so Sio can use IMU) | In | Hoag | ||
[7.0.0+] - | 0x15 | 0x3500041D | C, 5 | SPI4 SCLK (Built-in IMU, set as gpio-input so Sio can use IMU) | In | Hoag | ||
[7.0.0+] - | 0x16 | 0x3500041E | C, 6 | SPI4 CS0 (Built-in IMU, set as gpio-input so Sio can use IMU) | In | Hoag | ||
[10.0.0+] - | 0xC5 | 0x35000065 | Y, 5 | Notification LED PWM (CLK 32K OUT) | Out | Hoag | ||
[10.0.0+] - | 0x29 | 0x04000409 | F, 1 | Out | Calcio | |||
[10.0.0+] - | 0x38 | 0x34000401 | H, 0 | OLED Panel IRQ | In | Display services | Aula | |
[13.0.0+] - | (BtGpio6) | 0x46 | 0x37000405 | I, 6 | UART-D RTS (Bluetooth) | In |
GpioPadDescriptor
Bits | Description |
---|---|
7-5 | Controller index |
4-3 | Port index |
2-0 | Pin number |
Direction
This is "nn::gpio::Direction".
Value | Name |
---|---|
0 | Input |
1 | Output |
GpioValue
This is "nn::gpio::GpioValue".
Value | Name |
---|---|
0 | Low |
1 | High |
InterruptMode
This is "nn::gpio::InterruptMode".
Value | Name |
---|---|
0 | LowLevel |
1 | HighLevel |
2 | RisingEdge |
3 | FallingEdge |
4 | AnyEdge |
InterruptStatus
This is "nn::gpio::InterruptStatus".
Value | Name |
---|---|
0 | Inactive |
1 | Active |
WakeBitFlag
This is "nn::gpio::WakeBitFlag". This is a 128-bit flag.
OpenMode
This is "nn::gpio::OpenMode".
Value | Name |
---|---|
0 | None |
1 | Read |
2 | Write |
3 | ReadWrite |
I2cDevice
This is "nn::i2c::I2cDevice".
Value | Name | DeviceCode | Port:Addr | Is10bit | Speed | Max Retries | Retry Delay | Description | Used by (services) | Used by (hardware) |
---|---|---|---|---|---|---|---|---|---|---|
0 | ClassicController | 0x350000C9 | 0:52 | N | 100000 | 0 | 0 | DebugPad Driver | HID services | Icosa, Iowa, Aula |
1 | Ftm3bd56 | 0x35000033 | 2:49 | N | 400000 | 0 | 0 | TouchPanel | HID services | Icosa, Hoag, Iowa, Aula |
2 | Tmp451 | 0x3E000001 | 0:4C | N | 100000 | 0 | 0 | Temperature Sensor | PTM services | Icosa, Copper, Hoag, Iowa, Calcio, Aula |
3 | Nct72 | 0x3E000001 | 0:4C | N | 100000 | 0 | 0 | Temperature Sensor | PTM services | Icosa, Copper, Hoag, Iowa, Calcio, Aula |
4 | Alc5639 | 0x33000001 | 0:1C | N | 100000 | 0 | 0 | Audio Codec | Audio services, Fatal services | Icosa, Hoag, Iowa, Aula |
5 | Max77620Rtc | 0x3B000001 | 4:68 | N | 400000 | 3 | 5000000 | PMIC RTC | PCV services | Icosa, Copper |
6 | Max77620Pmic | 0x3A000001 | 4:3C | N | 400000 | 3 | 5000000 | PMIC | PCV services | Icosa, Copper |
7 | Max77621Cpu | 0x3A000003 | 4:1B | N | 400000 | 3 | 5000000 | Sub-PMIC for CPU | PCV services | Icosa, Copper |
8 | Max77621Gpu | 0x3A000004 | 4:1C | N | 400000 | 3 | 5000000 | Sub-PMIC for GPU | PCV services | Icosa, Copper |
9 | Bq24193 | 0x39000001 | 0:6B | N | 100000 | 3 | 5000000 | Charger IC | PTM services | Icosa, Hoag, Iowa, Aula |
10 | Max17050 | 0x39000033 | 0:36 | N | 100000 | 3 | 5000000 | Fuel Gauge IC | PTM services, PCV services | Icosa, Hoag, Iowa, Aula |
11 | Bm92t30mwv | 0x040000C9 | 0:18 | N | 100000 | 3 | 5000000 | USB-PD controller | USB services | Icosa, Copper, Hoag, Iowa, Calcio, Aula |
12 | Ina226Vdd15v0Hb | 0x3F000401 | 1:40 | N | 400000 | 3 | 5000000 | Power Monitor | nvdbgsvc | Factory |
13 | Ina226VsysCpuDs or Ina226VddCpuAp (SdevMariko) | 0x3F000001 | 1:41 | N | 400000 | 3 | 5000000 | Power Monitor | nvdbgsvc | Factory |
14 | Ina226VsysGpuDs or Ina226VddGpuAp (SdevMariko) | 0x3F000002 | 1:44 | N | 400000 | 3 | 5000000 | Power Monitor | nvdbgsvc | Factory |
15 | Ina226VsysDdrDs or Ina226VddDdr1V1Pmic (SdevMariko) | 0x3F000003 | 1:45 | N | 400000 | 3 | 5000000 | Power Monitor | nvdbgsvc | Factory |
16 | Ina226VsysAp | 0x3F000402 | 1:46 | N | 400000 | 3 | 5000000 | Power Monitor | nvdbgsvc | Factory |
17 | Ina226VsysBlDs | 0x3F000403 | 1:47 | N | 400000 | 3 | 5000000 | Power Monitor | nvdbgsvc | Factory |
18 | Bh1730 | 0x35000047 | 1:29 | N | 400000 | 3 | 5000000 | Ambient Light Sensor | Backlight services | Icosa, Hoag, Iowa, Aula |
19 | Ina226VsysCore or Ina226VddCoreAp (SdevMariko) | 0x3F000404 | 1:48 | N | 400000 | 3 | 5000000 | Power Monitor | nvdbgsvc | Factory |
20 | Ina226Soc1V8 or Ina226VddSoc1V8 (SdevMariko) | 0x3F000405 | 1:49 | N | 400000 | 3 | 5000000 | Power Monitor | nvdbgsvc | Factory |
21 | Ina226Lpddr1V8 or Ina226Vdd1V8 (SdevMariko) | 0x3F000406 | 1:4A | N | 400000 | 3 | 5000000 | Power Monitor | nvdbgsvc | Factory |
22 | Ina226Reg1V32 | 0x3F000407 | 1:4B | N | 400000 | 3 | 5000000 | Power Monitor | nvdbgsvc | Factory |
23 | Ina226Vdd3V3Sys | 0x3F000408 | 1:4D | N | 400000 | 3 | 5000000 | Power Monitor | nvdbgsvc | Factory |
[2.0.0+] 24 | HdmiDdc | 0x34000001 | 3:50 | N | 100000 | 0 | 0 | HDMI DDC | NV services | Copper, Calcio |
[2.0.0+] 25 | HdmiScdc | 0x34000002 | 3:54 | N | 100000 | 0 | 0 | HDMI SCDC | NV services | Copper, Calcio |
[2.0.0+] 26 | HdmiHdcp | 0x34000003 | 3:3A | N | 100000 | 0 | 0 | HDMI HDCP | NV services | Copper, Calcio |
[4.0.0+] 27 | Fan53528 | 0x3A000005 | 4:52 ([4.0.0-8.0.0] 4:A4) | N | 400000 | 0 | 0 | RAM Regulator (tied to Max77812Pmic) | Hoag, Iowa, Calcio, Aula | |
[4.0.0+] 28 | Max77812Pmic | 0x3A000002 | 4:31 ([8.0.0-9.2.0] 4:33, [4.0.0-8.0.0] 4:31) | N | 400000 | 0 | 0 | Sub-PMIC for CPU and GPU (tied to Fan53528) (Phase 31) | PCV services | Hoag, Iowa, Calcio, Aula |
[4.0.0+] 29 | Max77812Pmic | 0x3A000006 ([4.0.0-9.2.0] 0x3A000002) | 4:33 ([4.0.0-8.0.0] 4:31) | N | 400000 | 0 | 0 | Sub-PMIC for GPU, CPU and RAM (Phase 211) | PCV services | Hoag, Iowa, Calcio, Aula |
[4.0.0+] 30 | Ina226VddDdr0V6 (SdevMariko) | 0x3F000409 | 1:4E | N | 400000 | 3 | 5000000 | Power Monitor | nvdbgsvc | Factory |
[8.0.0+] 31 | (MillauNfc) | 0x36000001 | 1:08 | N | 400000 | 3 | 5000000 | NFC Controller | NFC services | Hoag |
[12.0.0+] - | (Max77801) | 0x3A000007 | 4:18 | N | 400000 | 0 | 0 | Audio Codec (ALC5639) Regulator | PCV services | Aula |
AddressingMode
This is "nn::i2c::AddressingMode".
Value | Name |
---|---|
0 | BitWidth7 |
1 | BitWidth10 |
TransactionOption
This is "nn::i2c::TransactionOption".
Value | Name |
---|---|
1 | StartCondition |
2 | StopCondition |
SpeedMode
This is "nn::i2c::SpeedMode".
Value | Name |
---|---|
0x186A0 | Standard |
0x61A80 | Fast |
0xF4240 | FastPlus |
0x33E140 | HighSpeed |
CommandId
This is "nn::i2c::detail::CommandId".
Value | Name |
---|---|
0 | Send |
1 | Receive |
2 | Extension |
SubCommandId
This is "nn::i2c::detail::SubCommandId".
Value | Name |
---|---|
0 | Sleep |
UartPort
This is "nn::uart::UartPort".
Value | Name | DeviceCode (internal) | DeviceCode (mapped) | Description |
---|---|---|---|---|
0 | UART-A | 0x03000001 | Invalid | |
1 | UART-D | 0x03000004 | 0x37000001 | Bluetooth |
2 | UART-B | 0x03000002 | 0x35000405 | Joy-Con(R) |
3 | UART-C | 0x03000003 | 0x3500040F | Joy-Con(L) |
4 | UART-C | 0x03000003 | 0x35000419 | SioMcu |
UartPortForDev
This is "nn::uart::UartPortForDev".
Value | Name | DeviceCode (internal) | DeviceCode (mapped) | Description |
---|---|---|---|---|
0 | UART-A | 0x03000001 | Invalid | |
1 | UART-B | 0x03000002 | 0x35000405 | Joy-Con(R) |
2 | UART-C | 0x03000003 | 0x3500040F | Joy-Con(L) |
3 | UART-D | 0x03000004 | 0x37000001 | Bluetooth |
FlowControlMode
This is "nn::uart::FlowControlMode".
Value | Name |
---|---|
0 | None |
1 | Hardware |
PortEventType
This is "nn::uart::PortEventType".
Value | Name |
---|---|
0 | SendBufferEmpty |
1 | SendBufferReady |
2 | ReceiveBufferReady |
3 | ReceiveEnd |
ChannelName
This is "nn::pwm::ChannelName".
Value | Name | DeviceCode | Description | Used by |
---|---|---|---|---|
0 | Invalid | |||
1 | CpuFan | 0x3D000001 | PWM Channel 1 | PTM services |
2 | LcdBacklight | 0x3400003D | PWM Channel 0 | Backlight services, NV services |
3 | Led | 0x35000065 | PMC LED Soft Blink | Bus services |
AssignablePinGroupName
This is "nn::pinmux::AssignablePinGroupName".
Value | Description |
---|---|
0 | ExtConUartB |
1 | ExtConUartC |
2 | Sdmmc1 |
3 | PwmFan |
100 | Invalid |
AssignablePinGroupNameForHardwareTest
This is "nn::pinmux::AssignablePinGroupNameForHardwareTest".
Value | Description |
---|---|
0 | Invalid |
1 | Invalid |
2 | Invalid |
3 | Invalid |
100 | UartD |
PinAssignment
This is "nn::pinmux::PinAssignment".
Value | Name |
---|---|
0 | ExtConUartOutputEnable |
1 | ExtConUartOutputHiZ |
2 | Sdmmc1OutputHigh |
3 | Sdmmc1ResetState |
4 | Sdmmc1SchmtEnable |
5 | Sdmmc1SchmtDisable |
6 | PwmFanEnable |
7 | PwmFanHiZ |
PinAssignmentForHardwareTest
This is "nn::pinmux::PinAssignmentForHardwareTest".
Value | Name |
---|---|
100 | UartDHiZ |
101 | UartDEnable |
SasbusPort
Value | Name | DeviceCode | Description |
---|---|---|---|
0 | SPI4 | 0x3500003D | Lsm6ds3 (WHOAMI 0x69, 0x6A and 0x6C) |
[10.0.0+] 1 | SPI4 | 0x3500003D | Icm40607 (WHOAMI 0x38) |
[13.0.0+] 2 | SPI4 | 0x3500003D | Icm42607p (WHOAMI 0x60) |