55 lines
		
	
	
	
		
			2.1 KiB
			
		
	
	
	
		
			Text
		
	
	
	
	
	
		
		
			
		
	
	
			55 lines
		
	
	
	
		
			2.1 KiB
			
		
	
	
	
		
			Text
		
	
	
	
	
	
|   | 
 | ||
|  | 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. |