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 */
87unsigned char	pci_inb(unsigned int addr);
88unsigned short	pci_inw(unsigned int addr);
89unsigned int	pci_inl(unsigned int addr);
90void		pci_insb(void *addr, void *buf, int len);
91void		pci_insw(void *addr, void *buf, int len);
92void		pci_insl(void *addr, void *buf, int len);
93
94void		pci_outb(unsigned char val, unsigned int addr);
95void		pci_outw(unsigned short val, unsigned int addr);
96void		pci_outl(unsigned int val, unsigned int addr);
97void		pci_outsb(void *addr, void *buf, int len);
98void		pci_outsw(void *addr, void *buf, int len);
99void		pci_outsl(void *addr, void *buf, int len);
100
101int		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);
106void		pci_free_irq(unsigned int irq, void *dev_id);
107
108void		*pci_bmalloc(int size);
109void		pci_bmfree(void *bmp, int len);
110void		pci_copytoshmem(unsigned long bmp, void *src, int size);
111void		pci_copyfromshmem(void *dst, unsigned long bmp, int size);
112unsigned long	pci_virt_to_bus(volatile void *address);
113void		*pci_bus_to_virt(unsigned long address);
114void		pci_bmcpyto(void *dst, void *src, int len);
115void		pci_bmcpyfrom(void *dst, void *src, int len);
116
117#endif /* CONFIG_PCI */
118/****************************************************************************/
119#endif	/* mcfpci_h */
120