vmevar.h revision 1.1 1 1.1 pk /* $NetBSD: vmevar.h,v 1.1 1997/11/01 22:56:23 pk Exp $ */
2 1.1 pk /*-
3 1.1 pk * Copyright (c) 1997 The NetBSD Foundation, Inc.
4 1.1 pk * All rights reserved.
5 1.1 pk *
6 1.1 pk * This code is derived from software contributed to The NetBSD Foundation
7 1.1 pk * by Paul Kranenburg.
8 1.1 pk *
9 1.1 pk * Redistribution and use in source and binary forms, with or without
10 1.1 pk * modification, are permitted provided that the following conditions
11 1.1 pk * are met:
12 1.1 pk * 1. Redistributions of source code must retain the above copyright
13 1.1 pk * notice, this list of conditions and the following disclaimer.
14 1.1 pk * 2. Redistributions in binary form must reproduce the above copyright
15 1.1 pk * notice, this list of conditions and the following disclaimer in the
16 1.1 pk * documentation and/or other materials provided with the distribution.
17 1.1 pk * 3. All advertising materials mentioning features or use of this software
18 1.1 pk * must display the following acknowledgement:
19 1.1 pk * This product includes software developed by the NetBSD
20 1.1 pk * Foundation, Inc. and its contributors.
21 1.1 pk * 4. Neither the name of The NetBSD Foundation nor the names of its
22 1.1 pk * contributors may be used to endorse or promote products derived
23 1.1 pk * from this software without specific prior written permission.
24 1.1 pk *
25 1.1 pk * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
26 1.1 pk * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
27 1.1 pk * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
28 1.1 pk * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
29 1.1 pk * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
30 1.1 pk * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
31 1.1 pk * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
32 1.1 pk * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
33 1.1 pk * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
34 1.1 pk * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
35 1.1 pk * POSSIBILITY OF SUCH DAMAGE.
36 1.1 pk */
37 1.1 pk
38 1.1 pk #include <machine/bus.h>
39 1.1 pk
40 1.1 pk /*
41 1.1 pk * VME address modifiers
42 1.1 pk */
43 1.1 pk #define VMEMOD_A32 0x00 /* 32-bit address */
44 1.1 pk #define VMEMOD_A16 0x20 /* 16-bit address */
45 1.1 pk #define VMEMOD_A24 0x30 /* 24-bit address */
46 1.1 pk
47 1.1 pk #define VMEMOD_BLT64 0x08 /* 64-bit block transfer */
48 1.1 pk #define VMEMOD_D 0x09 /* data access */
49 1.1 pk #define VMEMOD_I 0x0a /* instruction access */
50 1.1 pk #define VMEMOD_B 0x0b /* block access */
51 1.1 pk
52 1.1 pk #define VMEMOD_S 0x04 /* Supervisor access */
53 1.1 pk
54 1.1 pk #define VMEMOD_D32 0x40 /* 32-bit access */
55 1.1 pk
56 1.1 pk
57 1.1 pk typedef u_int32_t vme_addr_t;
58 1.1 pk typedef u_int32_t vme_size_t;
59 1.1 pk typedef int vme_mod_t;
60 1.1 pk
61 1.1 pk typedef void *vme_intr_handle_t;
62 1.1 pk
63 1.1 pk struct vme_chipset_tag {
64 1.1 pk void *cookie;
65 1.1 pk int (*vct_probe) __P((void *, bus_space_tag_t, vme_addr_t,
66 1.1 pk vme_size_t, vme_mod_t));
67 1.1 pk
68 1.1 pk int (*vct_map) __P((void *, vme_addr_t, vme_size_t, vme_mod_t,
69 1.1 pk bus_space_tag_t, bus_space_handle_t *));
70 1.1 pk void (*vct_unmap) __P((void *));
71 1.1 pk
72 1.1 pk int (*vct_intr_map) __P((void *, int, int, vme_intr_handle_t *));
73 1.1 pk
74 1.1 pk void *(*vct_intr_establish) __P((void *, vme_intr_handle_t,
75 1.1 pk int (*) __P((void *)), void *));
76 1.1 pk void (*vct_intr_disestablish) __P((void *, void *));
77 1.1 pk
78 1.1 pk };
79 1.1 pk typedef struct vme_chipset_tag *vme_chipset_tag_t;
80 1.1 pk
81 1.1 pk #define vme_bus_probe(ct, bt, addr, size, mod) \
82 1.1 pk (*ct->vct_probe)(ct->cookie, bt, addr, size, mod)
83 1.1 pk #define vme_bus_map(ct, addr, size, mod, bt, bhp) \
84 1.1 pk (*ct->vct_map)(ct->cookie, addr, size, mod, bt, bhp)
85 1.1 pk #define vme_intr_map(ct, vec, pri, hp) \
86 1.1 pk (*ct->vct_intr_map)(ct->cookie, vec, pri, hp)
87 1.1 pk #define vme_intr_establish(ct, h, f, a) \
88 1.1 pk (*ct->vct_intr_establish)(ct->cookie, h, f, a)
89 1.1 pk
90 1.1 pk struct vme_busattach_args {
91 1.1 pk bus_space_tag_t vba_bustag;
92 1.1 pk bus_dma_tag_t vba_dmatag;
93 1.1 pk vme_chipset_tag_t vba_chipset_tag;
94 1.1 pk };
95 1.1 pk
96 1.1 pk struct vme_attach_args {
97 1.1 pk bus_space_tag_t vma_bustag;
98 1.1 pk bus_dma_tag_t vma_dmatag;
99 1.1 pk vme_chipset_tag_t vma_chipset_tag;
100 1.1 pk
101 1.1 pk #define VMA_MAX_PADDR 1
102 1.1 pk int vma_nreg; /* # of address locators */
103 1.1 pk u_long vma_reg[VMA_MAX_PADDR];
104 1.1 pk
105 1.1 pk int vma_vec; /* VMEbus interrupt vector */
106 1.1 pk int vma_pri; /* VMEbus interrupt priority */
107 1.1 pk };
108 1.1 pk
109 1.1 pk int vmesearch __P((struct device *, struct cfdata *, void *));
110