sync hh.org
[hh.org.git] / arch / ppc / syslib / m82xx_pci.h
blob924f73f8e5955dcf0a30c718792a74c84e342b60
2 #ifndef _PPC_KERNEL_M82XX_PCI_H
3 #define _PPC_KERNEL_M82XX_PCI_H
5 #include <asm/m8260_pci.h>
6 /*
7 * Local->PCI map (from CPU) controlled by
8 * MPC826x master window
10 * 0xF6000000 - 0xF7FFFFFF IO space
11 * 0x80000000 - 0xBFFFFFFF CPU2PCI memory space PCIBR0
13 * 0x80000000 - 0x9FFFFFFF PCI Mem with prefetch (Outbound ATU #1)
14 * 0xA0000000 - 0xBFFFFFFF PCI Mem w/o prefetch (Outbound ATU #2)
15 * 0xF6000000 - 0xF7FFFFFF 32-bit PCI IO (Outbound ATU #3)
17 * PCI->Local map (from PCI)
18 * MPC826x slave window controlled by
20 * 0x00000000 - 0x07FFFFFF MPC826x local memory (Inbound ATU #1)
24 * Slave window that allows PCI masters to access MPC826x local memory.
25 * This window is set up using the first set of Inbound ATU registers
28 #ifndef M82xx_PCI_SLAVE_MEM_LOCAL
29 #define M82xx_PCI_SLAVE_MEM_LOCAL (((struct bd_info *)__res)->bi_memstart)
30 #define M82xx_PCI_SLAVE_MEM_BUS (((struct bd_info *)__res)->bi_memstart)
31 #define M82xx_PCI_SLAVE_MEM_SIZE (((struct bd_info *)__res)->bi_memsize)
32 #endif
35 * This is the window that allows the CPU to access PCI address space.
36 * It will be setup with the SIU PCIBR0 register. All three PCI master
37 * windows, which allow the CPU to access PCI prefetch, non prefetch,
38 * and IO space (see below), must all fit within this window.
41 #ifndef M82xx_PCI_LOWER_MEM
42 #define M82xx_PCI_LOWER_MEM 0x80000000
43 #define M82xx_PCI_UPPER_MEM 0x9fffffff
44 #define M82xx_PCI_MEM_OFFSET 0x00000000
45 #define M82xx_PCI_MEM_SIZE 0x20000000
46 #endif
48 #ifndef M82xx_PCI_LOWER_MMIO
49 #define M82xx_PCI_LOWER_MMIO 0xa0000000
50 #define M82xx_PCI_UPPER_MMIO 0xafffffff
51 #define M82xx_PCI_MMIO_OFFSET 0x00000000
52 #define M82xx_PCI_MMIO_SIZE 0x20000000
53 #endif
55 #ifndef M82xx_PCI_LOWER_IO
56 #define M82xx_PCI_LOWER_IO 0x00000000
57 #define M82xx_PCI_UPPER_IO 0x01ffffff
58 #define M82xx_PCI_IO_BASE 0xf6000000
59 #define M82xx_PCI_IO_SIZE 0x02000000
60 #endif
62 #ifndef M82xx_PCI_PRIM_WND_SIZE
63 #define M82xx_PCI_PRIM_WND_SIZE ~(M82xx_PCI_IO_SIZE - 1U)
64 #define M82xx_PCI_PRIM_WND_BASE (M82xx_PCI_IO_BASE)
65 #endif
67 #ifndef M82xx_PCI_SEC_WND_SIZE
68 #define M82xx_PCI_SEC_WND_SIZE ~(M82xx_PCI_MEM_SIZE + M82xx_PCI_MMIO_SIZE - 1U)
69 #define M82xx_PCI_SEC_WND_BASE (M82xx_PCI_LOWER_MEM)
70 #endif
72 #ifndef POTA_ADDR_SHIFT
73 #define POTA_ADDR_SHIFT 12
74 #endif
76 #ifndef PITA_ADDR_SHIFT
77 #define PITA_ADDR_SHIFT 12
78 #endif
80 #ifndef _IO_BASE
81 #define _IO_BASE isa_io_base
82 #endif
84 #ifdef CONFIG_8260_PCI9
85 struct pci_controller;
86 extern void setup_m8260_indirect_pci(struct pci_controller* hose,
87 u32 cfg_addr, u32 cfg_data);
88 #else
89 #define setup_m8260_indirect_pci setup_indirect_pci
90 #endif
92 #endif /* _PPC_KERNEL_M8260_PCI_H */