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