To decide which initialization routine to call, the PHY Version Register is checked to verify the PHY type and the PHY Revision.

A PHYs

B PHYs

G PHYs

LP PHYs

N PHYs

Common

  1. If initialization_is_in_progress flag is set
    1. Exit
  2. Set the initialization_is_in_progress flag
  3. Read Core Registers 0x01A0 and save the result

  4. Set the current interference mode to 0
  5. If the 802.11 core revision >= 5

    1. Assert that the fast clock is in use
  6. Enable the Analog Core

  7. Call Is Chanspec Valid with arguments (radio_chanspec, 0) as arguments

  8. If the result is zero
    1. Call PHY Default Chanspec with 1 as the argument

    2. Copy the above result to radio_chanspec

  9. If radio_chanspec & 0x0C00 is not zero

    1. Set the bandwidth to 40
  10. Otherwise
    1. Set the bandwidth to 20
  11. If the current value of bw is not equal to the bandwidth

    1. Call PHY Set BW with the bandwidth as the argument

  12. Set nphy_gain_boost to 1

  13. If this is an N PHY
    1. Clear bit 2 in aci_state

    2. If 802.11/PHY/ScanInprog returns 0 OR nphy_aci.detection_in_progress is not 0

      1. Call NPHY ACI Reset

  14. Call Switch Radio with argument 1

  15. Perform the initialization routine indicated above
  16. If the Wireless Core Revision is 11 or 12
    1. Set tmp to 1
    2. If _spect_management is true AND PHY Radar Chanspec is not zero

      1. Set tmp to 0
    3. Call Dummy Transmission with ( 1, tmp ) as arguments

  17. If this is a G PHY
    1. Save the Frequency Tracking Registers (PHY Registers 0x18 and 0x38)

  18. If this is not an N PHY
    1. Update the TX Power Shared Memory

  19. Call PHY Interference with (interference_mode, 0 ) as argument

  20. Call Antenna RX Diversity Update

  21. Clear the initialization_is_in_progress flag

802.11/PHY/Init (last edited 2010-01-14 22:08:20 by lwfinger)