Microcode

/!\ uCode Revision 297 and newer use a different txheader!

(1) Value for standard 3-wire configuration. (2) Only used for multiple-BSS (mBSS) devices.

PCM Microcode

Initial Values

Band Switch Initial Values

TX FIFO Size

Firmware Fixup

In some special instances that are not understand, the TX FIFO sizes supported by the hardware are different (larger?) than used by the microcode. In those instances, the following routine is needed.

  1. If the 802.11 core revision is greater or equal 15 and mBSS is implemented
    1. The FIFO start block is 65
  2. Otherwise
    1. The FIFO start block is 6
  3. Loop through all 6 FIFOs (0-5)
    1. Calculate the FIFO End Block = Start Block + TX FIFO size for this FIFO
    2. Calculate FIFO mask as (Start Block) | ((End Block - 1) left shifted by 8)
    3. Generate FIFO command as (1 << 15) | (loop number) << 8

    4. Write command to MIMO register 0x540
    5. Write mask to MIMO register 0x520
    6. Write command MIMO to register 0x540
    7. Copy the End Block to the Start Block
  4. Left shift the size of TX FIFO 1 by 8 and bitwise mask it with the size of TX FIFO 0
  5. Write the value to SHM Location 0x98
  6. Left shift the size of TX FIFO 3 by 8 and bitwise mask it with the size of TX FIFO 2
  7. Write the value to SHM Location 0x9A
  8. Left shift the size of TX FIFO 5 by 8 and bitwise mask it with the size of TX FIFO 4
  9. Write the value to SHM Location 0x9C
  10. Write 0 to SHM Location 0x9E

802.11/Init/Firmware (last edited 2011-07-21 21:10:41 by lwfinger)