|
| 1 | +# DS WiFi I/O Map |
| 2 | + |
| 3 | +The following registers are only accessible from the ARM7. They are located at |
| 4 | +addresses 0x4808000 to 0x4808FFF. Addresses not included in the following list |
| 5 | +aren't used. Also, many of the registers that are used aren't understood. |
| 6 | + |
| 7 | +Important note: 8-bit writes don't work on WiFi registers and RAM, they are |
| 8 | +ignored. |
| 9 | + |
| 10 | +<a id="general_registers"></a> |
| 11 | +## General registers |
| 12 | + |
| 13 | +| Address | Access | Name | Description | |
| 14 | +|---------|--------|-------------------|---------------------------------------| |
| 15 | +| 4808000 | R | `W_ID` | Chip ID |
| 16 | +| 4808004 | R/W | `W_MODE_RST` | Reset |
| 17 | +| 4808006 | R/W | `W_MODE_WEP` | WEP and software modes |
| 18 | +| 4808008 | R/W | `W_TXSTATCNT` | Beacon status request |
| 19 | +| 480800A | R/W | `W_X_00A` | |
| 20 | +| 4808010 | R/W | `W_IF` | WiFi interrupt request flags |
| 21 | +| 4808012 | R/W | `W_IE` | WiFi interrupt enable |
| 22 | +| 4808018 | R/W | `W_MACADDR_0` | Hardware MAC address |
| 23 | +| 480801A | R/W | `W_MACADDR_1` | Hardware MAC address |
| 24 | +| 480801C | R/W | `W_MACADDR_2` | Hardware MAC address |
| 25 | +| 4808020 | R/W | `W_BSSID_0` | BSSID |
| 26 | +| 4808022 | R/W | `W_BSSID_1` | BSSID |
| 27 | +| 4808024 | R/W | `W_BSSID_2` | BSSID |
| 28 | +| 4808028 | R/W | `W_AID_LOW` | |
| 29 | +| 480802A | R/W | `W_AID_FULL` | |
| 30 | +| 480802C | R/W | `W_TX_RETRYLIMIT` | TX retry limit |
| 31 | +| 480802E | R/W | `W_INTERNAL` | |
| 32 | +| 4808030 | R/W | `W_RXCNT` | RX control |
| 33 | +| 4808032 | R/W | `W_WEP_CNT` | WEP encryption enable |
| 34 | +| 4808034 | R? | `W_INTERNAL` | |
| 35 | + |
| 36 | +<a id="power_registers"></a> |
| 37 | +## Power registers |
| 38 | + |
| 39 | +| Address | Access | Name | Description | |
| 40 | +|---------|--------|----------------|------------------------------------------| |
| 41 | +| 4808036 | R/W | `W_POWER_US` | |
| 42 | +| 4808038 | R/W | `W_POWER_TX` | |
| 43 | +| 480803C | R/W | `W_POWERSTATE` | |
| 44 | +| 4808040 | R/W | `W_POWERFORCE` | |
| 45 | +| 4808044 | R | `W_RANDOM` | |
| 46 | +| 4808048 | R/W | `W_POWER_048` | |
| 47 | + |
| 48 | +<a id="receive_control"></a> |
| 49 | +## Receive control |
| 50 | + |
| 51 | +| Address | Access | Name | Description | |
| 52 | +|---------|--------|-------------------|---------------------------------------| |
| 53 | +| 4808050 | R/W | `W_RXBUF_BEGIN` | |
| 54 | +| 4808052 | R/W | `W_RXBUF_END` | |
| 55 | +| 4808054 | R | `W_RXBUF_WRCSR` | |
| 56 | +| 4808056 | R/W | `W_RXBUF_WR_ADDR` | |
| 57 | +| 4808058 | R/W | `W_RXBUF_RD_ADDR` | |
| 58 | +| 480805A | R/W | `W_RXBUF_READCSR` | |
| 59 | +| 480805C | R/W | `W_RXBUF_COUNT` | |
| 60 | +| 4808060 | R | `W_RXBUF_RD_DATA` | |
| 61 | +| 4808062 | R/W | `W_RXBUF_GAP` | |
| 62 | +| 4808064 | R/W | `W_RXBUF_GAPDISP` | |
| 63 | + |
| 64 | +<a id="transmit_control"></a> |
| 65 | +## Transmit control |
| 66 | + |
| 67 | +| Address | Access | Name | Description | |
| 68 | +|---------|--------|-------------------|---------------------------------------| |
| 69 | +| 4808068 | R/W | `W_TXBUF_WR_ADDR` | |
| 70 | +| 480806C | R/W | `W_TXBUF_COUNT` | |
| 71 | +| 4808070 | W | `W_TXBUF_WR_DATA` | |
| 72 | +| 4808074 | R/W | `W_TXBUF_GAP` | |
| 73 | +| 4808076 | R/W | `W_TXBUF_GAPDISP` | |
| 74 | +| 4808078 | W | `W_INTERNAL` | |
| 75 | +| 4808080 | R/W | `W_TXBUF_BEACON` | Beacon transmit location |
| 76 | +| 4808084 | R/W | `W_TXBUF_TIM` | Beacon TIM index in frame body |
| 77 | +| 4808088 | R/W | `W_LISTENCOUNT` | Listen count |
| 78 | +| 480808C | R/W | `W_BEACONINT` | Beacon interval |
| 79 | +| 480808E | R/W | `W_LISTENINT` | Listen interval |
| 80 | +| 4808090 | R/W | `W_TXBUF_CMD` | Multiplay command |
| 81 | +| 4808094 | R/W | `W_TXBUF_REPLY1` | Multiplay next reply |
| 82 | +| 4808098 | R | `W_TXBUF_REPLY2` | Multiplay current reply |
| 83 | +| 480809C | R/W | `W_INTERNAL` | |
| 84 | +| 48080A0 | R/W | `W_TXBUF_LOC1` | |
| 85 | +| 48080A4 | R/W | `W_TXBUF_LOC2` | |
| 86 | +| 48080A8 | R/W | `W_TXBUF_LOC3` | |
| 87 | +| 48080AC | W | `W_TXREQ_RESET` | |
| 88 | +| 48080AE | W | `W_TXREQ_SET` | |
| 89 | +| 48080B0 | R | `W_TXREQ_READ` | |
| 90 | +| 48080B4 | W | `W_TXBUF_RESET` | |
| 91 | +| 48080B6 | R | `W_TXBUSY` | |
| 92 | +| 48080B8 | R | `W_TXSTAT` | |
| 93 | +| 48080BA | ? | `W_INTERNAL` | |
| 94 | +| 48080BC | R/W | `W_PREAMBLE` | |
| 95 | +| 48080C0 | R/W | `W_CMD_TOTALTIME` | |
| 96 | +| 48080C4 | R/W | `W_CMD_REPLYTIME` | |
| 97 | +| 48080C8 | ? | `W_INTERNAL` | |
| 98 | +| 48080D0 | R/W | `W_RXFILTER` | |
| 99 | +| 48080D4 | R/W | `W_CONFIG_0D4` | |
| 100 | +| 48080D8 | R/W | `W_CONFIG_0D8` | |
| 101 | +| 48080DA | R/W | `W_RX_LEN_CROP` | |
| 102 | +| 48080E0 | R/W | `W_RXFILTER2` | |
| 103 | + |
| 104 | +<a id="wifi_timers"></a> |
| 105 | +## WiFi timers |
| 106 | + |
| 107 | +| Address | Access | Name | Description | |
| 108 | +|---------|--------|-------------------|---------------------------------------| |
| 109 | +| 48080E8 | R/W | `W_US_COUNTCNT` | Microsecond counter enable |
| 110 | +| 48080EA | R/W | `W_US_COMPARECNT` | Microsecond compare enable |
| 111 | +| 48080EC | R/W | `W_CONFIG_0EC` | |
| 112 | +| 48080EE | R/W | `W_CMD_COUNTCNT` | |
| 113 | +| 48080F0 | R/W | `W_US_COMPARE0` | Microsecond compare value |
| 114 | +| 48080F2 | R/W | `W_US_COMPARE1` | Microsecond compare value |
| 115 | +| 48080F4 | R/W | `W_US_COMPARE2` | Microsecond compare value |
| 116 | +| 48080F6 | R/W | `W_US_COMPARE3` | Microsecond compare value |
| 117 | +| 48080F8 | R/W | `W_US_COUNT0` | Microsecond counter |
| 118 | +| 48080FA | R/W | `W_US_COUNT1` | Microsecond counter |
| 119 | +| 48080FC | R/W | `W_US_COUNT2` | Microsecond counter |
| 120 | +| 48080FE | R/W | `W_US_COUNT3` | Microsecond counter |
| 121 | +| 4808100 | ? | `W_INTERNAL` | |
| 122 | +| 4808102 | ? | `W_INTERNAL` | |
| 123 | +| 4808104 | ? | `W_INTERNAL` | |
| 124 | +| 4808106 | ? | `W_INTERNAL` | |
| 125 | +| 480810C | R/W | `W_CONTENTFREE` | |
| 126 | +| 4808110 | R/W | `W_PRE_BEACON` | |
| 127 | +| 4808118 | R/W | `W_CMD_COUNT` | |
| 128 | +| 480811C | R/W | `W_BEACON_COUNT` | |
| 129 | + |
| 130 | +<a id="configuration_ports"></a> |
| 131 | +## Configuration ports |
| 132 | + |
| 133 | +| Address | Access | Name | Description | |
| 134 | +|---------|--------|-----------------|-----------------------------------------| |
| 135 | +| 4808120 | R/W | `W_CONFIG_120` | |
| 136 | +| 4808122 | R/W | `W_CONFIG_122` | |
| 137 | +| 4808124 | R/W | `W_CONFIG_124` | |
| 138 | +| 4808126 | ? | `W_INTERNAL` | |
| 139 | +| 4808128 | R/W | `W_CONFIG_128` | |
| 140 | +| 480812A | ? | `W_INTERNAL` | |
| 141 | +| 4808130 | R/W | `W_CONFIG_130` | |
| 142 | +| 4808132 | R/W | `W_CONFIG_132` | |
| 143 | +| 4808134 | R/W | `W_POST_BEACON` | |
| 144 | +| 4808140 | R/W | `W_CONFIG_140` | |
| 145 | +| 4808142 | R/W | `W_CONFIG_142` | |
| 146 | +| 4808144 | R/W | `W_CONFIG_144` | |
| 147 | +| 4808146 | R/W | `W_CONFIG_146` | |
| 148 | +| 4808148 | R/W | `W_CONFIG_148` | |
| 149 | +| 480814A | R/W | `W_CONFIG_14A` | |
| 150 | +| 480814C | R/W | `W_CONFIG_14C` | |
| 151 | +| 4808150 | R/W | `W_CONFIG_150` | |
| 152 | +| 4808154 | R/W | `W_CONFIG_154` | |
| 153 | + |
| 154 | +<a id="baseband_chip"></a> |
| 155 | +## Baseband chip |
| 156 | + |
| 157 | +| Address | Access | Name | Description | |
| 158 | +|---------|--------|-----------------|-----------------------------------------| |
| 159 | +| 4808158 | W | `W_BB_CNT` | BB access control |
| 160 | +| 480815A | W | `W_BB_WRITE` | Byte to write to BB |
| 161 | +| 480815C | R | `W_BB_READ` | Byte read from BB |
| 162 | +| 480815E | R | `W_BB_BUSY` | BB access busy Flag |
| 163 | +| 4808160 | R/W | `W_BB_MODE` | BB access mode |
| 164 | +| 4808168 | R/W | `W_BB_POWER` | BB access powerdown |
| 165 | + |
| 166 | +<a id="internal_registers"></a> |
| 167 | +## Internal registers |
| 168 | + |
| 169 | +| Address | Access | Name | Description | |
| 170 | +|---------|--------|-----------------|-----------------------------------------| |
| 171 | +| 480816A | ? | `W_INTERNAL` | |
| 172 | +| 4808170 | ? | `W_INTERNAL` | |
| 173 | +| 4808172 | ? | `W_INTERNAL` | |
| 174 | +| 4808174 | ? | `W_INTERNAL` | |
| 175 | +| 4808176 | ? | `W_INTERNAL` | |
| 176 | +| 4808178 | W | `W_INTERNAL` | |
| 177 | + |
| 178 | +<a id="rf_chip"></a> |
| 179 | +## RF chip |
| 180 | + |
| 181 | +| Address | Access | Name | Description | |
| 182 | +|---------|--------|-----------------|-----------------------------------------| |
| 183 | +| 480817C | R/W | `W_RF_DATA2` | |
| 184 | +| 480817E | R/W | `W_RF_DATA1` | |
| 185 | +| 4808180 | R | `W_RF_BUSY` | |
| 186 | +| 4808184 | R/W | `W_RF_CNT` | |
| 187 | +| 4808190 | R/W | `W_INTERNAL` | |
| 188 | +| 4808194 | R/W | `W_TX_HDR_CNT` | |
| 189 | +| 4808198 | R/W | `W_INTERNAL` | |
| 190 | +| 480819C | R | `W_RF_PINS` | |
| 191 | +| 48081A0 | R/W | `W_X_1A0` | |
| 192 | +| 48081A2 | R/W | `W_X_1A2` | |
| 193 | +| 48081A4 | R/W | `W_X_1A4` | |
| 194 | + |
| 195 | +<a id="wifi_statistics"></a> |
| 196 | +## WiFi statistics |
| 197 | + |
| 198 | +| Address | Access | Name | Description | |
| 199 | +|---------|--------|-------------------|---------------------------------------| |
| 200 | +| 48081A8 | R | `W_RXSTAT_INC_IF` | Stats increment flags |
| 201 | +| 48081AA | R/W | `W_RXSTAT_INC_IE` | Stats increment IRQ enable |
| 202 | +| 48081AC | R | `W_RXSTAT_OVF_IF` | Stats half-overflow flags |
| 203 | +| 48081AE | R/W | `W_RXSTAT_OVF_IE` | Stats half-overflow IRQ enable |
| 204 | +| 48081B0 | R/W | `W_RXSTAT` | |
| 205 | +| 48081B2 | R/W | `W_RXSTAT` | |
| 206 | +| 48081B4 | R/W | `W_RXSTAT` | |
| 207 | +| 48081B6 | R/W | `W_RXSTAT` | |
| 208 | +| 48081B8 | R/W | `W_RXSTAT` | |
| 209 | +| 48081BA | R/W | `W_RXSTAT` | |
| 210 | +| 48081BC | R/W | `W_RXSTAT` | |
| 211 | +| 48081BE | R/W | `W_RXSTAT` | |
| 212 | +| 48081C0 | R/W | `W_TX_ERR_COUNT` | TX error count |
| 213 | +| 48081C4 | R | `W_RX_COUNT` | |
| 214 | +| 48081D0 | R/W | `W_CMD_STAT` | |
| 215 | +| 48081D2 | R/W | `W_CMD_STAT` | |
| 216 | +| 48081D4 | R/W | `W_CMD_STAT` | |
| 217 | +| 48081D6 | R/W | `W_CMD_STAT` | |
| 218 | +| 48081D8 | R/W | `W_CMD_STAT` | |
| 219 | +| 48081DA | R/W | `W_CMD_STAT` | |
| 220 | +| 48081DC | R/W | `W_CMD_STAT` | |
| 221 | +| 48081DE | R/W | `W_CMD_STAT` | |
| 222 | + |
| 223 | +<a id="internal_diagnostics"></a> |
| 224 | +## Internal diagnostics |
| 225 | + |
| 226 | +| Address | Access | Name | Description | |
| 227 | +|---------|--------|-----------------|-----------------------------------------| |
| 228 | +| 48081F0 | R/W | `W_INTERNAL` | |
| 229 | +| 4808204 | ? | `W_INTERNAL` | |
| 230 | +| 4808208 | ? | `W_INTERNAL` | |
| 231 | +| 480820C | W | `W_INTERNAL` | |
| 232 | +| 4808210 | R | `W_TX_SEQNO` | |
| 233 | +| 4808214 | R | `W_RF_STATUS` | |
| 234 | +| 480821C | W | `W_IF_SET` | Set bits in `W_IF` to force interrupts. |
| 235 | +| 4808220 | R/W | `W_RAM_DISABLE` | WiFi RAM control |
| 236 | +| 4808224 | R/W | `W_INTERNAL` | |
| 237 | +| 4808228 | W | `W_X_228` | |
| 238 | +| 4808230 | R/W | `W_INTERNAL` | |
| 239 | +| 4808234 | R/W | `W_INTERNAL` | |
| 240 | +| 4808238 | R/W | `W_INTERNAL` | |
| 241 | +| 480823C | ? | `W_INTERNAL` | |
| 242 | +| 4808244 | R/W | `W_X_244` | |
| 243 | +| 4808248 | R/W | `W_INTERNAL` | |
| 244 | +| 480824C | R | `W_INTERNAL` | |
| 245 | +| 480824E | R | `W_INTERNAL` | |
| 246 | +| 4808250 | R | `W_INTERNAL` | |
| 247 | +| 4808254 | ? | `W_CONFIG_254` | |
| 248 | +| 4808258 | ? | `W_INTERNAL` | |
| 249 | +| 480825C | ? | `W_INTERNAL` | |
| 250 | +| 4808260 | ? | `W_INTERNAL` | |
| 251 | +| 4808264 | R | `W_INTERNAL` | |
| 252 | +| 4808268 | R | `W_RXTX_ADDR` | |
| 253 | +| 4808270 | R | `W_INTERNAL` | |
| 254 | +| 4808274 | ? | `W_INTERNAL` | |
| 255 | +| 4808278 | R/W | `W_INTERNAL` | |
| 256 | +| 480827C | ? | `W_INTERNAL` | |
| 257 | +| 4808290 | (R/W) | `W_X_290` | |
| 258 | +| 4808298 | W | `W_INTERNAL` | |
| 259 | +| 48082A0 | R/W | `W_INTERNAL` | |
| 260 | +| 48082A2 | R | `W_INTERNAL` | |
| 261 | +| 48082A4 | R | `W_INTERNAL` | |
| 262 | +| 48082A8 | W | `W_INTERNAL` | |
| 263 | +| 48082AC | ? | `W_INTERNAL` | |
| 264 | +| 48082B0 | W | `W_INTERNAL` | |
| 265 | +| 48082B4 | R/W | `W_INTERNAL` | |
| 266 | +| 48082B8 | ? | `W_INTERNAL` | |
| 267 | +| 48082C0 | R/W | `W_INTERNAL` | |
| 268 | +| 48082C4 | R | `W_INTERNAL` | |
| 269 | +| 48082C8 | R | `W_INTERNAL` | |
| 270 | +| 48082CC | R | `W_INTERNAL` | |
| 271 | +| 48082D0 | ? | `W_INTERNAL` | |
| 272 | +| 48082F0 | R/W | `W_INTERNAL` | |
| 273 | +| 48082F2 | R/W | `W_INTERNAL` | |
| 274 | +| 48082F4 | R/W | `W_INTERNAL` | |
| 275 | +| 48082F6 | R/W | `W_INTERNAL` | |
0 commit comments