Difference between revisions of "I2C Services"
Jump to navigation
Jump to search
Line 1: | Line 1: | ||
[[Category:Services]] | [[Category:Services]] | ||
= I2C Service Names = | = I2C Service Names = | ||
− | + | {| class="wikitable" border="1" | |
− | + | |- | |
− | + | ! Service names | |
− | + | ! Notes | |
− | + | ! Accessible [[I2C_Registers|deviceIDs]] | |
− | + | |- | |
− | + | | "i2c::MCU" | |
− | + | | | |
− | + | | 0, 3 | |
+ | |- | ||
+ | | "i2c::CAM" | ||
+ | | | ||
+ | | 1, 2, 4 | ||
+ | |- | ||
+ | | "i2c::LCD" | ||
+ | | | ||
+ | | 5, 6 | ||
+ | |- | ||
+ | | "i2c::DEB" | ||
+ | | | ||
+ | | 7, 8 | ||
+ | |- | ||
+ | | "i2c::HID" | ||
+ | | | ||
+ | | 9, 10, 11, 12 | ||
+ | |- | ||
+ | | "i2c::IR" | ||
+ | | | ||
+ | | 13 | ||
+ | |- | ||
+ | | "i2c::EEP" | ||
+ | | | ||
+ | | 14 | ||
+ | |- | ||
+ | | "i2c::NFC" | ||
+ | | Only available via the New3DS i2c sysmodule. | ||
+ | | 15 | ||
+ | |- | ||
+ | | "i2c::QTM" | ||
+ | | Only available via the New3DS i2c sysmodule. | ||
+ | | 16 | ||
+ | |} | ||
− | Each I2C service can only access certain I2C device(s). When the specified deviceid isn't accessible, error 0xE0A02FEA is returned. | + | Each I2C service can only access certain I2C [[I2C_Registers|device(s)]]. When the specified deviceid isn't accessible, error 0xE0A02FEA is returned. |
= I2C Service = | = I2C Service = |
Revision as of 06:39, 14 April 2015
I2C Service Names
Service names | Notes | Accessible deviceIDs |
---|---|---|
"i2c::MCU" | 0, 3 | |
"i2c::CAM" | 1, 2, 4 | |
"i2c::LCD" | 5, 6 | |
"i2c::DEB" | 7, 8 | |
"i2c::HID" | 9, 10, 11, 12 | |
"i2c::IR" | 13 | |
"i2c::EEP" | 14 | |
"i2c::NFC" | Only available via the New3DS i2c sysmodule. | 15 |
"i2c::QTM" | Only available via the New3DS i2c sysmodule. | 16 |
Each I2C service can only access certain I2C device(s). When the specified deviceid isn't accessible, error 0xE0A02FEA is returned.
I2C Service
Command Header | Available since system-version | Description |
---|---|---|
0x00010100 | SetRegisterBits8 (u8 devid, u8 regid, u8 regdata, u8 mask) | |
0x0002.... | EnableRegisterBits8 (u8 devid, u8 regid, u8 enablemask) | |
0x000300C0 | DisableRegisterBits8 (u8 devid, u8 regid, u8 disablemask) | |
0x00040102 | MultiSetRegisterBits16 (u16 regid, u16 regdata, u16 mask, devcount, u8* devidlistptr) | |
0x0005.... | WriteRegister8 (u8 devid, u8 regid, u8 regdata) | |
0x0006.... | WriteCommand8 (u8 devid, u8 cmdid) | |
0x0007.... | WriteRegister16 (u8 devid, u16 regid, u16 regdata) | |
0x000800C2 | MultiWriteRegister16 (u16 regid, u16 regdata, devcount, u8* devidlistptr) | |
0x0009.... | u8 ReadRegister8 (u8 devid, u8 regid) | |
0x000A.... | u16 ReadRegister16 (u8 devid, u16 regid) | |
0x000B00C2 | WriteRegisterBuffer8 (u8 devid, u8 regid, buffersize, (buffersize << 14) | 0x402, u8* bufferptr) | |
0x000C00C2 | WriteRegisterBuffer16 (u8 devid, u16 regid, buffersize, (buffersize << 15) | 0x402, u16* bufferptr) | |
0x000D00C0 | ReadRegisterBuffer8 (u8 devid, u8 regid, buffersize, +0x180: (buffersize << 14) | 2, +0x184: u8 bufferptr) | |
0x000E00C2 | WriteRegisterBuffer8_again? (u8 devid, u8 regid, buffersize, u8* bufferptr) | |
0x000F.... | ||
0x0010.... | ||
0x001100C2 | ReadRegisterBuffer(u8 devid, u16 regid, buffersize, u8 *buff) | |
0x001200C2 | WriteRegisterBuffer(u8 devid, u16 regid, buffersize, u8 *buff) | |
0x00130040 | 8.0.0-18 | (u8 inval) Writes an output u8 to cmdreply[2]. |
0x00140082 | 8.0.0-18 | (u8 devid, u32 buffersize, (buffersize << 14) | 0x402, bufferptr) |
0x00150080 | 8.0.0-18 | (u8 devid, u32 buffersize, +0x180: (buffersize << 14) | 2, +0x184: bufferptr) |
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.