]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blame - drivers/staging/ath6kl/include/common/a_hci.h
Fix common misspellings
[mirror_ubuntu-bionic-kernel.git] / drivers / staging / ath6kl / include / common / a_hci.h
CommitLineData
30295c89
VM
1//-
2// Copyright (c) 2009-2010 Atheros Communications Inc.
3// All rights reserved.
4//
5//
6// Permission to use, copy, modify, and/or distribute this software for any
7// purpose with or without fee is hereby granted, provided that the above
8// copyright notice and this permission notice appear in all copies.
9//
10// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17//
18//
19//
20//
21
22
23#ifndef __A_HCI_H__
24#define __A_HCI_H__
25
26#define HCI_CMD_OGF_MASK 0x3F
27#define HCI_CMD_OGF_SHIFT 10
28#define HCI_CMD_GET_OGF(opcode) ((opcode >> HCI_CMD_OGF_SHIFT) & HCI_CMD_OGF_MASK)
29
30#define HCI_CMD_OCF_MASK 0x3FF
31#define HCI_CMD_OCF_SHIFT 0
32#define HCI_CMD_GET_OCF(opcode) (((opcode) >> HCI_CMD_OCF_SHIFT) & HCI_CMD_OCF_MASK)
33
34#define HCI_FORM_OPCODE(ocf, ogf) ((ocf & HCI_CMD_OCF_MASK) << HCI_CMD_OCF_SHIFT | \
35 (ogf & HCI_CMD_OGF_MASK) << HCI_CMD_OGF_SHIFT)
36
37
38/*======== HCI Opcode groups ===============*/
39#define OGF_NOP 0x00
40#define OGF_LINK_CONTROL 0x01
41#define OGF_LINK_POLICY 0x03
42#define OGF_INFO_PARAMS 0x04
43#define OGF_STATUS 0x05
44#define OGF_TESTING 0x06
45#define OGF_BLUETOOTH 0x3E
46#define OGF_VENDOR_DEBUG 0x3F
47
48
49
50#define OCF_NOP 0x00
51
52
53/*===== Link Control Commands Opcode===================*/
54#define OCF_HCI_Create_Physical_Link 0x35
55#define OCF_HCI_Accept_Physical_Link_Req 0x36
56#define OCF_HCI_Disconnect_Physical_Link 0x37
57#define OCF_HCI_Create_Logical_Link 0x38
58#define OCF_HCI_Accept_Logical_Link 0x39
59#define OCF_HCI_Disconnect_Logical_Link 0x3A
60#define OCF_HCI_Logical_Link_Cancel 0x3B
61#define OCF_HCI_Flow_Spec_Modify 0x3C
62
63
64
65/*===== Link Policy Commands Opcode====================*/
66#define OCF_HCI_Set_Event_Mask 0x01
67#define OCF_HCI_Reset 0x03
68#define OCF_HCI_Read_Conn_Accept_Timeout 0x15
69#define OCF_HCI_Write_Conn_Accept_Timeout 0x16
70#define OCF_HCI_Read_Link_Supervision_Timeout 0x36
71#define OCF_HCI_Write_Link_Supervision_Timeout 0x37
72#define OCF_HCI_Enhanced_Flush 0x5F
73#define OCF_HCI_Read_Logical_Link_Accept_Timeout 0x61
74#define OCF_HCI_Write_Logical_Link_Accept_Timeout 0x62
75#define OCF_HCI_Set_Event_Mask_Page_2 0x63
76#define OCF_HCI_Read_Location_Data 0x64
77#define OCF_HCI_Write_Location_Data 0x65
78#define OCF_HCI_Read_Flow_Control_Mode 0x66
79#define OCF_HCI_Write_Flow_Control_Mode 0x67
80#define OCF_HCI_Read_BE_Flush_Timeout 0x69
81#define OCF_HCI_Write_BE_Flush_Timeout 0x6A
82#define OCF_HCI_Short_Range_Mode 0x6B
83
84
85/*======== Info Commands Opcode========================*/
86#define OCF_HCI_Read_Local_Ver_Info 0x01
87#define OCF_HCI_Read_Local_Supported_Cmds 0x02
88#define OCF_HCI_Read_Data_Block_Size 0x0A
89/*======== Status Commands Opcode======================*/
90#define OCF_HCI_Read_Failed_Contact_Counter 0x01
91#define OCF_HCI_Reset_Failed_Contact_Counter 0x02
92#define OCF_HCI_Read_Link_Quality 0x03
93#define OCF_HCI_Read_RSSI 0x05
94#define OCF_HCI_Read_Local_AMP_Info 0x09
95#define OCF_HCI_Read_Local_AMP_ASSOC 0x0A
96#define OCF_HCI_Write_Remote_AMP_ASSOC 0x0B
97
98
99/*======= AMP_ASSOC Specific TLV tags =================*/
100#define AMP_ASSOC_MAC_ADDRESS_INFO_TYPE 0x1
101#define AMP_ASSOC_PREF_CHAN_LIST 0x2
102#define AMP_ASSOC_CONNECTED_CHAN 0x3
103#define AMP_ASSOC_PAL_CAPABILITIES 0x4
104#define AMP_ASSOC_PAL_VERSION 0x5
105
106
107/*========= PAL Events =================================*/
108#define PAL_COMMAND_COMPLETE_EVENT 0x0E
109#define PAL_COMMAND_STATUS_EVENT 0x0F
110#define PAL_HARDWARE_ERROR_EVENT 0x10
111#define PAL_FLUSH_OCCURRED_EVENT 0x11
112#define PAL_LOOPBACK_EVENT 0x19
113#define PAL_BUFFER_OVERFLOW_EVENT 0x1A
114#define PAL_QOS_VIOLATION_EVENT 0x1E
115#define PAL_ENHANCED_FLUSH_COMPLT_EVENT 0x39
116#define PAL_PHYSICAL_LINK_COMPL_EVENT 0x40
117#define PAL_CHANNEL_SELECT_EVENT 0x41
118#define PAL_DISCONNECT_PHYSICAL_LINK_EVENT 0x42
119#define PAL_PHY_LINK_EARLY_LOSS_WARNING_EVENT 0x43
120#define PAL_PHY_LINK_RECOVERY_EVENT 0x44
121#define PAL_LOGICAL_LINK_COMPL_EVENT 0x45
122#define PAL_DISCONNECT_LOGICAL_LINK_COMPL_EVENT 0x46
123#define PAL_FLOW_SPEC_MODIFY_COMPL_EVENT 0x47
124#define PAL_NUM_COMPL_DATA_BLOCK_EVENT 0x48
125#define PAL_SHORT_RANGE_MODE_CHANGE_COMPL_EVENT 0x4C
126#define PAL_AMP_STATUS_CHANGE_EVENT 0x4D
25985edc 127/*======== End of PAL events definition =================*/
30295c89
VM
128
129
130/*======== Timeouts (not part of HCI cmd, but input to PAL engine) =========*/
131#define Timer_Conn_Accept_TO 0x01
132#define Timer_Link_Supervision_TO 0x02
133
134#define NUM_HCI_COMMAND_PKTS 0x1
135
136
137/*====== NOP Cmd ============================*/
138#define HCI_CMD_NOP HCI_FORM_OPCODE(OCF_NOP, OGF_NOP)
139
140
141/*===== Link Control Commands================*/
142#define HCI_Create_Physical_Link HCI_FORM_OPCODE(OCF_HCI_Create_Physical_Link, OGF_LINK_CONTROL)
143#define HCI_Accept_Physical_Link_Req HCI_FORM_OPCODE(OCF_HCI_Accept_Physical_Link_Req, OGF_LINK_CONTROL)
144#define HCI_Disconnect_Physical_Link HCI_FORM_OPCODE(OCF_HCI_Disconnect_Physical_Link, OGF_LINK_CONTROL)
145#define HCI_Create_Logical_Link HCI_FORM_OPCODE(OCF_HCI_Create_Logical_Link, OGF_LINK_CONTROL)
146#define HCI_Accept_Logical_Link HCI_FORM_OPCODE(OCF_HCI_Accept_Logical_Link, OGF_LINK_CONTROL)
147#define HCI_Disconnect_Logical_Link HCI_FORM_OPCODE(OCF_HCI_Disconnect_Logical_Link, OGF_LINK_CONTROL)
148#define HCI_Logical_Link_Cancel HCI_FORM_OPCODE(OCF_HCI_Logical_Link_Cancel, OGF_LINK_CONTROL)
149#define HCI_Flow_Spec_Modify HCI_FORM_OPCODE(OCF_HCI_Flow_Spec_Modify, OGF_LINK_CONTROL)
150
151
152/*===== Link Policy Commands ================*/
153#define HCI_Set_Event_Mask HCI_FORM_OPCODE(OCF_HCI_Set_Event_Mask, OGF_LINK_POLICY)
154#define HCI_Reset HCI_FORM_OPCODE(OCF_HCI_Reset, OGF_LINK_POLICY)
155#define HCI_Enhanced_Flush HCI_FORM_OPCODE(OCF_HCI_Enhanced_Flush, OGF_LINK_POLICY)
156#define HCI_Read_Conn_Accept_Timeout HCI_FORM_OPCODE(OCF_HCI_Read_Conn_Accept_Timeout, OGF_LINK_POLICY)
157#define HCI_Write_Conn_Accept_Timeout HCI_FORM_OPCODE(OCF_HCI_Write_Conn_Accept_Timeout, OGF_LINK_POLICY)
158#define HCI_Read_Logical_Link_Accept_Timeout HCI_FORM_OPCODE(OCF_HCI_Read_Logical_Link_Accept_Timeout, OGF_LINK_POLICY)
159#define HCI_Write_Logical_Link_Accept_Timeout HCI_FORM_OPCODE(OCF_HCI_Write_Logical_Link_Accept_Timeout, OGF_LINK_POLICY)
160#define HCI_Read_Link_Supervision_Timeout HCI_FORM_OPCODE(OCF_HCI_Read_Link_Supervision_Timeout, OGF_LINK_POLICY)
161#define HCI_Write_Link_Supervision_Timeout HCI_FORM_OPCODE(OCF_HCI_Write_Link_Supervision_Timeout, OGF_LINK_POLICY)
162#define HCI_Read_Location_Data HCI_FORM_OPCODE(OCF_HCI_Read_Location_Data, OGF_LINK_POLICY)
163#define HCI_Write_Location_Data HCI_FORM_OPCODE(OCF_HCI_Write_Location_Data, OGF_LINK_POLICY)
164#define HCI_Set_Event_Mask_Page_2 HCI_FORM_OPCODE(OCF_HCI_Set_Event_Mask_Page_2, OGF_LINK_POLICY)
165#define HCI_Read_Flow_Control_Mode HCI_FORM_OPCODE(OCF_HCI_Read_Flow_Control_Mode, OGF_LINK_POLICY)
166#define HCI_Write_Flow_Control_Mode HCI_FORM_OPCODE(OCF_HCI_Write_Flow_Control_Mode, OGF_LINK_POLICY)
167#define HCI_Write_BE_Flush_Timeout HCI_FORM_OPCODE(OCF_HCI_Write_BE_Flush_Timeout, OGF_LINK_POLICY)
168#define HCI_Read_BE_Flush_Timeout HCI_FORM_OPCODE(OCF_HCI_Read_BE_Flush_Timeout, OGF_LINK_POLICY)
169#define HCI_Short_Range_Mode HCI_FORM_OPCODE(OCF_HCI_Short_Range_Mode, OGF_LINK_POLICY)
170
171
172/*===== Info Commands =====================*/
173#define HCI_Read_Local_Ver_Info HCI_FORM_OPCODE(OCF_HCI_Read_Local_Ver_Info, OGF_INFO_PARAMS)
174#define HCI_Read_Local_Supported_Cmds HCI_FORM_OPCODE(OCF_HCI_Read_Local_Supported_Cmds, OGF_INFO_PARAMS)
175#define HCI_Read_Data_Block_Size HCI_FORM_OPCODE(OCF_HCI_Read_Data_Block_Size, OGF_INFO_PARAMS)
176
177/*===== Status Commands =====================*/
178#define HCI_Read_Link_Quality HCI_FORM_OPCODE(OCF_HCI_Read_Link_Quality, OGF_STATUS)
179#define HCI_Read_RSSI HCI_FORM_OPCODE(OCF_HCI_Read_RSSI, OGF_STATUS)
180#define HCI_Read_Local_AMP_Info HCI_FORM_OPCODE(OCF_HCI_Read_Local_AMP_Info, OGF_STATUS)
181#define HCI_Read_Local_AMP_ASSOC HCI_FORM_OPCODE(OCF_HCI_Read_Local_AMP_ASSOC, OGF_STATUS)
182#define HCI_Write_Remote_AMP_ASSOC HCI_FORM_OPCODE(OCF_HCI_Write_Remote_AMP_ASSOC, OGF_STATUS)
183
184/*====== End of cmd definitions =============*/
185
186
187
188/*===== Timeouts(private - can't come from HCI)=================*/
189#define Conn_Accept_TO HCI_FORM_OPCODE(Timer_Conn_Accept_TO, OGF_VENDOR_DEBUG)
190#define Link_Supervision_TO HCI_FORM_OPCODE(Timer_Link_Supervision_TO, OGF_VENDOR_DEBUG)
191
192/*----- PAL Constants (Sec 6 of Doc)------------------------*/
193#define Max80211_PAL_PDU_Size 1492
194#define Max80211_AMP_ASSOC_Len 672
195#define MinGUserPrio 4
196#define MaxGUserPrio 7
197#define BEUserPrio0 0
198#define BEUserPrio1 3
199#define Max80211BeaconPeriod 2000 /* in millisec */
200#define ShortRangeModePowerMax 4 /* dBm */
201
202/*------ PAL Protocol Identifiers (Sec5.1) ------------------*/
203typedef enum {
204 ACL_DATA = 0x01,
205 ACTIVITY_REPORT,
206 SECURED_FRAMES,
207 LINK_SUPERVISION_REQ,
208 LINK_SUPERVISION_RESP,
209}PAL_PROTOCOL_IDENTIFIERS;
210
211#define HCI_CMD_HDR_SZ 3
212#define HCI_EVENT_HDR_SIZE 2
213#define MAX_EVT_PKT_SZ 255
214#define AMP_ASSOC_MAX_FRAG_SZ 248
215#define AMP_MAX_GUARANTEED_BW 20000
216
217#define DEFAULT_CONN_ACCPT_TO 5000
218#define DEFAULT_LL_ACCPT_TO 5000
219#define DEFAULT_LSTO 10000
220
221#define PACKET_BASED_FLOW_CONTROL_MODE 0x00
222#define DATA_BLK_BASED_FLOW_CONTROL_MODE 0x01
223
224#define SERVICE_TYPE_BEST_EFFORT 0x01
225#define SERVICE_TYPE_GUARANTEED 0x02
226
227#define MAC_ADDR_LEN 6
228#define LINK_KEY_LEN 32
229
230typedef enum {
231 ACL_DATA_PB_1ST_NON_AUTOMATICALLY_FLUSHABLE = 0x00,
232 ACL_DATA_PB_CONTINUING_FRAGMENT = 0x01,
233 ACL_DATA_PB_1ST_AUTOMATICALLY_FLUSHABLE = 0x02,
234 ACL_DATA_PB_COMPLETE_PDU = 0x03,
235} ACL_DATA_PB_FLAGS;
236#define ACL_DATA_PB_FLAGS_SHIFT 12
237
238typedef enum {
239 ACL_DATA_BC_POINT_TO_POINT = 0x00,
240} ACL_DATA_BC_FLAGS;
241#define ACL_DATA_BC_FLAGS_SHIFT 14
242
243/* Command pkt */
244typedef struct hci_cmd_pkt_t {
4853ac05 245 u16 opcode;
ab3655da
JP
246 u8 param_length;
247 u8 params[255];
30295c89
VM
248} POSTPACK HCI_CMD_PKT;
249
250#define ACL_DATA_HDR_SIZE 4 /* hdl_and flags + data_len */
251/* Data pkt */
252typedef struct hci_acl_data_pkt_t {
4853ac05
JP
253 u16 hdl_and_flags;
254 u16 data_len;
ab3655da 255 u8 data[Max80211_PAL_PDU_Size];
30295c89
VM
256} POSTPACK HCI_ACL_DATA_PKT;
257
258/* Event pkt */
259typedef struct hci_event_pkt_t {
ab3655da
JP
260 u8 event_code;
261 u8 param_len;
262 u8 params[256];
30295c89
VM
263} POSTPACK HCI_EVENT_PKT;
264
265
266/*============== HCI Command definitions ======================= */
267typedef struct hci_cmd_phy_link_t {
4853ac05 268 u16 opcode;
ab3655da
JP
269 u8 param_length;
270 u8 phy_link_hdl;
271 u8 link_key_len;
272 u8 link_key_type;
273 u8 link_key[LINK_KEY_LEN];
30295c89
VM
274} POSTPACK HCI_CMD_PHY_LINK;
275
276typedef struct hci_cmd_write_rem_amp_assoc_t {
4853ac05 277 u16 opcode;
ab3655da
JP
278 u8 param_length;
279 u8 phy_link_hdl;
4853ac05
JP
280 u16 len_so_far;
281 u16 amp_assoc_remaining_len;
ab3655da 282 u8 amp_assoc_frag[AMP_ASSOC_MAX_FRAG_SZ];
30295c89
VM
283} POSTPACK HCI_CMD_WRITE_REM_AMP_ASSOC;
284
285
286typedef struct hci_cmd_opcode_hdl_t {
4853ac05 287 u16 opcode;
ab3655da 288 u8 param_length;
4853ac05 289 u16 hdl;
30295c89
VM
290} POSTPACK HCI_CMD_READ_LINK_QUAL,
291 HCI_CMD_FLUSH,
292 HCI_CMD_READ_LINK_SUPERVISION_TIMEOUT;
293
294typedef struct hci_cmd_read_local_amp_assoc_t {
4853ac05 295 u16 opcode;
ab3655da
JP
296 u8 param_length;
297 u8 phy_link_hdl;
4853ac05
JP
298 u16 len_so_far;
299 u16 max_rem_amp_assoc_len;
30295c89
VM
300} POSTPACK HCI_CMD_READ_LOCAL_AMP_ASSOC;
301
302
303typedef struct hci_cmd_set_event_mask_t {
4853ac05 304 u16 opcode;
ab3655da 305 u8 param_length;
c353f4b3 306 u64 mask;
30295c89
VM
307}POSTPACK HCI_CMD_SET_EVT_MASK, HCI_CMD_SET_EVT_MASK_PG_2;
308
309
310typedef struct hci_cmd_enhanced_flush_t{
4853ac05 311 u16 opcode;
ab3655da 312 u8 param_length;
4853ac05 313 u16 hdl;
ab3655da 314 u8 type;
30295c89
VM
315} POSTPACK HCI_CMD_ENHANCED_FLUSH;
316
317
318typedef struct hci_cmd_write_timeout_t {
4853ac05 319 u16 opcode;
ab3655da 320 u8 param_length;
4853ac05 321 u16 timeout;
30295c89
VM
322} POSTPACK HCI_CMD_WRITE_TIMEOUT;
323
324typedef struct hci_cmd_write_link_supervision_timeout_t {
4853ac05 325 u16 opcode;
ab3655da 326 u8 param_length;
4853ac05
JP
327 u16 hdl;
328 u16 timeout;
30295c89
VM
329} POSTPACK HCI_CMD_WRITE_LINK_SUPERVISION_TIMEOUT;
330
331typedef struct hci_cmd_write_flow_control_t {
4853ac05 332 u16 opcode;
ab3655da
JP
333 u8 param_length;
334 u8 mode;
30295c89
VM
335} POSTPACK HCI_CMD_WRITE_FLOW_CONTROL;
336
337typedef struct location_data_cfg_t {
ab3655da
JP
338 u8 reg_domain_aware;
339 u8 reg_domain[3];
340 u8 reg_options;
30295c89
VM
341} POSTPACK LOCATION_DATA_CFG;
342
343typedef struct hci_cmd_write_location_data_t {
4853ac05 344 u16 opcode;
ab3655da 345 u8 param_length;
30295c89
VM
346 LOCATION_DATA_CFG cfg;
347} POSTPACK HCI_CMD_WRITE_LOCATION_DATA;
348
349
350typedef struct flow_spec_t {
ab3655da
JP
351 u8 id;
352 u8 service_type;
4853ac05 353 u16 max_sdu;
e1ce2a3a
JP
354 u32 sdu_inter_arrival_time;
355 u32 access_latency;
356 u32 flush_timeout;
30295c89
VM
357} POSTPACK FLOW_SPEC;
358
359
360typedef struct hci_cmd_create_logical_link_t {
4853ac05 361 u16 opcode;
ab3655da
JP
362 u8 param_length;
363 u8 phy_link_hdl;
30295c89
VM
364 FLOW_SPEC tx_flow_spec;
365 FLOW_SPEC rx_flow_spec;
366} POSTPACK HCI_CMD_CREATE_LOGICAL_LINK;
367
368typedef struct hci_cmd_flow_spec_modify_t {
4853ac05 369 u16 opcode;
ab3655da 370 u8 param_length;
4853ac05 371 u16 hdl;
30295c89
VM
372 FLOW_SPEC tx_flow_spec;
373 FLOW_SPEC rx_flow_spec;
374} POSTPACK HCI_CMD_FLOW_SPEC_MODIFY;
375
376typedef struct hci_cmd_logical_link_cancel_t {
4853ac05 377 u16 opcode;
ab3655da
JP
378 u8 param_length;
379 u8 phy_link_hdl;
380 u8 tx_flow_spec_id;
30295c89
VM
381} POSTPACK HCI_CMD_LOGICAL_LINK_CANCEL;
382
383typedef struct hci_cmd_disconnect_logical_link_t {
4853ac05 384 u16 opcode;
ab3655da 385 u8 param_length;
4853ac05 386 u16 logical_link_hdl;
30295c89
VM
387} POSTPACK HCI_CMD_DISCONNECT_LOGICAL_LINK;
388
389typedef struct hci_cmd_disconnect_phy_link_t {
4853ac05 390 u16 opcode;
ab3655da
JP
391 u8 param_length;
392 u8 phy_link_hdl;
30295c89
VM
393} POSTPACK HCI_CMD_DISCONNECT_PHY_LINK;
394
395typedef struct hci_cmd_srm_t {
4853ac05 396 u16 opcode;
ab3655da
JP
397 u8 param_length;
398 u8 phy_link_hdl;
399 u8 mode;
30295c89
VM
400} POSTPACK HCI_CMD_SHORT_RANGE_MODE;
401/*============== HCI Command definitions end ======================= */
402
403
404
405/*============== HCI Event definitions ============================= */
406
407/* Command complete event */
408typedef struct hci_event_cmd_complete_t {
ab3655da
JP
409 u8 event_code;
410 u8 param_len;
411 u8 num_hci_cmd_pkts;
4853ac05 412 u16 opcode;
ab3655da 413 u8 params[255];
30295c89
VM
414} POSTPACK HCI_EVENT_CMD_COMPLETE;
415
416
417/* Command status event */
418typedef struct hci_event_cmd_status_t {
ab3655da
JP
419 u8 event_code;
420 u8 param_len;
421 u8 status;
422 u8 num_hci_cmd_pkts;
4853ac05 423 u16 opcode;
30295c89
VM
424} POSTPACK HCI_EVENT_CMD_STATUS;
425
426/* Hardware Error event */
427typedef struct hci_event_hw_err_t {
ab3655da
JP
428 u8 event_code;
429 u8 param_len;
430 u8 hw_err_code;
30295c89
VM
431} POSTPACK HCI_EVENT_HW_ERR;
432
25985edc 433/* Flush occurred event */
30295c89
VM
434/* Qos Violation event */
435typedef struct hci_event_handle_t {
ab3655da
JP
436 u8 event_code;
437 u8 param_len;
4853ac05 438 u16 handle;
30295c89
VM
439} POSTPACK HCI_EVENT_FLUSH_OCCRD,
440 HCI_EVENT_QOS_VIOLATION;
441
442/* Loopback command event */
443typedef struct hci_loopback_cmd_t {
ab3655da
JP
444 u8 event_code;
445 u8 param_len;
446 u8 params[252];
30295c89
VM
447} POSTPACK HCI_EVENT_LOOPBACK_CMD;
448
449/* Data buffer overflow event */
450typedef struct hci_data_buf_overflow_t {
ab3655da
JP
451 u8 event_code;
452 u8 param_len;
453 u8 link_type;
30295c89
VM
454} POSTPACK HCI_EVENT_DATA_BUF_OVERFLOW;
455
456/* Enhanced Flush complete event */
457typedef struct hci_enhanced_flush_complt_t{
ab3655da
JP
458 u8 event_code;
459 u8 param_len;
4853ac05 460 u16 hdl;
30295c89
VM
461} POSTPACK HCI_EVENT_ENHANCED_FLUSH_COMPLT;
462
463/* Channel select event */
464typedef struct hci_event_chan_select_t {
ab3655da
JP
465 u8 event_code;
466 u8 param_len;
467 u8 phy_link_hdl;
30295c89
VM
468} POSTPACK HCI_EVENT_CHAN_SELECT;
469
470/* Physical Link Complete event */
471typedef struct hci_event_phy_link_complete_event_t {
ab3655da
JP
472 u8 event_code;
473 u8 param_len;
474 u8 status;
475 u8 phy_link_hdl;
30295c89
VM
476} POSTPACK HCI_EVENT_PHY_LINK_COMPLETE;
477
478/* Logical Link complete event */
479typedef struct hci_event_logical_link_complete_event_t {
ab3655da
JP
480 u8 event_code;
481 u8 param_len;
482 u8 status;
4853ac05 483 u16 logical_link_hdl;
ab3655da
JP
484 u8 phy_hdl;
485 u8 tx_flow_id;
30295c89
VM
486} POSTPACK HCI_EVENT_LOGICAL_LINK_COMPLETE_EVENT;
487
488/* Disconnect Logical Link complete event */
489typedef struct hci_event_disconnect_logical_link_event_t {
ab3655da
JP
490 u8 event_code;
491 u8 param_len;
492 u8 status;
4853ac05 493 u16 logical_link_hdl;
ab3655da 494 u8 reason;
30295c89
VM
495} POSTPACK HCI_EVENT_DISCONNECT_LOGICAL_LINK_EVENT;
496
497/* Disconnect Physical Link complete event */
498typedef struct hci_event_disconnect_phy_link_complete_t {
ab3655da
JP
499 u8 event_code;
500 u8 param_len;
501 u8 status;
502 u8 phy_link_hdl;
503 u8 reason;
30295c89
VM
504} POSTPACK HCI_EVENT_DISCONNECT_PHY_LINK_COMPLETE;
505
506typedef struct hci_event_physical_link_loss_early_warning_t{
ab3655da
JP
507 u8 event_code;
508 u8 param_len;
509 u8 phy_hdl;
510 u8 reason;
30295c89
VM
511} POSTPACK HCI_EVENT_PHY_LINK_LOSS_EARLY_WARNING;
512
513typedef struct hci_event_physical_link_recovery_t{
ab3655da
JP
514 u8 event_code;
515 u8 param_len;
516 u8 phy_hdl;
30295c89
VM
517} POSTPACK HCI_EVENT_PHY_LINK_RECOVERY;
518
519
520/* Flow spec modify complete event */
521/* Flush event */
522typedef struct hci_event_status_handle_t {
ab3655da
JP
523 u8 event_code;
524 u8 param_len;
525 u8 status;
4853ac05 526 u16 handle;
30295c89
VM
527} POSTPACK HCI_EVENT_FLOW_SPEC_MODIFY,
528 HCI_EVENT_FLUSH;
529
530
531/* Num of completed data blocks event */
532typedef struct hci_event_num_of_compl_data_blks_t {
ab3655da
JP
533 u8 event_code;
534 u8 param_len;
4853ac05 535 u16 num_data_blks;
ab3655da
JP
536 u8 num_handles;
537 u8 params[255];
30295c89
VM
538} POSTPACK HCI_EVENT_NUM_COMPL_DATA_BLKS;
539
540/* Short range mode change complete event */
541typedef struct hci_srm_cmpl_t {
ab3655da
JP
542 u8 event_code;
543 u8 param_len;
544 u8 status;
545 u8 phy_link;
546 u8 state;
30295c89
VM
547} POSTPACK HCI_EVENT_SRM_COMPL;
548
549typedef struct hci_event_amp_status_change_t{
ab3655da
JP
550 u8 event_code;
551 u8 param_len;
552 u8 status;
553 u8 amp_status;
30295c89
VM
554} POSTPACK HCI_EVENT_AMP_STATUS_CHANGE;
555
556/*============== Event definitions end =========================== */
557
558
559typedef struct local_amp_info_resp_t {
ab3655da
JP
560 u8 status;
561 u8 amp_status;
e1ce2a3a
JP
562 u32 total_bw; /* kbps */
563 u32 max_guranteed_bw; /* kbps */
564 u32 min_latency;
565 u32 max_pdu_size;
ab3655da 566 u8 amp_type;
4853ac05
JP
567 u16 pal_capabilities;
568 u16 amp_assoc_len;
e1ce2a3a
JP
569 u32 max_flush_timeout; /* in ms */
570 u32 be_flush_timeout; /* in ms */
30295c89
VM
571} POSTPACK LOCAL_AMP_INFO;
572
573typedef struct amp_assoc_cmd_resp_t{
ab3655da
JP
574 u8 status;
575 u8 phy_hdl;
4853ac05 576 u16 amp_assoc_len;
ab3655da 577 u8 amp_assoc_frag[AMP_ASSOC_MAX_FRAG_SZ];
30295c89
VM
578}POSTPACK AMP_ASSOC_CMD_RESP;
579
580
581enum PAL_HCI_CMD_STATUS {
582 PAL_HCI_CMD_PROCESSED,
583 PAL_HCI_CMD_IGNORED
584};
585
586
587/*============= HCI Error Codes =======================*/
588#define HCI_SUCCESS 0x00
589#define HCI_ERR_UNKNOW_CMD 0x01
590#define HCI_ERR_UNKNOWN_CONN_ID 0x02
591#define HCI_ERR_HW_FAILURE 0x03
592#define HCI_ERR_PAGE_TIMEOUT 0x04
593#define HCI_ERR_AUTH_FAILURE 0x05
594#define HCI_ERR_KEY_MISSING 0x06
595#define HCI_ERR_MEM_CAP_EXECED 0x07
596#define HCI_ERR_CON_TIMEOUT 0x08
597#define HCI_ERR_CON_LIMIT_EXECED 0x09
598#define HCI_ERR_ACL_CONN_ALRDY_EXISTS 0x0B
599#define HCI_ERR_COMMAND_DISALLOWED 0x0C
600#define HCI_ERR_CONN_REJ_BY_LIMIT_RES 0x0D
601#define HCI_ERR_CONN_REJ_BY_SEC 0x0E
602#define HCI_ERR_CONN_REJ_BY_BAD_ADDR 0x0F
603#define HCI_ERR_CONN_ACCPT_TIMEOUT 0x10
604#define HCI_ERR_UNSUPPORT_FEATURE 0x11
605#define HCI_ERR_INVALID_HCI_CMD_PARAMS 0x12
606#define HCI_ERR_REMOTE_USER_TERMINATE_CONN 0x13
607#define HCI_ERR_CON_TERM_BY_HOST 0x16
608#define HCI_ERR_UNSPECIFIED_ERROR 0x1F
609#define HCI_ERR_ENCRYPTION_MODE_NOT_SUPPORT 0x25
610#define HCI_ERR_REQUESTED_QOS_NOT_SUPPORT 0x27
611#define HCI_ERR_QOS_UNACCEPTABLE_PARM 0x2C
612#define HCI_ERR_QOS_REJECTED 0x2D
613#define HCI_ERR_CONN_REJ_NO_SUITABLE_CHAN 0x39
614
615/*============= HCI Error Codes End =======================*/
616
617
618/* Following are event return parameters.. part of HCI events
619 */
620typedef struct timeout_read_t {
ab3655da 621 u8 status;
4853ac05 622 u16 timeout;
30295c89
VM
623}POSTPACK TIMEOUT_INFO;
624
625typedef struct link_supervision_timeout_read_t {
ab3655da 626 u8 status;
4853ac05
JP
627 u16 hdl;
628 u16 timeout;
30295c89
VM
629}POSTPACK LINK_SUPERVISION_TIMEOUT_INFO;
630
631typedef struct status_hdl_t {
ab3655da 632 u8 status;
4853ac05 633 u16 hdl;
30295c89
VM
634}POSTPACK INFO_STATUS_HDL;
635
636typedef struct write_remote_amp_assoc_t{
ab3655da
JP
637 u8 status;
638 u8 hdl;
30295c89
VM
639}POSTPACK WRITE_REMOTE_AMP_ASSOC_INFO;
640
641typedef struct read_loc_info_t {
ab3655da 642 u8 status;
30295c89
VM
643 LOCATION_DATA_CFG loc;
644}POSTPACK READ_LOC_INFO;
645
646typedef struct read_flow_ctrl_mode_t {
ab3655da
JP
647 u8 status;
648 u8 mode;
30295c89
VM
649}POSTPACK READ_FLWCTRL_INFO;
650
651typedef struct read_data_blk_size_t {
ab3655da 652 u8 status;
4853ac05
JP
653 u16 max_acl_data_pkt_len;
654 u16 data_block_len;
655 u16 total_num_data_blks;
30295c89
VM
656}POSTPACK READ_DATA_BLK_SIZE_INFO;
657
658/* Read Link quality info */
659typedef struct link_qual_t {
ab3655da 660 u8 status;
4853ac05 661 u16 hdl;
ab3655da 662 u8 link_qual;
30295c89
VM
663} POSTPACK READ_LINK_QUAL_INFO,
664 READ_RSSI_INFO;
665
666typedef struct ll_cancel_resp_t {
ab3655da
JP
667 u8 status;
668 u8 phy_link_hdl;
669 u8 tx_flow_spec_id;
30295c89
VM
670} POSTPACK LL_CANCEL_RESP;
671
672typedef struct read_local_ver_info_t {
ab3655da
JP
673 u8 status;
674 u8 hci_version;
4853ac05 675 u16 hci_revision;
ab3655da 676 u8 pal_version;
4853ac05
JP
677 u16 manf_name;
678 u16 pal_sub_ver;
30295c89
VM
679} POSTPACK READ_LOCAL_VER_INFO;
680
681
682#endif /* __A_HCI_H__ */