bcm-specs

[Specification

Initalization routine for a G PHY

  1. If the PHY Revision is 1 perform a B5PHY init and then continue with the GPHY Init

  2. Otherwise, perform a B6PHY init and then continue with the GPHY Init

  3. If the PHY Revision is >= 2 and PHYConnected is true, perform an APHY init and then continue with the GPHY Init

  4. If PHY Revision is >= 2

    1. Write 0 to PHYRegister 0x814

    2. Write 0 to PHYRegister 0x815

  5. If PHY Revision is 2

    1. Write 0 to PHYRegister 0x811

    2. Write 0xC0 to PHYRegister 0x15

  6. If PHY Revision is > 5

    1. 0x400 to PHYRegister 0x811

    2. Write 0xC0 to PHYRegister 0x15

  7. If PHYConnected is set

    1. If (PHYRegister 0x400 bitwise AND 0xFF) is 3

      1. Write 0x1816 to PHYRegister 0x4C2

      2. Write 0x8606 to PHYRegister 0x4C3

    2. Otherwise, if (PHYRegister 0x400 bitwise AND 0xFF) is 4 or 5

      1. Write 0x1816 to PHYRegister 0x4C2

      2. Write 0x8006 to PHYRegister 0x4C3

      3. MaskSet PHYRegister 0x4CC with mask 0x00FF and set 0x1F00

  8. If the PHY revision is >= 2 write 0x78 to PHY Register 0x47E

  9. If the Radio Revision is 8, then
    1. Set bit 0x80 in PHYRegister 0x801

    2. Set bit 0x4 in PHYRegister 0x43E

  10. If the PHY Revision is 2 or greater and PHYConnected is set

    1. Find the Loopback Gain

  11. If the Radio Revision is not 8
    1. If the previous output of the 2050RadioCoreCalibration is -1 (or 2050RadioCoreCalibration hasn't been run yet)

      1. Do 2050RadioCoreCalibration and save the value

    2. Otherwise
      1. Write the previous value of 2050RadioCoreCalibration to RadioRegister 0x78

  12. If the saved TXCTL2 Attenuation value hasn't been set yet
    1. Measure the local oscillator for G PHYs

  13. Otherwise
    1. If this is a 2050 radio with a Radio Revision of 8
      1. Write the saved value of TXCTL1 left shifted by 4, then bitwise OR'd with the saved value of TXCTL2 to RadioRegister 0x52

    2. Otherwise
      1. MaskSet RadioRegister 0x52 with mask 0xFFF0 and set with the saved value of TXCTL1

    3. If the PHY Revision is 6 or greater
      1. MaskSet PHYRegister 0x36 with mask 0xF000 and set with the saved value of TXCTL2 left shifted by 12

    4. If the BoardFlags have BFL_PACTRL set

      1. Write 0x8075 to PHYRegister 0x2E

    5. Otherwise
      1. Write 0x807F to PHYRegister 0x2E

    6. If the PHY Revision is < 2

      1. Write 0x101 to PHYRegister 0x2F

    7. Otherwise
      1. Write 0x202 to PHYRegister 0x2F

  14. If PHYConnected is true

    1. Adjust the LO to the saved attenuation values

    2. Write 0x8078 to PHYRegister 0x80F

  15. If BoardFlags BFL_RSSI isn't set

    1. Update the "In Hardware" NRSSILookupTable with update value 0x7FFFFFFF (this may change, but I don't see where yet)

    2. Set NRSSIThreshold for G PHYs

  16. Otherwise, if PHYConnected is set or Phy revision is >= 2

    1. If there are no saved values for the first and second NRSSI values
      1. Perform a GPHY NRSSISlopeCalculation

    2. Otherwise
      1. Set NRSSIThreshold for G PHYs

  17. If the Radio Revision is 8
    1. Write 0x3230 to PHYRegister 0x805

  18. InitPowerControl

  19. If the chipset version is 0x4306 and the CHIPID Chip Package value is 2
    1. Bitwise AND PHYRegister 0x429 with 0xBFFF

    2. Bitwise AND PHYRegister 0x4C3 with 0x7FFF


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