pci.README
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:3k
- 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.
- arch/mips/kernel/pci_auto.c has the pci bus enumeration code.
- This code scans the pci bus(es) and assigns all of the resources.
- Thus, you don't need the boot code to that, and many boot codes
- don't do it correctly anyway. To enable the pci_auto code, add
- define_bool CONFIG_PCI_AUTO y
- 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_PCI_AUTO 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.
- Note that you can enable CONFIG_NEW_PCI code without enabling
- CONFIG_PCI_AUTO. But you can't do the opposite because the pci_auto
- routines are called from pcibios_init(), which is part of the
- CONFIG_NEW_PCI code.
- 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.