IO Registers

IO Registers

Overview #

Old3DSA9/A11CategoryPhysaddrUsed byComments
YesA9CONFIG9 Registers0x10000000Boot9, Process9
YesA9IRQ Registers0x10001000Boot9, Process9, Kernel9ARM9 Interrupt Masking
YesA9NDMA Registers0x10002000Boot9, Process9AHB DMA Engine
YesA9TIMER Registers0x10003000Boot9, Process9
YesA9CTRCARD Registers0x10004000 / 0x10005000Process9
YesA9EMMC Registers0x10006000 / 0x10007000Boot9, Process9, NewKernel9LoaderSD(IO) controller 1 and 3. 3 is normally mapped to ARM11.
YesA9PXI Registers0x10008000Boot9, Process9
YesA9AES Registers0x10009000Boot9, Process9, NewKernel9Loader
YesA9SHA Registers0x1000A000Boot9, Process9, NewKernel9Loader
YesA9RSA Registers0x1000B000Boot9, Process9
YesA9XDMA Registers0x1000C000Boot9, Kernel9🔗 CoreLink™ DMA-330 r0p0 (AXI busmaster, two channels, uses 32-bit bus width instead of 64).
YesA9SPICARD Registers0x1000D800Process9
YesA9CONFIG Registers0x10010000Process9
YesA9PRNG Registers0x10011000Boot9, Process9Used as entropy-source for seeding random number generators.
YesA9OTP Registers0x10012000Boot9, Kernel9, NewKernel9LoaderTop secret.
YesA9ARM7 Registers0x10018000TwlProcess9Used to setup the ARM7 core for AGB/TWL
YesA11/A9TMIO SD(IO) controller 30x10100000NWM references this controller but doesn’t have access to it.
YesA11/A9HASH Registers0x10101000Filesystem servicesThese registers function the same as the SHA Registers, with the exception of the FIFO being located at 0x10301000.
YesA11/A9Y2R Registers0x10102000Camera Servicesy2r
YesA11/A9CSND Registers0x10103000TwlBg, Codec Services, CSND Services, DSP ServicesSound hardware.
YesA11/A9LgyFb bottom screen0x10110000TwlBgIO registers used to access legacy output framebuffer, as well as configure the upscaling filter.
YesA11/A9LgyFb top screen0x10111000TwlBgIO registers used to access legacy output framebuffer, as well as configure the upscaling filter.
YesA11/A9Camera Registers0x10120000Camera Services
YesA11/A9Camera Registers0x10121000Camera ServicesMirror of 0x10120000?
YesA11/A9WIFI Registers0x10122000NWM ServicesWIFI SDIO bus registers
YesA11/A9?0x10123000NWM ServicesWIFI?
NoA11/A9MVD Registers0x10130000MVD Services
NoA11/A9MVD Registers0x10131000MVD Services
NoA11/A9MVD Registers0x10132000MVD Services
YesA11/A9CONFIG11 Registers0x10140000Process9, Boot11, Kernel11, TwlBg, DSP Services, NWM Services, SPI ServicesSystem configuration.
YesA11/A9PDN Registers0x10141000Process9, Boot11, Kernel11, TwlBg, Codec Services, NWM Services, SPI Services, PDN ServicesPower management
YesA11/A9SPI Registers0x10142000TwlBg, SPI Services
YesA11/A9SPI Registers0x10143000TwlBg, dmnt ModuleDebugger related?
YesA11/A9I2C Registers0x10144000Boot11, Kernel11, TwlBg, I2C Services3DS I2C interface (MCU + Cameras + LCD)
YesA11/A9I2S Registers0x10145000TwlBg, AgbBg, Codec ServicesSound input/output lines
YesA11/A9HID Registers0x10146000Boot9, Boot11, Kernel11, TwlBg, HID Services, dlp ServicesSee PAD.
YesA11/A9GPIO Registers0x10147000Boot11, TwlBg, GPIO Services, DSP Services(v0)
YesA11/A9I2C Registers0x10148000TwlBg, I2C Services3DS I2C interface (Gyro + IR)
YesA11/A9SPI Registers0x10160000Boot9, TwlBg, SPI Services
YesA11/A9I2C Registers0x10161000Boot11, TwlBg, I2C ServicesTWL I2C interface (MCU + Cameras)
YesA11/A9MIC Registers0x10162000MIC Services
YesA11/A9PXI Registers0x10163000Boot11, Kernel11, TwlBg, PXI Services
YesA11/A9NTRCARD Registers0x10164000Boot9, Process9
YesA11/A9MP Registers0x10165000MP Services
YesA11/A9MP Registers0x10170000MP ServicesNTR WIFI Registers, see 🔗 GBATek.
YesA11/A9MP Registers0x10171000MP ServicesNTR WIFI Registers (mirror)
YesA11/A9?0x10172000?NTR WIFI Unused?
YesA11/A9?0x10173000?NTR WIFI Unused?
YesA11/A9MP Registers0x10174000MP ServicesNTR WIFI RAM
YesA11/A9MP Registers0x10175000?NTR WIFI RAM
YesA11/A9MP Registers0x10176000?NTR WIFI Registers (mirror)
YesA11/A9MP Registers0x10177000?NTR WIFI Registers (mirror)
YesA11/A9MP Registers0x10178000 - 0x10180000MP ServicesNTR WIFI WS1 Region
YesA11CDMA0x10200000Boot11, Kernel11🔗 CoreLink™ DMA-330 r0p0 (eight channels). Only used by bootrom on New3DS.
YesA11FCRAM configuration0x10201000TwlBg, Kernel11 (dead code)
YesA11LCD Registers0x10202000TwlBg, Kernel11, GSP Services
YesA11DSP Registers0x10203000DSP Servicessee the “DSi XpertTeak” section in 🔗 no$gba help.
NoA11?0x10204000?
NoA11CDMA0x10206000NewKernel11🔗 CoreLink™ DMA-330 r1p2 (eight channels). This is the DMA engine actually being used by the New3DS ARM11 kernel.
NoA11MVD Registers0x10207000MVD ServicesNew 3DS only?
YesA11AXI0x1020F000TwlBg, GSP Services🔗 CoreLink™ NIC-301 r1p2.
YesA11AHB (or AXI?) FIFOs region0x10300000-0x10340000Pages present in this region correspond to the same respective devices in the 0x10100000-0x10140000 region but don’t hold the same registers. They hold the FIFOs instead: the HASH FIFO register is located at 0x10301000. The LgyFb scaler data FIFO are located at 0x10310000 (top) and 0x10311000 (bot), etc. Needed for DMA.
YesA11GPU Registers0x10400000Boot11, Kernel11, GSP Services

IO registers starting at physical address 0x10200000 are not accessible from the ARM9 (which includes all LCD/GPU registers). It seems IO registers below physical address 0x10100000 are not accessible from the ARM11 bus.

ARM11 kernel virtual address mappings for these registers varies for different builds. For ARM11 user mode applications you have:

physaddr = virtaddr - 0x1EC00000 + 0x10100000