diff --git a/content/SUMMARY.md b/content/SUMMARY.md
index 26152a7..587494f 100644
--- a/content/SUMMARY.md
+++ b/content/SUMMARY.md
@@ -11,6 +11,7 @@
* [DS Sound](ds_sound.md)
* [DS Peripherals](ds_peripherals.md)
* [DS WiFi (Mitsumi)](ds_wifi.md)
+ * [DS WiFi I/O Map](ds_wifi_io_map.md)
* [DSi Introduction](dsi_introduction.md)
* [DSi I/O Map](dsi_io_map.md)
* [DSi Control Registers](dsi_control_regs.md)
diff --git a/content/ds_wifi_io_map.md b/content/ds_wifi_io_map.md
new file mode 100644
index 0000000..1cb42a4
--- /dev/null
+++ b/content/ds_wifi_io_map.md
@@ -0,0 +1,275 @@
+# DS WiFi I/O Map
+
+The following registers are only accessible from the ARM7. They are located at
+addresses 0x4808000 to 0x4808FFF. Addresses not included in the following list
+aren't used. Also, many of the registers that are used aren't understood.
+
+Important note: 8-bit writes don't work on WiFi registers and RAM, they are
+ignored.
+
+
+## General registers
+
+| Address | Access | Name | Description |
+|---------|--------|-------------------|---------------------------------------|
+| 4808000 | R | `W_ID` | Chip ID
+| 4808004 | R/W | `W_MODE_RST` | Reset
+| 4808006 | R/W | `W_MODE_WEP` | WEP and software modes
+| 4808008 | R/W | `W_TXSTATCNT` | Beacon status request
+| 480800A | R/W | `W_X_00A` |
+| 4808010 | R/W | `W_IF` | WiFi interrupt request flags
+| 4808012 | R/W | `W_IE` | WiFi interrupt enable
+| 4808018 | R/W | `W_MACADDR_0` | Hardware MAC address
+| 480801A | R/W | `W_MACADDR_1` | Hardware MAC address
+| 480801C | R/W | `W_MACADDR_2` | Hardware MAC address
+| 4808020 | R/W | `W_BSSID_0` | BSSID
+| 4808022 | R/W | `W_BSSID_1` | BSSID
+| 4808024 | R/W | `W_BSSID_2` | BSSID
+| 4808028 | R/W | `W_AID_LOW` |
+| 480802A | R/W | `W_AID_FULL` |
+| 480802C | R/W | `W_TX_RETRYLIMIT` | TX retry limit
+| 480802E | R/W | `W_INTERNAL` |
+| 4808030 | R/W | `W_RXCNT` | RX control
+| 4808032 | R/W | `W_WEP_CNT` | WEP encryption enable
+| 4808034 | R? | `W_INTERNAL` |
+
+
+## Power registers
+
+| Address | Access | Name | Description |
+|---------|--------|----------------|------------------------------------------|
+| 4808036 | R/W | `W_POWER_US` |
+| 4808038 | R/W | `W_POWER_TX` |
+| 480803C | R/W | `W_POWERSTATE` |
+| 4808040 | R/W | `W_POWERFORCE` |
+| 4808044 | R | `W_RANDOM` |
+| 4808048 | R/W | `W_POWER_048` |
+
+
+## Receive control
+
+| Address | Access | Name | Description |
+|---------|--------|-------------------|---------------------------------------|
+| 4808050 | R/W | `W_RXBUF_BEGIN` |
+| 4808052 | R/W | `W_RXBUF_END` |
+| 4808054 | R | `W_RXBUF_WRCSR` |
+| 4808056 | R/W | `W_RXBUF_WR_ADDR` |
+| 4808058 | R/W | `W_RXBUF_RD_ADDR` |
+| 480805A | R/W | `W_RXBUF_READCSR` |
+| 480805C | R/W | `W_RXBUF_COUNT` |
+| 4808060 | R | `W_RXBUF_RD_DATA` |
+| 4808062 | R/W | `W_RXBUF_GAP` |
+| 4808064 | R/W | `W_RXBUF_GAPDISP` |
+
+
+## Transmit control
+
+| Address | Access | Name | Description |
+|---------|--------|-------------------|---------------------------------------|
+| 4808068 | R/W | `W_TXBUF_WR_ADDR` |
+| 480806C | R/W | `W_TXBUF_COUNT` |
+| 4808070 | W | `W_TXBUF_WR_DATA` |
+| 4808074 | R/W | `W_TXBUF_GAP` |
+| 4808076 | R/W | `W_TXBUF_GAPDISP` |
+| 4808078 | W | `W_INTERNAL` |
+| 4808080 | R/W | `W_TXBUF_BEACON` | Beacon transmit location
+| 4808084 | R/W | `W_TXBUF_TIM` | Beacon TIM index in frame body
+| 4808088 | R/W | `W_LISTENCOUNT` | Listen count
+| 480808C | R/W | `W_BEACONINT` | Beacon interval
+| 480808E | R/W | `W_LISTENINT` | Listen interval
+| 4808090 | R/W | `W_TXBUF_CMD` | Multiplay command
+| 4808094 | R/W | `W_TXBUF_REPLY1` | Multiplay next reply
+| 4808098 | R | `W_TXBUF_REPLY2` | Multiplay current reply
+| 480809C | R/W | `W_INTERNAL` |
+| 48080A0 | R/W | `W_TXBUF_LOC1` |
+| 48080A4 | R/W | `W_TXBUF_LOC2` |
+| 48080A8 | R/W | `W_TXBUF_LOC3` |
+| 48080AC | W | `W_TXREQ_RESET` |
+| 48080AE | W | `W_TXREQ_SET` |
+| 48080B0 | R | `W_TXREQ_READ` |
+| 48080B4 | W | `W_TXBUF_RESET` |
+| 48080B6 | R | `W_TXBUSY` |
+| 48080B8 | R | `W_TXSTAT` |
+| 48080BA | ? | `W_INTERNAL` |
+| 48080BC | R/W | `W_PREAMBLE` |
+| 48080C0 | R/W | `W_CMD_TOTALTIME` |
+| 48080C4 | R/W | `W_CMD_REPLYTIME` |
+| 48080C8 | ? | `W_INTERNAL` |
+| 48080D0 | R/W | `W_RXFILTER` |
+| 48080D4 | R/W | `W_CONFIG_0D4` |
+| 48080D8 | R/W | `W_CONFIG_0D8` |
+| 48080DA | R/W | `W_RX_LEN_CROP` |
+| 48080E0 | R/W | `W_RXFILTER2` |
+
+
+## WiFi timers
+
+| Address | Access | Name | Description |
+|---------|--------|-------------------|---------------------------------------|
+| 48080E8 | R/W | `W_US_COUNTCNT` | Microsecond counter enable
+| 48080EA | R/W | `W_US_COMPARECNT` | Microsecond compare enable
+| 48080EC | R/W | `W_CONFIG_0EC` |
+| 48080EE | R/W | `W_CMD_COUNTCNT` |
+| 48080F0 | R/W | `W_US_COMPARE0` | Microsecond compare value
+| 48080F2 | R/W | `W_US_COMPARE1` | Microsecond compare value
+| 48080F4 | R/W | `W_US_COMPARE2` | Microsecond compare value
+| 48080F6 | R/W | `W_US_COMPARE3` | Microsecond compare value
+| 48080F8 | R/W | `W_US_COUNT0` | Microsecond counter
+| 48080FA | R/W | `W_US_COUNT1` | Microsecond counter
+| 48080FC | R/W | `W_US_COUNT2` | Microsecond counter
+| 48080FE | R/W | `W_US_COUNT3` | Microsecond counter
+| 4808100 | ? | `W_INTERNAL` |
+| 4808102 | ? | `W_INTERNAL` |
+| 4808104 | ? | `W_INTERNAL` |
+| 4808106 | ? | `W_INTERNAL` |
+| 480810C | R/W | `W_CONTENTFREE` |
+| 4808110 | R/W | `W_PRE_BEACON` |
+| 4808118 | R/W | `W_CMD_COUNT` |
+| 480811C | R/W | `W_BEACON_COUNT` |
+
+
+## Configuration ports
+
+| Address | Access | Name | Description |
+|---------|--------|-----------------|-----------------------------------------|
+| 4808120 | R/W | `W_CONFIG_120` |
+| 4808122 | R/W | `W_CONFIG_122` |
+| 4808124 | R/W | `W_CONFIG_124` |
+| 4808126 | ? | `W_INTERNAL` |
+| 4808128 | R/W | `W_CONFIG_128` |
+| 480812A | ? | `W_INTERNAL` |
+| 4808130 | R/W | `W_CONFIG_130` |
+| 4808132 | R/W | `W_CONFIG_132` |
+| 4808134 | R/W | `W_POST_BEACON` |
+| 4808140 | R/W | `W_CONFIG_140` |
+| 4808142 | R/W | `W_CONFIG_142` |
+| 4808144 | R/W | `W_CONFIG_144` |
+| 4808146 | R/W | `W_CONFIG_146` |
+| 4808148 | R/W | `W_CONFIG_148` |
+| 480814A | R/W | `W_CONFIG_14A` |
+| 480814C | R/W | `W_CONFIG_14C` |
+| 4808150 | R/W | `W_CONFIG_150` |
+| 4808154 | R/W | `W_CONFIG_154` |
+
+
+## Baseband chip
+
+| Address | Access | Name | Description |
+|---------|--------|-----------------|-----------------------------------------|
+| 4808158 | W | `W_BB_CNT` | BB access control
+| 480815A | W | `W_BB_WRITE` | Byte to write to BB
+| 480815C | R | `W_BB_READ` | Byte read from BB
+| 480815E | R | `W_BB_BUSY` | BB access busy Flag
+| 4808160 | R/W | `W_BB_MODE` | BB access mode
+| 4808168 | R/W | `W_BB_POWER` | BB access powerdown
+
+
+## Internal registers
+
+| Address | Access | Name | Description |
+|---------|--------|-----------------|-----------------------------------------|
+| 480816A | ? | `W_INTERNAL` |
+| 4808170 | ? | `W_INTERNAL` |
+| 4808172 | ? | `W_INTERNAL` |
+| 4808174 | ? | `W_INTERNAL` |
+| 4808176 | ? | `W_INTERNAL` |
+| 4808178 | W | `W_INTERNAL` |
+
+
+## RF chip
+
+| Address | Access | Name | Description |
+|---------|--------|-----------------|-----------------------------------------|
+| 480817C | R/W | `W_RF_DATA2` |
+| 480817E | R/W | `W_RF_DATA1` |
+| 4808180 | R | `W_RF_BUSY` |
+| 4808184 | R/W | `W_RF_CNT` |
+| 4808190 | R/W | `W_INTERNAL` |
+| 4808194 | R/W | `W_TX_HDR_CNT` |
+| 4808198 | R/W | `W_INTERNAL` |
+| 480819C | R | `W_RF_PINS` |
+| 48081A0 | R/W | `W_X_1A0` |
+| 48081A2 | R/W | `W_X_1A2` |
+| 48081A4 | R/W | `W_X_1A4` |
+
+
+## WiFi statistics
+
+| Address | Access | Name | Description |
+|---------|--------|-------------------|---------------------------------------|
+| 48081A8 | R | `W_RXSTAT_INC_IF` | Stats increment flags
+| 48081AA | R/W | `W_RXSTAT_INC_IE` | Stats increment IRQ enable
+| 48081AC | R | `W_RXSTAT_OVF_IF` | Stats half-overflow flags
+| 48081AE | R/W | `W_RXSTAT_OVF_IE` | Stats half-overflow IRQ enable
+| 48081B0 | R/W | `W_RXSTAT` |
+| 48081B2 | R/W | `W_RXSTAT` |
+| 48081B4 | R/W | `W_RXSTAT` |
+| 48081B6 | R/W | `W_RXSTAT` |
+| 48081B8 | R/W | `W_RXSTAT` |
+| 48081BA | R/W | `W_RXSTAT` |
+| 48081BC | R/W | `W_RXSTAT` |
+| 48081BE | R/W | `W_RXSTAT` |
+| 48081C0 | R/W | `W_TX_ERR_COUNT` | TX error count
+| 48081C4 | R | `W_RX_COUNT` |
+| 48081D0 | R/W | `W_CMD_STAT` |
+| 48081D2 | R/W | `W_CMD_STAT` |
+| 48081D4 | R/W | `W_CMD_STAT` |
+| 48081D6 | R/W | `W_CMD_STAT` |
+| 48081D8 | R/W | `W_CMD_STAT` |
+| 48081DA | R/W | `W_CMD_STAT` |
+| 48081DC | R/W | `W_CMD_STAT` |
+| 48081DE | R/W | `W_CMD_STAT` |
+
+
+## Internal diagnostics
+
+| Address | Access | Name | Description |
+|---------|--------|-----------------|-----------------------------------------|
+| 48081F0 | R/W | `W_INTERNAL` |
+| 4808204 | ? | `W_INTERNAL` |
+| 4808208 | ? | `W_INTERNAL` |
+| 480820C | W | `W_INTERNAL` |
+| 4808210 | R | `W_TX_SEQNO` |
+| 4808214 | R | `W_RF_STATUS` |
+| 480821C | W | `W_IF_SET` | Set bits in `W_IF` to force interrupts.
+| 4808220 | R/W | `W_RAM_DISABLE` | WiFi RAM control
+| 4808224 | R/W | `W_INTERNAL` |
+| 4808228 | W | `W_X_228` |
+| 4808230 | R/W | `W_INTERNAL` |
+| 4808234 | R/W | `W_INTERNAL` |
+| 4808238 | R/W | `W_INTERNAL` |
+| 480823C | ? | `W_INTERNAL` |
+| 4808244 | R/W | `W_X_244` |
+| 4808248 | R/W | `W_INTERNAL` |
+| 480824C | R | `W_INTERNAL` |
+| 480824E | R | `W_INTERNAL` |
+| 4808250 | R | `W_INTERNAL` |
+| 4808254 | ? | `W_CONFIG_254` |
+| 4808258 | ? | `W_INTERNAL` |
+| 480825C | ? | `W_INTERNAL` |
+| 4808260 | ? | `W_INTERNAL` |
+| 4808264 | R | `W_INTERNAL` |
+| 4808268 | R | `W_RXTX_ADDR` |
+| 4808270 | R | `W_INTERNAL` |
+| 4808274 | ? | `W_INTERNAL` |
+| 4808278 | R/W | `W_INTERNAL` |
+| 480827C | ? | `W_INTERNAL` |
+| 4808290 | (R/W) | `W_X_290` |
+| 4808298 | W | `W_INTERNAL` |
+| 48082A0 | R/W | `W_INTERNAL` |
+| 48082A2 | R | `W_INTERNAL` |
+| 48082A4 | R | `W_INTERNAL` |
+| 48082A8 | W | `W_INTERNAL` |
+| 48082AC | ? | `W_INTERNAL` |
+| 48082B0 | W | `W_INTERNAL` |
+| 48082B4 | R/W | `W_INTERNAL` |
+| 48082B8 | ? | `W_INTERNAL` |
+| 48082C0 | R/W | `W_INTERNAL` |
+| 48082C4 | R | `W_INTERNAL` |
+| 48082C8 | R | `W_INTERNAL` |
+| 48082CC | R | `W_INTERNAL` |
+| 48082D0 | ? | `W_INTERNAL` |
+| 48082F0 | R/W | `W_INTERNAL` |
+| 48082F2 | R/W | `W_INTERNAL` |
+| 48082F4 | R/W | `W_INTERNAL` |
+| 48082F6 | R/W | `W_INTERNAL` |