summaryrefslogtreecommitdiff
path: root/sys/arch/alpha/pci/pci_chipset.h
blob: 4d333aee27e84ba74c2250ca1d8e914c67db6e30 (plain)
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
/*	$NetBSD: pci_chipset.h,v 1.3 1995/08/03 01:17:14 cgd Exp $	*/

/*
 * Copyright (c) 1995 Carnegie-Mellon University.
 * All rights reserved.
 *
 * Author: Chris G. Demetriou
 * 
 * Permission to use, copy, modify and distribute this software and
 * its documentation is hereby granted, provided that both the copyright
 * notice and this permission notice appear in all copies of the
 * software, derivative works or modified versions, and any portions
 * thereof, and that both notices appear in supporting documentation.
 * 
 * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" 
 * CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND 
 * FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
 * 
 * Carnegie Mellon requests users of this software to return to
 *
 *  Software Distribution Coordinator  or  Software.Distribution@CS.CMU.EDU
 *  School of Computer Science
 *  Carnegie Mellon University
 *  Pittsburgh PA 15213-3890
 *
 * any improvements or extensions that they make and grant Carnegie the
 * rights to redistribute these changes.
 */

/*
 * Function switch to implement the various PCI bus interfaces.
 * XXX this probably needs some work...
 */

struct pci_cs_fcns {
	void		(*cs_setup) __P((void));
	pcitag_t	(*cs_make_tag) __P((int, int, int));
	pcireg_t	(*cs_conf_read) __P((pcitag_t, int));
	void		(*cs_conf_write) __P((pcitag_t, int, pcireg_t));
	int		(*cs_map_io) __P((pcitag_t, int, int *));
	int		(*cs_map_mem) __P((pcitag_t, int, vm_offset_t *,
			    vm_offset_t *));
	int		(*cs_pcidma_map) __P((caddr_t, vm_size_t,
			    vm_offset_t *));
	void		(*cs_pcidma_unmap) __P((caddr_t, vm_size_t, int,
			    vm_offset_t *));
};

struct pci_cs_fcns *pci_cs_fcns;
extern struct pci_cs_fcns apecs_p1e_cs_fcns;
extern struct pci_cs_fcns apecs_p2e_cs_fcns;
extern struct pci_cs_fcns lca_cs_fcns;


/*
 * Function switch to implement the various PCI configuration schemes.
 * XXX this probably needs some work...
 */

struct pci_cfg_fcns {
	void		(*cfg_attach) __P((struct device *, struct
			    device *, void *));
	void		*(*cfg_map_int) __P((pcitag_t, pci_intrlevel,
			    int (*) (void *), void *, int));
};

struct pci_cfg_fcns *pci_cfg_fcns;
extern struct pci_cfg_fcns pci_2100_a50_sio1_cfg_fcns;
extern struct pci_cfg_fcns pci_2100_a50_sio2_cfg_fcns;

/*
 * Miscellaneous functions.
 */
isa_intrlevel	pcilevel_to_isa __P((pci_intrlevel));