IO Registers
Overview
Old3DS | A9/A11 | Category | Physaddr | Used by | Comments |
---|---|---|---|---|---|
Yes | A9 | CONFIG rgstrs | 0x10000000 | Boot9, Process9 | |
Yes | A9 | IRQ rgstrs | 0x10001000 | Boot9, Process9, Kernel9 | ARM9 Interrupt Masking |
Yes | A9 | NDMA rgstrs | 0x10002000 | Boot9, Process9 | DMA Engine |
Yes | A9 | TIMER rgstrs | 0x10003000 | Boot9, Process9 | |
Yes | A9 | CTRCARD rgstrs | 0x10004000 / 0x10005000 | Process9 | |
Yes | A9 | EMMC rgstrs | 0x10006000 / 0x10007000 | Boot9, Process9 | 0x10007000 is normally not enabled on retail, all-zeros when read. |
Yes | A9 | PXI rgstrs | 0x10008000 | Boot9, Process9 | |
Yes | A9 | AES rgstrs | 0x10009000 | Boot9, Process9 | |
Yes | A9 | SHA rgstrs | 0x1000A000 | Boot9, Process9 | |
Yes | A9 | RSA rgstrs | 0x1000B000 | Boot9, Process9 | |
Yes | A9 | XDMA rgstrs | 0x1000C000 | Boot9, Kernel9 | CoreLink™ DMA-330 (single-channel). |
Yes | A9 | SPICARD rgstrs | 0x1000D800 | Process9 | |
Yes | ? | CONFIG rgstrs | 0x10010000 | Process9 | |
Yes | ? | PRNG rgstrs | 0x10011000 | Process9 | Used as entropy-source for seeding random number generators. |
Yes | ? | OTP rgstrs | 0x10012000 | Kernel9, NewKernel9Loader | Top secret. |
Yes | ? | 0x10018000 | TwlProcess9 | Used to setup the ARM7 core for AGB/TWL | |
Yes | ? | ? | 0x10100000 | ? | ? |
Yes | A11/A9 | HASH rgstrs | 0x10101000 | Filesystem services | |
Yes | A11/A9 | Camera rgstrs | 0x10102000 | Camera Services | y2r |
Yes | A11/A9 | CSND rgstrs / DSP rgstrs | 0x10103000 | TwlBg, Codec Services, CSND Services, DSP Services | Sound hardware. For DSP regs, see the "DSi XpertTeak" section in no$gba help. |
Yes | A11/A9 | LGYFB0 | 0x10110000 | TwlBg | IO rgstrs used to access legacy output framebuffer, as well as configure the upscaling filter. |
Yes | A11/A9 | LGYFB1 | 0x10111000 | TwlBg | IO rgstrs used to access legacy output framebuffer, as well as configure the upscaling filter. |
Yes | A11/A9 | Camera rgstrs | 0x10120000 | Camera Services | |
Yes | A11/A9 | Camera rgstrs | 0x10121000 | Camera Services | Mirror of 0x10120000? |
Yes | A11/A9 | ? | 0x10122000 | NWM Services | WIFI? |
Yes | A11/A9 | ? | 0x10123000 | NWM Services | WIFI? |
No | A11/A9 | MVD rgstrs | 0x10130000 | MVD Services | |
No | A11/A9 | MVD rgstrs | 0x10131000 | MVD Services | |
No | A11/A9 | MVD rgstrs | 0x10132000 | MVD Services | |
Yes | A11/A9 | PDN rgstrs | 0x10140000 | Process9, Boot11, Kernel11, TwlBg, DSP Services, NWM Services, SPI Services | Power management. |
Yes | A11/A9 | PDN rgstrs | 0x10141000 | Process9, Boot11, Kernel11, TwlBg, Codec Services, NWM Services, SPI Services, PDN Services | Power management |
Yes | A11/A9 | SPI rgstrs | 0x10142000 | TwlBg, SPI Services | |
Yes | A11/A9 | SPI rgstrs | 0x10143000 | TwlBg | Only used under TWL_FIRM? |
Yes | A11/A9 | I2C rgstrs | 0x10144000 | Boot11, Kernel11, TwlBg, I2C Services | |
Yes | A11/A9 | CODEC rgstrs | 0x10145000 | TwlBg, Codec Services | |
Yes | A11/A9 | HID rgstrs | 0x10146000 | Boot11, Kernel11, TwlBg, HID Services, dlp Services | See PAD. |
Yes | A11/A9 | GPIO rgstrs | 0x10147000 | Boot11, TwlBg, GPIO Services, DSP Services(v0) | |
Yes | A11/A9 | I2C rgstrs | 0x10148000 | TwlBg, I2C Services | |
Yes | A11/A9 | SPI rgstrs | 0x10160000 | Boot9, TwlBg, SPI Services | |
Yes | A11/A9 | I2C rgstrs | 0x10161000 | Boot11, TwlBg, I2C Services | See no$gba help for some clues maybe. |
Yes | A11/A9 | MIC rgstrs | 0x10162000 | MIC Services | |
Yes | A11/A9 | PXI rgstrs | 0x10163000 | Boot11, Kernel11, TwlBg, PXI Services | |
Yes | A11/A9 | NTRCARD rgstrs | 0x10164000 | Boot9, Process9 | |
Yes | A11/A9 | MP rgstrs | 0x10165000 | MP Services | |
Yes | A11/A9 | MP rgstrs | 0x10170000 | MP Services | NTR WIFI rgstrs, see GBATek. |
Yes | A11/A9 | MP rgstrs | 0x10171000 | MP Services | NTR WIFI rgstrs (mirror) |
Yes | A11/A9 | ? | 0x10172000 | ? | NTR WIFI Unused? |
Yes | A11/A9 | ? | 0x10173000 | ? | NTR WIFI Unused? |
Yes | A11/A9 | MP rgstrs | 0x10174000 | MP Services | NTR WIFI RAM |
Yes | A11/A9 | MP rgstrs | 0x10175000 | ? | NTR WIFI RAM |
Yes | A11/A9 | MP rgstrs | 0x10176000 | ? | NTR WIFI rgstrs (mirror) |
Yes | A11/A9 | MP rgstrs | 0x10177000 | ? | NTR WIFI rgstrs (mirror) |
Yes | A11/A9 | MP rgstrs | 0x10178000 - 0x10180000 | MP Services | NTR WIFI WS1 Region |
Yes | A11 | CDMA | 0x10200000 | Boot11, Kernel11 | CoreLink™ DMA-330. Not used on New3DS. |
Yes | A11 | ? | 0x10201000 | ||
Yes | A11 | LCD rgstrs | 0x10202000 | TwlBg, Kernel11, GSP Services | |
Yes | A11 | DSP rgstrs | 0x10203000 | DSP Services | |
Yes | A11 | ? | 0x10204000 | ||
No | A11 | CDMA | 0x10206000 | NewKernel11 | CDMA was moved here on New 3DS. CoreLink™ DMA-330. |
No | A11 | MVD rgstrs | 0x10207000 | MVD Services | New 3DS only? |
Yes | A11 | AXI | 0x1020F000 | TwlBg, GSP Services | CoreLink™ NIC-301 r1p0. |
Yes | A11 | MIRROR | 0x10300000-0x10400000 | Mirror of 0x10100000-0x10200000 (faster bus?), CDMA wants these addresses | |
Yes | A11 | GPU rgstrs | 0x10400000 | Boot11, Kernel11, GSP Services |
IO rgstrs starting at physical address 0x10200000 are not accessible from the ARM9 (which includes all LCD/GPU rgstrs). It seems IO rgstrs below physical address 0x10100000 are not accessible from the ARM11 bus.
ARM11 kernel virtual address mappings for these rgstrs varies for different builds. For ARM11 user mode applications you have:
physaddr = virtaddr - 0x1EC00000 + 0x10100000