bcm-specs

[Specification

Turning the Radio On

  1. If this is an A PHY
    1. Write 0xC0 to RadioRegister 0x04

    2. Write 0x08 to RadioRegister 0x05

    3. Maskset PHYRegister 0x10 with a mask of 0xFFFFFFF7 and a set of 0

    4. Maskset PHYRegister 0x11 with a mask of 0xFFFFFFF7 and a set of 0

    5. Initialize the radio (2060RadioInit)

  2. If this is a B or G PHY
    1. Write 0x8000 to PHYRegister 0x15

    2. Write 0xCC00 to PHYRegister 0x15

    3. Check if PHYConnected is true

      1. If it is, write 0xC0 to PHYRegister 0x15

      2. If it isn't, write 0 to PHYRegister 0x15

    4. Set the channel to the default starting channel (with synthetic PU workaround)

Turning the Radio Off

  1. If this is an A PHY
    1. Write 0xFF to RadioRegister 0x04

    2. Write 0xFB to RadioRegister 0x05

    3. MaskSet PHYRegister 0x10 with a mask of 0xFFFF and a set of 8

    4. MaskSet PHYRegister 0x11 with a mask of 0XFFFF and a set of 8

  2. If this is a G PHY with a Core Revision >= 5

    1. MaskSet PHYRegister 0x811 with a mask of 0xFFFF and a set of 0x8C

    2. MaskSet PHYRegister 0x812 with a mask 0f 0xFF73 and a set of 0

  3. otherwise
    1. Write 0xAA00 to PHYRegister 0x15

Changing the Channel

See the Channels table.

Check if the Radio is Disabled in Hardware

  1. If the Silicone Backplane core hasn't been reset yet
    1. Reset the Silicone Backplane core
    2. Set MMIO offset 0x120 (StatusBitField) with 0x400

  2. If the Core Revision is < 3

    1. Check bit 4 in MMIO offset 0x49A

      1. If the bit is unset, the radio is disabled
      2. Otherwise, the radio is enabled
  3. Otherwise
    1. Check bit 16 in MMIO offset 0x158

      1. If the bit is set, the radio is disabled
      2. Otherwise, the radio is enabled
  4. If the Silicone Backplane core hasn't been reset yet, disable the core

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