Chip Init
Write 0x404 to MMIO offset 0x120
Microcode and PCM upload (See MicrocodeUpload)
Write 0xFFFFFFFF to MMIO offset 0x128
Write 0x20402 to MMIO offset 0x120 (StatusBitField)
Spinwait until the "Ready" bit in the Generic IRQ Reason register (MMIO offset 0x128) is set (wait length is up to 10 sec, check every 10 uSec)
Dummy read on MMIO offset 0x128
Set up the GPIOs
Upload the InitialValues
- If the Wireless Core revision is 9 or greater
- If framebursting is enabled
Write 0x5 to SHM offset 0x5C
- Otherwise
Write 0xA to SHM offset 0x5C
Write 0x1000000 to MMIO offset 0x100
If Core Revision is < 5
Write 0x1000000 to MMIO offset 0x10C
Unset bit 0x40000 and set bit 0x20000 in the StatusBitField
- If we're in PIO mode
Write the Probe Response Timeout value (default 0) to SHM offset 0x74
- If framebursting is enabled
Write 0x10 to SHM offset 0x400
- Otherwise
Write 0x8 to SHM offset 0x400
Set the slot time as required (see SlotTiming)
If the Core Revision is < 3
- Otherwise
- Write 0x80000000 to 0x188
- Write 0x2000000 to 0x18C
Write 0x4000 to MMIO offset 0x128 (Generic Interrupt Reason)
Write 0x1DC00 to MMIO offset 0x24 (DMA Interrupt Mask for Controller 1)
Write 0xDC00 to MMIO offset 0x2C (DMA Interrupt Mask for Controller 2)
Write 0xDC00 to MMIO offset 0x34 (DMA Interrupt Mask for Controller 3)
Write 0x1DC00 to MMIO offset 0x3C (DMA Interrupt Mask for Controller 4)
Write 0xDC00 to MMIO offset 0x44 (DMA Interrupt Mask for Controller 5)
Write 0xDC00 to MMIO offset 0x4C (DMA Interrupt Mask for Controller 6)
- Set Silicone Backplane Core Flags sbtmstatelow with 0x100000
- If the Wireless Core Revision is 5 or greater
Write the Fast Powerup Delay value to MMIO offset 0x6A8 (see PowerControl)
Write the Wireless Core revision to SHM offset 0x16
Write the Short Retry Limit (default 7) to SHM routing number 0x0002, offset 0x0006
Write the Long Retry Limit (default 4) to SHM routing number 0x0002, offset 0x0007
Write 3 to SHM offset 0x44
Write 2 to SHM offset 0x46
Set our MAC address in the MacAddressFilter at offset 0
Write our MAC address to TemplateRam offsets 0x20, 0x78 and 0x478 (
Do not clobber the first two octets of the BSSID, remember that we write in 32 bit chunks and the BSSID is not 32bit aligned!)
Set the BSSID MAC address in the MacAddressFilter at offset 3
Write the BSSID MAC address to TemplateRam offsets 0x26, 0x7E and 0x47E (
These addresses are not 32 bit aligned, you will need to compensate for this when writing these values.)
Loop Values
Loop Position |
MMIO 0x520 |
MMIO 0x540 |
0 |
0x00000506 |
0xFFFF8000 |
1 |
0x00001306 |
0xFFFF8100 |
2 |
0x00001E14 |
0xFFFF8200 |
3 |
0x0000271F |
0xFFFF8300 |
4 |
0x00003528 |
0xFFFF8400 |
5 |
0x00003736 |
0xFFFF8500 |