diff options
Diffstat (limited to 'Documentation/mips/pci/pci.README')
-rw-r--r-- | Documentation/mips/pci/pci.README | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/Documentation/mips/pci/pci.README b/Documentation/mips/pci/pci.README new file mode 100644 index 000000000000..8697ee41372d --- /dev/null +++ b/Documentation/mips/pci/pci.README | |||
@@ -0,0 +1,54 @@ | |||
1 | |||
2 | Pete Popov, ppopov@pacbell.net | ||
3 | 07/11/2001 | ||
4 | |||
5 | This README briefly explains how to use the pci and pci_auto | ||
6 | code in arch/mips/kernel. The code was ported from PowerPC and | ||
7 | modified slightly. It has been tested pretty well on PPC on some | ||
8 | rather complex systems with multiple bridges and devices behind | ||
9 | each bridge. However, at the time this README was written, the | ||
10 | mips port was tested only on boards with a single pci bus and | ||
11 | no P2P bridges. It's very possible that on boards with P2P | ||
12 | bridges some modifications have to be made. The code will | ||
13 | evolve, no doubt, but currently every single mips board | ||
14 | is doing its own pcibios thing and it has become a big | ||
15 | mess. This generic pci code is meant to clean up the mips | ||
16 | pci mess and make it easier to add pci support to new boards. | ||
17 | |||
18 | inside the define for your board in arch/mips/config.in. | ||
19 | For example, the Galileo EV96100 board looks like this: | ||
20 | |||
21 | if [ "$CONFIG_MIPS_EV96100" = "y" ]; then | ||
22 | define_bool CONFIG_PCI y | ||
23 | define_bool CONFIG_MIPS_GT96100 y | ||
24 | define_bool CONFIG_NEW_PCI y | ||
25 | define_bool CONFIG_SWAP_IO_SPACE y | ||
26 | fi | ||
27 | |||
28 | |||
29 | Next, if you want to use the arch/mips/kernel/pci code, which has the | ||
30 | pcibios_init() function, add | ||
31 | |||
32 | define_bool CONFIG_NEW_PCI y | ||
33 | |||
34 | inside the define for your board. Again, the EV96100 example above | ||
35 | show NEW_PCI turned on. | ||
36 | |||
37 | |||
38 | Now you need to add your files to hook in your pci configuration | ||
39 | cycles. Usually you'll need only a couple of files named something | ||
40 | like pci_fixups.c and pci_ops.c. You can copy the templates | ||
41 | provided and fill in the code. | ||
42 | |||
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 | |||
47 | The file pci_fixups.c contains a few routines to do interrupt fixups, | ||
48 | resources fixups, and, if needed, pci bios fixups. | ||
49 | |||
50 | Usually you'll put your pci_fixups.c file in your board specific directory, | ||
51 | since the functions in that file are board specific. The functions in | ||
52 | pci_ops.c, on the other hand, are usually pci controller specific so that | ||
53 | file could be shared among a few different boards using the same | ||
54 | pci controller. | ||