| |
| 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. |