
21050 PCI-to-PCI Bridge Hardware Implementation
10
Application Note
Note:
Some early PCI host bridges automatically claim all configuration commands directed to device 0.
Therefore, it is recommended that you avoid using device 0, if this situation might apply.
5.0
Data Synchronization and Interrupts
The
PCI Local Bus Specification
requires that either the interrupt handler (service routine) or the
device that initiates the interrupt guarantees that all buffers are flushed between the device and the
final destination. To accomplish this, the interrupt service routine of the device driver can perform
a read of the device, or the device itself can perform a read of the last location written by the
device. In either case, the read forces buffers between the device and the final destination to be
flushed.
Interrupts originating from secondary bus devices are not routed through the 21050. However, the
21050 does offer two implementation-specific pins that can be used to implement hardware data
synchronization: s_dispst_l and s_bufne_l. The following sections describe using these data
synchronization pins, and implementing interrupt binding on option cards.
5.1
Using the 21050 Data Synchronization Pins
Although Section 6.3.4 of the
PCI Local Bus Specification
states that device drivers are ultimately
responsible for guaranteeing consistency of data and interrupts, the 21050 does provide a hardware
feature that you can use to synchronize data.
The 21050 implements the following pins:
s_dispst_l (input)
An asserting (falling) edge marks write data currently in both the upstream and downstream
data buffers. If the Disable Posting bit in the 21050 configuration space is set, write posting in
both directions is disabled as long as s_dispst_l remains asserted.
s_bufne_l (output)
This pin is asserted (low) when write data marked by the asserting edge of s_dispst_l remains
in write buffers. s_bufne_l will assert two cycles after s_dispst_l assertion. s_bufne_l deasserts
when all marked posted write data is flushed. This output is always enabled (except during
diagnostics) and does not need a pullup.
Figure 1. Secondary IDSEL Implementation Example
A4884-01
21050
p_ad<31:00>
s_ad<20>
s_ad<31:00>
p_idsel
p_ad
s_ad
PCI Device
IDSEL
AD
s_ad<21>
PCI
Slot
IDSEL
AD
1K
1K