bcm-specs

[Specification

Interference Calculation only effects GPHYs with a PHY Revision > 0. It is only changed if PHYConnected is true.

Interference Calculation Modes

None

Check the previous Interference Calculation mode and if the previous mode wasn't none, make sure that the previously set interference mode is disabled. If the previous mode was WLAN Manual or WLAN Automatic, also unset all of the ACI Flags.

Non WLAN

Enable

PHY Revision 1

  1. Save the value of RadioRegister 0x78

  2. Read the value of RadioRegister 0x78 and mask it with 0x1E

  3. If the bit-reversed (as a 4 bit value) value is less than 10, but >= 8

    1. The value is 7
  4. Otherwise, if the value is >= 10

    1. Subtract 3 from the bit-reversed (as a 4 bit value) value
  5. Otherwise, use the value as is
  6. Reverse the bits in the (original or modified as in the previous steps) value (as a 4 bit value)
  7. Shift the value to the left by 1, bitwise OR with 0x20 and write that back to RadioRegister 0x78

  8. Set NRSSIThreshold for G PHYs

  9. Save PHYRegister 0x406

  10. Write 0x7E28 to PHYRegister 0x406

  11. Or PHYRegister 0x42B with 0x800

  12. Or PHYRegister 0x401 with 0x1000

  13. Save PHYRegister 0x4A0

  14. Maskset PHYRegister 0x4A0 with mask 0xC0C0 and set 8

  15. Save PHYRegister 0x4A1

  16. Maskset PHYRegister 0x4A1 with mask 0xC0C0 and set 0x605

  17. Save PHYRegister 0x4A2

  18. Maskset PHYRegister 0x4A2 with mask 0xC0C0 and set 0x204

  19. Save PHYRegister 0x4A8

  20. Maskset PHYRegister 0x4A8 with mask 0xC0C0 and set 0x803

  21. Save PHYRegister 0x4AB

  22. Maskset PHYRegister 0x4AB with mask 0xC0C0 and set 0x605

  23. Save PHYRegister 0x4A7

  24. Write 2 to PHYRegister 0x4A7

  25. Save PHYRegister 0x4A3

  26. Write 0x287A to PHYRegister 0x4A3

  27. Save PHYRegister 0x4A9

  28. Write 0x2027 to PHYRegister 0x4A9

  29. Save PHYRegister 0x493

  30. Write 0x32F5 to PHYRegister 0x493

  31. Save PHYRegister 0x4AA

  32. Write 0x2027 to PHYRegister 0x4AA

  33. Save PHYRegister 0x4AC

  34. Write 0x32F5 to PHYRegister 0x4AC

Not PHY Revision 1

  1. Set Bit 0x800 in PHYRegister 0x42B

  2. Unset Bit 0x4000 in PHYRegister 0x429

Disable

PHY Revision 1

  1. Restore the saved value of RadioRegister 0x78

  2. Set NRSSIThreshold for G PHYs

  3. Restore the saved value of PHYRegister 0x406

  4. Unset bit 0x800 in PHYRegister 0x42B

  5. If "bad frame preemption" is disabled, turn off bit 11 in PHY Register 0x401
  6. Set bit 0x4000 in PHYRegister 0x429

  7. Restore the saved value of PHYRegister 0x4A0

  8. Restore the saved value of PHYRegister 0x4A1

  9. Restore the saved value of PHYRegister 0x4A2

  10. Restore the saved value of PHYRegister 0x4A8

  11. Restore the saved value of PHYRegister 0x4AB

  12. Restore the saved value of PHYRegister 0x4A7

  13. Restore the saved value of PHYRegister 0x4A3

  14. Restore the saved value of PHYRegister 0x4A9

  15. Restore the saved value of PHYRegister 0x493

  16. Restore the saved value of PHYRegister 0x4AA

  17. Restore the saved value of PHYRegister 0x4AC

Not PHY Revision 1

  1. Unset bit 0x800 in PHYRegister 0x42B

  2. Set bit 0x4000 in PHYRegister 0x429

WLAN Manual

Enable

  1. If PHYRegister 0x33 has 0x800 set, return

  2. Enable the "Do ACI" flag (see ACI Flags)

  3. Save PHYRegister 0x401

  4. Save PHYRegister 0x429

  5. If the PHY Revision is less than 2
    1. Save PHYRegister 0x406

  6. Otherwise
    1. Save PHYRegister 0x4C0

    2. Save PHYRegister 0x4C1

  7. Save PHYRegister 0x33

  8. Save PHYRegister 0x4A7

  9. Save PHYRegister 0x4A3

  10. Save PHYRegister 0x4A9

  11. Save PHYRegister 0x4AA

  12. Save PHYRegister 0x4AC

  13. Save PHYRegister 0x493

  14. Save PHYRegister 0x4A1

  15. Save PHYRegister 0x4A0

  16. Save PHYRegister 0x4A2

  17. Save PHYRegister 0x48A

  18. Save PHYRegister 0x4A8

  19. Save PHYRegister 0x4AB

  20. If the PHY Revision is 2
    1. Save PHYRegister 0x4AD

    2. Save PHYRegister 0x4AE

  21. If the PHY Revision is 3 or greater
    1. Save PHYRegister 0x4AD

    2. Save PHYRegister 0x415

    3. Save PHYRegister 0x416

    4. Save PHYRegister 0x417

    5. Save InternalLookupTable offset 0x1A00, table offset 0x2

    6. Save InternalLookupTable offset 0x1A00, table offset 0x3

  22. Save PHYRegister 0x42B

  23. Save PHYRegister 0x48C

  24. Unset bit 0x1000 in PHYRegister 0x401

  25. MaskSet PHYRegister 0x429 with mask 0xFFFC and set with 2

  26. Write 0x800 to PHYRegister 0x33

  27. Write 0x2027 to PHYRegister 0x4A3

  28. Write 0x1CA8 to PHYRegister 0x4A9

  29. Write 0x287A to PHYRegister 0x493

  30. Write 0x1CA8 to PHYRegister 0x4AA

  31. Write 0x287A to PHYRegister 0x4AC

  32. MaskSet PHYRegister 0x4A0 with mask 0xFFC0 and set with 0x1A

  33. Write 0xD to PHYRegister 0x4A7

  34. If the PHY Revision is less than 2
    1. Write 0xFF0D to PHYRegister 0x406

  35. Otherwise, if the PHY Revision is 2
    1. Write 0xFFFF to PHYRegister 0x4C0

    2. Write 0xA9 to PHYRegister 0x4C1

  36. Otherwise
    1. Write 0xC1 to PHYRegister 0x4C0

    2. Write 0x59 to PHYRegister 0x4C1

  37. MaskSet PHYRegister 0x4A1 with mask 0xC0FF and set 0x1800

  38. MaskSet PHYRegister 0x4A1 with mask 0xFFC0 and set 0x0015

  39. MaskSet PHYRegister 0x4A8 with mask 0xCFFF and set 0x1000

  40. MaskSet PHYRegister 0x4A8 with mask 0xF0FF and set 0x0A00

  41. MaskSet PHYRegister 0x4AB with mask 0xCFFF and set 0x1000

  42. MaskSet PHYRegister 0x4AB with mask 0xF0FF and set 0x0800

  43. MaskSet PHYRegister 0x4AB with mask 0xFFCF and set 0x0010

  44. MaskSet PHYRegister 0x4AB with mask 0xFFF0 and set 0x0005

  45. MaskSet PHYRegister 0x4A8 with mask 0xFFCF and set 0x0010

  46. MaskSet PHYRegister 0x4A8 with mask 0xFFF0 and set 0x0006

  47. MaskSet PHYRegister 0x4A2 with mask 0xF0FF and set 0x0800

  48. MaskSet PHYRegister 0x4A0 with mask 0xF0FF and set 0x0500

  49. MaskSet PHYRegister 0x4A2 with mask 0xFFF0 and set 0x000B

  50. If the PHY Revision is 3 or greater
    1. Unset bit 0x8000 in PHYRegister 0x48A

    2. MaskSet PHYRegister 0x415 with mask 0x8000 and set with 0x36D8

    3. MaskSet PHYRegister 0x416 with mask 0x8000 and set with 0x36D8

    4. MaskSet PHYRegister 0x417 with mask 0xFE00 and set with 0x16D

  51. Otherwise
    1. Set bit 0x1000 in PHYRegister 0x48A

    2. MaskSet PHYRegister 0x48A with mask 0x9FFF and set with 0x2000

    3. Set bit 0x800 in the MicrocodeFlagsBitfield (in the SHM) if it's unset

  52. If the PHY Revision is 2 or greater
    1. Set bit 0x800 in PHYRegister 0x42B

  53. Maskset PHYRegister 0x48C with mask 0xF0FF and set with 0x200

  54. If the PHY Revision is 2
    1. MaskSet PHYRegister 0x4AE with mask 0xFF00 and set with 0x7F

    2. MaskSet PHYRegister 0x4AD with mask 0x00FF and set with 0x1300

  55. If the PHY Revision is 6 or greater
    1. Write 0x7F to InternalLookupTable offset 0x1A00, table offset 3

    2. Write 0x7F to InternalLookupTable offset 0x1A00, table offset 2

    3. Bitwise AND PHYRegister 0x4AD with 0x00FF

  56. Perform NRSSISlopeCalculation for G PHYs.

Disable

  1. If PHYRegister 0x33 doesn't have bit 0x800 set, return

  2. Disable the "Do ACI" flag (see ACI Flags)

  3. Restore the saved value of PHYRegister 0x401

  4. Restore the saved value of PHYRegister 0x429

  5. Restore the saved value of PHYRegister 0x33

  6. Restore the saved value of PHYRegister 0x4A3

  7. Restore the saved value of PHYRegister 0x4A9

  8. Restore the saved value of PHYRegister 0x493

  9. Restore the saved value of PHYRegister 0x4AA

  10. Restore the saved value of PHYRegister 0x4AC

  11. Restore the saved value of PHYRegister 0x4A0

  12. Restore the saved value of PHYRegister 0x4A7

  13. If the PHY Revision is 2 or greater
    1. Restore the saved value of PHYRegister 0x4C0

    2. Restore the saved value of PHYRegister 0x4C1

  14. Otherwise
    1. Restore the saved value of PHYRegister 0x406

  15. Restore the saved value of PHYRegister 0x4A1

  16. Restore the saved value of PHYRegister 0x4AB

  17. Restore the saved value of PHYRegister 0x4A8

  18. If the PHY Revision is 2
    1. Restore the saved value of PHYRegister 0x4AD

    2. Restore the saved value of PHYRegister 0x4AE

  19. Otherwise, if the PHY Revision is 3 or greater
    1. Restore the saved value of PHYRegister 0x4AD

    2. Restore the saved value of PHYRegister 0x415

    3. Restore the saved value of PHYRegister 0x416

    4. Restore the saved value of PHYRegister 0x417

    5. Restore the saved value of InternalLookupTable offset 0x1A00, table offset 0x2

    6. Restore the saved value of InternalLookupTable offset 0x1A00, table offset 0x3

  20. Return the saved value of PHYRegister 0x4A2

  21. Return the saved value of PHYRegister 0x48A

  22. Return the saved value of PHYRegister 0x42B

  23. Return the saved value of PHYRegister 0x48C

  24. Unset bit 0x800 in the MicrocodeFlagsBitfield (in the SHM) if it's set

  25. Perform NRSSISlopeCalculation for G PHYs.

WLAN Automatic

Enable

  1. Enable the "WLAN Automatic" flag (see ACI Flags)

  2. If the "Do ACI" flag is set (see ACI Flags), perform the WLAN Manual enable procedure

Disable

Perform the WLAN Manual disable procedure.


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