bcm-specs

[Specification

Initalization Routine for a B PHY, Revision 6

  1. Write 0x817A to PHY Register 0x3E
  2. OR RadioRegister 0x7A with 0x58

  3. If the Radio Revision is 4 or 5
    1. Write 0x37 to RadioRegister 0x51

    2. Write 0x70 to RadioRegister 0x52

    3. Write 0xB3 to RadioRegister 0x53

    4. Write 0x9B to RadioRegister 0x54

    5. Write 0x88 to RadioRegister 0x5A

    6. Write 0x88 to RadioRegister 0x5B

    7. Write 0x88 to RadioRegister 0x5D

    8. Write 0x88 to RadioRegister 0x5E

    9. Write 0x88 to RadioRegister 0x7D

    10. Set bit 0x200 in the MicrocodeFlagsBitfield

  4. If the Radio Revision is 8
    1. Write 0x00 to RadioRegister 0x51

    2. Write 0x40 to RadioRegister 0x52

    3. Write 0xB7 to RadioRegister 0x53

    4. Write 0x98 to RadioRegister 0x54

    5. Write 0x88 to RadioRegister 0x5A

    6. Write 0x6B to RadioRegister 0x5B

    7. Write 0x0F to RadioRegister 0x5C

    8. If bit 0x8000 in BoardFlags is set

      1. Write 0xFA to RadioRegister 0x5D

      2. Write 0xD8 to RadioRegister 0x5E

    9. Otherwise
      1. Write 0xF5 to RadioRegister 0x5D

      2. Write 0xB8 to RadioRegister 0x5E

    10. Write 0x03 to RadioRegister 0x73

    11. Write 0xA8 to RadioRegister 0x7D

    12. Write 0x01 to RadioRegister 0x7C

    13. Write 0x08 to RadioRegister 0x7E

  5. Loop 16 times, starting with offset 0x88 and value 0x1E1F
    1. Write value to PHYRegister offset

    2. Increment offset and subtract 0x202 from value
  6. Loop 16 times, starting with offset 0x98 and value 0x3E3F
    1. Write value to PHYRegister offset

    2. Increment offset and subtract 0x202 from value
  7. Loop 32 times, starting with offset 0xA8 and value 0x2120
    1. Write value & 0x3F3F to PHYRegister offset

    2. Increment offset and add 0x202 to value
  8. If the PHY Type is a G PHY (as reported by PHYVersioning

    1. OR RadioRegister 0x7A with 0x20

    2. OR RadioRegister 0x51 with 0x4

    3. OR PHYRegister 0x802 with 0x100

    4. OR PHYRegister 0x42B with 0x2000

    5. Write 0x0 to PHYRegister 0x5B

    6. Write 0x0 to PHYRegister 0x5C

  9. Backup the current channel
  10. If the current channel is 8 or greater
    1. Set the channel to 1
  11. Otherwise
    1. Set the channel to 13
  12. Write 0x20 to RadioRegister 0x50

  13. Write 0x23 to RadioRegister 0x50

  14. Delay for 40 uSec
  15. If the Radio Revision is less than 6 or equal to 8
    1. OR RadioRegister 0x7C with 2

    2. Write 0x20 to RadioRegister 0x50

  16. If the Radio Revision is 2 or less
    1. Write 0x20 to RadioRegister 0x50

    2. Write 0x70 to RadioRegister 0x5A

    3. Write 0x7B to RadioRegister 0x5B

    4. Write 0xB0 to RadioRegister 0x5C

  17. OR Radio Register 0x7A with 7
  18. Set the channel back to the backed up channel
  19. Write 0x200 to PHYRegister 0x14

  20. If the Radio Revision is 6 or greater
    1. Write 0x88C2 to PHYRegister 0x2A

  21. Otherwise
    1. Write 0x8AC0 to PHYRegister 0x2A

  22. Write 0x668 to PHYRegister 0x38

  23. SetTXPower to 0xFFFF, 0xFFFF, 0xFFFF

  24. If the Radio Revision is 4 or 5
    1. MaskSet PHYRegister 0x5D with mask 0xFF80 and set with 3

  25. If the Radio Revision is 2 or less
    1. Write 0xD to RadioRegister 0x5D

  26. If the Analog Core Revision is 4

    1. Write 9 to MMIO offset 0x3E4

    2. AND PHYRegister 0x61 with 0xFFF

  27. Otherwise
    1. MaskSet PHYRegister 0x2 with mask 0xFFC0 and set with 4

  28. If this is a G PHY
    1. Write 0 to MMIO offset 0x3E6

  29. If this is a B PHY
    1. Write 0x8140 to MMIO offset 0x3E6

    2. Write 0x410 to PHYRegister 0x16

    3. Write 0x820 to PHYRegister 0x17

    4. Write 0x7 to PHYRegister 0x62

    5. Perform a 2050RadioCoreCalibration Note: the return value is not saved

    6. Perform a GPHY LocalOscillator/Measure

    7. If the BoardFlags have BFL_RSSI set

      1. Perform a BPHY NRSSISlopeCalculation

      2. Perform a BPHY NRSSIThreshold

    8. InitPowerControl


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