User Manual
BCM1250/BCM1125/BCM1125H
10/21/02
B r o a d c o m C o r p o r a t i o n
Document
1250_1125-UM100CB-R
Section 8: PCI Bus and HyperTransport Fabric Page
207
BAR2 and BAR3 provide access to the CPU mailbox registers (see
Section: “Mailbox Registers” on page 46
The PCI device can read the current value of the mailbox and do writes to set bits in the mailbox, but it is not
able to clear the mailbox. The PCI device can therefore raise interrupts to the CPUs, send small messages,
and read status, but is prevented from directly clearing any CPU interrupts. This access is provided in both
Host and Device Modes (but will most likely be used in Device Mode).
BAR4 is only available in Host Mode. There is an enable/disable bit for this BAR in configuration register h40,
it is enabled after system reset. The BAR provides a direct map from the PCI to the bottom 512 MB of the
system memory using the match byte lane endian policy, and (by setting a[29]) a map from the PCI to the
bottom 512 MB using the match bit lane policy. (This area covers the low memory area, internal devices and
some of the generic bus space). The interface will use pre-fetches for any reads in this area.
BAR5 is only available in Host Mode. There is an enable/disable bit for this BAR in configuration register h40,
it is enabled after system reset. The BAR provides a direct map from the PCI to the two 512 MB sections of
memory
00_8000_0000
-
00_9FFF_FFFF
and
00_C000_0000
-
00_DFFF_FFFF
using the match byte lane
endian policy, and (by setting a[29]) a map from the PCI to the same two areas using the match bit lane policy.
(These areas cover the rest of the memory that is addressable with 32 bit addresses, they also cover the cache
test space and special access addresses that should not be accessed by normal PCI devices).
The PCI expansion ROM access BAR is mapped to 64 KB of the space that is allocated to the boot ROM at
reset time. This allows an external PCI host to access an expansion ROM with no setup required by the CPU
(preventing reset ordering problems). The bottom bit of the BAR must be set to enable the region (as required
by the PCI specification).
Reads on the PCI do not explicitly indicate a length. To optimize performance the PCI bridge will always
prefetch a cache line (i.e. do a read on the ZBbus with all byte enables set) when a read to the part comes in
from a PCI device. When memory accesses are made the I/O bridge will do a coherent read and this will work
as expected. If an access is made (through BAR4 or BAR5 or the ROM BAR or mapped to through BAR0) to
any non-memory space in the part the I/O bridge will do an uncacheable read with all byte enables set. The
result of this read will depend on the device accessed: memories on the generic bus will be read correctly,
reads of internal registers that are cacheline aligned (i.e. a[5:3]=0) will work as expected, but reads of internal
registers that are not cacheline aligned will give UNPREDICTABLE results.
Writes on the PCI do not explicitly indicate a length. The PCI bridge will gather a burst write targeted at the
system into a buffer and do a write with the appropriate byte enables set. If the write is to memory space and
all the byte enables are set a write-invalidate is sent on the ZBbus to write the data and invalidate old copies
that are in any caches. If the write is to memory space and less than the full 32 byte enables are set the I/O
bridge will perform a coherent read exclusive to get ownership of the block, the write data will be merged and
the block written back. The bridge acts as a full participant in the coherency protocol, so if there is any request
for the line it will respond as owner and will provide the data. If the write is to non-memory space an
uncacheable write is performed on the ZBbus with the byte enables reflecting the bytes that were written in the
PCI transaction. Writes to internal registers or the generic bus will therefore work as expected.
shows the memory map that is seen from the PCI bus after reset on with the interface
configured in PCI Host Mode.