DSWifi RegMap
From wiki.akkit.org
(Return to the DSWifi Documentation Main Page)
[edit]
Wifi I/O Register Map
| Address | RW | Name | Init Value | Description / Comments |
|---|---|---|---|---|
| 0x04800000 | R | ? | 1440 | ? |
| 0x04800004 | RW | W_MODE_RST | 0000 | Mode/Reset |
| 0x04800006 | RW | W_MODE_WEP | 0000 | Mode / Wep Modes |
| 0x04800008 | ?W | ? | 0000 | ? |
| 0x0480000A | ?W | ? | 0000 | (bit7 - ingore rx duplicates) |
| 0x04800010 | RW | W_IF | 0000 | Wifi Interrupt Request Flags (works like IF) |
| 0x04800012 | RW | W_IE | 0000 | Wifi Interrupt Enable |
| 0x04800018 | RW | W_MACADDR | 0000 0000 0000 | Hardware MAC Address (6 bytes) |
| 0x04800020 | RW | W_BSSID | 0000 0000 0000 | BSSID (6 bytes) |
| 0x04800028 | ?W | W_AID | 0000 | the AID value assigned by a BSS. |
| 0x0480002A | ?W | ? | 0000 | set to the same thing as W_AID always |
| 0x0480002C | ?W | W_RETRLIMIT | 0707 | Retry Limit (set from 0x00-0xFF) |
| 0x0480002E | ?? | ? | 0000 | ? |
| 0x04800030 | ?W | W_RXCNT | 0000 | Receive control, top bit: enable, bottom bit: latch rx range registers |
| 0x04800032 | ?W | ? | 0000 | WEP engine enable: 0x8000: enable, 0x0000: disable (enables/disables WEP processing of sent/received packets) |
| 0x04800034 | ?? | ? | 0000 | ? |
| 0x04800036 | ?W | ? | 0001 | 1:disable? |
| 0x04800038 | ?W | ? | 0003 | transmit-related power save or something ( bit 0 is power save related ) |
| 0x0480003C | ?W | W_POWERSTATE | 0200 | {{{5}}} |
| 0x04800040 | ?W | W_FORCEPS | 0000 | Force Power State - [bit 15: allow forcing of power state, 1:force] [bit0: power state to force 0:disable, 1:enable]
{{dswifi_linker |
| 0x04800048 | ?W | ? | 0000 | 0, 3 (3 is power-save related.) |
| 0x04800050 | RW | W_RXRANGEBEGIN | 4000 | The first location in mac memory used for the RX circular buffer (latched when bottom bit of W_RXCNT is set) |
| 0x04800052 | RW | W_RXRANGEEND | 4800 | The address immediately after the last location in MAC memory used for the RX circular buffer (latched when bottom bit of W_RXCNT is set) |
| 0x04800054 | R | W_RXHWWRITECSR | 0000 | {{{5}}} |
| 0x04800056 | RW | W_WRITECSRLATCH | 0000 | When bottom bit of W_RXCNT is set, this value is loaded into W_RXHWWRWITECSR |
| 0x04800058 | RW | W_CIRCBUFRDADR | 0000 | A read cursor in the circular buffer; not used for anything but manual reading of W_CIRCBUFREAD |
| 0x0480005A | RW | W_RXREADCSR | 0000 | The "Begin" location of the circular buffer; the hardware write cursor will not go past this value when writing data. Must be moved by software after reading a packet |
| 0x0480005C | RW | ? | 0000 | (mask 0x0fff) Counts down; triggers wifi interrupt 9 when it reaches 0 |
| 0x04800060 | R | W_CIRCBUFREAD | xxxx | every time you read this address it returns the data in the mac buffer at the address in W_CIRCBUFRDADR and increments W_CIRCBUFRDADR by 2 |
| 0x04800062 | RW | ? | 0000 | mask 0x1ffe |
| 0x04800064 | RW | ? | 0000 | mask 0x0fff |
| 0x04800068 | RW | W_CIRCBUFWRADR | 0000 | A write cursor in the circular buffer; not used for anything but manual writing to W_CIRCBUFWRITE (haven't checked to see if this actually is a circular buffer thing, the read one is though) |
| 0x0480006C | RW | ? | 0000 | mask 0x0fff |
| 0x04800070 | RW | W_CIRCBUFWRITE | xxxx | When you read, this register mirrors W_CIRCBUFREAD without modifying W_CIRCBUFRDADR.. when you write, it writes the value to the address in MAC mem specified by W_CIRCBUFWRADR, and increments it by 2. |
| 0x04800074 | RW | ? | 0000 | mask 0x1ffe |
| 0x04800076 | ?W | ? | 0000 | ? |
| 0x04800080 | RW | W_BEACONTRANS | 0000 | {{{5}}} |
| 0x04800084 | ?W | ? | 0000 | ? |
| 0x04800088 | RW | W_LISTENCOUNT | 0000 | Decrements; when it reaches zero, it's reloaded with W_LISTENINT |
| 0x0480008C | RW | W_BEACONPERIOD | 0064 | Frequency in milliseconds of beacon transmission |
| 0x0480008E | RW | W_LISTENINT | 0000 | Listen interval; related to W_LISTENCOUNT |
| 0x04800090 | ?W | ? | 0000 | ? |
| 0x04800094 | ?W | ? | 0000 | ? |
| 0x04800098 | ?W | ? | 0000 | ? |
| 0x048000A0 | RW | W_TXLOC1 | 0050 | Transmit slot #1 (bit 0) |
| 0x048000A4 | RW | W_TXLOC2 | 0000 | Transmit slot #2 (bit 2) |
| 0x048000A8 | RW | W_TXLOC3 | 0000 | Transmit slot #3 (bit 3) |
| 0x048000AC | W | W_TXOPT | 0050 | Transmit options... Options that exist are unclear. |
| 0x048000AE | W | W_TXCNT | 0050 | Write here to enable the transmission of one or more of the 3 transmit slots |
| 0x048000B0 | R? | W_TXINFO | 0010 | Info about transmit state |
| 0x048000B4 | ?W | ? | 0000 | ? |
| 0x048000B6 | R? | ? | 0000 | ? |
| 0x048000B8 | R? | W_TXSTAT | 0000 | Status of recently transmitted frame |
| 0x048000BA | R? | ? | 0000 | ? |
| 0x048000BC | ?W | ? | 0001 | ( |
| 0x048000C0 | R? | ? | 0000 | ? |
| 0x048000C4 | R? | ? | 0000 | ? |
| 0x048000C8 | R? | ? | 0000 | ? |
| 0x048000D0 | RW | W_RXFILTER | 0401 | Specifies what packets to allow, combinations are unknown. |
| 0x048000D4 | ?W | ? | 0001 | ? |
| 0x048000D8 | ?W | ? | 0004 | ? |
| 0x048000DA | ?W | ? | 0602 | ? |
| 0x048000E0 | ?W | ? | 0008 | ? |
| 0x048000E8 | RW | W_USCOUNTERCNT | 0000 | {{{5}}} |
| 0x048000EA | ?W | ? | 0000 | ? |
| 0x048000EC | ?W | ? | 3F03 | ? |
| 0x048000EE | ?W | ? | 0001 | ? |
| 0x048000F0 | ?W | ? | FC00 | F0-F7 are compared with F8 through FEl |
| 0x048000F2 | ?W | ? | FFFF | When they match, 11C is reloaded with W_BEACONPERIOD, 134 is set to FFFF, and interrupt 14 triggers (may not be related) |
| 0x048000F4 | ?W | ? | FFFF | |
| 0x048000F6 | ?W | ? | FFFF | |
| 0x048000F8 | RW | W_USCOUNTER0 | 0000 | Microsecond counter, bottom 16 bits |
| 0x048000FA | RW | W_USCOUNTER1 | 0000 | Microsecond counter, bits 16-31 |
| 0x048000FC | RW | W_USCOUNTER2 | 0000 | Microsecond counter, bits 32-47 |
| 0x048000FE | RW | W_USCOUNTER3 | 0000 | Microsecond counter, bits 48-63 |
| 0x04800100 | ?W | ? | 0000 | ? |
| 0x04800102 | ?W | ? | 0000 | ? |
| 0x04800104 | ?W | ? | 0000 | ? |
| 0x04800106 | ?W | ? | 0000 | ? |
| 0x0480010C | ?W | ? | 0000 | (Set to the remaining duration of contention-free period when receiving beacons - only *really* necessary for the wimpy powersaving mode) |
| 0x04800110 | ?W | ? | 0000 | ? |
| 0x04800118 | ?W | ? | 0000 | ? |
| 0x0480011C | ?W | ? | 0000 | (Decreases, when reaches 0 is reloaded with W_BEACONPERIOD) |
| 0x04800120 | RW | ? | 0048 | |
| 0x04800122 | RW | ? | 4840 | mask 0xffff |
| 0x04800124 | RW | ? | 0000 | mask 0xffff |
| 0x04800126 | RW | ? | 0080 | |
| 0x04800128 | RW | ? | 0000 | mask 0xffff |
| 0x0480012A | RW | ? | 1000 | |
| 0x04800130 | RW | ? | 0142 | mask 0x0fff |
| 0x04800132 | RW | ? | 8064 | mask 0x8fff |
| 0x04800134 | RW | W_BEACONCOUNT | FFFF | (I think) This is the millisecond counter that tracks when beacons are expected to be transmitted. ("Active zone time" - it tracks some aspect of the Contention-free perio) |
| 0x04800140 | RW | ? | 0000 | mask 0xffff |
| 0x04800142 | RW | ? | 2443 | mask 0xffff |
| 0x04800144 | RW | ? | 0042 | |
| 0x04800146 | RW | ? | 0016 | |
| 0x04800148 | RW | ? | 0016 | |
| 0x0480014A | RW | ? | 0016 | |
| 0x0480014C | RW | ? | 162C | |
| 0x04800150 | ?W | ? | 0204 | ? |
| 0x04800154 | ?W | ? | 0058 | ? |
| 0x04800158 | ?W | W_BBSIOCNT | 00B5 | 0x6xxx - read from address xxx, 0x5xxx - write to address xxx |
| 0x0480015A | ?W | W_BBSIOWRITE | 0000 | byte data to write |
| 0x0480015C | ?W | W_BBSIOREAD | 00B5 | byte data read |
| 0x0480015E | ?W | W_BBSIOBUSY | 0000 | {{{5}}} |
| 0x04800160 | ?W | ? | 0100 | ? |
| 0x04800168 | ?W | ? | 800D | ? |
| 0x0480016A | ?W | ? | 0001 | ? |
| 0x04800170 | ?W | ? | 0000 | ? |
| 0x04800172 | ?W | ? | 0000 | ? |
| 0x04800174 | ?W | ? | 0000 | ? |
| 0x04800176 | ?W | ? | 0000 | ? |
| 0x04800178 | ?W | ? | 0800 | ? |
| 0x0480017C | ?W | W_RFSIODATA2 | 0800 | ? |
| 0x0480017E | ?W | W_RFSIODATA1 | C008 | ? |
| 0x04800180 | ?W | W_RFSIOBUSY | 0000 | ? |
| 0x04800184 | ?W | W_RFSIOCNT | 0018 | ? |
| 0x04800190 | ?W | ? | 0000 | ? |
| 0x04800194 | ?W | ? | 0000 | ? |
| 0x04800198 | ?W | ? | 0000 | ? |
| 0x0480019C | ?W | ? | 0004 | {{{5}}} |
| 0x048001A0 | ?W | ? | 0000 | ? |
| 0x048001A2 | ?W | ? | 0001 | ? |
| 0x048001A4 | ?W | ? | 0000 | Rate used when signal test is enabled (0x0A or 0x14 for 1 or 2 mbit) |
| 0x048001A8 | R | ? | 0000 | REG_WL_STATSINC: Bitmask for which statistics have been increased atleast once. |
| 0x048001AA | RW | ? | 0000 | {{{5}}} |
| 0x048001AC | R | ? | 0000 | REG_WL_STATSOVF. Bitmask that tells which statistics have overflowed. |
| 0x048001AE | RW | ? | 0000 | REG_WL_STATSIEOVF. Statistic Interrupt Enable Control register for Overflow. bitmasks same as STATSIECNTUP. |
| 0x048001B0 | R | W_STAT | 0000 | W_STAT is a collection of byte-granular statitistics entries. These entries reset to 0 when read. |
| 0x048001B2 | R | W_STAT | 0000 | (RX_LengthErrorCount |
| 0x048001B4 | R | W_STAT | 0000 | |
| 0x048001B6 | R | W_STAT | 0000 | |
| 0x048001B8 | R | W_STAT | 0000 | |
| 0x048001BA | R | W_STAT | 0000 | |
| 0x048001BC | R | W_STAT | 0000 | |
| 0x048001BE | R | W_STAT | 0000 | |
| 0x048001C0 | R | W_STAT | 0000 | |
| 0x048001C4 | R | W_STAT | 0000 | |
| 0x048001D0 | R | W_STAT | 0000 | |
| 0x048001D2 | R | W_STAT | 0000 | |
| 0x048001D4 | R | W_STAT | 0000 | |
| 0x048001D6 | R | W_STAT | 0000 | |
| 0x048001D8 | R | W_STAT | 0000 | |
| 0x048001DA | R | W_STAT | 0000 | |
| 0x048001DC | R | W_STAT | 0000 | |
| 0x048001DE | R | W_STAT | 0000 | |
| 0x048001F0 | ?W | ? | 0000 | ? |
| 0x04800204 | ?W | ? | 0000 | ? |
| 0x04800208 | ?W | ? | 0000 | ? |
| 0x0480020C | ?W | ? | 0050 | ? |
| 0x04800210 | ?W | ? | 0000 | ? |
| 0x04800214 | ?W | ? | 0009 | ? |
| 0x0480021C | ?W | ? | 0000 | "Force Interrupt" - writing a value here will enable the flags in W_IF |
| 0x04800220 | ?W | ? | 0000 | has something to do with whether the packet is ignored or allowed by the packet filtering system |
| 0x04800224 | ?W | ? | 0003 | ? |
| 0x04800228 | ?W | ? | 0000 | ? |
| 0x04800230 | ?W | ? | 0047 | ? |
| 0x04800234 | ?W | ? | 0EFF | ? |
| 0x04800238 | ?W | ? | 0000 | ? |
| 0x0480023C | ?W | ? | 0000 | ? |
| 0x04800244 | ?W | ? | 0000 | ? |
| 0x04800248 | ?W | ? | 0000 | ? |
| 0x0480024C | ?W | ? | 0000 | ? |
| 0x0480024E | ?W | ? | 0000 | ? |
| 0x04800250 | ?W | ? | 0000 | ? |
| 0x04800258 | ?W | ? | 0000 | ? |
| 0x0480025C | ?W | ? | 0000 | ? |
| 0x04800260 | ?W | ? | 0FEF | ? |
| 0x04800264 | ?W | ? | 0000 | ? |
| 0x04800268 | R? | W_RXUNITS | 0005 | {{{5}}} |
| 0x04800270 | ?W | ? | 0000 | ? |
| 0x04800274 | ?W | ? | 0000 | ? |
| 0x04800278 | ?W | ? | 000F | ? |
| 0x0480027C | ?W | ? | 0000 | ? |
| 0x04800290 | ?W | ? | FFFF | {{{5}}} |
| 0x04800298 | ?W | ? | 0000 | ? |
| 0x048002A0 | ?W | ? | 0000 | ? |
| 0x048002A2 | ?W | ? | 7FFF | ? |
| 0x048002A4 | ?W | ? | 0000 | ? |
| 0x048002A8 | ?W | ? | 0000 | ? |
| 0x048002AC | ?W | ? | 0038 | ? |
| 0x048002B0 | ?W | ? | 0000 | ? |
| 0x048002B4 | ?W | ? | 0000 | ? |
| 0x048002B8 | ?W | ? | 0000 | ? |
| 0x048002C0 | ?W | ? | 0000 | ? |
| 0x048002C4 | ?W | ? | 000A | ? |
| 0x048002C8 | ?W | ? | 0000 | ? |
| 0x048002CC | ?W | ? | 0000 | ? |
| 0x048002F0 | ?W | ? | 0000 | ? |
| 0x048002F2 | ?W | ? | 0000 | ? |
| 0x048002F4 | ?W | ? | 0000 | ? |
| 0x048002F6 | ?W | ? | 0000 | ? |
