summaryrefslogtreecommitdiff
path: root/arch/m68k/include/asm/mcfpci.h
blob: f1507dd06ec6e731746d36471b2e4b01e54b6e49 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
/****************************************************************************/

/*
 *	mcfpci.h -- PCI bridge on ColdFire eval boards.
 *
 *	(C) Copyright 2000, Greg Ungerer (gerg@snapgear.com)
 *	(C) Copyright 2000, Lineo Inc. (www.lineo.com)
 */

/****************************************************************************/
#ifndef	mcfpci_h
#define	mcfpci_h
/****************************************************************************/


#ifdef CONFIG_PCI

/*
 *	Address regions in the PCI address space are not mapped into the
 *	normal memory space of the ColdFire. They must be accessed via
 *	handler routines. This is easy for I/O space (inb/outb/etc) but
 *	needs some code changes to support ordinary memory. Interrupts
 *	also need to be vectored through the PCI handler first, then it
 *	will call the actual driver sub-handlers.
 */

/*
 *	Un-define all the standard I/O access routines.
 */
#undef	inb
#undef	inw
#undef	inl
#undef	inb_p
#undef	inw_p
#undef	insb
#undef	insw
#undef	insl
#undef	outb
#undef	outw
#undef	outl
#undef	outb_p
#undef	outw_p
#undef	outsb
#undef	outsw
#undef	outsl

#undef	request_irq
#undef	free_irq

#undef	bus_to_virt
#undef	virt_to_bus


/*
 *	Re-direct all I/O memory accesses functions to PCI specific ones.
 */
#define	inb	pci_inb
#define	inw	pci_inw
#define	inl	pci_inl
#define	inb_p	pci_inb
#define	inw_p	pci_inw
#define	insb	pci_insb
#define	insw	pci_insw
#define	insl	pci_insl

#define	outb	pci_outb
#define	outw	pci_outw
#define	outl	pci_outl
#define	outb_p	pci_outb
#define	outw_p	pci_outw
#define	outsb	pci_outsb
#define	outsw	pci_outsw
#define	outsl	pci_outsl

#define	request_irq	pci_request_irq
#define	free_irq	pci_free_irq

#define	virt_to_bus	pci_virt_to_bus
#define	bus_to_virt	pci_bus_to_virt

#define	CONFIG_COMEMPCI	1


/*
 *	Prototypes of the real PCI functions (defined in bios32.c).
 */
unsigned char	pci_inb(unsigned int addr);
unsigned short	pci_inw(unsigned int addr);
unsigned int	pci_inl(unsigned int addr);
void		pci_insb(void *addr, void *buf, int len);
void		pci_insw(void *addr, void *buf, int len);
void		pci_insl(void *addr, void *buf, int len);

void		pci_outb(unsigned char val, unsigned int addr);
void		pci_outw(unsigned short val, unsigned int addr);
void		pci_outl(unsigned int val, unsigned int addr);
void		pci_outsb(void *addr, void *buf, int len);
void		pci_outsw(void *addr, void *buf, int len);
void		pci_outsl(void *addr, void *buf, int len);

int		pci_request_irq(unsigned int irq,
			void (*handler)(int, void *, struct pt_regs *),
			unsigned long flags,
			const char *device,
			void *dev_id);
void		pci_free_irq(unsigned int irq, void *dev_id);

void		*pci_bmalloc(int size);
void		pci_bmfree(void *bmp, int len);
void		pci_copytoshmem(unsigned long bmp, void *src, int size);
void		pci_copyfromshmem(void *dst, unsigned long bmp, int size);
unsigned long	pci_virt_to_bus(volatile void *address);
void		*pci_bus_to_virt(unsigned long address);
void		pci_bmcpyto(void *dst, void *src, int len);
void		pci_bmcpyfrom(void *dst, void *src, int len);

#endif /* CONFIG_PCI */
/****************************************************************************/
#endif	/* mcfpci_h */