BSD 4_3_Net_2 development
[unix-history] / .ref-BSD-4_3_Reno / usr / src / sys / hpdev / hilioctl.h
CommitLineData
60f56dfc
KM
1/*
2 * Copyright (c) 1988 University of Utah.
3 * Copyright (c) 1990 The Regents of the University of California.
4 * All rights reserved.
5 *
6 * This code is derived from software contributed to Berkeley by
7 * the Systems Programming Group of the University of Utah Computer
8 * Science Department.
9 *
1c15e888
C
10 * Redistribution is only permitted until one year after the first shipment
11 * of 4.4BSD by the Regents. Otherwise, redistribution and use in source and
12 * binary forms are permitted provided that: (1) source distributions retain
13 * this entire copyright notice and comment, and (2) distributions including
14 * binaries display the following acknowledgement: This product includes
15 * software developed by the University of California, Berkeley and its
16 * contributors'' in the documentation or other materials provided with the
17 * distribution and in all advertising materials mentioning features or use
18 * of this software. Neither the name of the University nor the names of
19 * its contributors may be used to endorse or promote products derived from
20 * this software without specific prior written permission.
21 * THIS SOFTWARE IS PROVIDED AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
22 * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
23 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
60f56dfc 24 *
1c15e888 25 * from: Utah $Hdr: hilioctl.h 1.9 89/01/18$
60f56dfc 26 *
1c15e888 27 * @(#)hilioctl.h 7.1 (Berkeley) 5/8/90
60f56dfc
KM
28 */
29
30struct _hilbell {
31 u_char duration;
32 u_char frequency;
33};
34
35struct _hilbuf16 {
36 u_char string[16];
37};
38
39struct _hilbuf11 {
40 u_char string[11];
41};
42
43struct _hilbuf5 {
44 u_char string[5];
45};
46
47struct _hilbuf4 {
48 u_char string[4];
49};
50
51struct _hilbuf2 {
52 u_char string[2];
53};
54
55struct hilqinfo {
56 int qid;
57 char *addr;
58};
59
60/*
61 * HPUX ioctls (here for the benefit of the HIL driver).
62 * Named as they are under HPUX.
63 * The first set are loop device ioctls.
64 * The second set are ioctls for the 8042.
65 * Note that some are not defined as in HPUX
66 * due to the difference in the definitions of IOC_VOID.
67 */
68#define _IOHpux(x,y) (IOC_IN|((x)<<8)|y) /* IOC_IN is IOC_VOID */
69
70#define HILID _IOR('h',0x03, struct _hilbuf11) /* Identify & describe */
71#define HILSC _IOR('h',0x33, struct _hilbuf16) /* Security code */
72#define HILRN _IOR('h',0x30, struct _hilbuf16) /* Report name */
73#define HILRS _IOR('h',0x31, struct _hilbuf16) /* Report status */
74#define HILED _IOR('h',0x32, struct _hilbuf16) /* Extended describe*/
75#define HILDKR _IOHpux('h',0x3D) /* Disable autorepeat */
76#define HILER1 _IOHpux('h',0x3E) /* Autorepeat 1/30 */
77#define HILER2 _IOHpux('h',0x3F) /* Autorepeat 1/60 */
78#define HILP1 _IOHpux('h',0x40) /* Prompt 1 */
79#define HILP2 _IOHpux('h',0x41) /* Prompt 2 */
80#define HILP3 _IOHpux('h',0x42) /* Prompt 3 */
81#define HILP4 _IOHpux('h',0x43) /* Prompt 4 */
82#define HILP5 _IOHpux('h',0x44) /* Prompt 5 */
83#define HILP6 _IOHpux('h',0x45) /* Prompt 6 */
84#define HILP7 _IOHpux('h',0x46) /* Prompt 7 */
85#define HILP _IOHpux('h',0x47) /* Prompt */
86#define HILA1 _IOHpux('h',0x48) /* Acknowledge 1 */
87#define HILA2 _IOHpux('h',0x49) /* Acknowledge 2 */
88#define HILA3 _IOHpux('h',0x4A) /* Acknowledge 3 */
89#define HILA4 _IOHpux('h',0x4B) /* Acknowledge 4 */
90#define HILA5 _IOHpux('h',0x4C) /* Acknowledge 5 */
91#define HILA6 _IOHpux('h',0x4D) /* Acknowledge 6 */
92#define HILA7 _IOHpux('h',0x4E) /* Acknowledge 7 */
93#define HILA _IOHpux('h',0x4F) /* Acknowledge */
94
95#define EFTSRD _IOW('H',0xa0,char) /* Set the repeat delay. */
96#define EFTSRR _IOW('H',0xa2,char) /* Set the repeat rate. */
97#define EFTSRPG _IOW('H',0xa6,char) /* Set RPG interrupt rate. */
98#define EFTSBP _IOW('H',0xc4,struct _hilbuf4) /* Send data to the beeper. */
99#define EFTRLC _IOR('H',0x12,char) /* Read the language code. */
100#define EFTRCC _IOR('H',0x11,char) /* Read configuration code. */
101#define EFTRRT _IOR('H',0x31,struct _hilbuf5) /* Read the real time. */
102#define EFTRT _IOR('H',0xf4,struct _hilbuf4) /* Read the timers for the
103 four voices. */
104#define EFTSBI _IOW('H',0xa3,struct _hilbuf2) /* Set the bell information. */
105
106/*
107 * BSD ioctls.
108 * Mostly the same as the HPUX versions except for shared-queue ioctls.
109 */
110#define HILIOCID _IOR('h',0x03, struct _hilbuf11)
111#define HILIOCSC _IOR('h',0x33, struct _hilbuf16)
112#define HILIOCRN _IOR('h',0x30, struct _hilbuf16)
113#define HILIOCRS _IOR('h',0x31, struct _hilbuf16)
114#define HILIOCED _IOR('h',0x32, struct _hilbuf16)
115#define HILIOCAROFF _IO('h',0x3D)
116#define HILIOCAR1 _IO('h',0x3E)
117#define HILIOCAR2 _IO('h',0x3F)
118#define HILIOCSBP _IOW('H',0xc4,struct _hilbuf4)
119#define HILIOCRRT _IOR('H',0x31,struct _hilbuf5)
120#define HILIOCRT _IOR('H',0xf4,struct _hilbuf4)
121#define HILIOCBEEP _IOW('H',0xA3,struct _hilbell)
122# define BELLDUR 80 /* tone duration in msec (10 - 2560) */
123# define BELLFREQ 8 /* tone frequency (0 - 63) */
124
125#define HILIOCALLOCQ _IOWR('H',0x72, struct hilqinfo) /* allocate queue */
126#define HILIOCFREEQ _IOW('H',0x73, struct hilqinfo) /* deallocate queue */
127#define HILIOCMAPQ _IOW('H',0x74, int) /* map device to queue */
128#define HILIOCUNMAPQ _IOW('H',0x75, int) /* unmap device from dev */
129#define HILIOCTEST _IOW('H',0x76, int) /* Toggle debugging mode */
130#define HILIOCHPUX _IO('H',0x77) /* use HPUX (read) semantics */
131#define HILIOCRESET _IO('H',0x78) /* Reset the HIL loop. */
132
133/*
134 * HIL input queue.
135 * This is the circular queue (allocated by HILIOCALLOC) shared by kernel
136 * and user. It consists of a sixteen byte header followed by space for
137 * 255 input data packets (a total of 4096 bytes). The kernel adds packets
138 * at tail. The user is expected to remove packets from head. This is the
139 * only field in the header that the user should modify.
140 */
141typedef struct hil_packet {
142 u_char size; /* total packet size */
143 u_char dev; /* loop device packet was generated by */
144 long tstamp; /* time stamp */
145 u_char data[10]; /* device data */
146} hil_packet;
147
148typedef struct hil_eventqueue {
149 int size;
150 int head;
151 int tail;
152 int pad;
153} hil_eventqueue;
154
155typedef union hilqueue {
156 char hqu_size[0x1000];
157 struct q_data {
158 hil_eventqueue h_eventqueue;
159 hil_packet h_event[1];
160 } q_data;
161#define hil_evqueue q_data.h_eventqueue
162#define hil_event q_data.h_event
163} HILQ;
164
165#define HEVQSIZE \
166 ((sizeof(HILQ) - sizeof(struct q_data)) / sizeof(hil_packet) + 1)