summaryrefslogtreecommitdiff
path: root/include/uapi/linux/gpib_ioctl.h
blob: d544d8e4362c04163db301c34be572250a045a43 (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
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
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */

/***************************************************************************
 *    copyright            : (C) 2002 by Frank Mori Hess
 ***************************************************************************/

#ifndef _GPIB_IOCTL_H
#define _GPIB_IOCTL_H

#include <asm/ioctl.h>
#include <linux/types.h>

#define GPIB_CODE 160

struct gpib_board_type_ioctl {
	char name[100];
};

/* argument for read/write/command ioctls */
struct gpib_read_write_ioctl {
	__u64 buffer_ptr;
	__u32 requested_transfer_count;
	__u32 completed_transfer_count;
	__s32 end; /* end flag return for reads, end io suppression request for cmd*/
	__s32 handle;
};

struct gpib_open_dev_ioctl {
	__u32 handle;
	__u32 pad;
	__s32 sad;
	__u32 is_board;
};

struct gpib_close_dev_ioctl {
	__u32 handle;
};

struct gpib_serial_poll_ioctl {
	__u32 pad;
	__s32 sad;
	__u8 status_byte;
	__u8 padding[3];   /* align to 32 bit boundary */
};

struct gpib_eos_ioctl {
	__s32 eos;
	__s32 eos_flags;
};

struct gpib_wait_ioctl {
	__s32 handle;
	__s32 wait_mask;
	__s32 clear_mask;
	__s32 set_mask;
	__s32 ibsta;
	__s32 pad;
	__s32 sad;
	__u32 usec_timeout;
};

struct gpib_online_ioctl {
	__u64 init_data_ptr;
	__s32 init_data_length;
	__s32 online;
};

struct gpib_spoll_bytes_ioctl {
	__u32 num_bytes;
	__u32 pad;
	__s32 sad;
};

struct gpib_board_info_ioctl {
	__u32 pad;
	__s32 sad;
	__s32 parallel_poll_configuration;
	__s32 autopolling;
	__s32 is_system_controller;
	__u32 t1_delay;
	unsigned ist : 1;
	unsigned no_7_bit_eos : 1;
	unsigned padding :30; /* align to 32 bit boundary */
};

struct gpib_select_pci_ioctl {
	__s32 pci_bus;
	__s32 pci_slot;
};

struct gpib_ppoll_config_ioctl {
	__u8 config;
	unsigned set_ist : 1;
	unsigned clear_ist : 1;
	unsigned padding :22; /* align to 32 bit boundary */
};

struct gpib_pad_ioctl {
	__u32 handle;
	__u32 pad;
};

struct gpib_sad_ioctl {
	__u32 handle;
	__s32 sad;
};

/* select a piece of hardware to attach by its sysfs device path */
struct gpib_select_device_path_ioctl {
	char device_path[0x1000];
};

/* update status byte and request service */
struct gpib_request_service2 {
	__u8 status_byte;
	__u8 padding[3]; /* align to 32 bit boundary */
	__s32 new_reason_for_service;
};

/* Standard functions. */
enum gpib_ioctl {
	IBRD = _IOWR(GPIB_CODE, 100, struct gpib_read_write_ioctl),
	IBWRT = _IOWR(GPIB_CODE, 101, struct gpib_read_write_ioctl),
	IBCMD = _IOWR(GPIB_CODE, 102, struct gpib_read_write_ioctl),
	IBOPENDEV = _IOWR(GPIB_CODE, 3, struct gpib_open_dev_ioctl),
	IBCLOSEDEV = _IOW(GPIB_CODE, 4, struct gpib_close_dev_ioctl),
	IBWAIT = _IOWR(GPIB_CODE, 5, struct gpib_wait_ioctl),
	IBRPP = _IOWR(GPIB_CODE, 6, __u8),

	IBSIC = _IOW(GPIB_CODE, 9, __u32),
	IBSRE = _IOW(GPIB_CODE, 10, __s32),
	IBGTS = _IO(GPIB_CODE, 11),
	IBCAC = _IOW(GPIB_CODE, 12, __s32),
	IBLINES = _IOR(GPIB_CODE, 14, __s16),
	IBPAD = _IOW(GPIB_CODE, 15, struct gpib_pad_ioctl),
	IBSAD = _IOW(GPIB_CODE, 16, struct gpib_sad_ioctl),
	IBTMO = _IOW(GPIB_CODE, 17, __u32),
	IBRSP = _IOWR(GPIB_CODE, 18, struct gpib_serial_poll_ioctl),
	IBEOS = _IOW(GPIB_CODE, 19, struct gpib_eos_ioctl),
	IBRSV = _IOW(GPIB_CODE, 20, __u8),
	CFCBASE = _IOW(GPIB_CODE, 21, __u64),
	CFCIRQ = _IOW(GPIB_CODE, 22, __u32),
	CFCDMA = _IOW(GPIB_CODE, 23, __u32),
	CFCBOARDTYPE = _IOW(GPIB_CODE, 24, struct gpib_board_type_ioctl),

	IBMUTEX = _IOW(GPIB_CODE, 26, __s32),
	IBSPOLL_BYTES = _IOWR(GPIB_CODE, 27, struct gpib_spoll_bytes_ioctl),
	IBPPC = _IOW(GPIB_CODE, 28, struct gpib_ppoll_config_ioctl),
	IBBOARD_INFO = _IOR(GPIB_CODE, 29, struct gpib_board_info_ioctl),

	IBQUERY_BOARD_RSV = _IOR(GPIB_CODE, 31, __s32),
	IBSELECT_PCI = _IOWR(GPIB_CODE, 32, struct gpib_select_pci_ioctl),
	IBEVENT = _IOR(GPIB_CODE, 33, __s16),
	IBRSC = _IOW(GPIB_CODE, 34, __s32),
	IB_T1_DELAY = _IOW(GPIB_CODE, 35, __u32),
	IBLOC = _IO(GPIB_CODE, 36),

	IBAUTOSPOLL = _IOW(GPIB_CODE, 38, __s16),
	IBONL = _IOW(GPIB_CODE, 39, struct gpib_online_ioctl),
	IBPP2_SET = _IOW(GPIB_CODE, 40, __s16),
	IBPP2_GET = _IOR(GPIB_CODE, 41, __s16),
	IBSELECT_DEVICE_PATH = _IOW(GPIB_CODE, 43, struct gpib_select_device_path_ioctl),
	/* 44 was IBSELECT_SERIAL_NUMBER */
	IBRSV2 = _IOW(GPIB_CODE, 45, struct gpib_request_service2)
};

#endif	/* _GPIB_IOCTL_H */