1141398Sphk/*-
2141398Sphk * Copyright (c) 2005 Poul-Henning Kamp
3141398Sphk * All rights reserved.
4141398Sphk *
5141398Sphk * Redistribution and use in source and binary forms, with or without
6141398Sphk * modification, are permitted provided that the following conditions
7141398Sphk * are met:
8141398Sphk * 1. Redistributions of source code must retain the above copyright
9141398Sphk *    notice, this list of conditions and the following disclaimer.
10141398Sphk * 2. Redistributions in binary form must reproduce the above copyright
11141398Sphk *    notice, this list of conditions and the following disclaimer in the
12141398Sphk *    documentation and/or other materials provided with the distribution.
13141398Sphk *
14141398Sphk * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
15141398Sphk * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16141398Sphk * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17141398Sphk * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
18141398Sphk * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19141398Sphk * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20141398Sphk * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21141398Sphk * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22141398Sphk * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23141398Sphk * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24141398Sphk * SUCH DAMAGE.
25141398Sphk *
26141398Sphk * This file defines the ABI between the userland gpib library and the
27141398Sphk * kernel.  This file should not be used anywhere else.
28141398Sphk *
29141398Sphk * $FreeBSD$
30141398Sphk */
31141398Sphk
32141398Sphk#include <sys/ioccom.h>
33141398Sphk
34141398Sphktypedef void ibsrq_t(void);
35141398Sphkenum ibfoo_id {
36141398Sphk	__ID_INVALID = 0,
37141398Sphk	__ID_IBASK,
38141398Sphk	__ID_IBBNA,
39141398Sphk	__ID_IBCAC,
40141398Sphk	__ID_IBCLR,
41141398Sphk	__ID_IBCMD,
42141398Sphk	__ID_IBCMDA,
43141398Sphk	__ID_IBCONFIG,
44141398Sphk	__ID_IBDEV,
45141398Sphk	__ID_IBDIAG,
46141398Sphk	__ID_IBDMA,
47141398Sphk	__ID_IBEOS,
48141398Sphk	__ID_IBEOT,
49141398Sphk	__ID_IBEVENT,
50141398Sphk	__ID_IBFIND,
51141398Sphk	__ID_IBGTS,
52141398Sphk	__ID_IBIST,
53141398Sphk	__ID_IBLINES,
54141398Sphk	__ID_IBLLO,
55141398Sphk	__ID_IBLN,
56141398Sphk	__ID_IBLOC,
57141398Sphk	__ID_IBONL,
58141398Sphk	__ID_IBPAD,
59141398Sphk	__ID_IBPCT,
60141398Sphk	__ID_IBPOKE,
61141398Sphk	__ID_IBPPC,
62141398Sphk	__ID_IBRD,
63141398Sphk	__ID_IBRDA,
64141398Sphk	__ID_IBRDF,
65141398Sphk	__ID_IBRDKEY,
66141398Sphk	__ID_IBRPP,
67141398Sphk	__ID_IBRSC,
68141398Sphk	__ID_IBRSP,
69141398Sphk	__ID_IBRSV,
70141398Sphk	__ID_IBSAD,
71141398Sphk	__ID_IBSGNL,
72141398Sphk	__ID_IBSIC,
73141398Sphk	__ID_IBSRE,
74141398Sphk	__ID_IBSRQ,
75141398Sphk	__ID_IBSTOP,
76141398Sphk	__ID_IBTMO,
77141398Sphk	__ID_IBTRAP,
78141398Sphk	__ID_IBTRG,
79141398Sphk	__ID_IBWAIT,
80141398Sphk	__ID_IBWRT,
81141398Sphk	__ID_IBWRTA,
82141398Sphk	__ID_IBWRTF,
83141398Sphk	__ID_IBWRTKEY,
84141398Sphk	__ID_IBXTRC
85141398Sphk};
86141398Sphk
87141398Sphk#define __F_HANDLE              (1 << 0)
88141398Sphk#define __F_SPR                 (1 << 1)
89141398Sphk#define __F_BUFFER              (1 << 2)
90141398Sphk#define __F_RETVAL              (1 << 3)
91141398Sphk#define __F_BDNAME              (1 << 4)
92141398Sphk#define __F_MASK                (1 << 5)
93141398Sphk#define __F_PADVAL              (1 << 6)
94141398Sphk#define __F_SADVAL              (1 << 7)
95141398Sphk#define __F_CNT                 (1 << 8)
96141398Sphk#define __F_TMO                 (1 << 9)
97141398Sphk#define __F_EOS                 (1 << 10)
98141398Sphk#define __F_PPR                 (1 << 11)
99141398Sphk#define __F_EOT                 (1 << 12)
100141398Sphk#define __F_V                   (1 << 13)
101141398Sphk#define __F_VALUE               (1 << 14)
102141398Sphk#define __F_SAD                 (1 << 15)
103141398Sphk#define __F_BOARDID             (1 << 16)
104141398Sphk#define __F_OPTION              (1 << 17)
105141398Sphk#define __F_FLNAME              (1 << 18)
106141398Sphk#define __F_FUNC                (1 << 19)
107141398Sphk#define __F_LINES               (1 << 20)
108141398Sphk#define __F_PAD                 (1 << 21)
109141398Sphk#define __F_MODE                (1 << 22)
110141398Sphk#define __F_LISTENFLAG          (1 << 23)
111141398Sphk#define __F_EVENT               (1 << 24)
112141398Sphk
113141768Sphkstruct ibarg {
114141398Sphk	enum ibfoo_id       __ident;
115141398Sphk	unsigned int        __field;
116141398Sphk	int		    __retval;
117141768Sphk	int		    __ibsta;
118141398Sphk	int		    __iberr;
119141398Sphk	int		    __ibcnt;
120141398Sphk	int                 handle;
121141398Sphk	char *              spr;
122141398Sphk	void *              buffer;
123141398Sphk	int *               retval;
124141398Sphk	char *              bdname;
125141398Sphk	int                 mask;
126141398Sphk	int                 padval;
127141398Sphk	int                 sadval;
128141398Sphk	long                cnt;
129141398Sphk	int                 tmo;
130141398Sphk	int                 eos;
131141398Sphk	char *              ppr;
132141398Sphk	int                 eot;
133141398Sphk	int                 v;
134141398Sphk	int                 value;
135141398Sphk	int                 sad;
136141398Sphk	int                 boardID;
137141398Sphk	int                 option;
138141398Sphk	char *              flname;
139141398Sphk	ibsrq_t *           func;
140141398Sphk	short *             lines;
141141398Sphk	int                 pad;
142141398Sphk	int                 mode;
143141398Sphk	short *             listenflag;
144141398Sphk	short *             event;
145141398Sphk};
146141398Sphk
147141768Sphk#define GPIB_IBFOO	_IOWR(4, 0, struct ibarg)
148