DSWifi RegMap

From wiki.akkit.org

(Return to the DSWifi Documentation Main Page)

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  ?