Pull bugzilla-3774 into release branch
[linux-2.6] / include / asm-m68knommu / mcfpci.h
1 /****************************************************************************/
2
3 /*
4  *      mcfpci.h -- PCI bridge on ColdFire eval boards.
5  *
6  *      (C) Copyright 2000, Greg Ungerer (gerg@snapgear.com)
7  *      (C) Copyright 2000, Lineo Inc. (www.lineo.com)
8  */
9
10 /****************************************************************************/
11 #ifndef mcfpci_h
12 #define mcfpci_h
13 /****************************************************************************/
14
15
16 #ifdef CONFIG_PCI
17
18 /*
19  *      Address regions in the PCI address space are not mapped into the
20  *      normal memory space of the ColdFire. They must be accessed via
21  *      handler routines. This is easy for I/O space (inb/outb/etc) but
22  *      needs some code changes to support ordinary memory. Interrupts
23  *      also need to be vectored through the PCI handler first, then it
24  *      will call the actual driver sub-handlers.
25  */
26
27 /*
28  *      Un-define all the standard I/O access routines.
29  */
30 #undef  inb
31 #undef  inw
32 #undef  inl
33 #undef  inb_p
34 #undef  inw_p
35 #undef  insb
36 #undef  insw
37 #undef  insl
38 #undef  outb
39 #undef  outw
40 #undef  outl
41 #undef  outb_p
42 #undef  outw_p
43 #undef  outsb
44 #undef  outsw
45 #undef  outsl
46
47 #undef  request_irq
48 #undef  free_irq
49
50 #undef  bus_to_virt
51 #undef  virt_to_bus
52
53
54 /*
55  *      Re-direct all I/O memory accesses functions to PCI specific ones.
56  */
57 #define inb     pci_inb
58 #define inw     pci_inw
59 #define inl     pci_inl
60 #define inb_p   pci_inb
61 #define inw_p   pci_inw
62 #define insb    pci_insb
63 #define insw    pci_insw
64 #define insl    pci_insl
65
66 #define outb    pci_outb
67 #define outw    pci_outw
68 #define outl    pci_outl
69 #define outb_p  pci_outb
70 #define outw_p  pci_outw
71 #define outsb   pci_outsb
72 #define outsw   pci_outsw
73 #define outsl   pci_outsl
74
75 #define request_irq     pci_request_irq
76 #define free_irq        pci_free_irq
77
78 #define virt_to_bus     pci_virt_to_bus
79 #define bus_to_virt     pci_bus_to_virt
80
81 #define CONFIG_COMEMPCI 1
82
83
84 /*
85  *      Prototypes of the real PCI functions (defined in bios32.c).
86  */
87 unsigned char   pci_inb(unsigned int addr);
88 unsigned short  pci_inw(unsigned int addr);
89 unsigned int    pci_inl(unsigned int addr);
90 void            pci_insb(void *addr, void *buf, int len);
91 void            pci_insw(void *addr, void *buf, int len);
92 void            pci_insl(void *addr, void *buf, int len);
93
94 void            pci_outb(unsigned char val, unsigned int addr);
95 void            pci_outw(unsigned short val, unsigned int addr);
96 void            pci_outl(unsigned int val, unsigned int addr);
97 void            pci_outsb(void *addr, void *buf, int len);
98 void            pci_outsw(void *addr, void *buf, int len);
99 void            pci_outsl(void *addr, void *buf, int len);
100
101 int             pci_request_irq(unsigned int irq,
102                         void (*handler)(int, void *, struct pt_regs *),
103                         unsigned long flags,
104                         const char *device,
105                         void *dev_id);
106 void            pci_free_irq(unsigned int irq, void *dev_id);
107
108 void            *pci_bmalloc(int size);
109 void            pci_bmfree(void *bmp, int len);
110 void            pci_copytoshmem(unsigned long bmp, void *src, int size);
111 void            pci_copyfromshmem(void *dst, unsigned long bmp, int size);
112 unsigned long   pci_virt_to_bus(volatile void *address);
113 void            *pci_bus_to_virt(unsigned long address);
114 void            pci_bmcpyto(void *dst, void *src, int len);
115 void            pci_bmcpyfrom(void *dst, void *src, int len);
116
117 #endif /* CONFIG_PCI */
118 /****************************************************************************/
119 #endif  /* mcfpci_h */