
Philips Semiconductors
PCI Interface
PRODUCT SPECIFICATION
11-13
PCI bus and devices. The DSPCPU writes or reads
CONFIG_DATA depending on whether it is performing a
write or read to a PCI device’s configuration space. See
Section 11.7.10, “CONFIG_CTL Register,” for more in-
formation on initiating configuration cycles.
11.7.10 CONFIG_CTL Register
The DSPCPU writes to CONFIG_CTL to trigger a config-
uration read or write cycle on the PCI bus. A PCI config-
uration read or write should not be performed during an
ongoing PCI I/O read or write.
The steps involved in a DSPCPU PCI configuration ac-
cess are:
1. Wait until BIU_STATUS io_cycle.Busy and
cong_cycle.Busy are both de-asserted
2. Write to CONFIG_ADR as described above, and (in
case of a write operation) write to CONFIG_DATA.
3. Write to CONFIG_CTL to start the read or write.This
action sets cong_cycle.Busy.
4. Wait (polling or interrupt based) until
cong_cycle.Done is asserted by the hardware.
5. Retrieve the requested data in CONFIG_DATA (in
case of a read)
6. Clear cong_cycle.Done by writing a ‘1’ to it.
Following are descriptions of the fields of CONFIG_CTL
and
a
discussion
of
how
a
DSPCPU
write
to
CONFIG_CTL triggers configuration cycles.
BE (Byte enables). The BE field (the four LSBs of
CONFIG_CTL) determines the state of PCIs 4-line c/be#
bus during the data phase of a configuration cycle. Since
the c/be# bus signals are active low, a ‘0’ in a BE field bit
means byte participates; a ‘1’ in a BE field bit means
‘byte does not participate.’ Table 11-15 shows the corre-
spondence between BE bits and bytes on the PCI bus
assuming little-endian byte order.
RW (Read/Write). The RW field (bit 4 of CONFIG_CTL)
determines whether the configuration cycle will be a read
or a write. Table 11-16 shows the interpretation of RW.
A write by the DSPCPU to the CONFIG_CTL register
starts a configuration cycle on the PCI bus. The
CONFIG_DATA (for a write) and CONFIG_ADR regis-
ters must be set up before writing to CONFIG_CTL.
During a configuration read, the PCI interface drives the
PCI bus with the address from CONFIG_ADR and the
BE field from CONFIG_CTL. The returned data is buff-
ered in CONFIG_DATA. When the data is returned, the
PCI interface will generate a DSPCPU interrupt if the ap-
propriate IntE bit is set in BIU_CTL. Alternatively,
DSPCPU software can poll the appropriate “done” status
bin in BIU_STATUS. Finally, DSPCPU software reads
the CONFIG_DATA register in MMIO space to access
the data returned from the configuration cycle.
A write operation proceeds as for a read, except that PCI
data is driven from CONFIG_DATA during the transac-
tion and no data is returned in CONFIG_DATA.
11.7.11 IO_ADR Register
The 32-bit IO_ADR register is written by the DSPCPU to
set up for an access to a location in PCI I/O space. The
DSPCPU writes the address of the I/O register into
IO_ADR. See Section 11.7.13, “IO_CTL Register,” for
more information on initiating I/O cycles.
11.7.12 IO_DATA Register
The 32-bit IO_DATA register is used by the DSPCPU to
set up for an access to a location in PCI I/O space. The
DSPCPU writes or reads IO_DATA depending on wheth-
er it is performing a write or read from IO space. See
Section 11.7.13, “IO_CTL Register,” for more informa-
tion on initiating I/O cycles.
11.7.13 IO_CTL Register
The DSPCPU writes to IO_CTL to trigger a read or write
access to PCI I/O space. The function of this register is
similar to that of CONFIG_CTL, and the protocol for an I/
O cycle is similar to the configuration cycle protocol. A
PCI I/O read or write should not be performed during an
ongoing PCI configuration read or write.
The steps involved in a DSPCPU PCI I/O access are:
1. Wait until BIU_STATUS io_cycle.Busy and
cong_cycle.Busy are both de-asserted
2. Write IO address to IO_ADR, and (in case of a write
operation) write data to IO_DATA.
3. Write to IO_CTL to start the read or write.This action
sets io_cycle.Busy.
4. Wait (polling or interrupt based) until io_cycle.Done is
asserted by the hardware.
5. Retrieve the requested data in IO_DATA (in case of a
read)
6. Clear io_cycle.Done by writing a ‘1’ to it.
Table 11-15. BE eld interpretation (assumes little-
endian byte ordering)
BE Bit
Interpretation
00
byte 0 (LSB) participates
1
byte 0 (LSB) does not participate
10
byte 1 participates
1
byte 1 does not participate
20
byte 2 participates
1
byte 2 does not participate
30
byte 3 (MSB) participates
1
byte 3 (MSB) does not participate
Table 11-16. RW Interpretation
RW
Interpretation
0
Write
1
Read