xref: /OK3568_Linux_fs/kernel/drivers/tty/ipwireless/setup_protocol.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */
2*4882a593Smuzhiyun /*
3*4882a593Smuzhiyun  * IPWireless 3G PCMCIA Network Driver
4*4882a593Smuzhiyun  *
5*4882a593Smuzhiyun  * Original code
6*4882a593Smuzhiyun  *   by Stephen Blackheath <stephen@blacksapphire.com>,
7*4882a593Smuzhiyun  *      Ben Martel <benm@symmetric.co.nz>
8*4882a593Smuzhiyun  *
9*4882a593Smuzhiyun  * Copyrighted as follows:
10*4882a593Smuzhiyun  *   Copyright (C) 2004 by Symmetric Systems Ltd (NZ)
11*4882a593Smuzhiyun  *
12*4882a593Smuzhiyun  * Various driver changes and rewrites, port to new kernels
13*4882a593Smuzhiyun  *   Copyright (C) 2006-2007 Jiri Kosina
14*4882a593Smuzhiyun  *
15*4882a593Smuzhiyun  * Misc code cleanups and updates
16*4882a593Smuzhiyun  *   Copyright (C) 2007 David Sterba
17*4882a593Smuzhiyun  */
18*4882a593Smuzhiyun 
19*4882a593Smuzhiyun #ifndef _IPWIRELESS_CS_SETUP_PROTOCOL_H_
20*4882a593Smuzhiyun #define _IPWIRELESS_CS_SETUP_PROTOCOL_H_
21*4882a593Smuzhiyun 
22*4882a593Smuzhiyun /* Version of the setup protocol and transport protocols */
23*4882a593Smuzhiyun #define TL_SETUP_VERSION		1
24*4882a593Smuzhiyun 
25*4882a593Smuzhiyun #define TL_SETUP_VERSION_QRY_TMO	1000
26*4882a593Smuzhiyun #define TL_SETUP_MAX_VERSION_QRY	30
27*4882a593Smuzhiyun 
28*4882a593Smuzhiyun /* Message numbers 0-9 are obsoleted and must not be reused! */
29*4882a593Smuzhiyun #define TL_SETUP_SIGNO_GET_VERSION_QRY	10
30*4882a593Smuzhiyun #define TL_SETUP_SIGNO_GET_VERSION_RSP	11
31*4882a593Smuzhiyun #define TL_SETUP_SIGNO_CONFIG_MSG	12
32*4882a593Smuzhiyun #define TL_SETUP_SIGNO_CONFIG_DONE_MSG	13
33*4882a593Smuzhiyun #define TL_SETUP_SIGNO_OPEN_MSG		14
34*4882a593Smuzhiyun #define TL_SETUP_SIGNO_CLOSE_MSG	15
35*4882a593Smuzhiyun 
36*4882a593Smuzhiyun #define TL_SETUP_SIGNO_INFO_MSG     20
37*4882a593Smuzhiyun #define TL_SETUP_SIGNO_INFO_MSG_ACK 21
38*4882a593Smuzhiyun 
39*4882a593Smuzhiyun #define TL_SETUP_SIGNO_REBOOT_MSG      22
40*4882a593Smuzhiyun #define TL_SETUP_SIGNO_REBOOT_MSG_ACK  23
41*4882a593Smuzhiyun 
42*4882a593Smuzhiyun /* Synchronous start-messages */
43*4882a593Smuzhiyun struct tl_setup_get_version_qry {
44*4882a593Smuzhiyun 	unsigned char sig_no;		/* TL_SETUP_SIGNO_GET_VERSION_QRY */
45*4882a593Smuzhiyun } __attribute__ ((__packed__));
46*4882a593Smuzhiyun 
47*4882a593Smuzhiyun struct tl_setup_get_version_rsp {
48*4882a593Smuzhiyun 	unsigned char sig_no;		/* TL_SETUP_SIGNO_GET_VERSION_RSP */
49*4882a593Smuzhiyun 	unsigned char version;		/* TL_SETUP_VERSION */
50*4882a593Smuzhiyun } __attribute__ ((__packed__));
51*4882a593Smuzhiyun 
52*4882a593Smuzhiyun struct tl_setup_config_msg {
53*4882a593Smuzhiyun 	unsigned char sig_no;		/* TL_SETUP_SIGNO_CONFIG_MSG */
54*4882a593Smuzhiyun 	unsigned char port_no;
55*4882a593Smuzhiyun 	unsigned char prio_data;
56*4882a593Smuzhiyun 	unsigned char prio_ctrl;
57*4882a593Smuzhiyun } __attribute__ ((__packed__));
58*4882a593Smuzhiyun 
59*4882a593Smuzhiyun struct tl_setup_config_done_msg {
60*4882a593Smuzhiyun 	unsigned char sig_no;		/* TL_SETUP_SIGNO_CONFIG_DONE_MSG */
61*4882a593Smuzhiyun } __attribute__ ((__packed__));
62*4882a593Smuzhiyun 
63*4882a593Smuzhiyun /* Asynchronous messages */
64*4882a593Smuzhiyun struct tl_setup_open_msg {
65*4882a593Smuzhiyun 	unsigned char sig_no;		/* TL_SETUP_SIGNO_OPEN_MSG */
66*4882a593Smuzhiyun 	unsigned char port_no;
67*4882a593Smuzhiyun } __attribute__ ((__packed__));
68*4882a593Smuzhiyun 
69*4882a593Smuzhiyun struct tl_setup_close_msg {
70*4882a593Smuzhiyun 	unsigned char sig_no;		/* TL_SETUP_SIGNO_CLOSE_MSG */
71*4882a593Smuzhiyun 	unsigned char port_no;
72*4882a593Smuzhiyun } __attribute__ ((__packed__));
73*4882a593Smuzhiyun 
74*4882a593Smuzhiyun /* Driver type  - for use in tl_setup_info_msg.driver_type */
75*4882a593Smuzhiyun #define COMM_DRIVER     0
76*4882a593Smuzhiyun #define NDISWAN_DRIVER  1
77*4882a593Smuzhiyun #define NDISWAN_DRIVER_MAJOR_VERSION  2
78*4882a593Smuzhiyun #define NDISWAN_DRIVER_MINOR_VERSION  0
79*4882a593Smuzhiyun 
80*4882a593Smuzhiyun /*
81*4882a593Smuzhiyun  * It should not matter when this message comes over as we just store the
82*4882a593Smuzhiyun  * results and send the ACK.
83*4882a593Smuzhiyun  */
84*4882a593Smuzhiyun struct tl_setup_info_msg {
85*4882a593Smuzhiyun 	unsigned char sig_no;		/* TL_SETUP_SIGNO_INFO_MSG */
86*4882a593Smuzhiyun 	unsigned char driver_type;
87*4882a593Smuzhiyun 	unsigned char major_version;
88*4882a593Smuzhiyun 	unsigned char minor_version;
89*4882a593Smuzhiyun } __attribute__ ((__packed__));
90*4882a593Smuzhiyun 
91*4882a593Smuzhiyun struct tl_setup_info_msgAck {
92*4882a593Smuzhiyun 	unsigned char sig_no;		/* TL_SETUP_SIGNO_INFO_MSG_ACK */
93*4882a593Smuzhiyun } __attribute__ ((__packed__));
94*4882a593Smuzhiyun 
95*4882a593Smuzhiyun struct TlSetupRebootMsgAck {
96*4882a593Smuzhiyun 	unsigned char sig_no;		/* TL_SETUP_SIGNO_REBOOT_MSG_ACK */
97*4882a593Smuzhiyun } __attribute__ ((__packed__));
98*4882a593Smuzhiyun 
99*4882a593Smuzhiyun /* Define a union of all the msgs that the driver can receive from the card.*/
100*4882a593Smuzhiyun union ipw_setup_rx_msg {
101*4882a593Smuzhiyun 	unsigned char sig_no;
102*4882a593Smuzhiyun 	struct tl_setup_get_version_rsp version_rsp_msg;
103*4882a593Smuzhiyun 	struct tl_setup_open_msg open_msg;
104*4882a593Smuzhiyun 	struct tl_setup_close_msg close_msg;
105*4882a593Smuzhiyun 	struct tl_setup_info_msg InfoMsg;
106*4882a593Smuzhiyun 	struct tl_setup_info_msgAck info_msg_ack;
107*4882a593Smuzhiyun } __attribute__ ((__packed__));
108*4882a593Smuzhiyun 
109*4882a593Smuzhiyun #endif				/* _IPWIRELESS_CS_SETUP_PROTOCOL_H_ */
110