/!\ This may only be valid for chipsets with a single 802.11 core, so the combined 802.11a/b/g chipsets may not work properly.

  1. The saved Interrupts mask is set to 0xB007A864
  2. Attach to the BackPlane

  3. PowerControl Init

  4. PowerControl set clock to fast

  5. If the Board Type (from SPROM) is 0x4324, 0x4319 or 0x4312
    1. There are two wireless cores
  6. Otherwise,
    1. There is only one
  7. If just one core is supported and the PCI product ID is not 0x4301:
    1. SetPHY and connect the PHY if the PCI product ID is 0x4320 or 0x4325, disconnect otherwise

    2. Abort and roll back if that fails
  8. Loop over all 802.11 cores
    1. If we're in DMA mode, Initialize DMA

    2. 80211CoreReset, requesting the PHY to be connected on and only on the first loop iteration (corresponding to the first core)

    3. If ValidateChipAccess isn't successful, abort and roll back our initialization

    4. Refuse to attach to chips without valid PHY revisions, valid revisions are:
      1. A PHYs with revision 2, 3, 5, 6 or 7
      2. B PHYs with revision 2, 4 or 7
      3. G PHYs with revision 1, 2, 4, 6, 7 or 8
    5. Refuse to attach to chips without valid Radio versions, valid versions are:
      1. A PHYs with a 2060 radio
      2. B PHYs with a 205x radio
      3. G PHYs with a 2050 radio
    6. Switch the radio off
    7. Fetch the antenna gain from the SPROM, if it is unset assume 2

    8. Multiply the antenna gain by 4
    9. Loop 3 times from 0 to 2
      1. Retrieve the paXbY variables from the SPROM where X is 0 for A PHYs and 1 for B/G PHYs and Y is the loop position

    10. Retrieve the idle tssi target
    11. Init the MicrocodeFlagsBitfield field value

    12. Generate the TSSI to DBM Table with the paXbY values and the idle tssi target value

    13. 80211CoreDisable

    14. If we have >= 2 802.11 cores, use this core

  9. PowerControl Crystal Off

  10. Set the MAC address from the correct SPROM variable.

  11. Setup the LEDs

  12. If we're in PIO mode, initialize PIO

/!\ Note, this is still missing a lot of initial values, we'll add them as they become needed.

Exported/Archived from the wiki to HTML on 2016-10-27