55 lines
2.1 KiB
Plaintext
55 lines
2.1 KiB
Plaintext
|
|
||
|
Pete Popov, ppopov@pacbell.net
|
||
|
07/11/2001
|
||
|
|
||
|
This README briefly explains how to use the pci and pci_auto
|
||
|
code in arch/mips/kernel. The code was ported from PowerPC and
|
||
|
modified slightly. It has been tested pretty well on PPC on some
|
||
|
rather complex systems with multiple bridges and devices behind
|
||
|
each bridge. However, at the time this README was written, the
|
||
|
mips port was tested only on boards with a single pci bus and
|
||
|
no P2P bridges. It's very possible that on boards with P2P
|
||
|
bridges some modifications have to be made. The code will
|
||
|
evolve, no doubt, but currently every single mips board
|
||
|
is doing its own pcibios thing and it has become a big
|
||
|
mess. This generic pci code is meant to clean up the mips
|
||
|
pci mess and make it easier to add pci support to new boards.
|
||
|
|
||
|
inside the define for your board in arch/mips/config.in.
|
||
|
For example, the Galileo EV96100 board looks like this:
|
||
|
|
||
|
if [ "$CONFIG_MIPS_EV96100" = "y" ]; then
|
||
|
define_bool CONFIG_PCI y
|
||
|
define_bool CONFIG_MIPS_GT96100 y
|
||
|
define_bool CONFIG_NEW_PCI y
|
||
|
define_bool CONFIG_SWAP_IO_SPACE y
|
||
|
fi
|
||
|
|
||
|
|
||
|
Next, if you want to use the arch/mips/kernel/pci code, which has the
|
||
|
pcibios_init() function, add
|
||
|
|
||
|
define_bool CONFIG_NEW_PCI y
|
||
|
|
||
|
inside the define for your board. Again, the EV96100 example above
|
||
|
show NEW_PCI turned on.
|
||
|
|
||
|
|
||
|
Now you need to add your files to hook in your pci configuration
|
||
|
cycles. Usually you'll need only a couple of files named something
|
||
|
like pci_fixups.c and pci_ops.c. You can copy the templates
|
||
|
provided and fill in the code.
|
||
|
|
||
|
The file pci_ops.c should contain the pci configuration cycles routines.
|
||
|
It also has the mips_pci_channels[] array which contains the descriptors
|
||
|
of each pci controller.
|
||
|
|
||
|
The file pci_fixups.c contains a few routines to do interrupt fixups,
|
||
|
resources fixups, and, if needed, pci bios fixups.
|
||
|
|
||
|
Usually you'll put your pci_fixups.c file in your board specific directory,
|
||
|
since the functions in that file are board specific. The functions in
|
||
|
pci_ops.c, on the other hand, are usually pci controller specific so that
|
||
|
file could be shared among a few different boards using the same
|
||
|
pci controller.
|