Initalization Routine for a B PHY, Revision 6
- Write 0x817A to PHY Register 0x3E
OR RadioRegister 0x7A with 0x58
- If the Radio Revision is 4 or 5
Write 0x37 to RadioRegister 0x51
Write 0x70 to RadioRegister 0x52
Write 0xB3 to RadioRegister 0x53
Write 0x9B to RadioRegister 0x54
Write 0x88 to RadioRegister 0x5A
Write 0x88 to RadioRegister 0x5B
Write 0x88 to RadioRegister 0x5D
Write 0x88 to RadioRegister 0x5E
Write 0x88 to RadioRegister 0x7D
Set bit 0x200 in the MicrocodeFlagsBitfield
- If the Radio Revision is 8
Write 0x00 to RadioRegister 0x51
Write 0x40 to RadioRegister 0x52
Write 0xB7 to RadioRegister 0x53
Write 0x98 to RadioRegister 0x54
Write 0x88 to RadioRegister 0x5A
Write 0x6B to RadioRegister 0x5B
Write 0x0F to RadioRegister 0x5C
If bit 0x8000 in BoardFlags is set
Write 0xFA to RadioRegister 0x5D
Write 0xD8 to RadioRegister 0x5E
- Otherwise
Write 0xF5 to RadioRegister 0x5D
Write 0xB8 to RadioRegister 0x5E
Write 0x03 to RadioRegister 0x73
Write 0xA8 to RadioRegister 0x7D
Write 0x01 to RadioRegister 0x7C
Write 0x08 to RadioRegister 0x7E
- Loop 16 times, starting with offset 0x88 and value 0x1E1F
Write value to PHYRegister offset
- Increment offset and subtract 0x202 from value
- Loop 16 times, starting with offset 0x98 and value 0x3E3F
Write value to PHYRegister offset
- Increment offset and subtract 0x202 from value
- Loop 32 times, starting with offset 0xA8 and value 0x2120
Write value & 0x3F3F to PHYRegister offset
- Increment offset and add 0x202 to value
If the PHY Type is a G PHY (as reported by PHYVersioning
OR RadioRegister 0x7A with 0x20
OR RadioRegister 0x51 with 0x4
OR PHYRegister 0x802 with 0x100
OR PHYRegister 0x42B with 0x2000
Write 0x0 to PHYRegister 0x5B
Write 0x0 to PHYRegister 0x5C
- Backup the current channel
- If the current channel is 8 or greater
- Set the channel to 1
- Otherwise
- Set the channel to 13
Write 0x20 to RadioRegister 0x50
Write 0x23 to RadioRegister 0x50
- Delay for 40 uSec
- If the Radio Revision is less than 6 or equal to 8
OR RadioRegister 0x7C with 2
Write 0x20 to RadioRegister 0x50
- If the Radio Revision is 2 or less
Write 0x20 to RadioRegister 0x50
Write 0x70 to RadioRegister 0x5A
Write 0x7B to RadioRegister 0x5B
Write 0xB0 to RadioRegister 0x5C
- OR Radio Register 0x7A with 7
- Set the channel back to the backed up channel
Write 0x200 to PHYRegister 0x14
- If the Radio Revision is 6 or greater
Write 0x88C2 to PHYRegister 0x2A
- Otherwise
Write 0x8AC0 to PHYRegister 0x2A
Write 0x668 to PHYRegister 0x38
SetTXPower to 0xFFFF, 0xFFFF, 0xFFFF
- If the Radio Revision is 4 or 5
MaskSet PHYRegister 0x5D with mask 0xFF80 and set with 3
- If the Radio Revision is 2 or less
Write 0xD to RadioRegister 0x5D
If the Analog Core Revision is 4
Write 9 to MMIO offset 0x3E4
AND PHYRegister 0x61 with 0xFFF
- Otherwise
MaskSet PHYRegister 0x2 with mask 0xFFC0 and set with 4
- If this is a G PHY
Write 0 to MMIO offset 0x3E6
- If this is a B PHY
Write 0x8140 to MMIO offset 0x3E6
Write 0x410 to PHYRegister 0x16
Write 0x820 to PHYRegister 0x17
Write 0x7 to PHYRegister 0x62
Perform a 2050RadioCoreCalibration Note: the return value is not saved
Perform a GPHY LocalOscillator/Measure
If the BoardFlags have BFL_RSSI set
Perform a BPHY NRSSISlopeCalculation
Perform a BPHY NRSSIThreshold