Difference between revisions of "Bus services"

From Nintendo Switch Brew
Jump to navigation Jump to search
 
(56 intermediate revisions by 5 users not shown)
Line 12: Line 12:
 
| 2 || [[#OpenSessionForTest]]
 
| 2 || [[#OpenSessionForTest]]
 
|-
 
|-
| 3 || IsWakeEventActive  
+
| 3 || [1.0.0-6.2.0] IsWakeEventActive  
 
|-
 
|-
| 4 || GetWakeEventActiveFlagSet
+
| 4 || [1.0.0-6.2.0] GetWakeEventActiveFlagSet
 
|-
 
|-
| 5 || SetWakeEventActiveFlagSetForDebug
+
| 5 || [1.0.0-6.2.0] SetWakeEventActiveFlagSetForDebug
 
|-
 
|-
 
| 6 || SetWakePinDebugMode
 
| 6 || SetWakePinDebugMode
Line 25: Line 25:
 
|-
 
|-
 
| 9 || [5.0.0+] SetWakeEventActiveFlagSetForDebug2
 
| 9 || [5.0.0+] SetWakeEventActiveFlagSetForDebug2
 +
|-
 +
| 10 || [6.0.0+]
 
|}
 
|}
  
Line 30: Line 32:
 
{| class="wikitable sortable" border="1"
 
{| class="wikitable sortable" border="1"
 
|-
 
|-
! GpioPadName || GpioPadDescriptor || Tegra (port, pin) || Usage || Direction || Used by
+
! GpioPadName || GpioPadDescriptor || DeviceCode || Tegra (port, pin) || Usage || Direction || Used by (services) || Used by (hardware)
 +
|-
 +
| 0x01 || 0xCC || 0x33000002 || Z, 4 || Audio Codec (ALC5639) Power (CODEC_LDO_EN_TEMP) || Out || [[Audio services]], [[Fatal services]] || Icosa, Copper, Hoag, Iowa
 +
|-
 +
| 0x02 || 0x24 || 0x3C000001 || E, 4 || SDCard Power (POW_SD_EN) || Out || [[PCV services]] || Icosa, Copper, Hoag, Iowa, Calcio
 +
|-
 +
| 0x03 || 0x3C || 0x37000002 || H, 4 || Bluetooth Reset (BT_RST_PH4) || Out || [[Bluetooth Driver services]] || Icosa, Copper, Hoag, Iowa, Calcio
 +
|-
 +
| 0x04 || 0xDA || 0xC9000402 || BB, 2 || Secondary Boot Device Configration (RAM_CODE3) || In || || Icosa, Copper, Iowa
 +
|-
 +
| 0x05 || 0xDB || 0x3C000402 || BB, 3 || GcAsic Reset (GC_RST) || Out || [[Filesystem services]] || Icosa, Copper, Hoag, Iowa
 +
|-
 +
| 0x06 || 0xDC || 0x33000003 || BB, 4 || Audio Codec (ALC5639) Alert (CODEC_ALERT) || In || [[Audio services]] || Icosa, Copper, Hoag, Iowa
 +
|-
 +
| 0x07 || 0x25 || 0x3C000401 || E, 5 || GcAsic Power (POW_GC) || Out || || Icosa, Copper
 +
|-
 +
| 0x08 || 0x90 || 0x350000CA || S, 0 || Debug Pad Detect (DEBUG_CONTROLLER_DET) || In || [[HID services]] || Icosa, Copper, Iowa
 +
|-
 +
| 0x09 || 0x91 || 0x39000407 || S, 1 || Battery Charge Status (BATT_CHG_STATUS) || In || || Icosa, Copper, Hoag, Iowa
 +
|-
 +
| 0x0A || 0x96 || 0x39000003 || S, 6 || Charger IC (BQ24193) Charge Enable (BATT_CHG_ENABLE_N) || Out || [[PTM services]] || Icosa, Copper, Hoag, Iowa
 +
|-
 +
| 0x0B || 0x97 || 0x3D000002 || S, 7 || Fan Tachometer (FAN_TACH) || In || || Icosa, Copper, Hoag, Iowa, Calcio
 +
|-
 +
| 0x0C || 0x26 || 0x3500040B || E, 6 || Joy-Con(L) IsAttached (insertion, Joy-Con pin 5/console TX, pulled low on insert) (EXTCON_DET_S) || In || [[HID services]] || Icosa, Copper, Iowa
 +
|-
 +
| 0x0D || 0x05 || 0x39000401 || A, 5 || Fan and Joy-Con Rails Power (Battery - BQ24193 5V) (VDD50A_EN) || Out || [[PTM services]] || Icosa, Copper, Hoag, Iowa
 +
|-
 +
| 0x0E || 0x78 || 0xCA000402 || P, 0 || SDEV Coax Select (SDEV_COAX_SEL_1) || In || || Icosa, Copper, Iowa
 +
|-
 +
| 0x0F || 0x93 || 0x3C000403 || S, 3 || GcAsic Card Detect (GC_CD) || In || [[Filesystem services]] || Icosa, Copper, Hoag, Iowa
 +
|-
 +
| 0x10 || 0x7D || 0xC900040B || P, 5 || PROD_TYPE_0 || In || || Icosa, Copper, Iowa
 +
|-
 +
| 0x11 || 0x7C || 0xC900040C || P, 4 || PROD_TYPE_1 || In || || Icosa, Copper, Iowa
 
|-
 
|-
| 0x01 || 0xCC || Z, 4 || Audio Codec (ALC5639) Power || Out || Icosa, Hoag, [5.0.0+] Mariko <br>([[Audio services]], [[Fatal services]])
+
| 0x12 || 0x7B || 0xC900040D || P, 3 || PROD_TYPE_2 || In || || Icosa, Copper, Iowa
 
|-
 
|-
| 0x02 || 0x24 || E, 4 || SDCard Power || Out || Icosa, Copper, Hoag, [5.0.0+] Mariko <br>([[Filesystem services]])
+
| 0x13 || 0x7A || 0xC900040E || P, 2 || PROD_TYPE_3 || In || || Icosa, Copper, Iowa
 
|-
 
|-
| 0x03 || 0x3C || H, 4 || BT_RST_PH4 || Out || Icosa, Copper, Hoag, [5.0.0+] Mariko <br>([[Bluetooth Driver services]])
+
| 0x14 || 0xBC || 0x3E000002 || X, 4 || Temperature Sensor (TEMP_ALERT) || In || || Icosa, Copper, Hoag, Iowa, Calcio
 
|-
 
|-
| 0x04 || 0xDA || BB, 2 || || In || Icosa, Hoag, [5.0.0+] Mariko
+
| 0x15 || 0xAE || 0x33000004 || V, 6 || Audio Codec (ALC5639) Headphone Detect (CODEC_HP_DET_IRQ) || In || [[Audio services]] || Icosa, Copper, Hoag, Iowa
 
|-
 
|-
| 0x05 || 0xDB || BB, 3 || GcAsic Power || Out || Icosa, Copper, Hoag, [5.0.0+] Mariko <br>([[Filesystem services]])
+
| 0x16 || 0xBA || 0x35000041 || X, 2 || MOTION_INT_PX2 || In || || Icosa, Copper, Hoag, Iowa
 
|-
 
|-
| 0x06 || 0xDC || BB, 4 || Headphone Detect || In || Icosa, Hoag, [5.0.0+] Mariko <br>([[Audio services]])
+
| 0x17 || 0xB9 || 0x35000036 || X, 1 || TouchPanel IRQ (TP_IRQ) || In || [[HID services]] || Icosa, Copper, Hoag, Iowa
 
|-
 
|-
| 0x07 || 0x25 || E, 5 || || Out || Icosa, Copper, Hoag
+
| 0x18 || 0xBD || 0x35000001 || X, 5 || Power Button (BUTTON_POWER_ON_PX5) || In || || Icosa, Copper, Hoag, Iowa, Calcio
 
|-
 
|-
| 0x08 || 0x90 || S, 0 || DebugPadDriver || In || Icosa, Hoag, [5.0.0+] Mariko <br>([[HID services]])
+
| 0x19 || 0xBE || 0x35000002 || X, 6 || Volume Up (BUTTON_VOL_UP_PX6) || In || [[Boot2]], [[Audio services]] || Icosa, Copper, Hoag, Iowa, Calcio
 
|-
 
|-
| 0x09 || 0x91 || S, 1 || || In || Icosa, Hoag, [5.0.0+] Mariko
+
| 0x1A || 0xBF || 0x35000003 || X, 7 || Volume Down (BUTTON_VOL_DOWN_PX7) || In || [[Boot2]], [[Audio services]] || Icosa, Copper, Hoag, Iowa, Calcio
 
|-
 
|-
| 0x0A || 0x96 || S, 6 || Charger IC (BQ24193) Charge Enable || Out || Icosa, Hoag, [5.0.0+] Mariko <br>([[PTM services]])
+
| 0x1B || 0xC0 || 0x39000034 || Y, 0 || Fuel Gauge IC (MAX17050) IRQ (BATT_MGIC_IRQ) || In || [[PTM services]] || Icosa, Copper, Hoag, Iowa
 
|-
 
|-
| 0x0B || 0x97 || S, 7 || CPU fan sampling || In || Icosa, Hoag, [5.0.0+] Mariko
+
| 0x1C || 0xC1 || 0x35000004 || Y, 1 || Recovery Mode Key (BUTTON_HOME_PY1) || In || || Icosa, Copper, Hoag, Iowa, Calcio
 
|-
 
|-
| 0x0C || 0x26 || E, 6 || Joy-Con(L) IsAttached (insertion, Joy-Con pin 5/console TX, pulled low on insert?) || In || Icosa, Hoag, [5.0.0+] Mariko <br>([[HID services]])
+
| 0x1D || 0xA9 || 0x3400003E || V, 1 || Backlight Enable (LCD_BL_EN_PV1) || Out || [[NV services]], [[Backlight services]] || Icosa, Copper, Hoag, Iowa
 
|-
 
|-
| 0x0D || 0x05 || A, 5 || Fan enable (normal) || Out || Icosa, Hoag, [5.0.0+] Mariko <br>([[PTM services]])
+
| 0x1E || 0xAA || 0x34000033 || V, 2 || Backlight Reset (LCD_RST_PV2) || Out || [[NV services]] || Icosa, Copper, Hoag, Iowa
 
|-
 
|-
| 0x0E || 0x78 || P, 0 || SDMMC3_CLK_PP0? || In || Icosa, Hoag, [5.0.0+] Mariko
+
| 0x1F || 0x55 || 0x040000CC || K, 5 || USB-PD Controller (RHOM BM92T30MWV) VCONN Power (PD_VCONN_EN) || Out || [[PTM services]], [[USB services]] || Icosa, Copper, Hoag, Iowa
 
|-
 
|-
| 0x0F || 0x93 || S, 3 || GcAsic IRQ || In || Icosa, Copper, Hoag, [5.0.0+] Mariko <br>([[Filesystem services]])
+
| 0x20 || 0xAD || 0x040000CA || V, 5 || USB-PD Controller (RHOM BM92T30MWV) Reset (PD_RST) || Out || [[USB services]] || Icosa, Copper, Hoag, Iowa, Calcio
 
|-
 
|-
| 0x10 || 0x7D || P, 5 || SDMMC3_DAT0_PP5? || In || Icosa, Copper, Hoag, [5.0.0+] Mariko
+
| 0x21 || 0xC8 || 0x39000002 || Z, 0 || Charger IC (BQ24193) IRQ (BQ24193_IRQ) || In || [[PTM services]] || Icosa, Copper, Hoag, Iowa
 
|-
 
|-
| 0x11 || 0x7C || P, 4 || SDMMC3_DAT1_PP4? || In || Icosa, Copper, Hoag, [5.0.0+] Mariko
+
| 0x22 || 0xCA || 0xCA000401 || Z, 2 || SDEV Coax Select (SDEV_COAX_SEL_0) || In || || Icosa, Copper, Iowa
 
|-
 
|-
| 0x12 || 0x7B || P, 3 || SDMMC3_DAT2_PP3? || In || Icosa, Copper, Hoag, [5.0.0+] Mariko
+
| 0x23 || 0xCB || 0x3C000003 || Z, 3 || SDCard Write Protect (SD_WP) || In || || Icosa, Copper, Hoag, Iowa, Calcio
 
|-
 
|-
| 0x13 || 0x7A || P, 2 || SDMMC3_DAT3_PP2? || In || Icosa, Copper, Hoag, [5.0.0+] Mariko
+
| 0x24 || 0x4F || 0x35000035 || J, 7 || TouchPanel Reset (TP_RST) || Out || [[HID services]] || Icosa, Copper, Hoag, Iowa
 
|-
 
|-
| 0x14 || 0xBC || X, 4 || Temperature Sensor || In || Icosa, Copper, Hoag, [5.0.0+] Mariko
+
| 0x25 || 0x50 || 0x37000401 || K, 0 || BT_GPIO_2 || In || || Icosa, Copper, Hoag, Iowa, Calcio
 
|-
 
|-
| 0x15 || 0xAE || V, 6 || || In || Icosa, Hoag, [5.0.0+] Mariko <br>([[Audio services]])
+
| 0x26 || 0x51 || 0x37000402 || K, 1 || BT_GPIO_3 || In || || Icosa, Copper, Hoag, Iowa, Calcio
 
|-
 
|-
| 0x16 || 0xBA || X, 2 || MOTION_INT_PX2? || In || Icosa, Hoag, [5.0.0+] Mariko
+
| 0x27 || 0x52 || 0x37000403 || K, 2 || BT_GPIO_4 || In || || Icosa, Copper, Hoag, Iowa, Calcio
 
|-
 
|-
| 0x17 || 0xB9 || X, 1 || TouchPanel IRQ (TOUCH_INT_PX1) (unused - polled instead) || In || Icosa, Hoag, [5.0.0+] Mariko <br>([[HID services]])
+
| 0x28 || 0x54 || 0x040000CB || K, 4 || USB-PD Controller (RHOM BM92T30MWV) IRQ (PD_IRQ) || In || [[USB services]] || Icosa, Copper, Hoag, Iowa, Calcio
 
|-
 
|-
| 0x18 || 0xBD || X, 5 || Power Button (BUTTON_POWER_ON_PX5) || In || Icosa, Copper, Hoag, [5.0.0+] Mariko
+
| 0x29 || 0x56 || 0x3E000003 || K, 6 || POW_VCPU_INT || In || ||  Icosa, Copper, Hoag, Iowa, Calcio
 
|-
 
|-
| 0x19 || 0xBE || X, 6 || Volume Up (BUTTON_VOL_UP_PX6) || In || Icosa, Copper, Hoag, [5.0.0+] Mariko <br>([[Boot2]], [[Audio services]])
+
| 0x2A || 0x57 || 0x3E000004 || K, 7 || MAX77621_GPU_INT || In || || Icosa, Copper
 
|-
 
|-
| 0x1A || 0xBF || X, 7 || Volume Down (BUTTON_VOL_DOWN_PX7) || In || Icosa, Copper, Hoag, [5.0.0+] Mariko <br>([[Boot2]], [[Audio services]])
+
| 0x2B || 0x53 || 0x35000402 || K, 3 || Joy-Con(R) Charge (EXTCON_CHG_U) || Out || [[HID services]] || Icosa, Copper, Iowa
 
|-
 
|-
| 0x1B || 0xC0 || Y, 0 || Fuel Gauge IC (MAX17050) IRQ || In || Icosa, Hoag, [5.0.0+] Mariko <br>([[PTM services]])
+
| 0x2C || 0xE3 || 0x3500040C || CC, 3 || Joy-Con(L) Charge (EXTCON_CHG_S) || Out || [[HID services]] || Icosa, Copper, Iowa
 
|-
 
|-
| 0x1C || 0xC1 || Y, 1 || BUTTON_HOME_PY1 || In || Icosa, Copper, Hoag, [5.0.0+] Mariko
+
| 0x2D || 0x38 || 0x38000003 || H, 0 || WIFI_RF_DISABLE || Out || || Icosa, Copper, Hoag, Iowa, Calcio
 
|-
 
|-
| 0x1D || 0xA9 || V, 1 || Backlight Enable (LCD_BL_EN_PV1) || Out || Icosa, Hoag, [5.0.0+] Mariko <br>([[NV services]], [[Backlight services]])
+
| 0x2E || 0x39 || 0x38000002 || H, 1 || WiFi Reset (WIFI_RST_PH1) || Out || [[WLAN services]], [[PCIe services]] || Icosa, Copper, Hoag, Iowa, Calcio
 
|-
 
|-
| 0x1E || 0xAA || V, 2 || Backlight Reset (LCD_RST_PV2) || Out || Icosa, Hoag, [5.0.0+] Mariko <br>([[NV services]])
+
| 0x2F || 0x3B || 0x37000003 || H, 3 || AP_WAKE_BT_PH3 || Out || [[Bluetooth Driver services]] || Icosa, Copper, Hoag, Iowa, Calcio
 
|-
 
|-
| 0x1F || 0x55 || K, 5 || Charger IC (BQ24193) OTG charge select || Out || Icosa, Hoag, [5.0.0+] Mariko <br>([[PTM services]], [[USB services]])
+
| 0x30 || 0x3D || 0x37000004 || H, 5 || BT_WAKE_AP || In || || Icosa, Copper, Hoag, Iowa, Calcio
 
|-
 
|-
| 0x20 || 0xAD || V, 5 || USB-PD controller (RHOM BM92T30MWV) related || Out || Icosa, Copper, Hoag, [5.0.0+] Mariko <br>([[USB services]])
+
| 0x31 || 0x3F || 0x37000404 || H, 7 || BT_GPIO_5 || Out || || Icosa, Copper, Hoag, Iowa, Calcio
 
|-
 
|-
| 0x21 || 0xC8 || Z, 0 || Charger IC (BQ24193) IRQ || In || Icosa, Hoag, [5.0.0+] Mariko <br>([[PTM services]])
+
| 0x32 || 0x40 || 0x34000034 || I, 0 || Backlight +5V (LCD_VDD_P_EN) || Out || [[NV services]] || Icosa, Copper, Hoag, Iowa
 
|-
 
|-
| 0x22 || 0xCA || Z, 2 || || In || Icosa, Hoag, [5.0.0+] Mariko
+
| 0x33 || 0x41 || 0x34000035 || I, 1 || Backlight -5V (LCD_VDD_N_EN) || Out || [[NV services]] || Icosa, Copper, Hoag, Iowa
 
|-
 
|-
| 0x23 || 0xCB || Z, 3 || || In || Icosa, Copper, Hoag, [5.0.0+] Mariko
+
| 0x34 || 0x3E || 0x35000401 || H, 6 || Joy-Con(R) IsAttached (insertion, Joy-Con pin 5/console TX, pulled low on insert) (EXTCON_DET_U) || In || [[HID services]] || Icosa, Copper, Iowa
 
|-
 
|-
| 0x24 || 0x4F || J, 7 || TouchPanel reset || Out || Icosa, Hoag, [5.0.0+] Mariko <br>([[HID services]])
+
| 0x35 || 0xE2 || 0xC9000401 || CC, 2 || Secondary Boot Device Configration (RAM_CODE2) || In || || Icosa, Copper, Iowa
 
|-
 
|-
| 0x25 || 0x50 || K, 0 || || In || Icosa, Copper, Hoag, [5.0.0+] Mariko
+
| 0x36 || 0xE4 || 0x39000402 || CC, 4 || Fan and Joy-Con Rails Power (USB 5V) (VDD50B_EN) || Out || [[PTM services]] || Icosa, Copper, Iowa
 
|-
 
|-
| 0x26 || 0x51 || K, 1 || || In || Icosa, Copper, Hoag, [5.0.0+] Mariko
+
| 0x37 || 0x3A || 0x38000004 || H, 2 || WIFI_WAKE_HOST || In || || Icosa, Copper, Hoag, Iowa, Calcio
 
|-
 
|-
| 0x27 || 0x52 || K, 2 || || In || Icosa, Copper, Hoag, [5.0.0+] Mariko
+
| 0x38 || 0xC9 || 0x3C000002 || Z, 1 || SDCard Card Detect (SD_CD) || In || [[Filesystem services]] || Icosa, Copper, Hoag, Iowa, Calcio
 
|-
 
|-
| 0x28 || 0x54 || K, 4 || USB-PD controller (RHOM BM92T30MWV) IRQ || In || Icosa, Copper, Hoag, [5.0.0+] Mariko <br>([[USB services]])
+
| 0x39 || 0x4D || 0x39000404 || J, 5 || Charger IC (BQ24193) OTG Charge Select (OTG_FET_1) || Out || [[PTM services]], [[USB services]] || Icosa, Copper, Iowa
 
|-
 
|-
| 0x29 || 0x56 || K, 6 || || In || Icosa, Copper, Hoag, [5.0.0+] Mariko
+
| 0x3A || 0x58 || 0x39000405 || L, 0 || Charger IC (BQ24193) OTG Charge Select (OTG_FET_2) || Out || [[PTM services]], [[USB services]] || Icosa, Copper, Iowa
 
|-
 
|-
| 0x2A || 0x57 || K, 7 || || In || Icosa, Copper, Hoag
+
| 0x3B || 0x3E || 0x35000403 || H, 6 || Joy-Con(R) Wake Detect (EXTCON_DET_U) || In || || Icosa, Copper, Hoag, Iowa
 
|-
 
|-
| 0x2B || 0x53 || K, 3 || Joy-Con(R) NwcpDriver1.NwcpCharger || Out || Icosa, Hoag, [5.0.0+] Mariko <br>([[HID services]])
+
| 0x3C || 0x26 || 0x3500040D || E, 6 || Joy-Con(L) Wake Detect (EXTCON_DET_S) || In || || Icosa, Copper, Hoag, Iowa
 
|-
 
|-
| 0x2C || 0xE3 || CC, 3 || Joy-Con(L) NwcpDriver0.NwcpCharger || Out || Icosa, Hoag, [5.0.0+] Mariko <br>([[HID services]])
+
| 0x3D || -1 || 0x39000406 || || || || ||  
 
|-
 
|-
| 0x2D || 0x38 || H, 0 || WIFI_EN_PH0? || Out || Icosa, Copper, Hoag, [5.0.0+] Mariko
+
| 0x3E || 0x33 || 0x35000404 || G, 3 || Joy-Con(R) CTS (checked low) (EXT_UART2_CTS) || In || [[HID services]] ||
 
|-
 
|-
| 0x2E || 0x39 || H, 1 || WIFI_RST_PH1 || Out || Icosa, Copper, Hoag, [5.0.0+] Mariko <br>([[Wlan services]], [[PCIe services]])
+
| 0x3F || 0x1C || 0x3500040E || D, 4 || Joy-Con(L) CTS (checked low) (EXT_UART3_CTS) || In || [[HID services]] ||
 
|-
 
|-
| 0x2F || 0x3B || H, 3 || AP_WAKE_BT_PH3 || Out || Icosa, Copper, Hoag, [5.0.0+] Mariko <br>([[Bluetooth Driver services]])
+
| 0x40 || 0xD9 || 0x39000408 || BB, 1 || 5V Step-Down Regulator Power (5V_STEPDOWN_EN) || Out || || Copper
 
|-
 
|-
| 0x30 || 0x3D || H, 5 || || In || Icosa, Copper, Hoag, [5.0.0+] Mariko
+
| 0x41 || 0x0C || 0x04000401 || B, 4 || USB Root Port 2 Over Current (USB_B2_OC) || In || [[USB services]] || Copper
 
|-
 
|-
| 0x31 || 0x3F || H, 7 || || Out || Icosa, Copper, Hoag, [5.0.0+] Mariko
+
| 0x42 || 0x0D || 0x39000409 || B, 5 || 5V Step-Down Regulator Power Good Flag (5V_STEPDOWN_PG) || In || || Copper
 
|-
 
|-
| 0x32 || 0x40 || I, 0 || Backlight +5V || Out || Icosa, Hoag, [5.0.0+] Mariko <br>([[NV services]])
+
| 0x43 || 0x21 || 0x04000402 || E, 1 || USB Power (USB_A_EN) || Out || [[USB services]] || Copper
 
|-
 
|-
| 0x33 || 0x41 || I, 1 || Backlight -5V || Out || Icosa, Hoag, [5.0.0+] Mariko <br>([[NV services]])
+
| 0x44 || 0x27 || 0x04000403 || E, 7 || USB Power Flag (USB_A_FLAG) || In || [[USB services]] || Copper
 
|-
 
|-
| 0x34 || 0x3E || H, 6 || Joy-Con(R) IsAttached (insertion, Joy-Con pin 5/console TX, pulled low on insert?) || In || Icosa, Hoag, [5.0.0+] Mariko <br>([[HID services]])
+
| 0x45 || 0x92 || 0x04000404 || S, 2 || USB Root Port 3 Over Current (USB_B3_OC) || In || [[USB services]] || Copper
 
|-
 
|-
| 0x35 || 0xE2 || CC, 2 || || In || Icosa, Hoag, [5.0.0+] Mariko
+
| 0x46 || 0x95 || 0x04000405 || S, 5 || USB Root Port 3 Power (USB_B3_EN) || Out || [[USB services]] || Copper
 
|-
 
|-
| 0x36 || 0xE4 || CC, 4 || Fan enable (high power) || Out || Icosa, Hoag, [5.0.0+] Mariko <br>([[PTM services]])
+
| 0x47 || 0x98 || 0x04000406 || T, 0 || USB Root Port 2 Power (USB_B2_EN) || Out || [[USB services]] || Copper
 
|-
 
|-
| 0x37 || 0x3A || H, 2 || || In || Icosa, Copper, Hoag, [5.0.0+] Mariko
+
| 0x48 || 0x10 || 0x34000004 || C, 0 || HDMI 5V (HDMI_5V_EN) || Out || [[NV services]] || Copper, Calcio
 
|-
 
|-
| 0x38 || 0xC9 || Z, 1 || SDCard Card Detect || In || Icosa, Copper, Hoag, [5.0.0+] Mariko <br>([[Filesystem services]])
+
| 0x49 || 0x11 || 0x04000407 || C, 1 || USB Root Port 1 Power (USB_B1_EN) || Out || [[USB services]] || Copper, Calcio
 
|-
 
|-
| 0x39 || 0x4D || J, 5 || Charger IC (BQ24193) OTG charge select || Out || Icosa, Hoag, [5.0.0+] Mariko <br>([[PTM services]], [[USB services]])
+
| 0x4A || 0x12 || 0x34000005 || C, 2 || HDMI/Power Delivery Switch (HDMI_PD_TR_EN) || Out || [[NV services]] || Copper, Calcio
 
|-
 
|-
| 0x3A || 0x58 || L, 0 || Charger IC (BQ24193) OTG charge select || Out || Icosa, Hoag, [5.0.0+] Mariko <br>([[PTM services]], [[USB services]])
+
| 0x4B || 0x42 || 0x3D000003 || I, 2 || Fan Enable (FAN_EN) || Out || [[PTM services]] ||
 
|-
 
|-
| 0x3B || 0x3E || H, 6 || Joy-Con(R) NwcpDriver1.GpioMonitorTask0 duplicate? || In || Icosa, Hoag, [5.0.0+] Mariko
+
| 0x4C || 0xE6 || 0x04000408 || CC, 6 || USB Root Port 1 Over Current (USB_B1_OC) || In || [[USB services]] || Copper, Calcio
 
|-
 
|-
| 0x3C || 0x26 || E, 6 || Joy-Con(L) NwcpDriver1.GpioMonitorTask0 duplicate? || In || Icosa, Hoag, [5.0.0+] Mariko
+
| [2.0.0+] 0x4D || 0xAC || 0x3D000001 || V, 4 || Pulse-Width Modulation Fan Control (PWM_FAN) || Out || [[PTM services]] ||
 
|-
 
|-
| 0x3D || -1 || || || ||
+
| [2.0.0+] 0x4E || 0xE1 || 0x34000006 || CC, 1 || HDMI Hot Plug Detect (HDMI_INT_DP_HPD_PCC1) || In || [[NV services]] || Copper, Calcio
 
|-
 
|-
| 0x3E || 0x33 || G, 3 || Joy-Con(R) CTS (checked low) || In || None <br>([[HID services]])
+
| [5.0.0+] 0x4F || 0x56 || 0x3E000003 || K, 6 || MAX77812_IRQ || In || || Icosa, Copper, Hoag, Iowa, Calcio
 
|-
 
|-
| 0x3F || 0x1C || D, 4 || Joy-Con(L) CTS (checked low) || In || None <br>([[HID services]])
+
| [6.0.0+] 0x50 || 0x20 || 0xCA000001 || E, 0 || || Out || || Hoag, Calcio
 
|-
 
|-
| 0x40 || 0xD9 || BB, 1 || || Out || [2.0.0+] Copper
+
| [6.0.0+] 0x51 || 0x21 || 0xCA000002 || E, 1 || || Out || || Hoag, Calcio
 
|-
 
|-
| 0x41 || 0x0C || B, 4 || Lid Closed (unused) || In || [2.0.0+] Copper
+
| [6.0.0+] 0x52 || 0x22 || 0xCA000003 || E, 2 || || Out || || Hoag, Calcio
 
|-
 
|-
| 0x42 || 0x0D || B, 5 || || In || [2.0.0+] Copper
+
| [6.0.0+] 0x53 || 0x23 || 0xCA000004 || E, 3 || || Out || || Hoag, Calcio
 
|-
 
|-
| 0x43 || 0x21 || E, 1 || USB power || Out || [2.0.0+] Copper <br>([[USB services]])
+
| [6.0.0+] 0x54 || 0x4C || 0x36000004 || J, 4 || NFC_IRQ || In || [[NFC services]] || Hoag
 
|-
 
|-
| 0x44 || 0x27 || E, 7 || || In || [2.0.0+] Copper
+
| [6.0.0+] 0x55 || 0x57 || 0x36000003 || K, 7 || NFC_RST || Out || [[NFC services]] || Hoag
 
|-
 
|-
| 0x45 || 0x92 || S, 2 || || In || [2.0.0+] Copper
+
| [6.0.0+] 0x56 || 0x27 ([6.0.0-8.0.0] 0x94) || 0x35000415 || S, 4 || MCU_IRQ || In || || Hoag
 
|-
 
|-
| 0x46 || 0x95 || S, 5 || USB root port 4 power || Out || [2.0.0+] Copper <br>([[USB services]])
+
| [6.0.0+] 0x57 || 0x98 || 0x35000416 || T, 0 || MCU_BOOT || Out || [[HID services]] || Hoag
 
|-
 
|-
| 0x47 || 0x98 || T, 0 || USB root port 3 power || Out || [2.0.0+] Copper <br>([[USB services]])
+
| [6.0.0+] 0x58 || 0x99 || 0x35000417 || T, 1 || MCU_RST || Out || [[HID services]] || Hoag
 
|-
 
|-
| 0x48 || 0x10 || C, 0 || HdmiHotplug || Out || [2.0.0+] Copper <br>([[NV services]])
+
| [6.0.0+] 0x59 || 0xBB || 0x39000403 || X, 3 || Fan Power (5V3) (VDD5V3_EN) || Out || [[PTM services]] || Hoag, Iowa
 
|-
 
|-
| 0x49 || 0x11 || C, 1 || USB root port 2 power || Out || [2.0.0+] Copper <br>([[USB services]])
+
| [6.0.0+] 0x5A || 0xE5 || 0x35000418 || CC, 5 || MCU_POR || Out || [[HID services]] || Hoag
 
|-
 
|-
| 0x4A || 0x12 || C, 2 || HdmiHotplug || Out || [2.0.0+] Copper <br>([[NV services]])
+
| [6.0.0+] 0x5B || 0xAB || 0x35000005 || V, 3 || SioH Input (LCD_GPIO1_PV3)|| In || [[HID services]] || Hoag
 
|-
 
|-
| 0x4B || 0x42 || I, 2 || || Out || [2.0.0+] Copper
+
| [6.0.0+] 0x5C || 0x4E || 0x36000002 || J, 6 || NFC_EN || Out || [[NFC services]] || Hoag
 
|-
 
|-
| 0x4C || 0xE6 || CC, 6 || || In || [2.0.0+] Copper
+
| [7.0.0+] - || 0x32 || 0x35000406 || G, 2 || Joy-Con(R) RTS (EXT_UART2_RTS) || In || ||
 
|-
 
|-
| [2.0.0+] 0x4D || 0xAC || V, 4 || || Out || [2.0.0+] Copper
+
| [7.0.0+] - || 0x1B || 0x35000410 || D, 3 || Joy-Con(L) RTS (EXT_UART3_RTS) || In || ||  
 
|-
 
|-
| [2.0.0+] 0x4E || 0xE1 || CC, 1 || HdmiHotplug (HDMI_INT_DP_HPD_PCC1) || In || [2.0.0+] Copper <br>([[NV services]])
+
| [7.0.0+] - || 0x17 || 0x3500041B || C, 7 || || In || || Hoag
 
|-
 
|-
| [5.0.0+] 0x4F || 0x56 || K, 6 || || || None
+
| [7.0.0+] - || 0x18 || 0x3500041C || D, 0 || || In || || Hoag
 
|-
 
|-
| - || 0x32 || G, 2 || Joy-Con(R) RTS || || None
+
| [7.0.0+] - || 0x15 || 0x3500041D || C, 5 || || In || || Hoag
 
|-
 
|-
| - || 0x1B || D, 3 || Joy-Con(L) RTS || || None
+
| [7.0.0+] - || 0x16 || 0x3500041E || C, 6 || || In || || Hoag
 
|}
 
|}
  
Line 217: Line 253:
  
 
== OpenSession2 ==
 
== OpenSession2 ==
Same as [[#OpenSession]] but takes a '''DeviceCode''' instead of a '''GpioPadName'''.
+
Same as [[#OpenSession]] but takes a '''DeviceCode''' instead of a '''GpioPadName''' and an u32 '''DeviceUnk'''.
  
 
== IPadSession ==
 
== IPadSession ==
Line 259: Line 295:
 
|-
 
|-
 
| 16 || [4.0.0+] SetValueForSleepState
 
| 16 || [4.0.0+] SetValueForSleepState
 +
|-
 +
| 17 || [6.0.0+] GetValueForSleepState
 
|}
 
|}
  
Line 272: Line 310:
 
| 1 || [[#OpenSession_2|OpenSession]]
 
| 1 || [[#OpenSession_2|OpenSession]]
 
|-
 
|-
| 2 || [[#HasDevice|HasDevice]]
+
| [1.0.0-5.1.0] 2 || [[#HasDevice|HasDevice]]
 +
|-
 +
| [1.0.0-5.1.0] 3 || [[#HasDeviceForDev|HasDeviceForDev]]
 
|-
 
|-
| 3 || [[#HasDeviceForDev|HasDeviceForDev]]
+
| 4 || [6.0.0+] [[#OpenSession2_2|OpenSession2]]
 
|}
 
|}
  
Line 280: Line 320:
 
{| class="wikitable sortable" border="1"
 
{| class="wikitable sortable" border="1"
 
|-
 
|-
! I2cDevice || Port:Addr || Is10bit || Speed || Max Retries || Retry Delay || Usage || Used by
+
! Name || DeviceCode || Port:Addr || Is10bit || Speed || Max Retries || Retry Delay || Usage || Used by (services) || Used by (hardware)
 +
|-
 +
|  0 || 0x350000C9 || 0:52 || N || 100000 || 0 ||      0 || DebugPadDriver || [[HID services]] || Icosa, Copper, Iowa
 +
|-
 +
|  1 || 0x35000033 || 2:49 || N || 400000 || 0 ||      0 || TouchPanel || [[HID services]] || Icosa, Copper, Hoag, Iowa
 
|-
 
|-
0 || 0:52 || N || 100000 || 0 ||      0 || DebugPadDriver || [[HID services]]
+
2 || 0x3E000001 || 0:4c || N || 100000 || 0 ||      0 || Temperature Sensor (TMP451 or NCT72) || [[PTM services]] || Icosa, Copper, Hoag, Iowa, Calcio
 
|-
 
|-
1 || 2:49 || N || 400000 || 0 ||      0 || TouchPanel || [[HID services]]
+
3 || 0x3E000001 || 0:4c || N || 100000 || 0 ||      0 || Temperature Sensor (TMP451 or NCT72) (duplicate) || [[PTM services]] || Icosa, Copper, Hoag, Iowa, Calcio
 
|-
 
|-
2 || 0:4c || N || 100000 || 0 ||      0 || Temperature Sensor (TMP451 or NCT72) || [[PTM services]]
+
4 || 0x33000001 || 0:1c || N || 100000 || 0 ||      0 || Audio Codec (ALC5639) || [[Audio services]], [[Fatal services]] || Icosa, Copper, Hoag, Iowa
 
|-
 
|-
3 || 0:4c || N || 100000 || 0 ||       0 || Temperature Sensor (TMP451 or NCT72) (duplicate) ||
+
5 || 0x3B000001 || 4:68 || N || 400000 || 3 || 5000000 || PMIC RTC (max77620_rtc0), max77620_irq0 || [[PCV services]] || Icosa, Copper
 
|-
 
|-
4 || 0:1c || N || 100000 || 0 ||       0 || Audio Codec (ALC5639) || [[Audio services]], [[Fatal services]]
+
6 || 0x3A000001 || 4:3c || N || 400000 || 3 || 5000000 || PMIC (MAX77620), max77620_irq0 || [[PCV services]] || Icosa, Copper
 
|-
 
|-
5 || 4:68 || N || 400000 || 3 || 5000000 || PMIC RTC (max77620_rtc0), max77620_irq0 || [[PCV services]]
+
7 || 0x3A000003 || 4:1b || N || 400000 || 3 || 5000000 || Sub-PMIC for CPU (max77621_cpu) || [[PCV services]] || Icosa, Copper
 
|-
 
|-
6 || 4:3c || N || 400000 || 3 || 5000000 || PMIC (MAX77620), max77620_irq0 || [[PCV services]]
+
8 || 0x3A000004 || 4:1c || N || 400000 || 3 || 5000000 || Sub-PMIC for GPU (max77621_gpu) || [[PCV services]] || Icosa, Copper
 
|-
 
|-
7 || 4:1b || N || 400000 || 3 || 5000000 || Sub-PMIC for CPU (max77621_cpu) || [[PCV services]]
+
9 || 0x39000001 || 0:6b || N || 100000 || 3 || 5000000 || Charger IC (BQ24193) || [[PTM services]] || Icosa, Copper, Hoag, Iowa
 
|-
 
|-
| 8 || 4:1c || N || 400000 || 3 || 5000000 || Sub-PMIC for GPU (max77621_gpu) || [[PCV services]]
+
| 10 || 0x39000033 || 0:36 || N || 100000 || 3 || 5000000 || Fuel Gauge IC (MAX17050) || [[PTM services]], [[PCV services]] || Icosa, Copper, Hoag, Iowa
 
|-
 
|-
| 9 || 0:6b || N || 100000 || 3 || 5000000 || Charger IC (BQ24193) || [[PTM services]]
+
| 11 || 0x040000C9 || 0:18 || N || 100000 || 3 || 5000000 || USB-PD controller (RHOM BM92T30MWV) || [[USB services]] || Icosa, Copper, Hoag, Iowa, Calcio
 
|-
 
|-
| 10 || 0:36 || N || 100000 || 3 || 5000000 || Fuel Gauge IC (MAX17050) || [[PCV services]], [[PTM services]]
+
| 12 || 0x3F000401 || 1:40 || N || 400000 || 3 || 5000000 || Power Monitor (ina226_V_VDD15V0-HB) || || Factory
 
|-
 
|-
| 11 || 0:18 || N || 100000 || 3 || 5000000 || USB-PD controller (RHOM BM92T30MWV) || [[USB services]]
+
| 13 || 0x3F000001 || 1:41 || N || 400000 || 3 || 5000000 || Power Monitor (ina226_V_VSYS-CPU-DS) || || Factory
 
|-
 
|-
| 12 || 1:40 || N || 400000 || 3 || 5000000 || Power Monitor (ina226_V_VDD15V0-HB) || Factory testing
+
| 14 || 0x3F000002 || 1:44 || N || 400000 || 3 || 5000000 || Power Monitor (ina226_V_VSYS-GPU-DS) || || Factory
 
|-
 
|-
| 13 || 1:41 || N || 400000 || 3 || 5000000 || Power Monitor (ina226_V_VSYS-CPU-DS) || Factory testing
+
| 15 || 0x3F000003 || 1:45 || N || 400000 || 3 || 5000000 || Power Monitor (ina226_V_VSYS-DDR-DS) || || Factory
 
|-
 
|-
| 14 || 1:44 || N || 400000 || 3 || 5000000 || Power Monitor (ina226_V_VSYS-GPU-DS) || Factory testing
+
| 16 || 0x3F000402 || 1:46 || N || 400000 || 3 || 5000000 || Power Monitor (ina226_V_VSYS-AP) || || Factory
 
|-
 
|-
| 15 || 1:45 || N || 400000 || 3 || 5000000 || Power Monitor (ina226_V_VSYS-DDR-DS) || Factory testing
+
| 17 || 0x3F000403 || 1:47 || N || 400000 || 3 || 5000000 || Power Monitor (ina226_V_VSYS-BL-DS) || || Factory
 
|-
 
|-
| 16 || 1:46 || N || 400000 || 3 || 5000000 || Power Monitor (ina226_V_VSYS-AP) || Factory testing
+
| 18 || 0x35000047 || 1:29 || N || 400000 || 3 || 5000000 || Ambient Light Sensor (BH1730) || [[Backlight services]] || Icosa, Copper, Hoag, Iowa
 
|-
 
|-
| 17 || 1:47 || N || 400000 || 3 || 5000000 || Power Monitor (ina226_V_VSYS-BL-DS) || Factory testing
+
| 19 || 0x3F000404 || 1:48 || N || 400000 || 3 || 5000000 || Power Monitor (ina226_CORE) || || Factory
 
|-
 
|-
| 18 || 1:29 || N || 400000 || 3 || 5000000 || Ambient Light Sensor (BH1730) || [[Backlight services]]
+
| 20 || 0x3F000405 || 1:49 || N || 400000 || 3 || 5000000 || Power Monitor (ina226_Soc-1V8) || || Factory
 
|-
 
|-
| 19 || 1:48 || N || 400000 || 3 || 5000000 || Power Monitor (ina226_CORE) || Factory testing
+
| 21 || 0x3F000406 || 1:4a || N || 400000 || 3 || 5000000 || Power Monitor (ina226_LPDDR4-1V8) || || Factory
 
|-
 
|-
| 20 || 1:49 || N || 400000 || 3 || 5000000 || Power Monitor (ina226_Soc-1V8) || Factory testing
+
| 22 || 0x3F000407 || 1:4b || N || 400000 || 3 || 5000000 || Power Monitor (ina226_REG1V32) || || Factory
 
|-
 
|-
| 21 || 1:4a || N || 400000 || 3 || 5000000 || Power Monitor (ina226_LPDDR4-1V8) || Factory testing
+
| 23 || 0x3F000408 || 1:4d || N || 400000 || 3 || 5000000 || Power Monitor (ina226_VDD3V3-SYS) || || Factory
 
|-
 
|-
| 22 || 1:4b || N || 400000 || 3 || 5000000 || Power Monitor (ina226_REG1V32) || Factory testing
+
| [2.0.0+] 24 || 0x34000001 || 3:50 || N || 100000 || 0 ||      0 || HDMI DDC || [[NV services]] || Copper, Calcio
 
|-
 
|-
| 23 || 1:4d || N || 400000 || 3 || 5000000 || Power Monitor (ina226_VDD3V3-SYS) || Factory testing
+
| [2.0.0+] 25 || 0x34000002 || 3:54 || N || 100000 || 0 ||      0 || HDMI SCDC || [[NV services]] || Copper, Calcio
 
|-
 
|-
| 24 || 3:50 || N || 100000 || 0 ||      0 || HDMI DDC || [[NV services]]
+
| [2.0.0+] 26 || 0x34000003 || 3:3a || N || 100000 || 0 ||      0 || HDMI HDCP || [[NV services]] || Copper, Calcio
 
|-
 
|-
| 25 || 3:54 || N || 100000 || 0 ||      0 || HDMI SCDC || [[NV services]]
+
| [4.0.0+] 27 || 0x3A000005 || 4:52 ([4.0.0-8.0.0] 4:a4) || N || 400000 || 0 ||      0 || Buck Regulator (FAN53528) || || Hoag, Iowa, Calcio
 
|-
 
|-
| 26 || 3:3a || N || 100000 || 0 ||      0 || DisplayHdmiHotplugHandler || [[NV services]]
+
| [4.0.0+] 28 || 0x3A000002 || 4:33 ([4.0.0-8.0.0] 4:31) || N || 400000 || 0 ||      0 || PMIC (MAX77812) || [[PCV services]] || Hoag, Iowa, Calcio
 +
|-
 +
| [4.0.0+] 29 || 0x3A000002 || 4:33 ([4.0.0-8.0.0] 4:31) || N || 400000 || 0 ||      0 || PMIC (MAX77812) || [[PCV services]] || Hoag, Iowa, Calcio
 +
|-
 +
| [4.0.0+] 30 || 0x3F000409 || 1:4e || N || 400000 || 3 || 5000000 || Power Monitor (ina226_V_VDD-DDR-0V6) || || Factory
 +
|-
 +
| [8.0.0+] 31 || 0x36000001 || 1:08 || N || 400000 || 3 || 5000000 || NFC IC || || Hoag
 
|}
 
|}
  
Line 348: Line 398:
 
== HasDeviceForDev ==
 
== HasDeviceForDev ==
 
Takes an u32 '''port''', an u16 '''addr''', an '''AddressingMode''' (1 for 10-bit, 0 otherwise) and a '''SpeedMode''' (400000 or 100000). Returns true if the device exists or false otherwise.
 
Takes an u32 '''port''', an u16 '''addr''', an '''AddressingMode''' (1 for 10-bit, 0 otherwise) and a '''SpeedMode''' (400000 or 100000). Returns true if the device exists or false otherwise.
 +
 +
== OpenSession2 ==
 +
Same as [[#OpenSession_2|OpenSession]] but takes a '''DeviceCode''' instead of a '''I2cDevice'''.
  
 
== II2cSession ==
 
== II2cSession ==
Line 356: Line 409:
 
! Cmd || Name
 
! Cmd || Name
 
|-
 
|-
| 0 || Send
+
| [1.0.0-5.1.0] 0 || Send
 
|-
 
|-
| 1 || Receive
+
| [1.0.0-5.1.0] 1 || Receive
 
|-
 
|-
| 2 || ExecuteCommandList
+
| [1.0.0-5.1.0] 2 || ExecuteCommandList
 
|-
 
|-
| 10 || SendAuto
+
| 10 || [[#SendAuto]]
 
|-
 
|-
 
| 11 || ReceiveAuto
 
| 11 || ReceiveAuto
 
|-
 
|-
| 12 || ExecuteCommandListAuto
+
| 12 || [[#ExecuteCommandListAuto]]
 +
|-
 +
| 13 || [6.0.0+]
 
|}
 
|}
 +
 +
== SendAuto ==
 +
Takes bytes to write in either a static buffer or a receive buffer, returns an error code for success
 +
 +
== ExecuteCommandListAuto ==
 +
Takes a command list from either a static buffer or a receive buffer, returns data in either a static (or recieve?) buffer.
 +
 +
=== Commands ===
 +
* 0x40 [u8 len] <bytes> - Write bytes to device
 +
* 0xC1 [u8 len] - Receive bytes from device
  
 
= uart =
 
= uart =
Line 376: Line 441:
 
! Cmd || Name
 
! Cmd || Name
 
|-
 
|-
| 0 || [[#DoesUartExist]]
+
| 0 || [[#HasPort]]
 +
|-
 +
| 1 || [[#HasPortForDev]]
 +
|-
 +
| 2 || [[#IsSupportedBaudRate]]
 
|-
 
|-
| 1 || DoesUartExistForTest
+
| 3 || [[#IsSupportedBaudRateForDev]]
 
|-
 
|-
| 2 || [[#SetUartBaudrate]]
+
| 4 || [[#IsSupportedFlowControlMode]]
 
|-
 
|-
| 3 || SetUartBaudrateForTest
+
| 5 || [[#IsSupportedFlowControlModeForDev]]
 
|-
 
|-
| 4 || [[#IsSomethingUartValid]]
+
| 6 || [[#CreatePortSession]]
 
|-
 
|-
| 5 || IsSomethingUartValidForTest
+
| 7 || [[#IsSupportedPortEvent]]
 
|-
 
|-
| 6 || [[#GetSession]]
+
| 8 || [[#IsSupportedPortEventForDev]]
 
|-
 
|-
| 7 || IsSomethingUartValid2
+
| 9 || [7.0.0+] [[#IsSupportedDevice]]
 
|-
 
|-
| 8 || IsSomethingUartValid2ForTest
+
| 10 || [7.0.0+] [[#IsSupportedDeviceForDev]]
 
|}
 
|}
  
== DoesUartExist ==
+
== HasPort ==
Takes a u32 [[#UartPort]] and returns boolean success value
+
Takes an u32 [[#UartPort]]. Returns a boolean success value.
 +
 
 +
== HasPortForDev ==
 +
Takes an u32 [[#UartPortForDev]]. Returns a boolean success value.
 +
 
 +
== IsSupportedBaudRate ==
 +
Takes an u32 [[#UartPort]] and an u32 '''BaudRate'''. Returns a boolean success value.
 +
 
 +
Supported baud rates are 57600, 115200, 1000000 and 3000000.
 +
 
 +
== IsSupportedBaudRateForDev ==
 +
Takes an u32 [[#UartPortForDev]] and an u32 '''BaudRate'''. Returns a boolean success value.
  
== SetUartBaudrate ==
+
Supported baud rates are 57600, 115200, 1000000 and 3000000.
Takes a u32 [[#UartPort]] and a u32 baudrate and returns boolean success value
 
  
== IsSomethingUartValid ==
+
== IsSupportedFlowControlMode ==
Takes a u32 [[#UartPort]] and returns boolean success value
+
Takes an u32 [[#UartPort]] and an u32 '''FlowControlMode'''. Returns a boolean success value.
  
== GetSession ==
+
Supported modes are 0 (RTS) and 1 (CTS).
Takes a u32 [[#UartPort]] and returns an [[#IPortSession]]
+
 
 +
== IsSupportedFlowControlModeForDev ==
 +
Takes an u32 [[#UartPortForDev]] and an u32 '''FlowControlMode'''. Returns a boolean success value.
 +
 
 +
Supported modes are 0 (RTS) and 1 (CTS).
 +
 
 +
== CreatePortSession ==
 +
No input. Returns an [[#IPortSession]].
 +
 
 +
== IsSupportedPortEvent ==
 +
Takes an u32 [[#UartPort]] and an u32 '''PortEvent'''. Returns a boolean success value.
 +
 
 +
Supported events are 0 (data), 1 (break), 2 (unknown) and 3 (unknown).
 +
 
 +
== IsSupportedPortEventForDev ==
 +
Takes an u32 [[#UartPortForDev]] and an u32 '''PortEvent'''. Returns a boolean success value.
 +
 
 +
Supported events are 0 (data), 1 (break), 2 (unknown) and 3 (unknown).
 +
 
 +
== IsSupportedDevice ==
 +
Takes an u32 [[#UartPort]] and an u32 '''Device'''. Returns a boolean success value.
 +
 
 +
Supported devices are 0 (Bluetooth) for UART-D, 0 (Joy-Con(R)) for UART-B, 0 (Joy-Con(L)) and 1 (MCU) for UART-C.
 +
 
 +
== IsSupportedDeviceForDev ==
 +
Takes an u32 [[#UartPortForDev]] and an u32 '''Device'''. Returns a boolean success value.
 +
 
 +
Supported devices are 0 (Bluetooth) for UART-D, 0 (Joy-Con(R)) for UART-B, 0 (Joy-Con(L)) and 1 (MCU) for UART-C.
  
 
== UartPort ==
 
== UartPort ==
 
{| class="wikitable sortable" border="1"
 
{| class="wikitable sortable" border="1"
 
|-
 
|-
! Name || Port || Usage
+
! Name || DeviceCode (internal) || DeviceCode (mapped) || Port || Usage
 +
|-
 +
| 0 || 0x03000001 || || UART-A || Invalid
 +
|-
 +
| 1 || 0x03000004 || 0x37000001 || UART-D || Bluetooth
 +
|-
 +
| 2 || 0x03000002 || 0x35000405 || UART-B || Joy-Con(R)
 +
|-
 +
| 3 || 0x03000003 || 0x3500040F || UART-C || Joy-Con(L)
 +
|-
 +
| 4 || 0x03000003 || 0x35000419 || UART-C || MCU
 +
|}
 +
 
 +
== UartPortForDev ==
 +
{| class="wikitable sortable" border="1"
 +
|-
 +
! Name || DeviceCode (internal) || DeviceCode (mapped) || Port || Usage
 
|-
 
|-
| 1 || UART-D || Bluetooth
+
| 0 || 0x03000001 || || UART-A || Invalid
 
|-
 
|-
| 2 || UART-B || Joy-Con(R)
+
| 1 || 0x03000002 || 0x35000405 || UART-B || Joy-Con(R)
 
|-
 
|-
| 3 || UART-C || Joy-Con(L)
+
| 2 || 0x03000003 || 0x3500040F || UART-C || Joy-Con(L)
 +
|-
 +
| 3 || 0x03000004 || 0x37000001 || UART-D || Bluetooth
 
|}
 
|}
  
Line 426: Line 550:
 
! Cmd || Name
 
! Cmd || Name
 
|-
 
|-
| 0 || OpenSession
+
| 0 || [[#OpenPort]]
 
|-
 
|-
| 1 || OpenSessionForTest
+
| 1 || [[#OpenPortForDev]]
 
|-
 
|-
| 2 ||
+
| 2 || GetWritableLength
 
|-
 
|-
| 3 ||
+
| 3 || Send
 
|-
 
|-
| 4 ||
+
| 4 || GetReadableLength
 
|-
 
|-
| 5 ||
+
| 5 || Receive
 
|-
 
|-
| 6 ||
+
| 6 || BindPortEvent
 
|-
 
|-
| 7 ||
+
| 7 || UnbindPortEvent
 
|}
 
|}
  
=== Port Mapping ===
+
=== OpenPort ===
OpenSession translates user IDs to to the [[#UartPort]] index.
+
Takes an u32 [[#UartPort]], 3 u32s, 2 copy handles and 4 u8s (each padded to u32). Returns a boolean success value.
 +
 
 +
[7.0.0+] Now takes an additional u64.
 +
 
 +
=== OpenPortForDev ===
 +
Takes an u32 [[#UartPortForDev]], 3 u32s, 2 copy handles and 4 u8s (each padded to u32). Returns a boolean success value.
  
OpenSessionForTest takes the port index verbatim.
+
[7.0.0+] Now takes an additional u64.
  
 
= pwm =
 
= pwm =
Line 458: Line 587:
 
|-
 
|-
 
| 1 || OpenSession
 
| 1 || OpenSession
 +
|-
 +
| 2 || [6.0.0+] OpenSession2
 
|}
 
|}
  
Line 463: Line 594:
 
{| class="wikitable sortable" border="1"
 
{| class="wikitable sortable" border="1"
 
|-
 
|-
! Name || Interface || Usage || Used by
+
! Name || DeviceCode || Interface || Usage || Used by
 
|-
 
|-
| 1 || PWM Channel 1 || Fan || [[PTM services]]
+
| 1 || 0x3D000001 || PWM Channel 1 || Fan || [[PTM_services#fan|PTM services]]
 
|-
 
|-
| 2 || PWM Channel 0 || Backlight || [[Backlight services]], [[NV services]]
+
| 2 || 0x3400003D || PWM Channel 0 || Backlight || [[Backlight services]], [[NV services]]
 
|-
 
|-
| 3 || PMC Blinker || ||
+
| 3 || 0x35000065 || PMC LED Soft Blink || Led || [[Bus services#led|Bus services]]
 
|}
 
|}
  
Line 490: Line 621:
 
|-
 
|-
 
| 5 || GetEnabled
 
| 5 || GetEnabled
 +
|-
 +
| 6 || [6.0.0+]
 +
|-
 +
| 7 || [6.0.0+]
 
|}
 
|}
  
Line 518: Line 653:
 
= sasbus =
 
= sasbus =
 
This is "nn::sasbus::IManager".
 
This is "nn::sasbus::IManager".
 +
 +
This was added with [3.0.0+].
  
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 523: Line 660:
 
! Cmd || Name
 
! Cmd || Name
 
|-
 
|-
| 0 || OpenSession
+
| 0 || [[#OpenSession_3|OpenSession]]
 
|}
 
|}
 +
 +
== OpenSession ==
 +
Takes an u32 that must be 0 and returns an [[#ISession_2|ISession]].
 +
 +
This opens a session for communicating over SPI4. While code exists to support both SPI1 and SPI4 communication, SPI4 is currently hardcoded as the only available interface.
  
 
== ISession ==
 
== ISession ==
 
This is "nn::sasbus::ISession".
 
This is "nn::sasbus::ISession".
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name
 +
|-
 +
| 0 || [[#Write]]
 +
|-
 +
| 1 || [[#Read]]
 +
|-
 +
| 2 || [[#StartPeriodicReceiveMode]]
 +
|-
 +
| 3 || [[#StopPeriodicReceiveMode]]
 +
|}
 +
 +
=== Write ===
 +
Takes a type-0x21 input buffer and an u8 '''SpiCommand'''. No output.
 +
 +
=== Read ===
 +
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.
 +
 +
= led =
 +
This is "nn::led::detail::IManager".
 +
 +
This was added with [9.0.0+].
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name
 +
|-
 +
| 0 || OpenController
 +
|}
 +
 +
== IController ==
 +
This is "nn::led::detail::IController".
  
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 540: Line 722:
 
|-
 
|-
 
| 3 ||  
 
| 3 ||  
 +
|-
 +
| 4 ||
 +
|-
 +
| 5 ||
 +
|-
 +
| 6 ||
 +
|-
 +
| 7 ||
 +
|-
 +
| 8 ||
 +
|-
 +
| 9 ||
 +
|-
 +
| 10 ||
 +
|-
 +
| 11 ||
 +
|-
 +
| 12 ||
 +
|-
 +
| 13 ||
 +
|-
 +
| 14 ||
 +
|-
 +
| 15 ||
 +
|-
 +
| 16 ||
 +
|-
 +
| 17 ||
 +
|-
 +
| 18 ||
 +
|-
 +
| 19 ||
 +
|-
 +
| 20 ||
 +
|-
 +
| 21 ||
 
|}
 
|}
  
 
[[Category:Services]]
 
[[Category:Services]]

Latest revision as of 21:25, 6 November 2019

gpio

This is "nn::gpio::IManager".

Cmd Name
0 #OpenSessionForDev
1 #OpenSession
2 #OpenSessionForTest
3 [1.0.0-6.2.0] IsWakeEventActive
4 [1.0.0-6.2.0] GetWakeEventActiveFlagSet
5 [1.0.0-6.2.0] SetWakeEventActiveFlagSetForDebug
6 SetWakePinDebugMode
7 [5.0.0+] #OpenSession2
8 [5.0.0+] IsWakeEventActive2
9 [5.0.0+] SetWakeEventActiveFlagSetForDebug2
10 [6.0.0+]

Known Devices

GpioPadName GpioPadDescriptor DeviceCode Tegra (port, pin) Usage Direction Used by (services) Used by (hardware)
0x01 0xCC 0x33000002 Z, 4 Audio Codec (ALC5639) Power (CODEC_LDO_EN_TEMP) Out Audio services, Fatal services Icosa, Copper, Hoag, Iowa
0x02 0x24 0x3C000001 E, 4 SDCard Power (POW_SD_EN) Out PCV services Icosa, Copper, Hoag, Iowa, Calcio
0x03 0x3C 0x37000002 H, 4 Bluetooth Reset (BT_RST_PH4) Out Bluetooth Driver services Icosa, Copper, Hoag, Iowa, Calcio
0x04 0xDA 0xC9000402 BB, 2 Secondary Boot Device Configration (RAM_CODE3) In Icosa, Copper, Iowa
0x05 0xDB 0x3C000402 BB, 3 GcAsic Reset (GC_RST) Out Filesystem services Icosa, Copper, Hoag, Iowa
0x06 0xDC 0x33000003 BB, 4 Audio Codec (ALC5639) Alert (CODEC_ALERT) In Audio services Icosa, Copper, Hoag, Iowa
0x07 0x25 0x3C000401 E, 5 GcAsic Power (POW_GC) Out Icosa, Copper
0x08 0x90 0x350000CA S, 0 Debug Pad Detect (DEBUG_CONTROLLER_DET) In HID services Icosa, Copper, Iowa
0x09 0x91 0x39000407 S, 1 Battery Charge Status (BATT_CHG_STATUS) In Icosa, Copper, Hoag, Iowa
0x0A 0x96 0x39000003 S, 6 Charger IC (BQ24193) Charge Enable (BATT_CHG_ENABLE_N) Out PTM services Icosa, Copper, Hoag, Iowa
0x0B 0x97 0x3D000002 S, 7 Fan Tachometer (FAN_TACH) In Icosa, Copper, Hoag, Iowa, Calcio
0x0C 0x26 0x3500040B E, 6 Joy-Con(L) IsAttached (insertion, Joy-Con pin 5/console TX, pulled low on insert) (EXTCON_DET_S) In HID services Icosa, Copper, Iowa
0x0D 0x05 0x39000401 A, 5 Fan and Joy-Con Rails Power (Battery - BQ24193 5V) (VDD50A_EN) Out PTM services Icosa, Copper, Hoag, Iowa
0x0E 0x78 0xCA000402 P, 0 SDEV Coax Select (SDEV_COAX_SEL_1) In Icosa, Copper, Iowa
0x0F 0x93 0x3C000403 S, 3 GcAsic Card Detect (GC_CD) In Filesystem services Icosa, Copper, Hoag, Iowa
0x10 0x7D 0xC900040B P, 5 PROD_TYPE_0 In Icosa, Copper, Iowa
0x11 0x7C 0xC900040C P, 4 PROD_TYPE_1 In Icosa, Copper, Iowa
0x12 0x7B 0xC900040D P, 3 PROD_TYPE_2 In Icosa, Copper, Iowa
0x13 0x7A 0xC900040E P, 2 PROD_TYPE_3 In Icosa, Copper, Iowa
0x14 0xBC 0x3E000002 X, 4 Temperature Sensor (TEMP_ALERT) In Icosa, Copper, Hoag, Iowa, Calcio
0x15 0xAE 0x33000004 V, 6 Audio Codec (ALC5639) Headphone Detect (CODEC_HP_DET_IRQ) In Audio services Icosa, Copper, Hoag, Iowa
0x16 0xBA 0x35000041 X, 2 MOTION_INT_PX2 In Icosa, Copper, Hoag, Iowa
0x17 0xB9 0x35000036 X, 1 TouchPanel IRQ (TP_IRQ) In HID services Icosa, Copper, Hoag, Iowa
0x18 0xBD 0x35000001 X, 5 Power Button (BUTTON_POWER_ON_PX5) In Icosa, Copper, Hoag, Iowa, Calcio
0x19 0xBE 0x35000002 X, 6 Volume Up (BUTTON_VOL_UP_PX6) In Boot2, Audio services Icosa, Copper, Hoag, Iowa, Calcio
0x1A 0xBF 0x35000003 X, 7 Volume Down (BUTTON_VOL_DOWN_PX7) In Boot2, Audio services Icosa, Copper, Hoag, Iowa, Calcio
0x1B 0xC0 0x39000034 Y, 0 Fuel Gauge IC (MAX17050) IRQ (BATT_MGIC_IRQ) In PTM services Icosa, Copper, Hoag, Iowa
0x1C 0xC1 0x35000004 Y, 1 Recovery Mode Key (BUTTON_HOME_PY1) In Icosa, Copper, Hoag, Iowa, Calcio
0x1D 0xA9 0x3400003E V, 1 Backlight Enable (LCD_BL_EN_PV1) Out NV services, Backlight services Icosa, Copper, Hoag, Iowa
0x1E 0xAA 0x34000033 V, 2 Backlight Reset (LCD_RST_PV2) Out NV services Icosa, Copper, Hoag, Iowa
0x1F 0x55 0x040000CC K, 5 USB-PD Controller (RHOM BM92T30MWV) VCONN Power (PD_VCONN_EN) Out PTM services, USB services Icosa, Copper, Hoag, Iowa
0x20 0xAD 0x040000CA V, 5 USB-PD Controller (RHOM BM92T30MWV) Reset (PD_RST) Out USB services Icosa, Copper, Hoag, Iowa, Calcio
0x21 0xC8 0x39000002 Z, 0 Charger IC (BQ24193) IRQ (BQ24193_IRQ) In PTM services Icosa, Copper, Hoag, Iowa
0x22 0xCA 0xCA000401 Z, 2 SDEV Coax Select (SDEV_COAX_SEL_0) In Icosa, Copper, Iowa
0x23 0xCB 0x3C000003 Z, 3 SDCard Write Protect (SD_WP) In Icosa, Copper, Hoag, Iowa, Calcio
0x24 0x4F 0x35000035 J, 7 TouchPanel Reset (TP_RST) Out HID services Icosa, Copper, Hoag, Iowa
0x25 0x50 0x37000401 K, 0 BT_GPIO_2 In Icosa, Copper, Hoag, Iowa, Calcio
0x26 0x51 0x37000402 K, 1 BT_GPIO_3 In Icosa, Copper, Hoag, Iowa, Calcio
0x27 0x52 0x37000403 K, 2 BT_GPIO_4 In Icosa, Copper, Hoag, Iowa, Calcio
0x28 0x54 0x040000CB K, 4 USB-PD Controller (RHOM BM92T30MWV) IRQ (PD_IRQ) In USB services Icosa, Copper, Hoag, Iowa, Calcio
0x29 0x56 0x3E000003 K, 6 POW_VCPU_INT In Icosa, Copper, Hoag, Iowa, Calcio
0x2A 0x57 0x3E000004 K, 7 MAX77621_GPU_INT In Icosa, Copper
0x2B 0x53 0x35000402 K, 3 Joy-Con(R) Charge (EXTCON_CHG_U) Out HID services Icosa, Copper, Iowa
0x2C 0xE3 0x3500040C CC, 3 Joy-Con(L) Charge (EXTCON_CHG_S) Out HID services Icosa, Copper, Iowa
0x2D 0x38 0x38000003 H, 0 WIFI_RF_DISABLE Out Icosa, Copper, Hoag, Iowa, Calcio
0x2E 0x39 0x38000002 H, 1 WiFi Reset (WIFI_RST_PH1) Out WLAN services, PCIe services Icosa, Copper, Hoag, Iowa, Calcio
0x2F 0x3B 0x37000003 H, 3 AP_WAKE_BT_PH3 Out Bluetooth Driver services Icosa, Copper, Hoag, Iowa, Calcio
0x30 0x3D 0x37000004 H, 5 BT_WAKE_AP In Icosa, Copper, Hoag, Iowa, Calcio
0x31 0x3F 0x37000404 H, 7 BT_GPIO_5 Out Icosa, Copper, Hoag, Iowa, Calcio
0x32 0x40 0x34000034 I, 0 Backlight +5V (LCD_VDD_P_EN) Out NV services Icosa, Copper, Hoag, Iowa
0x33 0x41 0x34000035 I, 1 Backlight -5V (LCD_VDD_N_EN) Out NV services Icosa, Copper, Hoag, Iowa
0x34 0x3E 0x35000401 H, 6 Joy-Con(R) IsAttached (insertion, Joy-Con pin 5/console TX, pulled low on insert) (EXTCON_DET_U) In HID services Icosa, Copper, Iowa
0x35 0xE2 0xC9000401 CC, 2 Secondary Boot Device Configration (RAM_CODE2) In Icosa, Copper, Iowa
0x36 0xE4 0x39000402 CC, 4 Fan and Joy-Con Rails Power (USB 5V) (VDD50B_EN) Out PTM services Icosa, Copper, Iowa
0x37 0x3A 0x38000004 H, 2 WIFI_WAKE_HOST In Icosa, Copper, Hoag, Iowa, Calcio
0x38 0xC9 0x3C000002 Z, 1 SDCard Card Detect (SD_CD) In Filesystem services Icosa, Copper, Hoag, Iowa, Calcio
0x39 0x4D 0x39000404 J, 5 Charger IC (BQ24193) OTG Charge Select (OTG_FET_1) Out PTM services, USB services Icosa, Copper, Iowa
0x3A 0x58 0x39000405 L, 0 Charger IC (BQ24193) OTG Charge Select (OTG_FET_2) Out PTM services, USB services Icosa, Copper, Iowa
0x3B 0x3E 0x35000403 H, 6 Joy-Con(R) Wake Detect (EXTCON_DET_U) In Icosa, Copper, Hoag, Iowa
0x3C 0x26 0x3500040D E, 6 Joy-Con(L) Wake Detect (EXTCON_DET_S) In Icosa, Copper, Hoag, Iowa
0x3D -1 0x39000406
0x3E 0x33 0x35000404 G, 3 Joy-Con(R) CTS (checked low) (EXT_UART2_CTS) In HID services
0x3F 0x1C 0x3500040E D, 4 Joy-Con(L) CTS (checked low) (EXT_UART3_CTS) In HID services
0x40 0xD9 0x39000408 BB, 1 5V Step-Down Regulator Power (5V_STEPDOWN_EN) Out Copper
0x41 0x0C 0x04000401 B, 4 USB Root Port 2 Over Current (USB_B2_OC) In USB services Copper
0x42 0x0D 0x39000409 B, 5 5V Step-Down Regulator Power Good Flag (5V_STEPDOWN_PG) In Copper
0x43 0x21 0x04000402 E, 1 USB Power (USB_A_EN) Out USB services Copper
0x44 0x27 0x04000403 E, 7 USB Power Flag (USB_A_FLAG) In USB services Copper
0x45 0x92 0x04000404 S, 2 USB Root Port 3 Over Current (USB_B3_OC) In USB services Copper
0x46 0x95 0x04000405 S, 5 USB Root Port 3 Power (USB_B3_EN) Out USB services Copper
0x47 0x98 0x04000406 T, 0 USB Root Port 2 Power (USB_B2_EN) Out USB services Copper
0x48 0x10 0x34000004 C, 0 HDMI 5V (HDMI_5V_EN) Out NV services Copper, Calcio
0x49 0x11 0x04000407 C, 1 USB Root Port 1 Power (USB_B1_EN) Out USB services Copper, Calcio
0x4A 0x12 0x34000005 C, 2 HDMI/Power Delivery Switch (HDMI_PD_TR_EN) Out NV services Copper, Calcio
0x4B 0x42 0x3D000003 I, 2 Fan Enable (FAN_EN) Out PTM services
0x4C 0xE6 0x04000408 CC, 6 USB Root Port 1 Over Current (USB_B1_OC) In USB services Copper, Calcio
[2.0.0+] 0x4D 0xAC 0x3D000001 V, 4 Pulse-Width Modulation Fan Control (PWM_FAN) Out PTM services
[2.0.0+] 0x4E 0xE1 0x34000006 CC, 1 HDMI Hot Plug Detect (HDMI_INT_DP_HPD_PCC1) In NV services Copper, Calcio
[5.0.0+] 0x4F 0x56 0x3E000003 K, 6 MAX77812_IRQ In Icosa, Copper, Hoag, Iowa, Calcio
[6.0.0+] 0x50 0x20 0xCA000001 E, 0 Out Hoag, Calcio
[6.0.0+] 0x51 0x21 0xCA000002 E, 1 Out Hoag, Calcio
[6.0.0+] 0x52 0x22 0xCA000003 E, 2 Out Hoag, Calcio
[6.0.0+] 0x53 0x23 0xCA000004 E, 3 Out Hoag, Calcio
[6.0.0+] 0x54 0x4C 0x36000004 J, 4 NFC_IRQ In NFC services Hoag
[6.0.0+] 0x55 0x57 0x36000003 K, 7 NFC_RST Out NFC services Hoag
[6.0.0+] 0x56 0x27 ([6.0.0-8.0.0] 0x94) 0x35000415 S, 4 MCU_IRQ In Hoag
[6.0.0+] 0x57 0x98 0x35000416 T, 0 MCU_BOOT Out HID services Hoag
[6.0.0+] 0x58 0x99 0x35000417 T, 1 MCU_RST Out HID services Hoag
[6.0.0+] 0x59 0xBB 0x39000403 X, 3 Fan Power (5V3) (VDD5V3_EN) Out PTM services Hoag, Iowa
[6.0.0+] 0x5A 0xE5 0x35000418 CC, 5 MCU_POR Out HID services Hoag
[6.0.0+] 0x5B 0xAB 0x35000005 V, 3 SioH Input (LCD_GPIO1_PV3) In HID services Hoag
[6.0.0+] 0x5C 0x4E 0x36000002 J, 6 NFC_EN Out NFC services Hoag
[7.0.0+] - 0x32 0x35000406 G, 2 Joy-Con(R) RTS (EXT_UART2_RTS) In
[7.0.0+] - 0x1B 0x35000410 D, 3 Joy-Con(L) RTS (EXT_UART3_RTS) In
[7.0.0+] - 0x17 0x3500041B C, 7 In Hoag
[7.0.0+] - 0x18 0x3500041C D, 0 In Hoag
[7.0.0+] - 0x15 0x3500041D C, 5 In Hoag
[7.0.0+] - 0x16 0x3500041E C, 6 In Hoag

GpioPadDescriptor

Bits Description
7-5 Controller index
4-3 Port index
2-0 Pin number

OpenSessionForDev

Takes a raw #GpioPadDescriptor and returns a #IPadSession session for it.

OpenSession

Same thing as #OpenSessionForDev except it takes a GpioPadName which is then converted to a #GpioPadDescriptor. Returns an #IPadSession session.

OpenSessionForTest

Same as #OpenSession but panics on failure.

OpenSession2

Same as #OpenSession but takes a DeviceCode instead of a GpioPadName and an u32 DeviceUnk.

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
17 [6.0.0+] GetValueForSleepState

i2c, i2c:pcv

This is "nn::i2c::IManager".

Cmd Name
0 OpenSessionForDev
1 OpenSession
[1.0.0-5.1.0] 2 HasDevice
[1.0.0-5.1.0] 3 HasDeviceForDev
4 [6.0.0+] OpenSession2

Known Devices

Name DeviceCode Port:Addr Is10bit Speed Max Retries Retry Delay Usage Used by (services) Used by (hardware)
0 0x350000C9 0:52 N 100000 0 0 DebugPadDriver HID services Icosa, Copper, Iowa
1 0x35000033 2:49 N 400000 0 0 TouchPanel HID services Icosa, Copper, Hoag, Iowa
2 0x3E000001 0:4c N 100000 0 0 Temperature Sensor (TMP451 or NCT72) PTM services Icosa, Copper, Hoag, Iowa, Calcio
3 0x3E000001 0:4c N 100000 0 0 Temperature Sensor (TMP451 or NCT72) (duplicate) PTM services Icosa, Copper, Hoag, Iowa, Calcio
4 0x33000001 0:1c N 100000 0 0 Audio Codec (ALC5639) Audio services, Fatal services Icosa, Copper, Hoag, Iowa
5 0x3B000001 4:68 N 400000 3 5000000 PMIC RTC (max77620_rtc0), max77620_irq0 PCV services Icosa, Copper
6 0x3A000001 4:3c N 400000 3 5000000 PMIC (MAX77620), max77620_irq0 PCV services Icosa, Copper
7 0x3A000003 4:1b N 400000 3 5000000 Sub-PMIC for CPU (max77621_cpu) PCV services Icosa, Copper
8 0x3A000004 4:1c N 400000 3 5000000 Sub-PMIC for GPU (max77621_gpu) PCV services Icosa, Copper
9 0x39000001 0:6b N 100000 3 5000000 Charger IC (BQ24193) PTM services Icosa, Copper, Hoag, Iowa
10 0x39000033 0:36 N 100000 3 5000000 Fuel Gauge IC (MAX17050) PTM services, PCV services Icosa, Copper, Hoag, Iowa
11 0x040000C9 0:18 N 100000 3 5000000 USB-PD controller (RHOM BM92T30MWV) USB services Icosa, Copper, Hoag, Iowa, Calcio
12 0x3F000401 1:40 N 400000 3 5000000 Power Monitor (ina226_V_VDD15V0-HB) Factory
13 0x3F000001 1:41 N 400000 3 5000000 Power Monitor (ina226_V_VSYS-CPU-DS) Factory
14 0x3F000002 1:44 N 400000 3 5000000 Power Monitor (ina226_V_VSYS-GPU-DS) Factory
15 0x3F000003 1:45 N 400000 3 5000000 Power Monitor (ina226_V_VSYS-DDR-DS) Factory
16 0x3F000402 1:46 N 400000 3 5000000 Power Monitor (ina226_V_VSYS-AP) Factory
17 0x3F000403 1:47 N 400000 3 5000000 Power Monitor (ina226_V_VSYS-BL-DS) Factory
18 0x35000047 1:29 N 400000 3 5000000 Ambient Light Sensor (BH1730) Backlight services Icosa, Copper, Hoag, Iowa
19 0x3F000404 1:48 N 400000 3 5000000 Power Monitor (ina226_CORE) Factory
20 0x3F000405 1:49 N 400000 3 5000000 Power Monitor (ina226_Soc-1V8) Factory
21 0x3F000406 1:4a N 400000 3 5000000 Power Monitor (ina226_LPDDR4-1V8) Factory
22 0x3F000407 1:4b N 400000 3 5000000 Power Monitor (ina226_REG1V32) Factory
23 0x3F000408 1:4d N 400000 3 5000000 Power Monitor (ina226_VDD3V3-SYS) Factory
[2.0.0+] 24 0x34000001 3:50 N 100000 0 0 HDMI DDC NV services Copper, Calcio
[2.0.0+] 25 0x34000002 3:54 N 100000 0 0 HDMI SCDC NV services Copper, Calcio
[2.0.0+] 26 0x34000003 3:3a N 100000 0 0 HDMI HDCP NV services Copper, Calcio
[4.0.0+] 27 0x3A000005 4:52 ([4.0.0-8.0.0] 4:a4) N 400000 0 0 Buck Regulator (FAN53528) Hoag, Iowa, Calcio
[4.0.0+] 28 0x3A000002 4:33 ([4.0.0-8.0.0] 4:31) N 400000 0 0 PMIC (MAX77812) PCV services Hoag, Iowa, Calcio
[4.0.0+] 29 0x3A000002 4:33 ([4.0.0-8.0.0] 4:31) N 400000 0 0 PMIC (MAX77812) PCV services Hoag, Iowa, Calcio
[4.0.0+] 30 0x3F000409 1:4e N 400000 3 5000000 Power Monitor (ina226_V_VDD-DDR-0V6) Factory
[8.0.0+] 31 0x36000001 1:08 N 400000 3 5000000 NFC IC Hoag

OpenSessionForDev

Takes an u32 port, an u16 addr, an AddressingMode (1 for 10-bit, 0 otherwise) and a SpeedMode (400000 or 100000). Returns a #II2cSession session.

OpenSession

Takes an I2cDevice and returns a #II2cSession session for it.

HasDevice

Takes an I2cDevice and returns true if the device exists or false otherwise.

HasDeviceForDev

Takes an u32 port, an u16 addr, an AddressingMode (1 for 10-bit, 0 otherwise) and a SpeedMode (400000 or 100000). Returns true if the device exists or false otherwise.

OpenSession2

Same as OpenSession but takes a DeviceCode instead of a I2cDevice.

II2cSession

This is "nn::i2c::ISession".

Cmd Name
[1.0.0-5.1.0] 0 Send
[1.0.0-5.1.0] 1 Receive
[1.0.0-5.1.0] 2 ExecuteCommandList
10 #SendAuto
11 ReceiveAuto
12 #ExecuteCommandListAuto
13 [6.0.0+]

SendAuto

Takes bytes to write in either a static buffer or a receive buffer, returns an error code for success

ExecuteCommandListAuto

Takes a command list from either a static buffer or a receive buffer, returns data in either a static (or recieve?) buffer.

Commands

  • 0x40 [u8 len] <bytes> - Write bytes to device
  • 0xC1 [u8 len] - Receive bytes from device

uart

This is "nn::uart::IManager".

Cmd Name
0 #HasPort
1 #HasPortForDev
2 #IsSupportedBaudRate
3 #IsSupportedBaudRateForDev
4 #IsSupportedFlowControlMode
5 #IsSupportedFlowControlModeForDev
6 #CreatePortSession
7 #IsSupportedPortEvent
8 #IsSupportedPortEventForDev
9 [7.0.0+] #IsSupportedDevice
10 [7.0.0+] #IsSupportedDeviceForDev

HasPort

Takes an u32 #UartPort. Returns a boolean success value.

HasPortForDev

Takes an u32 #UartPortForDev. Returns a boolean success value.

IsSupportedBaudRate

Takes an u32 #UartPort and an u32 BaudRate. Returns a boolean success value.

Supported baud rates are 57600, 115200, 1000000 and 3000000.

IsSupportedBaudRateForDev

Takes an u32 #UartPortForDev and an u32 BaudRate. Returns a boolean success value.

Supported baud rates are 57600, 115200, 1000000 and 3000000.

IsSupportedFlowControlMode

Takes an u32 #UartPort and an u32 FlowControlMode. Returns a boolean success value.

Supported modes are 0 (RTS) and 1 (CTS).

IsSupportedFlowControlModeForDev

Takes an u32 #UartPortForDev and an u32 FlowControlMode. Returns a boolean success value.

Supported modes are 0 (RTS) and 1 (CTS).

CreatePortSession

No input. Returns an #IPortSession.

IsSupportedPortEvent

Takes an u32 #UartPort and an u32 PortEvent. Returns a boolean success value.

Supported events are 0 (data), 1 (break), 2 (unknown) and 3 (unknown).

IsSupportedPortEventForDev

Takes an u32 #UartPortForDev and an u32 PortEvent. Returns a boolean success value.

Supported events are 0 (data), 1 (break), 2 (unknown) and 3 (unknown).

IsSupportedDevice

Takes an u32 #UartPort and an u32 Device. Returns a boolean success value.

Supported devices are 0 (Bluetooth) for UART-D, 0 (Joy-Con(R)) for UART-B, 0 (Joy-Con(L)) and 1 (MCU) for UART-C.

IsSupportedDeviceForDev

Takes an u32 #UartPortForDev and an u32 Device. Returns a boolean success value.

Supported devices are 0 (Bluetooth) for UART-D, 0 (Joy-Con(R)) for UART-B, 0 (Joy-Con(L)) and 1 (MCU) for UART-C.

UartPort

Name DeviceCode (internal) DeviceCode (mapped) Port Usage
0 0x03000001 UART-A Invalid
1 0x03000004 0x37000001 UART-D Bluetooth
2 0x03000002 0x35000405 UART-B Joy-Con(R)
3 0x03000003 0x3500040F UART-C Joy-Con(L)
4 0x03000003 0x35000419 UART-C MCU

UartPortForDev

Name DeviceCode (internal) DeviceCode (mapped) Port Usage
0 0x03000001 UART-A Invalid
1 0x03000002 0x35000405 UART-B Joy-Con(R)
2 0x03000003 0x3500040F UART-C Joy-Con(L)
3 0x03000004 0x37000001 UART-D Bluetooth

IPortSession

This is "nn::uart::IPortSession".

Cmd Name
0 #OpenPort
1 #OpenPortForDev
2 GetWritableLength
3 Send
4 GetReadableLength
5 Receive
6 BindPortEvent
7 UnbindPortEvent

OpenPort

Takes an u32 #UartPort, 3 u32s, 2 copy handles and 4 u8s (each padded to u32). Returns a boolean success value.

[7.0.0+] Now takes an additional u64.

OpenPortForDev

Takes an u32 #UartPortForDev, 3 u32s, 2 copy handles and 4 u8s (each padded to u32). Returns a boolean success value.

[7.0.0+] Now takes an additional u64.

pwm

This is "nn::pwm::IManager".

Cmd Name
0 OpenSessionForDev
1 OpenSession
2 [6.0.0+] OpenSession2

Known Channels

Name DeviceCode Interface Usage Used by
1 0x3D000001 PWM Channel 1 Fan PTM services
2 0x3400003D PWM Channel 0 Backlight Backlight services, NV services
3 0x35000065 PMC LED Soft Blink Led Bus services

IChannelSession

This is "nn::pwm::IChannelSession".

Cmd Name
0 SetPeriod
1 GetPeriod
2 SetDuty
3 GetDuty
4 SetEnabled
5 GetEnabled
6 [6.0.0+]
7 [6.0.0+]

pinmux

This is "nn::pinmux::IManager".

Cmd Name
0 OpenSession

ISession

This is "nn::pinmux::ISession".

Cmd Name
0 SetPinAssignment
1 GetPinAssignment
2 SetPinAssignmentForHardwareTest

sasbus

This is "nn::sasbus::IManager".

This was added with [3.0.0+].

Cmd Name
0 OpenSession

OpenSession

Takes an u32 that must be 0 and returns an ISession.

This opens a session for communicating over SPI4. While code exists to support both SPI1 and SPI4 communication, SPI4 is currently hardcoded as the only available interface.

ISession

This is "nn::sasbus::ISession".

Cmd Name
0 #Write
1 #Read
2 #StartPeriodicReceiveMode
3 #StopPeriodicReceiveMode

Write

Takes a type-0x21 input buffer and an u8 SpiCommand. No output.

Read

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.

led

This is "nn::led::detail::IManager".

This was added with [9.0.0+].

Cmd Name
0 OpenController

IController

This is "nn::led::detail::IController".

Cmd Name
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21