Line 6:
Line 6:
! Notes
! Notes
! Accessible [[I2C_Registers|deviceIDs]]
! Accessible [[I2C_Registers|deviceIDs]]
+
! Service used by sysmodule
|-
|-
| "i2c::MCU"
| "i2c::MCU"
|
|
| 0, 3
| 0, 3
+
| [[MCU_Services|MCU]]
|-
|-
| "i2c::CAM"
| "i2c::CAM"
|
|
| 1, 2, 4
| 1, 2, 4
+
| [[Camera_Services|Camera]]
|-
|-
| "i2c::LCD"
| "i2c::LCD"
|
|
| 5, 6
| 5, 6
+
| [[GSP_Services|GSP]]
|-
|-
| "i2c::DEB"
| "i2c::DEB"
|
|
| 7, 8
| 7, 8
+
| Unknown
|-
|-
| "i2c::HID"
| "i2c::HID"
|
|
| 9, 10, 11, 12
| 9, 10, 11, 12
+
| [[HID_Services|HID]]
|-
|-
| "i2c::IR"
| "i2c::IR"
|
|
| 13, and additionally for New3DS i2c module: 17
| 13, and additionally for New3DS i2c module: 17
+
| [[IR_Services|IR]]
|-
|-
| "i2c::EEP"
| "i2c::EEP"
|
|
| 14
| 14
+
| [[Config_Services|Cfg]]
|-
|-
| "i2c::NFC"
| "i2c::NFC"
| Only available via the New3DS i2c sysmodule.
| Only available via the New3DS i2c sysmodule.
| 15
| 15
+
| New3DS [[NFC_Services|NFC]]
|-
|-
| "i2c::QTM"
| "i2c::QTM"
| Only available via the New3DS i2c sysmodule.
| Only available via the New3DS i2c sysmodule.
| 16
| 16
+
| New3DS [[QTM_Services|QTM]]
|}
|}
Line 57:
Line 67:
| SetRegisterBits8 (u8 devid, u8 regid, u8 regdata, u8 mask)
| SetRegisterBits8 (u8 devid, u8 regid, u8 regdata, u8 mask)
|-
|-
−
| 0x0002....
+
| 0x000200C0
|
|
| EnableRegisterBits8 (u8 devid, u8 regid, u8 enablemask)
| EnableRegisterBits8 (u8 devid, u8 regid, u8 enablemask)
Line 69:
Line 79:
| MultiSetRegisterBits16 (u16 regid, u16 regdata, u16 mask, devcount, u8* devidlistptr)
| MultiSetRegisterBits16 (u16 regid, u16 regdata, u16 mask, devcount, u8* devidlistptr)
|-
|-
−
| 0x0005....
+
| 0x000500C0
|
|
| WriteRegister8 (u8 devid, u8 regid, u8 regdata)
| WriteRegister8 (u8 devid, u8 regid, u8 regdata)
|-
|-
−
| 0x0006....
+
| 0x00060080
|
|
| WriteCommand8 (u8 devid, u8 cmdid)
| WriteCommand8 (u8 devid, u8 cmdid)
|-
|-
−
| 0x0007....
+
| 0x000700C0
|
|
−
| WriteRegister16 (u8 devid, u16 regid, u16 regdata)
+
| WriteRegister16 (u8 devid, u8 regid, u16 regdata)
|-
|-
| 0x000800C2
| 0x000800C2
Line 85:
Line 95:
| MultiWriteRegister16 (u16 regid, u16 regdata, devcount, u8* devidlistptr)
| MultiWriteRegister16 (u16 regid, u16 regdata, devcount, u8* devidlistptr)
|-
|-
−
| 0x0009....
+
| 0x00090080
|
|
| u8 ReadRegister8 (u8 devid, u8 regid)
| u8 ReadRegister8 (u8 devid, u8 regid)
|-
|-
−
| 0x000A....
+
| 0x000A0080
|
|
−
| u16 ReadRegister16 (u8 devid, u16 regid)
+
| u16 ReadRegister16 (u8 devid, u8 regid)
|-
|-
| 0x000B00C2
| 0x000B00C2
Line 107:
Line 117:
| 0x000E00C2
| 0x000E00C2
|
|
−
| WriteRegisterBuffer8_again? (u8 devid, u8 regid, buffersize, u8* bufferptr)
+
| WriteRegisterBuffer (u8 devid, u8 regid, unused (bufsize?), (bufsize << 14) <nowiki>|</nowiki> 0x402, void* buffer)
|-
|-
−
| 0x000F....
+
| 0x000F00C0
−
|
|
|
+
| ReadRegisterBuffer (u8 devid, u8 regid, min(bufsize, 0x20)), +0x180: (bufsize << 14) <nowiki>|</nowiki> 2, void* buffer
|-
|-
−
| 0x0010....
+
| 0x001000C0
−
|
|
|
+
| ReadEEPROM (u8 devid = 14, u16 blockid, min(bufsize >> 1, 0x10)), +0x180: (bufsize << 15) <nowiki>|</nowiki> 2, u16* buffer
|-
|-
| 0x001100C2
| 0x001100C2
|
|
−
| ReadRegisterBuffer(u8 devid, u16 regid, buffersize, u8 *buff)
+
| WriteRegisterBuffer(u8 devid, u8 regid, buffersize, u8 *buff)
|-
|-
| 0x001200C2
| 0x001200C2
|
|
−
| WriteRegisterBuffer(u8 devid, u16 regid, buffersize, u8 *buff)
+
| ReadRegisterBuffer(u8 devid, u8 regid, buffersize, u8 *buff)
|-
|-
| 0x00130040
| 0x00130040
Line 138:
Line 148:
|}
|}
−
Commands 0x00130040..0x00150080 are only usable with the New3DS i2c module: on Old3DS the actual command-handler function for each of these commands just return an error.
+
Commands 0x00130040..0x00150080 are only usable with the New3DS i2c module: on Old3DS the actual command-handler function for each of these commands just return an error. Commands 0x00140082 and 0x00150080 are used by [[NFC_Services|NFC]] module. Command 0x00150080 is also used for reading ZL, ZR, and C-stick data by [[IR Services]].