pci.README
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:3k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. Pete Popov, ppopov@pacbell.net
  2. 07/11/2001
  3. This README briefly explains how to use the pci and pci_auto
  4. code in arch/mips/kernel.  The code was ported from PowerPC and
  5. modified slightly. It has been tested pretty well on PPC on some
  6. rather complex systems with multiple bridges and devices behind
  7. each bridge. However, at the time this README was written, the
  8. mips port was tested only on boards with a single pci bus and
  9. no P2P bridges.  It's very possible that on boards with P2P
  10. bridges some modifications have to be made. The code will 
  11. evolve, no doubt, but currently every single mips board
  12. is doing its own pcibios thing and it has become a big
  13. mess.  This generic pci code is meant to clean up the mips
  14. pci mess and make it easier to add pci support to new boards.
  15. arch/mips/kernel/pci_auto.c has the pci bus enumeration code.
  16. This code scans the pci bus(es) and assigns all of the resources.
  17. Thus, you don't need the boot code to that, and many boot codes
  18. don't do it correctly anyway.  To enable the pci_auto code, add
  19. define_bool CONFIG_PCI_AUTO y 
  20. inside the define for your board in arch/mips/config.in. 
  21. For example, the Galileo EV96100 board  looks like this:
  22. if [ "$CONFIG_MIPS_EV96100" = "y" ]; then
  23. define_bool CONFIG_PCI y
  24. define_bool CONFIG_MIPS_GT96100 y
  25. define_bool CONFIG_NEW_PCI y
  26. define_bool CONFIG_PCI_AUTO y
  27. define_bool CONFIG_SWAP_IO_SPACE y
  28. fi 
  29. Next, if you want to use the arch/mips/kernel/pci code, which has the
  30. pcibios_init() function, add
  31. define_bool CONFIG_NEW_PCI y
  32.  
  33. inside the define for your board. Again, the EV96100 example above
  34. show NEW_PCI turned on.
  35. Note that you can enable CONFIG_NEW_PCI code without enabling 
  36. CONFIG_PCI_AUTO. But you can't do the opposite because the pci_auto
  37. routines are called from pcibios_init(), which is part of the 
  38. CONFIG_NEW_PCI code.
  39. Now you need to add your files to hook in your pci configuration
  40. cycles.  Usually you'll need only a couple of files named something
  41. like pci_fixups.c and pci_ops.c.  You can copy the templates
  42. provided and fill in the code.
  43. The file pci_ops.c should contain the pci configuration cycles routines.
  44. It also has the mips_pci_channels[] array which contains the descriptors
  45. of each pci controller.
  46. The file pci_fixups.c contains a few routines to do interrupt fixups,
  47. resources fixups, and, if needed, pci bios fixups.
  48. Usually you'll put your pci_fixups.c file in your board specific directory, 
  49. since the functions in that file are board specific.  The functions in
  50. pci_ops.c, on the other hand, are usually pci controller specific so that
  51. file could be shared among a few different boards using the same
  52. pci controller.