
Intel
®
IXP45X and Intel
®
IXP46X Product Line of Network Processors
August 2006
Develepor’s Manual
Order Number: 306262-004US
503
PCI Controller—Intel
®
IXP45X and Intel
®
IXP46X Product Line of Network Processors
• Placing the PCI Command Type and Byte Enables for the desired write cycle in the
PCI Non-Pre-fetch Access Command/Byte Enables (PCI_NP_CBE) Register
• Writing the data that is to be placed onto the PCI bus into the PCI Non-Pre-fetch
Access Write Data (PCI_NP_WDATA) Register
The PCI Controller then will initiate the proper transaction on the PCI bus to place the
requested write data onto the PCI bus. To avoid the write data from being corrupted by
new request from an AHB master, retries will be issued to any AHB master that
attempts to write the PCI Controller Configuration and Status Registers prior to the
completion of the requested PCI transaction.
It is also noteworthy to mention that the PCI Controller does not interpret or
manipulate the contents of the Non-Pre-fetch Registers. The address, command, byte
enables, and write data are passed to the PCI bus as-is. For example, I/O read and I/O
write requests must be set-up such that the byte-enables are consistent with the 2
LSBs of the address in accordance with the PCI local-bus specification.
10.2.2.1
Example: Generating a PCI Configuration Write and Read
This example examines the initializing of the Base Address Register.
1. Assume a PCI device has been located and now the Base Address Register
configuration of this PCI device is going to be initialized. The first step is to write all
logic 1s to the PCI Base Address Registers.
Base Address Register 0 will be located at hexadecimal offset of 0x10 when the
ID_SEL of this device is active and the access is a PCI Bus Configuration Cycle. The
intent of this exercise is to initialize this Base Address Register.
2. Write a hexadecimal value of 0x00010010 to the PCI Non-Pre-fetch Access Address
(PCI_NP_AD) Register.
This value will allow a write to a Type 0 PCI configuration space address location
0x10. Notice also that address bit 16 is set to logic 1. This bit is set, assuming that
ID_SEL for a given device on the local segment is selected using address bit 16.
This value chosen for PCI_NP_AD follows the convention outlined in
“Type 0 Configuration Address Phase” on page 502
3. Write a hexadecimal value of 0x0000000B to the PCI Non-Pre-fetch Access
Command/Byte Enables (PCI_NP_CBE) Register.
Bits 7:4 of this register specify the byte enables for the data transfer. The selection
of all bits to logic 0 signifies that all bytes are to be written. Bits 3:0 of this register
specify the PCI Command Type to be used for the data transfer. A logic value of
1011b signifies that a Configuration Write Cycle is being requested.
4. Write a hexadecimal value of 0xFFFFFFFF to the PCI Non-Pre-fetch Access Write
Data (PCI_NP_WDATA) Register.
This write to the Configuration and Status Registers will cause a PCI Configuration
Write Cycle with all byte-enables active to be initiated on the PCI bus.
5. Base Address Register 0 has been written with all logic 1s. However, only some of
these bits will be set to logic 1.
Logic 1s will only be written to the bits corresponding to a given address space
defined for the PCI device. For instance, assume that the PCI device being
configured requires a 64-Mbyte address space for Base Address Register 0 used for
memory transactions with no adverse side effects to reads. Only bits (31:26) would
be written.
Now, the IXP45X/IXP46X network processors must read Base Address Register 0 to
determine the Address Space, Address space type (memory or I/O), and any
limitations to reading this address space.
6. Write a hexadecimal value of 0x00010010 to the PCI Non-Pre-fetch Access Address
(PCI_NP_AD) Register.