bcm-specs

[Specification

  1. Backup PHYRegisters 0x1, 0x811, 0x812, 0x814, 0x815, 0x5A, 0x59, 0x58, 0xA, 0x3

  2. Backup RadioRegisters 0x7A, 0x43

  3. Bitwise AND PHYRegister 0x429 with 0x7FFF

  4. MaskSet PHYRegister 0x1 with mask 0x3FFF and set 0x4000

  5. Bitwise OR PHYRegister 0x811 with 0xC

  6. MaskSet PHYRegister 0x812 with mask 0xFFF3 and set with 0x4

  7. Unset bits 0x1 and 0x2 in PHYRegister 0x802
  8. If the PHY Revision is 6 or higher
    1. Save PHYRegisters 0x2E, 0x2F, 0x80F, 0x810, 0x801, 0x60, 0x14, 0x478

    2. Write 0 to PHYRegister 0x2E

    3. Write 0 to PHYRegister 0x2F

    4. Write 0 to PHYRegister 0x80F

    5. Write 0 to PHYRegister 0x810

    6. Bitwise OR PHYRegister 0x478 with 0x100

    7. Bitwise OR PHYRegister 0x801 with 0x40

    8. Bitwise OR PHYRegister 0x60 with 0x40

    9. Bitwise OR PHYRegister 0x14 with 0x200

  9. Bitwise OR RadioRegister 0x7A with 0x70

  10. Bitwise OR RadioRegister 0x7A with 0x80

  11. Delay 30 uSecs
  12. Save the value of PHYRegister 0x47F, right shift by 8 and bitwise AND it with 0x3F
  13. If the value is 0x20 or higher, subtract 0x40 from it
  14. If the value is 31
    1. Loop from 7 to 4
      1. Write the loop position to RadioRegister 0x7B

      2. Delay for 20 uSec
      3. Read the value of PHYRegister 0x47F, right shift by 8 and bitwise AND it with 0x3F

      4. If the value is 0x20 or higher, subtrack 0x40 from it
      5. If the value is less than 31 and we haven't saved a position yet, save this position
    2. If we didn't save a position, the saved position is 4
  15. Otherwise
    1. Bitwise AND RadioRegister 0x7A with 0x7F

    2. Bitwise OR PHYRegister 0x814 with 0x1

    3. Bitwise AND PHYRegister 0x815 with 0xFFFE

    4. Bitwise OR PHYRegister 0x811 with 0xC

    5. Bitwise OR PHYRegister 0x812 with 0xC

    6. Bitwise OR PHYRegister 0x811 with 0x30

    7. Bitwise OR PHYRegister 0x812 with 0x30

    8. Write 0x480 to PHYRegister 0x5A

    9. Write 0x810 to PHYRegister 0x59

    10. Write 0xD to PHYRegister 0x58

    11. If the Analog Core Revision is 0

      1. Write 0x122 to PHYRegister 0x3

    12. Otherwise
      1. Bitwise OR PHYRegister 0xA with 0x2000

    13. Bitwise OR PHYRegister 0x814 with 0x4

    14. Bitwise AND PHYRegister 0x815 with 0xFFFB

    15. MaskSet PHYRegister 0x3 with mask 0xFF9F and set 0x40

    16. Bitwise OR RadioRegister 0x7A with 0xF

    17. Set All Gains to 3, 0, 1

    18. MaskSet RadioRegister 0x43 with mask 0x00F0 and set 0xF

    19. Delay for 30 uSecs
    20. Read the value of PHYRegister 0x47F, right shift by 8 and bitwise AND it with 0x3F

    21. If the value is 0x20 or higher, subtrack 0x40 from it
    22. If the value is -32
      1. Loop from 0 to 3
        1. Write the loop position to RadioRegister 0x7B

        2. Delay for 20 uSec
        3. Read the value of PHYRegister 0x47F, right shift by 8 and bitwise AND it with 0x3F

        4. If the value is 0x20 or higher, subtrack 0x40 from it
        5. If the value is greater than -31 and we haven't saved a position yet, save this position
      2. If we didn't save a position, the saved position is 3
    23. Otherwise, the saved position is 0
  16. Write the saved position to RadioRegister 0x7B

  17. If the PHY Revision is 6 or higher
    1. Restore PHYRegisters 0x2E, 0x2F, 0x80F and 0x810

  18. Restore PHYRegisters 0x814, 0x815, 0x5A, 0x59, 0x58, 0xA, 0x3

  19. Restore RadioRegisters 0x43 and 0x7A

  20. Set bits 0x1 and 0x2 in PHYRegister 0x802
  21. Bitwise OR PHYRegister 0x429 with 0x8000

  22. Set OriginalGains

  23. If The PHY Revision is 6 or higher
    1. Restore PHYRegisters 0x801, 0x60, 0x14, and 0x478

  24. Restore PHYRegisters 0x1, 0x812 and 0x811


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