summaryrefslogtreecommitdiff
path: root/drivers/staging/gdm72xx/hci.h
blob: 10a6bfa6e998969a5cb4aa5c9592a219e8d887d0 (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
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
/*
 * Copyright (c) 2012 GCT Semiconductor, Inc. All rights reserved.
 *
 * This software is licensed under the terms of the GNU General Public
 * License version 2, as published by the Free Software Foundation, and
 * may be copied, distributed, and modified under those terms.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 */

#ifndef __GDM72XX_HCI_H__
#define __GDM72XX_HCI_H__

#define HCI_HEADER_SIZE		4
#define HCI_VALUE_OFFS		(HCI_HEADER_SIZE)
#define HCI_MAX_PACKET		2048
#define HCI_MAX_PARAM		(HCI_MAX_PACKET-HCI_HEADER_SIZE)
#define HCI_MAX_TLV		32

/* CMD-EVT */

/* Category 0 */
#define WIMAX_RESET		0x0000
#define WIMAX_SET_INFO		0x0001
#define WIMAX_GET_INFO		0x0002
#define WIMAX_GET_INFO_RESULT	0x8003
#define WIMAX_RADIO_OFF		0x0004
#define WIMAX_RADIO_ON		0x0006
#define WIMAX_WIMAX_RESET	0x0007	/* Is this still here */

/* Category 1 */
#define WIMAX_NET_ENTRY			0x0100
#define WIMAX_NET_DISCONN		0x0102
#define WIMAX_ENTER_SLEEP		0x0103
#define WIMAX_EXIT_SLEEP		0x0104
#define WIMAX_ENTER_IDLE		0x0105
#define WIMAX_EXIT_IDLE			0x0106
#define WIMAX_MODE_CHANGE		0x8108
#define WIMAX_HANDOVER			0x8109	/* obsolete */
#define WIMAX_SCAN			0x010d
#define WIMAX_SCAN_COMPLETE		0x810e
#define WIMAX_SCAN_RESULT		0x810f
#define WIMAX_CONNECT			0x0110
#define WIMAX_CONNECT_START		0x8111
#define WIMAX_CONNECT_COMPLETE		0x8112
#define WIMAX_ASSOC_START		0x8113
#define WIMAX_ASSOC_COMPLETE		0x8114
#define WIMAX_DISCONN_IND		0x8115
#define WIMAX_ENTRY_IND			0x8116
#define WIMAX_HO_START			0x8117
#define WIMAX_HO_COMPLETE		0x8118
#define WIMAX_RADIO_STATE_IND		0x8119
#define WIMAX_IP_RENEW_IND		0x811a
#define WIMAX_DISCOVER_NSP		0x011d
#define WIMAX_DISCOVER_NSP_RESULT	0x811e
#define WIMAX_SDU_TX_FLOW		0x8125

/* Category 2 */
#define WIMAX_TX_EAP		0x0200
#define WIMAX_RX_EAP		0x8201
#define WIMAX_TX_SDU		0x0202
#define WIMAX_RX_SDU		0x8203
#define WIMAX_RX_SDU_AGGR	0x8204
#define WIMAX_TX_SDU_AGGR	0x0205

/* Category 3 */
#define WIMAX_DM_CMD		0x030a
#define WIMAX_DM_RSP		0x830b

#define WIMAX_CLI_CMD		0x030c
#define WIMAX_CLI_RSP		0x830d

#define WIMAX_DL_IMAGE		0x0310
#define WIMAX_DL_IMAGE_STATUS	0x8311
#define WIMAX_UL_IMAGE		0x0312
#define WIMAX_UL_IMAGE_RESULT	0x8313
#define WIMAX_UL_IMAGE_STATUS	0x0314
#define WIMAX_EVT_MODEM_REPORT	0x8325

/* Category 0xF */
#define WIMAX_FSM_UPDATE	0x8F01
#define WIMAX_IF_UPDOWN		0x8F02
#define WIMAX_IF_UP		1
#define WIMAX_IF_DOWN		2

/* WIMAX mode */
#define W_NULL		0
#define W_STANDBY	1
#define W_OOZ		2
#define W_AWAKE		3
#define W_IDLE		4
#define W_SLEEP		5
#define W_WAIT		6

#define W_NET_ENTRY_RNG		0x80
#define W_NET_ENTRY_SBC		0x81
#define W_NET_ENTRY_PKM		0x82
#define W_NET_ENTRY_REG		0x83
#define W_NET_ENTRY_DSX		0x84

#define W_NET_ENTRY_RNG_FAIL	0x1100100
#define W_NET_ENTRY_SBC_FAIL	0x1100200
#define W_NET_ENTRY_PKM_FAIL	0x1102000
#define W_NET_ENTRY_REG_FAIL	0x1103000
#define W_NET_ENTRY_DSX_FAIL	0x1104000

/* Scan Type */
#define W_SCAN_ALL_CHANNEL		0
#define W_SCAN_ALL_SUBSCRIPTION		1
#define W_SCAN_SPECIFIED_SUBSCRIPTION	2

/* TLV
 *
 * [31:31] indicates the type is composite.
 * [30:16] is the length of the type. 0 length means length is variable.
 * [15:0] is the actual type.
 */
#define TLV_L(x)		(((x) >> 16) & 0xff)
#define TLV_T(x)		((x) & 0xff)
#define TLV_COMPOSITE(x)	((x) >> 31)

/* GENERAL */
#define T_MAC_ADDRESS			(0x00	| (6 << 16))
#define T_BSID				(0x01	| (6 << 16))
#define T_MSK				(0x02	| (64 << 16))
#define T_RSSI_THRSHLD			(0x03	| (1 << 16))
#define T_FREQUENCY			(0x04	| (4 << 16))
#define T_CONN_CS_TYPE			(0x05	| (1 << 16))
#define T_HOST_IP_VER			(0x06	| (1 << 16))
#define T_STBY_SCAN_INTERVAL		(0x07	| (4  << 16))
#define T_OOZ_SCAN_INTERVAL		(0x08	| (4 << 16))
#define T_IMEI				(0x09	| (8 << 16))
#define T_PID				(0x0a	| (12 << 16))
#define T_CAPABILITY			(0x1a	| (4 << 16))
#define T_RELEASE_NUMBER		(0x1b	| (4 << 16))
#define T_DRIVER_REVISION		(0x1c	| (4 << 16))
#define T_FW_REVISION			(0x1d	| (4 << 16))
#define T_MAC_HW_REVISION		(0x1e	| (4 << 16))
#define T_PHY_HW_REVISION		(0x1f	| (4 << 16))

/* HANDOVER */
#define T_SCAN_INTERVAL			(0x20	| (1 << 16))
#define T_RSC_RETAIN_TIME		(0x2f	| (2 << 16))

/* SLEEP */
#define T_TYPE1_ISW			(0x40	| (1 << 16))
#define T_SLP_START_TO			(0x4a	| (2 << 16))

/* IDLE */
#define T_IDLE_MODE_TO			(0x50	| (2 << 16))
#define T_IDLE_START_TO			(0x54	| (2 << 16))

/* MONITOR */
#define T_RSSI				(0x60	| (1 << 16))
#define T_CINR				(0x61	| (1 << 16))
#define T_TX_POWER			(0x6a   | (1 << 16))
#define T_CUR_FREQ			(0x7f	| (4 << 16))


/* WIMAX */
#define T_MAX_SUBSCRIPTION		(0xa1	| (1 << 16))
#define T_MAX_SF			(0xa2	| (1 << 16))
#define T_PHY_TYPE			(0xa3	| (1 << 16))
#define T_PKM				(0xa4	| (1 << 16))
#define T_AUTH_POLICY			(0xa5	| (1 << 16))
#define T_CS_TYPE			(0xa6	| (2 << 16))
#define T_VENDOR_NAME			(0xa7	| (0 << 16))
#define T_MOD_NAME			(0xa8	| (0 << 16))
#define T_PACKET_FILTER			(0xa9	| (1 << 16))
#define T_NSP_CHANGE_COUNT		(0xaa	| (4 << 16))
#define T_RADIO_STATE			(0xab	| (1 << 16))
#define T_URI_CONTACT_TYPE		(0xac	| (1 << 16))
#define T_URI_TEXT			(0xad	| (0 << 16))
#define T_URI				(0xae	| (0 << 16))
#define T_ENABLE_AUTH			(0xaf	| (1 << 16))
#define T_TIMEOUT			(0xb0   | (2 << 16))
#define T_RUN_MODE			(0xb1	| (1 << 16))
#define T_OMADMT_VER			(0xb2	| (4 << 16))
/* This is measured in seconds from 00:00:00 GMT January 1, 1970. */
#define T_RTC_TIME			(0xb3	| (4 << 16))
#define T_CERT_STATUS			(0xb4	| (4 << 16))
#define T_CERT_MASK			(0xb5	| (4 << 16))
#define T_EMSK				(0xb6	| (64 << 16))

/* Subscription TLV */
#define T_SUBSCRIPTION_LIST		(0xd1	| (0 << 16) | (1 << 31))
#define T_H_NSPID			(0xd2	| (3 << 16))
#define T_NSP_NAME			(0xd3	| (0 << 16))
#define T_SUBSCRIPTION_NAME		(0xd4	| (0 << 16))
#define T_SUBSCRIPTION_FLAG		(0xd5	| (2 << 16))
#define T_V_NSPID			(0xd6	| (3 << 16))
#define T_NAP_ID			(0xd7	| (3 << 16))
#define T_PREAMBLES			(0xd8	| (15 << 16))
#define T_BW				(0xd9	| (4 << 16))
#define T_FFTSIZE			(0xda	| (4 << 16))
#define T_DUPLEX_MODE			(0xdb	| (4 << 16))

/* T_CAPABILITY */
#define T_CAPABILITY_MULTI_CS		(1 << 0)
#define T_CAPABILITY_WIMAX		(1 << 1)
#define T_CAPABILITY_QOS		(1 << 2)
#define T_CAPABILITY_AGGREGATION	(1 << 3)

struct hci_s {
	__be16	cmd_evt;
	__be16	length;
	u8	data[0];
} __packed;

#endif /* __GDM72XX_HCI_H__ */