xref: /utopia/UTPA2-700.0.x/projects/tools/lint/mips-linux-gnu_include/linux/irda.h (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
1*53ee8cc1Swenshuai.xi /*********************************************************************
2*53ee8cc1Swenshuai.xi  *
3*53ee8cc1Swenshuai.xi  * Filename:      irda.h
4*53ee8cc1Swenshuai.xi  * Version:
5*53ee8cc1Swenshuai.xi  * Description:
6*53ee8cc1Swenshuai.xi  * Status:        Experimental.
7*53ee8cc1Swenshuai.xi  * Author:        Dag Brattli <dagb@cs.uit.no>
8*53ee8cc1Swenshuai.xi  * Created at:    Mon Mar  8 14:06:12 1999
9*53ee8cc1Swenshuai.xi  * Modified at:   Sat Dec 25 16:06:42 1999
10*53ee8cc1Swenshuai.xi  * Modified by:   Dag Brattli <dagb@cs.uit.no>
11*53ee8cc1Swenshuai.xi  *
12*53ee8cc1Swenshuai.xi  *     Copyright (c) 1999 Dag Brattli, All Rights Reserved.
13*53ee8cc1Swenshuai.xi  *
14*53ee8cc1Swenshuai.xi  *     This program is free software; you can redistribute it and/or
15*53ee8cc1Swenshuai.xi  *     modify it under the terms of the GNU General Public License as
16*53ee8cc1Swenshuai.xi  *     published by the Free Software Foundation; either version 2 of
17*53ee8cc1Swenshuai.xi  *     the License, or (at your option) any later version.
18*53ee8cc1Swenshuai.xi  *
19*53ee8cc1Swenshuai.xi  *     Neither Dag Brattli nor University of Tromsø admit liability nor
20*53ee8cc1Swenshuai.xi  *     provide warranty for any of this software. This material is
21*53ee8cc1Swenshuai.xi  *     provided "AS-IS" and at no charge.
22*53ee8cc1Swenshuai.xi  *
23*53ee8cc1Swenshuai.xi  ********************************************************************/
24*53ee8cc1Swenshuai.xi 
25*53ee8cc1Swenshuai.xi #ifndef KERNEL_IRDA_H
26*53ee8cc1Swenshuai.xi #define KERNEL_IRDA_H
27*53ee8cc1Swenshuai.xi 
28*53ee8cc1Swenshuai.xi /* Please do *not* add any #include in this file, this file is
29*53ee8cc1Swenshuai.xi  * included as-is in user space.
30*53ee8cc1Swenshuai.xi  * Please fix the calling file to properly included needed files before
31*53ee8cc1Swenshuai.xi  * this one, or preferably to include <net/irda/irda.h> instead.
32*53ee8cc1Swenshuai.xi  * Jean II */
33*53ee8cc1Swenshuai.xi 
34*53ee8cc1Swenshuai.xi /* Hint bit positions for first hint byte */
35*53ee8cc1Swenshuai.xi #define HINT_PNP         0x01
36*53ee8cc1Swenshuai.xi #define HINT_PDA         0x02
37*53ee8cc1Swenshuai.xi #define HINT_COMPUTER    0x04
38*53ee8cc1Swenshuai.xi #define HINT_PRINTER     0x08
39*53ee8cc1Swenshuai.xi #define HINT_MODEM       0x10
40*53ee8cc1Swenshuai.xi #define HINT_FAX         0x20
41*53ee8cc1Swenshuai.xi #define HINT_LAN         0x40
42*53ee8cc1Swenshuai.xi #define HINT_EXTENSION   0x80
43*53ee8cc1Swenshuai.xi 
44*53ee8cc1Swenshuai.xi /* Hint bit positions for second hint byte (first extension byte) */
45*53ee8cc1Swenshuai.xi #define HINT_TELEPHONY   0x01
46*53ee8cc1Swenshuai.xi #define HINT_FILE_SERVER 0x02
47*53ee8cc1Swenshuai.xi #define HINT_COMM        0x04
48*53ee8cc1Swenshuai.xi #define HINT_MESSAGE     0x08
49*53ee8cc1Swenshuai.xi #define HINT_HTTP        0x10
50*53ee8cc1Swenshuai.xi #define HINT_OBEX        0x20
51*53ee8cc1Swenshuai.xi 
52*53ee8cc1Swenshuai.xi /* IrLMP character code values */
53*53ee8cc1Swenshuai.xi #define CS_ASCII         0x00
54*53ee8cc1Swenshuai.xi #define	CS_ISO_8859_1    0x01
55*53ee8cc1Swenshuai.xi #define	CS_ISO_8859_2    0x02
56*53ee8cc1Swenshuai.xi #define	CS_ISO_8859_3    0x03
57*53ee8cc1Swenshuai.xi #define	CS_ISO_8859_4    0x04
58*53ee8cc1Swenshuai.xi #define	CS_ISO_8859_5    0x05
59*53ee8cc1Swenshuai.xi #define	CS_ISO_8859_6    0x06
60*53ee8cc1Swenshuai.xi #define	CS_ISO_8859_7    0x07
61*53ee8cc1Swenshuai.xi #define	CS_ISO_8859_8    0x08
62*53ee8cc1Swenshuai.xi #define	CS_ISO_8859_9    0x09
63*53ee8cc1Swenshuai.xi #define CS_UNICODE       0xff
64*53ee8cc1Swenshuai.xi 
65*53ee8cc1Swenshuai.xi /* These are the currently known dongles */
66*53ee8cc1Swenshuai.xi typedef enum {
67*53ee8cc1Swenshuai.xi 	IRDA_TEKRAM_DONGLE       = 0,
68*53ee8cc1Swenshuai.xi 	IRDA_ESI_DONGLE          = 1,
69*53ee8cc1Swenshuai.xi 	IRDA_ACTISYS_DONGLE      = 2,
70*53ee8cc1Swenshuai.xi 	IRDA_ACTISYS_PLUS_DONGLE = 3,
71*53ee8cc1Swenshuai.xi 	IRDA_GIRBIL_DONGLE       = 4,
72*53ee8cc1Swenshuai.xi 	IRDA_LITELINK_DONGLE     = 5,
73*53ee8cc1Swenshuai.xi 	IRDA_AIRPORT_DONGLE      = 6,
74*53ee8cc1Swenshuai.xi 	IRDA_OLD_BELKIN_DONGLE   = 7,
75*53ee8cc1Swenshuai.xi 	IRDA_EP7211_IR           = 8,
76*53ee8cc1Swenshuai.xi 	IRDA_MCP2120_DONGLE      = 9,
77*53ee8cc1Swenshuai.xi 	IRDA_ACT200L_DONGLE      = 10,
78*53ee8cc1Swenshuai.xi 	IRDA_MA600_DONGLE        = 11,
79*53ee8cc1Swenshuai.xi 	IRDA_TOIM3232_DONGLE     = 12,
80*53ee8cc1Swenshuai.xi 	IRDA_EP7211_DONGLE       = 13,
81*53ee8cc1Swenshuai.xi } IRDA_DONGLE;
82*53ee8cc1Swenshuai.xi 
83*53ee8cc1Swenshuai.xi /* Protocol types to be used for SOCK_DGRAM */
84*53ee8cc1Swenshuai.xi enum {
85*53ee8cc1Swenshuai.xi 	IRDAPROTO_UNITDATA = 0,
86*53ee8cc1Swenshuai.xi 	IRDAPROTO_ULTRA    = 1,
87*53ee8cc1Swenshuai.xi 	IRDAPROTO_MAX
88*53ee8cc1Swenshuai.xi };
89*53ee8cc1Swenshuai.xi 
90*53ee8cc1Swenshuai.xi #define SOL_IRLMP      266 /* Same as SOL_IRDA for now */
91*53ee8cc1Swenshuai.xi #define SOL_IRTTP      266 /* Same as SOL_IRDA for now */
92*53ee8cc1Swenshuai.xi 
93*53ee8cc1Swenshuai.xi #define IRLMP_ENUMDEVICES        1	/* Return discovery log */
94*53ee8cc1Swenshuai.xi #define IRLMP_IAS_SET            2	/* Set an attribute in local IAS */
95*53ee8cc1Swenshuai.xi #define IRLMP_IAS_QUERY          3	/* Query remote IAS for attribute */
96*53ee8cc1Swenshuai.xi #define IRLMP_HINTS_SET          4	/* Set hint bits advertised */
97*53ee8cc1Swenshuai.xi #define IRLMP_QOS_SET            5
98*53ee8cc1Swenshuai.xi #define IRLMP_QOS_GET            6
99*53ee8cc1Swenshuai.xi #define IRLMP_MAX_SDU_SIZE       7
100*53ee8cc1Swenshuai.xi #define IRLMP_IAS_GET            8	/* Get an attribute from local IAS */
101*53ee8cc1Swenshuai.xi #define IRLMP_IAS_DEL		 9	/* Remove attribute from local IAS */
102*53ee8cc1Swenshuai.xi #define IRLMP_HINT_MASK_SET	10	/* Set discovery filter */
103*53ee8cc1Swenshuai.xi #define IRLMP_WAITDEVICE	11	/* Wait for a new discovery */
104*53ee8cc1Swenshuai.xi 
105*53ee8cc1Swenshuai.xi #define IRTTP_MAX_SDU_SIZE IRLMP_MAX_SDU_SIZE /* Compatibility */
106*53ee8cc1Swenshuai.xi 
107*53ee8cc1Swenshuai.xi #define IAS_MAX_STRING         256	/* See IrLMP 1.1, 4.3.3.2 */
108*53ee8cc1Swenshuai.xi #define IAS_MAX_OCTET_STRING  1024	/* See IrLMP 1.1, 4.3.3.2 */
109*53ee8cc1Swenshuai.xi #define IAS_MAX_CLASSNAME       60	/* See IrLMP 1.1, 4.3.1 */
110*53ee8cc1Swenshuai.xi #define IAS_MAX_ATTRIBNAME      60	/* See IrLMP 1.1, 4.3.3.1 */
111*53ee8cc1Swenshuai.xi #define IAS_MAX_ATTRIBNUMBER   256	/* See IrLMP 1.1, 4.3.3.1 */
112*53ee8cc1Swenshuai.xi /* For user space backward compatibility - may be fixed in kernel 2.5.X
113*53ee8cc1Swenshuai.xi  * Note : need 60+1 ('\0'), make it 64 for alignement - Jean II */
114*53ee8cc1Swenshuai.xi #define IAS_EXPORT_CLASSNAME       64
115*53ee8cc1Swenshuai.xi #define IAS_EXPORT_ATTRIBNAME     256
116*53ee8cc1Swenshuai.xi 
117*53ee8cc1Swenshuai.xi /* Attribute type needed for struct irda_ias_set */
118*53ee8cc1Swenshuai.xi #define IAS_MISSING 0
119*53ee8cc1Swenshuai.xi #define IAS_INTEGER 1
120*53ee8cc1Swenshuai.xi #define IAS_OCT_SEQ 2
121*53ee8cc1Swenshuai.xi #define IAS_STRING  3
122*53ee8cc1Swenshuai.xi 
123*53ee8cc1Swenshuai.xi #define LSAP_ANY              0xff
124*53ee8cc1Swenshuai.xi 
125*53ee8cc1Swenshuai.xi struct sockaddr_irda {
126*53ee8cc1Swenshuai.xi 	sa_family_t sir_family;   /* AF_IRDA */
127*53ee8cc1Swenshuai.xi 	__u8        sir_lsap_sel; /* LSAP selector */
128*53ee8cc1Swenshuai.xi 	__u32       sir_addr;     /* Device address */
129*53ee8cc1Swenshuai.xi 	char        sir_name[25]; /* Usually <service>:IrDA:TinyTP */
130*53ee8cc1Swenshuai.xi };
131*53ee8cc1Swenshuai.xi 
132*53ee8cc1Swenshuai.xi struct irda_device_info {
133*53ee8cc1Swenshuai.xi 	__u32       saddr;    /* Address of local interface */
134*53ee8cc1Swenshuai.xi 	__u32       daddr;    /* Address of remote device */
135*53ee8cc1Swenshuai.xi 	char        info[22]; /* Description */
136*53ee8cc1Swenshuai.xi 	__u8        charset;  /* Charset used for description */
137*53ee8cc1Swenshuai.xi 	__u8        hints[2]; /* Hint bits */
138*53ee8cc1Swenshuai.xi };
139*53ee8cc1Swenshuai.xi 
140*53ee8cc1Swenshuai.xi struct irda_device_list {
141*53ee8cc1Swenshuai.xi        __u32 len;
142*53ee8cc1Swenshuai.xi        struct irda_device_info dev[1];
143*53ee8cc1Swenshuai.xi };
144*53ee8cc1Swenshuai.xi 
145*53ee8cc1Swenshuai.xi struct irda_ias_set {
146*53ee8cc1Swenshuai.xi 	char irda_class_name[IAS_EXPORT_CLASSNAME];
147*53ee8cc1Swenshuai.xi 	char irda_attrib_name[IAS_EXPORT_ATTRIBNAME];
148*53ee8cc1Swenshuai.xi 	unsigned int irda_attrib_type;
149*53ee8cc1Swenshuai.xi 	union {
150*53ee8cc1Swenshuai.xi 		unsigned int irda_attrib_int;
151*53ee8cc1Swenshuai.xi 		struct {
152*53ee8cc1Swenshuai.xi 			unsigned short len;
153*53ee8cc1Swenshuai.xi 			__u8 octet_seq[IAS_MAX_OCTET_STRING];
154*53ee8cc1Swenshuai.xi 		} irda_attrib_octet_seq;
155*53ee8cc1Swenshuai.xi 		struct {
156*53ee8cc1Swenshuai.xi 			__u8 len;
157*53ee8cc1Swenshuai.xi 			__u8 charset;
158*53ee8cc1Swenshuai.xi 			__u8 string[IAS_MAX_STRING];
159*53ee8cc1Swenshuai.xi 		} irda_attrib_string;
160*53ee8cc1Swenshuai.xi 	} attribute;
161*53ee8cc1Swenshuai.xi 	__u32       daddr;    /* Address of device (for some queries only) */
162*53ee8cc1Swenshuai.xi };
163*53ee8cc1Swenshuai.xi 
164*53ee8cc1Swenshuai.xi /* Some private IOCTL's (max 16) */
165*53ee8cc1Swenshuai.xi #define SIOCSDONGLE    (SIOCDEVPRIVATE + 0)
166*53ee8cc1Swenshuai.xi #define SIOCGDONGLE    (SIOCDEVPRIVATE + 1)
167*53ee8cc1Swenshuai.xi #define SIOCSBANDWIDTH (SIOCDEVPRIVATE + 2)
168*53ee8cc1Swenshuai.xi #define SIOCSMEDIABUSY (SIOCDEVPRIVATE + 3)
169*53ee8cc1Swenshuai.xi #define SIOCGMEDIABUSY (SIOCDEVPRIVATE + 4)
170*53ee8cc1Swenshuai.xi #define SIOCGRECEIVING (SIOCDEVPRIVATE + 5)
171*53ee8cc1Swenshuai.xi #define SIOCSMODE      (SIOCDEVPRIVATE + 6)
172*53ee8cc1Swenshuai.xi #define SIOCGMODE      (SIOCDEVPRIVATE + 7)
173*53ee8cc1Swenshuai.xi #define SIOCSDTRRTS    (SIOCDEVPRIVATE + 8)
174*53ee8cc1Swenshuai.xi #define SIOCGQOS       (SIOCDEVPRIVATE + 9)
175*53ee8cc1Swenshuai.xi 
176*53ee8cc1Swenshuai.xi /* No reason to include <linux/if.h> just because of this one ;-) */
177*53ee8cc1Swenshuai.xi #define IRNAMSIZ 16
178*53ee8cc1Swenshuai.xi 
179*53ee8cc1Swenshuai.xi /* IrDA quality of service information (must not exceed 16 bytes) */
180*53ee8cc1Swenshuai.xi struct if_irda_qos {
181*53ee8cc1Swenshuai.xi 	unsigned long  baudrate;
182*53ee8cc1Swenshuai.xi 	unsigned short data_size;
183*53ee8cc1Swenshuai.xi 	unsigned short window_size;
184*53ee8cc1Swenshuai.xi 	unsigned short min_turn_time;
185*53ee8cc1Swenshuai.xi 	unsigned short max_turn_time;
186*53ee8cc1Swenshuai.xi 	unsigned char  add_bofs;
187*53ee8cc1Swenshuai.xi 	unsigned char  link_disc;
188*53ee8cc1Swenshuai.xi };
189*53ee8cc1Swenshuai.xi 
190*53ee8cc1Swenshuai.xi /* For setting RTS and DTR lines of a dongle */
191*53ee8cc1Swenshuai.xi struct if_irda_line {
192*53ee8cc1Swenshuai.xi 	__u8 dtr;
193*53ee8cc1Swenshuai.xi 	__u8 rts;
194*53ee8cc1Swenshuai.xi };
195*53ee8cc1Swenshuai.xi 
196*53ee8cc1Swenshuai.xi /* IrDA interface configuration (data part must not exceed 16 bytes) */
197*53ee8cc1Swenshuai.xi struct if_irda_req {
198*53ee8cc1Swenshuai.xi 	union {
199*53ee8cc1Swenshuai.xi 		char ifrn_name[IRNAMSIZ];  /* if name, e.g. "irda0" */
200*53ee8cc1Swenshuai.xi 	} ifr_ifrn;
201*53ee8cc1Swenshuai.xi 
202*53ee8cc1Swenshuai.xi 	/* Data part */
203*53ee8cc1Swenshuai.xi 	union {
204*53ee8cc1Swenshuai.xi 		struct if_irda_line ifru_line;
205*53ee8cc1Swenshuai.xi 		struct if_irda_qos  ifru_qos;
206*53ee8cc1Swenshuai.xi 		unsigned short      ifru_flags;
207*53ee8cc1Swenshuai.xi 		unsigned int        ifru_receiving;
208*53ee8cc1Swenshuai.xi 		unsigned int        ifru_mode;
209*53ee8cc1Swenshuai.xi 		unsigned int        ifru_dongle;
210*53ee8cc1Swenshuai.xi 	} ifr_ifru;
211*53ee8cc1Swenshuai.xi };
212*53ee8cc1Swenshuai.xi 
213*53ee8cc1Swenshuai.xi #define ifr_baudrate  ifr_ifru.ifru_qos.baudrate
214*53ee8cc1Swenshuai.xi #define ifr_receiving ifr_ifru.ifru_receiving
215*53ee8cc1Swenshuai.xi #define ifr_dongle    ifr_ifru.ifru_dongle
216*53ee8cc1Swenshuai.xi #define ifr_mode      ifr_ifru.ifru_mode
217*53ee8cc1Swenshuai.xi #define ifr_dtr       ifr_ifru.ifru_line.dtr
218*53ee8cc1Swenshuai.xi #define ifr_rts       ifr_ifru.ifru_line.rts
219*53ee8cc1Swenshuai.xi 
220*53ee8cc1Swenshuai.xi 
221*53ee8cc1Swenshuai.xi /* IrDA netlink definitions */
222*53ee8cc1Swenshuai.xi #define IRDA_NL_NAME "irda"
223*53ee8cc1Swenshuai.xi #define IRDA_NL_VERSION 1
224*53ee8cc1Swenshuai.xi 
225*53ee8cc1Swenshuai.xi enum irda_nl_commands {
226*53ee8cc1Swenshuai.xi 	IRDA_NL_CMD_UNSPEC,
227*53ee8cc1Swenshuai.xi 	IRDA_NL_CMD_SET_MODE,
228*53ee8cc1Swenshuai.xi 	IRDA_NL_CMD_GET_MODE,
229*53ee8cc1Swenshuai.xi 
230*53ee8cc1Swenshuai.xi 	__IRDA_NL_CMD_AFTER_LAST
231*53ee8cc1Swenshuai.xi };
232*53ee8cc1Swenshuai.xi #define IRDA_NL_CMD_MAX (__IRDA_NL_CMD_AFTER_LAST - 1)
233*53ee8cc1Swenshuai.xi 
234*53ee8cc1Swenshuai.xi enum nl80211_attrs {
235*53ee8cc1Swenshuai.xi 	IRDA_NL_ATTR_UNSPEC,
236*53ee8cc1Swenshuai.xi 	IRDA_NL_ATTR_IFNAME,
237*53ee8cc1Swenshuai.xi 	IRDA_NL_ATTR_MODE,
238*53ee8cc1Swenshuai.xi 
239*53ee8cc1Swenshuai.xi 	__IRDA_NL_ATTR_AFTER_LAST
240*53ee8cc1Swenshuai.xi };
241*53ee8cc1Swenshuai.xi #define IRDA_NL_ATTR_MAX (__IRDA_NL_ATTR_AFTER_LAST - 1)
242*53ee8cc1Swenshuai.xi 
243*53ee8cc1Swenshuai.xi /* IrDA modes */
244*53ee8cc1Swenshuai.xi #define IRDA_MODE_PRIMARY   0x1
245*53ee8cc1Swenshuai.xi #define IRDA_MODE_SECONDARY 0x2
246*53ee8cc1Swenshuai.xi #define IRDA_MODE_MONITOR   0x4
247*53ee8cc1Swenshuai.xi 
248*53ee8cc1Swenshuai.xi #endif /* KERNEL_IRDA_H */
249*53ee8cc1Swenshuai.xi 
250*53ee8cc1Swenshuai.xi 
251*53ee8cc1Swenshuai.xi 
252*53ee8cc1Swenshuai.xi 
253