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. Enable the Analog Core

  6. If the result of the wlc_valid_chanspec(..., pih->pubpi.radio_chanspec, 0) routine is zero

    1. Perform the wlc_chanspec_radio_set(..., wlc_default_chanspec(pih->wlc, 1)) routine

  7. If pih->pubpi.radio_chanspec bitwise ANDed with 0x0C00 equals 0x0C00

    1. Set a mask of 0x0028
  8. Otherwise
    1. Set a mask of 0x0014
  9. If the current value of pubpi.bw is not equal to the mask
    1. Perform the wlc_set_bw(..., mask) routine
  10. Perform the wlc_switch_radio(..., 1) routine
  11. Perform the initialization routine indicated above
  12. If the Wireless Core Revision is 0xC or less
    1. If the rspec_override is not zero
      1. Perform the wlc_radar_chanspec(..., pih->pubpi.radio_chanspec) routine and bitwise XOR the result with 1

      2. Set pa_on to 1 minus the previous result
    2. Otherwise
      1. Set pa_on to zero
    3. Perform an ODFM Dummy Transmission with pa_on as the 3rd argument

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

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

  15. Disable Interference Mitigation
  16. Set the Antenna Diversity as desired

  17. Clear the initialization_is_in_progress flag

802.11/PHY/Init (last edited 2008-08-30 23:45:54 by lwfinger)