Table of Contents

BCMA Interconnect

The bcma driver provides bhnd(4) support for devices using the ARM AMBA-based backplane architecture found in later Broadcom Home Networking Division's (HND) wireless chipsets and embedded systems.

BCMA uses AXI, bridged APB, and other ARM IP to support connectivity between the SoC/WiFi chipset IP cores.

Most of the IP cores used in siba(4) devices were adapted by Broadcom for compatibility with bcma, and common core device drivers can support both backplanes, generally transparently.

Device Enumeration

The ARM PL-368 “Device Management Plugin” system IP provides:

Documentation for the PL-368 is not publicly available; it has been described by Broadcom engineers as being ARM's PL-368 “Device Management Plugin” system IP as included with the PL3xx/AMBA Designer tooling licensed from ARM. The only public reference by ARM to its existence appears to be a reference to a proprietary/non-public “NIC-301 Interconnect Device Management (PL368)” errata document, included with ARM's “CoreLink Controllers and Peripherals” engineering errata.

The EROM table address can be found at offset 0xFC within the ChipCommon core's register block. The table itself is comprised of 32-bit type-tagged entries, organized into an array of variable-length core descriptor records.

The final core descriptor is followed by an EOF marker of 0x0000000F.

Each core descriptor record provides:

Example BCM4331 EROM Table

<Broadcom BCM4331 802.11a/b/g/n Wireless> mem 0xc0004000-0xc0007fff at device 4.0 on pci0
core0: designer=Broadcom "ChipCommon" (entry=25004211 cid=800, rev=25, nmp=1, nsp=1, nwmp=1, nwsp=0)
  Master Port ID: 0.0
  Memory Regions:
    device0.0 at 0x18000000-0x18000fff
    mwrap0.0 at 0x18100000-0x18100fff
core1: designer=Broadcom "802.11 MAC" (entry=1d004211 cid=812, rev=1d, nmp=1, nsp=1, nwmp=1, nwsp=0)
  Master Port ID: 1.0
  Memory Regions:
    device0.0 at 0x18001000-0x18001fff
    mwrap0.0 at 0x18101000-0x18101fff
core2: designer=Broadcom "PCIe Bridge" (entry=13084411 cid=820, rev=13, nmp=1, nsp=2, nwmp=1, nwsp=1)
  Master Port ID: 2.0
  Memory Regions:
    device0.0 at 0x18002000-0x18002fff
    device1.0 at 0x08000000-0x0fffffff
    device1.1 at 0x8000000000000000-0xffffffffffffffff
    mwrap0.0 at 0x18102000-0x18102fff
    swrap1.0 at 0x18103000-0x18103fff
core3: designer=ARM "AXI to APB Bridge" (entry=80201 cid=135, rev=0, nmp=0, nsp=1, nwmp=0, nwsp=1)
  Memory Regions:
    bridge0.0 at 0x18000000-0x18003fff
    swrap0.0 at 0x18104000-0x18104fff
core4: designer=ARM "AXI to APB Bridge" (entry=80201 cid=135, rev=0, nmp=0, nsp=1, nwmp=0, nwsp=1)
  Memory Regions:
    bridge0.0 at 0x18100000-0x18108fff
    swrap0.0 at 0x18105000-0x18105fff
core5: designer=ARM "OOB Interrupt Router" (entry=201 cid=367, rev=0, nmp=0, nsp=1, nwmp=0, nwsp=0)
  Memory Regions:
    device0.0 at 0x18106000-0x18106fff
core6: designer=ARM "Enumeration ROM" (entry=201 cid=366, rev=0, nmp=0, nsp=1, nwmp=0, nwsp=0)
  Memory Regions:
    device0.0 at 0x18107000-0x18107fff
core7: designer=ARM "AMBA AXI GPV" (entry=201 cid=301, rev=0, nmp=0, nsp=1, nwmp=0, nwsp=0)
  Memory Regions:
    device0.0 at 0x18003000-0x18003fff
core8: designer=ARM "Default Core (Unused Address Ranges)" (entry=80201 cid=fff, rev=0, nmp=0, nsp=1, nwmp=0, nwsp=1)
  Memory Regions:
    device0.0 at 0x00000000-0x07ffffff
    device0.1 at 0x10000000-0x17ffffff
    device0.2 at 0x18004000-0x180fffff
    device0.3 at 0x18109000-0x7fffffffffffffff
    swrap0.0 at 0x18108000-0x18108fff