Bus services
gpio
This is "nn::gpio::IManager".
Cmd | Name |
---|---|
0 | #OpenSessionForDev |
1 | #OpenSession |
2 | #OpenSessionForTest |
3 | IsWakeEventActive |
4 | GetWakeEventActiveFlagSet |
5 | SetWakeEventActiveFlagSetForDebug |
6 | SetWakePinDebugMode |
7 | [5.0.0+] #OpenSession2 |
8 | [5.0.0+] IsWakeEventActive2 |
9 | [5.0.0+] SetWakeEventActiveFlagSetForDebug2 |
OpenSessionForDev
Takes a raw GpioPadDescriptor and returns a #IPadSession session for it.
OpenSession
Same thing as OpenSessionForDev except the descriptor is looked up in the table below. Returns an #IPadSession session.
GpioPadName | GpioPadDescriptor | Tegra (port, pin) | Usage | Direction | Used by |
---|---|---|---|---|---|
0x01 | 0xCC | Z, 4 | rt5639 power | Out | Audio services, Fatal services |
0x02 | 0x24 | E, 4 | SDCard Power | Out | Filesystem services |
0x03 | 0x3C | H, 4 | BT_RST_PH4 | Out | Bluetooth services |
0x04 | 0xDA | BB, 2 | |||
0x05 | 0xDB | BB, 3 | GcAsic Power | Out | Filesystem services |
0x06 | 0xDC | BB, 4 | Headphone Detect | In | Audio services |
0x07 | 0x25 | E, 5 | |||
0x08 | 0x90 | S, 0 | DebugPadDriver | In | HID services |
0x09 | 0x91 | S, 1 | |||
0x0A | 0x96 | S, 6 | bq24192 Charge Enable | Out | PTM services |
0x0B | 0x97 | S, 7 | |||
0x0C | 0x26 | E, 6 | joycon(L) NwcpDriver0.GpioMonitorTask0 (insertion, Joy-Con pin 5/console TX, pulled low on insert?) | In | HID services |
0x0D | 0x05 | A, 5 | Fan enable (normal) | Out | PTM services |
0x0E | 0x78 | P, 0 | SDMMC3_CLK_PP0? | ||
0x0F | 0x93 | S, 3 | GcAsic irq | In | Filesystem services |
0x10 | 0x7D | P, 5 | SDMMC3_DAT0_PP5? | ||
0x11 | 0x7C | P, 4 | SDMMC3_DAT1_PP4? | ||
0x12 | 0x7B | P, 3 | SDMMC3_DAT2_PP3? | ||
0x13 | 0x7A | P, 2 | SDMMC3_DAT3_PP2? | ||
0x14 | 0xBC | X, 4 | |||
0x15 | 0xAE | V, 6 | In | Audio services | |
0x16 | 0xBA | X, 2 | MOTION_INT_PX2? | ||
0x17 | 0xB9 | X, 1 | Touchscreen irq (TOUCH_INT_PX1) (unused - polled instead) | In | HID services |
0x18 | 0xBD | X, 5 | Power Button (BUTTON_POWER_ON_PX5) | In | |
0x19 | 0xBE | X, 6 | Volume Up (BUTTON_VOL_UP_PX6) | In | Boot2, Audio services |
0x1A | 0xBF | X, 7 | Volume Down (BUTTON_VOL_DOWN_PX7) | In | Boot2, Audio services |
0x1B | 0xC0 | Y, 0 | max17050 irq | In | PTM services |
0x1C | 0xC1 | Y, 1 | BUTTON_HOME_PY1 | In | |
0x1D | 0xA9 | V, 1 | Backlight (LCD_BL_EN_PV1) | Out | NV services, Backlight services |
0x1E | 0xAA | V, 2 | Backlight (LCD_RST_PV2) | Out | NV services |
0x1F | 0x55 | K, 5 | bq24192 OTG charge select | Out | PTM services, USB services |
0x20 | 0xAD | V, 5 | PD related | Out | USB services |
0x21 | 0xC8 | Z, 0 | bq24192 irq | In | PTM services |
0x22 | 0xCA | Z, 2 | |||
0x23 | 0xCB | Z, 3 | |||
0x24 | 0x4F | J, 7 | Touchscreen reset | Out | HID services |
0x25 | 0x50 | K, 0 | |||
0x26 | 0x51 | K, 1 | |||
0x27 | 0x52 | K, 2 | |||
0x28 | 0x54 | K, 4 | bm92t36 irq | In | USB services |
0x29 | 0x56 | K, 6 | |||
0x2A | 0x57 | K, 7 | |||
0x2B | 0x53 | K, 3 | joycon(R) NwcpDriver1.NwcpCharger | Out | HID services |
0x2C | 0xE3 | CC, 3 | joycon(L) NwcpDriver0.NwcpCharger | Out | HID services |
0x2D | 0x38 | H, 0 | WIFI_EN_PH0? | ||
0x2E | 0x39 | H, 1 | WIFI_RST_PH1 | Out | Wlan services, PCIe services |
0x2F | 0x3B | H, 3 | AP_WAKE_BT_PH3 | Out | Bluetooth services |
0x30 | 0x3D | H, 5 | |||
0x31 | 0x3F | H, 7 | |||
0x32 | 0x40 | I, 0 | Backlight +5V | Out | NV services |
0x33 | 0x41 | I, 1 | Backlight -5V | Out | NV services |
0x34 | 0x3E | H, 6 | joycon(R) NwcpDriver1.GpioMonitorTask0 (insertion, Joy-Con pin 5/console TX, pulled low on insert?) | In | HID services |
0x35 | 0xE2 | CC, 2 | |||
0x36 | 0xE4 | CC, 4 | Fan enable (high power) | Out | PTM services |
0x37 | 0x3A | H, 2 | |||
0x38 | 0xC9 | Z, 1 | SDCard Card Detect | In | Filesystem services |
0x39 | 0x4D | J, 5 | bq24192 OTG charge select | Out | PTM services, USB services |
0x3A | 0x58 | L, 0 | bq24192 OTG charge select | Out | PTM services, USB services |
0x3B | 0x3E | H, 6 | joycon(R) NwcpDriver1.GpioMonitorTask0 duplicate? | ||
0x3C | 0x26 | E, 6 | joycon(L) NwcpDriver1.GpioMonitorTask0 duplicate? | ||
0x3D | -1 | ||||
0x3E | 0x33 | G, 3 | joycon(R) NwcpDriver1.GpioMonitorTask1 (CTS, checked low) | In | HID services |
0x3F | 0x1C | D, 4 | joycon(L) NwcpDriver0.GpioMonitorTask1 (CTS, checked low) | In | HID services |
0x40 | 0xD9 | BB, 1 | |||
0x41 | 0x0C | B, 4 | Lid Closed (unused) | ||
0x42 | 0x0D | B, 5 | |||
0x43 | 0x21 | E, 1 | USB power | Out | USB services |
0x44 | 0x27 | E, 7 | |||
0x45 | 0x92 | S, 2 | |||
0x46 | 0x95 | S, 5 | USB root port 4 power | Out | USB services |
0x47 | 0x98 | T, 0 | USB root port 3 power | Out | USB services |
0x48 | 0x10 | C, 0 | HdmiHotplug | Out | NV services |
0x49 | 0x11 | C, 1 | USB root port 2 power | Out | USB services |
0x4A | 0x12 | C, 2 | HdmiHotplug | Out | NV services |
0x4B | 0x42 | I, 2 | |||
0x4C | 0xE6 | CC, 6 | |||
-- | 0xE1 | CC, 1 | HdmiHotplug (HDMI_INT_DP_HPD_PCC1) | In | NV services |
OpenSessionForTest
Same as #OpenSession but panics on failure.
OpenSession2
Same as #OpenSession but takes a DeviceCode instead of a GpioPadName.
IPadSession
This is "nn::gpio::IPadSession".
Cmd | Name |
---|---|
0 | SetDirection |
1 | GetDirection |
2 | SetInterruptMode |
3 | GetInterruptMode |
4 | SetInterruptEnable |
5 | GetInterruptEnable |
6 | GetInterruptStatus |
7 | ClearInterruptStatus |
8 | SetValue |
9 | GetValue |
10 | BindInterrupt |
11 | UnbindInterrupt |
12 | SetDebounceEnabled |
13 | GetDebounceEnabled |
14 | SetDebounceTime |
15 | GetDebounceTime |
16 | [4.0.0+] SetValueForSleepState |
GpioPadDescriptor
Bits | Description |
---|---|
7-5 | Controller index |
4-3 | Port index |
2-0 | Pin number |
i2c, i2c:pcv
This is "nn::i2c::IManager".
Cmd | Name |
---|---|
0 | OpenSessionForDev |
1 | OpenSession |
2 | HasDevice |
3 | HasDeviceForDev |
Known Devices
Name | Port:Addr | 10bit? | Speed | Max Retries | Retry Delay | Usage | Used by |
---|---|---|---|---|---|---|---|
0 | 0:52 | N | 100000 | 0 | 0 | DebugPadDriver | HID services |
1 | 2:49 | N | 400000 | 0 | 0 | STM touchscreen | HID services |
2 | 0:4c | N | 100000 | 0 | 0 | TI Temperature Sensor (tmp451) | PTM services |
3 | 0:4c | N | 100000 | 0 | 0 | duplicate, unused entry? | |
4 | 0:1c | N | 100000 | 0 | 0 | Audio codec (rt5639) | Audio services, Fatal services |
5 | 4:68 | N | 400000 | 3 | 5000000 | max77620_rtc0, max77620_irq0 | PCV services |
6 | 4:3c | N | 400000 | 3 | 5000000 | PMIC (max77620), max77620_irq0 | PCV services |
7 | 4:1b | N | 400000 | 3 | 5000000 | max77621_cpu | PCV services |
8 | 4:1c | N | 400000 | 3 | 5000000 | max77621_gpu | PCV services |
9 | 0:6b | N | 100000 | 3 | 5000000 | TI Charger (bq24192) | PTM services |
10 | 0:36 | N | 100000 | 3 | 5000000 | Maxim Fuel Gauge (max17050) | PCV services, PTM services |
11 | 0:18 | N | 100000 | 3 | 5000000 | USB-PD controller (rohm bm92t36) | USB services |
12 | 1:40 | N | 400000 | 3 | 5000000 | ||
13 | 1:41 | N | 400000 | 3 | 5000000 | ||
14 | 1:44 | N | 400000 | 3 | 5000000 | ||
15 | 1:45 | N | 400000 | 3 | 5000000 | ||
16 | 1:46 | N | 400000 | 3 | 5000000 | ||
17 | 1:47 | N | 400000 | 3 | 5000000 | ||
18 | 1:29 | N | 400000 | 3 | 5000000 | rohm ambient light sensor (bh1730fvc) | Backlight services |
19 | 1:48 | N | 400000 | 3 | 5000000 | ||
20 | 1:49 | N | 400000 | 3 | 5000000 | ||
21 | 1:4a | N | 400000 | 3 | 5000000 | ||
22 | 1:4b | N | 400000 | 3 | 5000000 | ||
23 | 1:4d | N | 400000 | 3 | 5000000 | ||
24 | 3:50 | N | 100000 | 0 | 0 | DisplayHdmiHotplugHandler | NV services |
25 | 3:54 | N | 100000 | 0 | 0 | DisplayHdmiHotplugHandler | NV services |
26 | 3:3a | N | 100000 | 0 | 0 | DisplayHdmiHotplugHandler | NV services |
This table is believed to be complete - entries with empty "Used by" column haven't been seen being used (devices not present on switch?).
II2cSession
This is "nn::i2c::ISession".
Cmd | Name |
---|---|
0 | Send |
1 | Receive |
2 | ExecuteCommandList |
10 | SendAuto |
11 | ReceiveAuto |
12 | ExecuteCommandListAuto |
uart
This is "nn::uart::IManager".
Cmd | Name |
---|---|
0 | DoesUartExist |
1 | DoesUartExistForTest |
2 | SetUartBaudrate |
3 | SetUartBaudrateForTest |
4 | IsSomethingUartValid |
5 | IsSomethingUartValidForTest |
6 | GetSession |
7 | IsSomethingUartValid2 |
8 | IsSomethingUartValid2ForTest |
IPortSession
This is "nn::uart::IPortSession".
Cmd | Name | Notes |
---|---|---|
0 | OpenSession | Takes marshalled arguments |
1 | OpenSessionForTest | Takes marshalled arguments |
2 | ||
3 | Takes marshalled arguments | |
4 | Returns 2x u64. Both zero. | |
5 | ||
6 | ||
7 |
Port Mapping
OpenSession translates user IDs to to the uart port index.
OpenSessionForTest takes the port index verbatim.
Name | Port | Usage |
---|---|---|
1 | UART-D | Bluetooth |
2 | UART-B | Joycon(R) |
3 | UART-C | Joycon(L) |
pwm
This is "nn::pwm::IManager".
Cmd | Name |
---|---|
0 | OpenSessionForDev |
1 | OpenSession |
Known Channels
Name | Interface | Usage | Used by |
---|---|---|---|
1 | PWM Channel 1 | Fan | PTM services |
2 | PWM Channel 0 | Backlight | Backlight services, NV services |
3 | PMC Blinker |
IChannelSession
This is "nn::pwm::IChannelSession".
Cmd | Name |
---|---|
0 | SetPeriod |
1 | GetPeriod |
2 | SetDuty |
3 | GetDuty |
4 | SetEnabled |
5 | GetEnabled |
pinmux
This is "nn::pinmux::IManager".
Cmd | Name |
---|---|
0 | OpenSession |
ISession
This is "nn::pinmux::ISession".
Cmd | Name |
---|---|
0 | |
1 | |
2 |
sasbus
This is "nn::sasbus::IManager".
Cmd | Name |
---|---|
0 | OpenSession |
ISession
This is "nn::sasbus::ISession".
Cmd | Name |
---|---|
0 | |
1 | |
2 | |
3 |