| /****************************************************************************** |
| * |
| * Copyright(c) 2007 - 2012 Realtek Corporation. All rights reserved. |
| * |
| * This program is free software; you can redistribute it and/or modify it |
| * under the terms of version 2 of the GNU General Public License as |
| * published by the Free Software Foundation. |
| * |
| * 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 __RTL8723A_BT_COEXIST_H__ |
| #define __RTL8723A_BT_COEXIST_H__ |
| |
| #include <drv_types.h> |
| #include "odm_precomp.h" |
| |
| |
| /* HEADER/PlatformDef.h */ |
| enum rt_media_status { |
| RT_MEDIA_DISCONNECT = 0, |
| RT_MEDIA_CONNECT = 1 |
| }; |
| |
| /* ===== Below this line is sync from SD7 driver COMMON/BT.h ===== */ |
| |
| #define BT_TMP_BUF_SIZE 100 |
| |
| void BT_SignalCompensation(struct rtw_adapter *padapter, |
| u8 *rssi_wifi, u8 *rssi_bt); |
| void BT_HaltProcess(struct rtw_adapter *padapter); |
| void BT_LpsLeave(struct rtw_adapter *padapter); |
| |
| |
| #define BT_HsConnectionEstablished(Adapter) false |
| /* ===== End of sync from SD7 driver COMMON/BT.h ===== */ |
| |
| /* HEADER/SecurityType.h */ |
| #define TKIP_ENC_KEY_POS 32 /* KEK_LEN+KEK_LEN) */ |
| #define MAXRSNIELEN 256 |
| |
| /* COMMON/Protocol802_11.h */ |
| /* */ |
| /* 802.11 Management frame Status Code field */ |
| /* */ |
| struct octet_string { |
| u8 *Octet; |
| u16 Length; |
| }; |
| |
| |
| /* AES_CCMP specific */ |
| enum { |
| AESCCMP_BLK_SIZE = 16, /* # octets in an AES block */ |
| AESCCMP_MAX_PACKET = 4*512, /* largest packet size */ |
| AESCCMP_N_RESERVED = 0, /* reserved nonce octet value */ |
| AESCCMP_A_DATA = 0x40, /* the Adata bit in the flags */ |
| AESCCMP_M_SHIFT = 3, /* how much to shift the 3-bit M field */ |
| AESCCMP_L_SHIFT = 0, /* how much to shift the 3-bit L field */ |
| AESCCMP_L_SIZE = 2, /* size of the l(m) length field (in octets) */ |
| AESCCMP_OFFSET_SC = 22, |
| AESCCMP_OFFSET_DURATION = 4, |
| AESCCMP_OFFSET_A2 = 10, |
| AESCCMP_OFFSET_A4 = 24, |
| AESCCMP_QC_TID_MASK = 0x0f, |
| AESCCMP_BLK_SIZE_TOTAL = 16*16, /* Added by Annie for CKIP AES MIC BSOD, 2006-08-17. */ |
| /* 16*8 < 4*60 Resove to 16*16 */ |
| }; |
| |
| /* Key Length */ |
| #define PMK_LEN 32 |
| #define PTK_LEN_TKIP 64 |
| #define GTK_LEN 32 |
| #define KEY_NONCE_LEN 32 |
| |
| |
| /* COMMON/Dot11d.h */ |
| struct chnl_txpower_triple { |
| u8 FirstChnl; |
| u8 NumChnls; |
| s8 MaxTxPowerInDbm; |
| }; |
| |
| |
| /* ===== Below this line is sync from SD7 driver COMMON/bt_hci.h ===== */ |
| /* The following is for BT 3.0 + HS HCI COMMAND ERRORS CODES */ |
| |
| #define Max80211PALPDUSize 1492 |
| #define Max80211AMPASSOCLen 672 |
| #define MinGUserPrio 4 |
| #define MaxGUserPrio 7 |
| #define BEUserPrio0 0 |
| #define BEUserPrio1 3 |
| #define Max80211BeaconPeriod 2000 |
| #define ShortRangeModePowerMax 4 |
| |
| #define BT_Default_Chnl 10 |
| #define ACLDataHeaderLen 4 |
| |
| #define BTTotalDataBlockNum 0x100 |
| #define BTLocalBufNum 0x200 |
| #define BTMaxDataBlockLen 0x800 |
| #define BTTOTALBANDWIDTH 0x7530 |
| #define BTMAXBANDGUBANDWIDTH 0x4e20 |
| #define TmpLocalBufSize 0x100 |
| #define BTSynDataPacketLength 0xff |
| /* */ |
| |
| #define BTMaxAuthCount 5 |
| #define BTMaxAsocCount 5 |
| |
| #define MAX_LOGICAL_LINK_NUM 2 /* temporarily define */ |
| #define MAX_BT_ASOC_ENTRY_NUM 2 /* temporarily define */ |
| |
| #define INVALID_PL_HANDLE 0xff |
| #define INVALID_ENTRY_NUM 0xff |
| /* */ |
| |
| #define CAM_BT_START_INDEX (HALF_CAM_ENTRY - 4) /* MAX_BT_ASOC_ENTRY_NUM : 4 !!! */ |
| #define BT_HWCAM_STAR CAM_BT_START_INDEX /* We used HALF_CAM_ENTRY ~ HALF_CAM_ENTRY -MAX_BT_ASOC_ENTRY_NUM */ |
| |
| enum hci_status { |
| HCI_STATUS_SUCCESS = 0x00, /* Success */ |
| HCI_STATUS_UNKNOW_HCI_CMD = 0x01, /* Unknown HCI Command */ |
| HCI_STATUS_UNKNOW_CONNECT_ID = 0X02, /* Unknown Connection Identifier */ |
| HCI_STATUS_HW_FAIL = 0X03, /* Hardware Failure */ |
| HCI_STATUS_PAGE_TIMEOUT = 0X04, /* Page Timeout */ |
| HCI_STATUS_AUTH_FAIL = 0X05, /* Authentication Failure */ |
| HCI_STATUS_PIN_OR_KEY_MISSING = 0X06, /* PIN or Key Missing */ |
| HCI_STATUS_MEM_CAP_EXCEED = 0X07, /* Memory Capacity Exceeded */ |
| HCI_STATUS_CONNECT_TIMEOUT = 0X08, /* Connection Timeout */ |
| HCI_STATUS_CONNECT_LIMIT = 0X09, /* Connection Limit Exceeded */ |
| HCI_STATUS_SYN_CONNECT_LIMIT = 0X0a, /* Synchronous Connection Limit To A Device Exceeded */ |
| HCI_STATUS_ACL_CONNECT_EXISTS = 0X0b, /* ACL Connection Already Exists */ |
| HCI_STATUS_CMD_DISALLOW = 0X0c, /* Command Disallowed */ |
| HCI_STATUS_CONNECT_RJT_LIMIT_RESOURCE = 0X0d, /* Connection Rejected due to Limited Resources */ |
| HCI_STATUS_CONNECT_RJT_SEC_REASON = 0X0e, /* Connection Rejected Due To Security Reasons */ |
| HCI_STATUS_CONNECT_RJT_UNACCEPT_BD_ADDR = 0X0f, /* Connection Rejected due to Unacceptable BD_ADDR */ |
| HCI_STATUS_CONNECT_ACCEPT_TIMEOUT = 0X10, /* Connection Accept Timeout Exceeded */ |
| HCI_STATUS_UNSUPPORT_FEATURE_PARA_VALUE = 0X11, /* Unsupported Feature or Parameter Value */ |
| HCI_STATUS_INVALID_HCI_CMD_PARA_VALUE = 0X12, /* Invalid HCI Command Parameters */ |
| HCI_STATUS_REMOTE_USER_TERMINATE_CONNECT = 0X13, /* Remote User Terminated Connection */ |
| HCI_STATUS_REMOTE_DEV_TERMINATE_LOW_RESOURCE = 0X14, /* Remote Device Terminated Connection due to Low Resources */ |
| HCI_STATUS_REMOTE_DEV_TERMINATE_CONNECT_POWER_OFF = 0X15, /* Remote Device Terminated Connection due to Power Off */ |
| HCI_STATUS_CONNECT_TERMINATE_LOCAL_HOST = 0X16, /* Connection Terminated By Local Host */ |
| HCI_STATUS_REPEATE_ATTEMPT = 0X17, /* Repeated Attempts */ |
| HCI_STATUS_PAIR_NOT_ALLOW = 0X18, /* Pairing Not Allowed */ |
| HCI_STATUS_UNKNOW_LMP_PDU = 0X19, /* Unknown LMP PDU */ |
| HCI_STATUS_UNSUPPORT_REMOTE_LMP_FEATURE = 0X1a, /* Unsupported Remote Feature / Unsupported LMP Feature */ |
| HCI_STATUS_SOC_OFFSET_REJECT = 0X1b, /* SCO Offset Rejected */ |
| HCI_STATUS_SOC_INTERVAL_REJECT = 0X1c, /* SCO Interval Rejected */ |
| HCI_STATUS_SOC_AIR_MODE_REJECT = 0X1d,/* SCO Air Mode Rejected */ |
| HCI_STATUS_INVALID_LMP_PARA = 0X1e, /* Invalid LMP Parameters */ |
| HCI_STATUS_UNSPECIFIC_ERROR = 0X1f, /* Unspecified Error */ |
| HCI_STATUS_UNSUPPORT_LMP_PARA_VALUE = 0X20, /* Unsupported LMP Parameter Value */ |
| HCI_STATUS_ROLE_CHANGE_NOT_ALLOW = 0X21, /* Role Change Not Allowed */ |
| HCI_STATUS_LMP_RESPONSE_TIMEOUT = 0X22, /* LMP Response Timeout */ |
| HCI_STATUS_LMP_ERROR_TRANSACTION_COLLISION = 0X23, /* LMP Error Transaction Collision */ |
| HCI_STATUS_LMP_PDU_NOT_ALLOW = 0X24, /* LMP PDU Not Allowed */ |
| HCI_STATUS_ENCRYPTION_MODE_NOT_ALLOW = 0X25, /* Encryption Mode Not Acceptable */ |
| HCI_STATUS_LINK_KEY_CAN_NOT_CHANGE = 0X26, /* Link Key Can Not be Changed */ |
| HCI_STATUS_REQUEST_QOS_NOT_SUPPORT = 0X27, /* Requested QoS Not Supported */ |
| HCI_STATUS_INSTANT_PASSED = 0X28, /* Instant Passed */ |
| HCI_STATUS_PAIRING_UNIT_KEY_NOT_SUPPORT = 0X29, /* Pairing With Unit Key Not Supported */ |
| HCI_STATUS_DIFFERENT_TRANSACTION_COLLISION = 0X2a, /* Different Transaction Collision */ |
| HCI_STATUS_RESERVE_1 = 0X2b, /* Reserved */ |
| HCI_STATUS_QOS_UNACCEPT_PARA = 0X2c, /* QoS Unacceptable Parameter */ |
| HCI_STATUS_QOS_REJECT = 0X2d, /* QoS Rejected */ |
| HCI_STATUS_CHNL_CLASSIFICATION_NOT_SUPPORT = 0X2e, /* Channel Classification Not Supported */ |
| HCI_STATUS_INSUFFICIENT_SECURITY = 0X2f, /* Insufficient Security */ |
| HCI_STATUS_PARA_OUT_OF_RANGE = 0x30, /* Parameter Out Of Mandatory Range */ |
| HCI_STATUS_RESERVE_2 = 0X31, /* Reserved */ |
| HCI_STATUS_ROLE_SWITCH_PENDING = 0X32, /* Role Switch Pending */ |
| HCI_STATUS_RESERVE_3 = 0X33, /* Reserved */ |
| HCI_STATUS_RESERVE_SOLT_VIOLATION = 0X34, /* Reserved Slot Violation */ |
| HCI_STATUS_ROLE_SWITCH_FAIL = 0X35, /* Role Switch Failed */ |
| HCI_STATUS_EXTEND_INQUIRY_RSP_TOO_LARGE = 0X36, /* Extended Inquiry Response Too Large */ |
| HCI_STATUS_SEC_SIMPLE_PAIRING_NOT_SUPPORT = 0X37, /* Secure Simple Pairing Not Supported By Host. */ |
| HCI_STATUS_HOST_BUSY_PAIRING = 0X38, /* Host Busy - Pairing */ |
| HCI_STATUS_CONNECT_REJ_NOT_SUIT_CHNL_FOUND = 0X39, /* Connection Rejected due to No Suitable Channel Found */ |
| HCI_STATUS_CONTROLLER_BUSY = 0X3a /* CONTROLLER BUSY */ |
| }; |
| |
| /* */ |
| /* The following is for BT 3.0 + HS HCI COMMAND */ |
| /* */ |
| |
| /* bit 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 */ |
| /* | OCF | OGF | */ |
| /* */ |
| |
| /* OGF 0x01 */ |
| #define LINK_CONTROL_COMMANDS 0x01 |
| enum link_control_commands { |
| HCI_INQUIRY = 0x0001, |
| HCI_INQUIRY_CANCEL = 0x0002, |
| HCI_PERIODIC_INQUIRY_MODE = 0x0003, |
| HCI_EXIT_PERIODIC_INQUIRY_MODE = 0x0004, |
| HCI_CREATE_CONNECTION = 0x0005, |
| HCI_DISCONNECT = 0x0006, |
| HCI_CREATE_CONNECTION_CANCEL = 0x0008, |
| HCI_ACCEPT_CONNECTIONREQUEST = 0x0009, |
| HCI_REJECT_CONNECTION_REQUEST = 0x000a, |
| HCI_LINK_KEY_REQUEST_REPLY = 0x000b, |
| HCI_LINK_KEY_REQUEST_NEGATIVE_REPLY = 0x000c, |
| HCI_PIN_CODE_REQUEST_REPLY = 0x000d, |
| HCI_PIN_CODE_REQUEST_NEGATIVE_REPLY = 0x000e, |
| HCI_CHANGE_CONNECTION_PACKET_TYPE = 0x000f, |
| HCI_AUTHENTICATION_REQUESTED = 0x0011, |
| HCI_SET_CONNECTION_ENCRYPTION = 0x0013, |
| HCI_CHANGE_CONNECTION_LINK_KEY = 0x0015, |
| HCI_MASTER_LINK_KEY = 0x0017, |
| HCI_REMOTE_NAME_REQUEST = 0x0019, |
| HCI_REMOTE_NAME_REQUEST_CANCEL = 0x001a, |
| HCI_READ_REMOTE_SUPPORTED_FEATURES = 0x001b, |
| HCI_READ_REMOTE_EXTENDED_FEATURES = 0x001c, |
| HCI_READ_REMOTE_VERSION_INFORMATION = 0x001d, |
| HCI_READ_CLOCK_OFFSET = 0x001f, |
| HCI_READ_LMP_HANDLE = 0x0020, |
| HCI_SETUP_SYNCHRONOUS_CONNECTION = 0x0028, |
| HCI_ACCEPT_SYNCHRONOUS_CONNECTION_REQUEST = 0x0029, |
| HCI_REJECT_SYNCHRONOUS_CONNECTION_REQUEST = 0x002a, |
| HCI_IO_CAPABILITY_REQUEST_REPLY = 0x002b, |
| HCI_USER_CONFIRMATION_REQUEST_REPLY = 0x002c, |
| HCI_USER_CONFIRMATION_REQUEST_NEGATIVE_REPLY = 0x002d, |
| HCI_USER_PASSKEY_REQUEST_REPLY = 0x002e, |
| HCI_USER_PASSKEY_REQUESTNEGATIVE_REPLY = 0x002f, |
| HCI_REMOTE_OOB_DATA_REQUEST_REPLY = 0x0030, |
| HCI_REMOTE_OOB_DATA_REQUEST_NEGATIVE_REPLY = 0x0033, |
| HCI_IO_CAPABILITY_REQUEST_NEGATIVE_REPLY = 0x0034, |
| HCI_CREATE_PHYSICAL_LINK = 0x0035, |
| HCI_ACCEPT_PHYSICAL_LINK = 0x0036, |
| HCI_DISCONNECT_PHYSICAL_LINK = 0x0037, |
| HCI_CREATE_LOGICAL_LINK = 0x0038, |
| HCI_ACCEPT_LOGICAL_LINK = 0x0039, |
| HCI_DISCONNECT_LOGICAL_LINK = 0x003a, |
| HCI_LOGICAL_LINK_CANCEL = 0x003b, |
| HCI_FLOW_SPEC_MODIFY = 0x003c |
| }; |
| |
| /* OGF 0x02 */ |
| #define HOLD_MODE_COMMAND 0x02 |
| enum hold_mode_command { |
| HCI_HOLD_MODE = 0x0001, |
| HCI_SNIFF_MODE = 0x0002, |
| HCI_EXIT_SNIFF_MODE = 0x0003, |
| HCI_PARK_STATE = 0x0005, |
| HCI_EXIT_PARK_STATE = 0x0006, |
| HCI_QOS_SETUP = 0x0007, |
| HCI_ROLE_DISCOVERY = 0x0009, |
| HCI_SWITCH_ROLE = 0x000b, |
| HCI_READ_LINK_POLICY_SETTINGS = 0x000c, |
| HCI_WRITE_LINK_POLICY_SETTINGS = 0x000d, |
| HCI_READ_DEFAULT_LINK_POLICY_SETTINGS = 0x000e, |
| HCI_WRITE_DEFAULT_LINK_POLICY_SETTINGS = 0x000f, |
| HCI_FLOW_SPECIFICATION = 0x0010, |
| HCI_SNIFF_SUBRATING = 0x0011 |
| }; |
| |
| /* OGF 0x03 */ |
| #define OGF_SET_EVENT_MASK_COMMAND 0x03 |
| enum set_event_mask_command { |
| HCI_SET_EVENT_MASK = 0x0001, |
| HCI_RESET = 0x0003, |
| HCI_SET_EVENT_FILTER = 0x0005, |
| HCI_FLUSH = 0x0008, |
| HCI_READ_PIN_TYPE = 0x0009, |
| HCI_WRITE_PIN_TYPE = 0x000a, |
| HCI_CREATE_NEW_UNIT_KEY = 0x000b, |
| HCI_READ_STORED_LINK_KEY = 0x000d, |
| HCI_WRITE_STORED_LINK_KEY = 0x0011, |
| HCI_DELETE_STORED_LINK_KEY = 0x0012, |
| HCI_WRITE_LOCAL_NAME = 0x0013, |
| HCI_READ_LOCAL_NAME = 0x0014, |
| HCI_READ_CONNECTION_ACCEPT_TIMEOUT = 0x0015, |
| HCI_WRITE_CONNECTION_ACCEPT_TIMEOUT = 0x0016, |
| HCI_READ_PAGE_TIMEOUT = 0x0017, |
| HCI_WRITE_PAGE_TIMEOUT = 0x0018, |
| HCI_READ_SCAN_ENABLE = 0x0019, |
| HCI_WRITE_SCAN_ENABLE = 0x001a, |
| HCI_READ_PAGE_SCAN_ACTIVITY = 0x001b, |
| HCI_WRITE_PAGE_SCAN_ACTIVITY = 0x001c, |
| HCI_READ_INQUIRY_SCAN_ACTIVITY = 0x001d, |
| HCI_WRITE_INQUIRY_SCAN_ACTIVITY = 0x001e, |
| HCI_READ_AUTHENTICATION_ENABLE = 0x001f, |
| HCI_WRITE_AUTHENTICATION_ENABLE = 0x0020, |
| HCI_READ_CLASS_OF_DEVICE = 0x0023, |
| HCI_WRITE_CLASS_OF_DEVICE = 0x0024, |
| HCI_READ_VOICE_SETTING = 0x0025, |
| HCI_WRITE_VOICE_SETTING = 0x0026, |
| HCI_READ_AUTOMATIC_FLUSH_TIMEOUT = 0x0027, |
| HCI_WRITE_AUTOMATIC_FLUSH_TIMEOUT = 0x0028, |
| HCI_READ_NUM_BROADCAST_RETRANSMISSIONS = 0x0029, |
| HCI_WRITE_NUM_BROADCAST_RETRANSMISSIONS = 0x002a, |
| HCI_READ_HOLD_MODE_ACTIVITY = 0x002b, |
| HCI_WRITE_HOLD_MODE_ACTIVITY = 0x002c, |
| HCI_READ_SYNCHRONOUS_FLOW_CONTROL_ENABLE = 0x002e, |
| HCI_WRITE_SYNCHRONOUS_FLOW_CONTROL_ENABLE = 0x002f, |
| HCI_SET_CONTROLLER_TO_HOST_FLOW_CONTROL = 0x0031, |
| HCI_HOST_BUFFER_SIZE = 0x0033, |
| HCI_HOST_NUMBER_OF_COMPLETED_PACKETS = 0x0035, |
| HCI_READ_LINK_SUPERVISION_TIMEOUT = 0x0036, |
| HCI_WRITE_LINK_SUPERVISION_TIMEOUT = 0x0037, |
| HCI_READ_NUMBER_OF_SUPPORTED_IAC = 0x0038, |
| HCI_READ_CURRENT_IAC_LAP = 0x0039, |
| HCI_WRITE_CURRENT_IAC_LAP = 0x003a, |
| HCI_READ_PAGE_SCAN_MODE = 0x003d, |
| HCI_WRITE_PAGE_SCAN_MODE = 0x003e, |
| HCI_SET_AFH_HOST_CHANNEL_CLASSIFICATION = 0x003f, |
| HCI_READ_INQUIRY_SCAN_TYPE = 0x0042, |
| HCI_WRITE_INQUIRY_SCAN_TYPE = 0x0043, |
| HCI_READ_INQUIRY_MODE = 0x0044, |
| HCI_WRITE_INQUIRY_MODE = 0x0045, |
| HCI_READ_PAGE_SCAN_TYPE = 0x0046, |
| HCI_WRITE_PAGE_SCAN_TYPE = 0x0047, |
| HCI_READ_AFH_CHANNEL_ASSESSMENT_MODE = 0x0048, |
| HCI_WRITE_AFH_CHANNEL_ASSESSMENT_MODE = 0x0049, |
| HCI_READ_EXTENDED_INQUIRY_RESPONSE = 0x0051, |
| HCI_WRITE_EXTENDED_INQUIRY_RESPONSE = 0x0052, |
| HCI_REFRESH_ENCRYPTION_KEY = 0x0053, |
| HCI_READ_SIMPLE_PAIRING_MODE = 0x0055, |
| HCI_WRITE_SIMPLE_PAIRING_MODE = 0x0056, |
| HCI_READ_LOCAL_OOB_DATA = 0x0057, |
| HCI_READ_INQUIRY_RESPONSE_TRANSMIT_POWER_LEVEL = 0x0058, |
| HCI_WRITE_INQUIRY_TRANSMIT_POWER_LEVEL = 0x0059, |
| HCI_READ_DEFAULT_ERRONEOUS_DATA_REPORTING = 0x005a, |
| HCI_WRITE_DEFAULT_ERRONEOUS_DATA_REPORTING = 0x005b, |
| HCI_ENHANCED_FLUSH = 0x005f, |
| HCI_SEND_KEYPRESS_NOTIFICATION = 0x0060, |
| HCI_READ_LOGICAL_LINK_ACCEPT_TIMEOUT = 0x0061, |
| HCI_WRITE_LOGICAL_LINK_ACCEPT_TIMEOUT = 0x0062, |
| HCI_SET_EVENT_MASK_PAGE_2 = 0x0063, |
| HCI_READ_LOCATION_DATA = 0x0064, |
| HCI_WRITE_LOCATION_DATA = 0x0065, |
| HCI_READ_FLOW_CONTROL_MODE = 0x0066, |
| HCI_WRITE_FLOW_CONTROL_MODE = 0x0067, |
| HCI_READ_ENHANCE_TRANSMIT_POWER_LEVEL = 0x0068, |
| HCI_READ_BEST_EFFORT_FLUSH_TIMEOUT = 0x0069, |
| HCI_WRITE_BEST_EFFORT_FLUSH_TIMEOUT = 0x006a, |
| HCI_SHORT_RANGE_MODE = 0x006b |
| }; |
| |
| /* OGF 0x04 */ |
| #define OGF_INFORMATIONAL_PARAMETERS 0x04 |
| enum informational_params { |
| HCI_READ_LOCAL_VERSION_INFORMATION = 0x0001, |
| HCI_READ_LOCAL_SUPPORTED_COMMANDS = 0x0002, |
| HCI_READ_LOCAL_SUPPORTED_FEATURES = 0x0003, |
| HCI_READ_LOCAL_EXTENDED_FEATURES = 0x0004, |
| HCI_READ_BUFFER_SIZE = 0x0005, |
| HCI_READ_BD_ADDR = 0x0009, |
| HCI_READ_DATA_BLOCK_SIZE = 0x000a |
| }; |
| |
| /* OGF 0x05 */ |
| #define OGF_STATUS_PARAMETERS 0x05 |
| enum status_params { |
| HCI_READ_FAILED_CONTACT_COUNTER = 0x0001, |
| HCI_RESET_FAILED_CONTACT_COUNTER = 0x0002, |
| HCI_READ_LINK_QUALITY = 0x0003, |
| HCI_READ_RSSI = 0x0005, |
| HCI_READ_AFH_CHANNEL_MAP = 0x0006, |
| HCI_READ_CLOCK = 0x0007, |
| HCI_READ_ENCRYPTION_KEY_SIZE = 0x0008, |
| HCI_READ_LOCAL_AMP_INFO = 0x0009, |
| HCI_READ_LOCAL_AMP_ASSOC = 0x000a, |
| HCI_WRITE_REMOTE_AMP_ASSOC = 0x000b |
| }; |
| |
| /* OGF 0x06 */ |
| #define OGF_TESTING_COMMANDS 0x06 |
| enum testing_commands { |
| HCI_READ_LOOPBACK_MODE = 0x0001, |
| HCI_WRITE_LOOPBACK_MODE = 0x0002, |
| HCI_ENABLE_DEVICE_UNDER_TEST_MODE = 0x0003, |
| HCI_WRITE_SIMPLE_PAIRING_DEBUG_MODE = 0x0004, |
| HCI_ENABLE_AMP_RECEIVER_REPORTS = 0x0007, |
| HCI_AMP_TEST_END = 0x0008, |
| HCI_AMP_TEST_COMMAND = 0x0009 |
| }; |
| |
| /* OGF 0x3f */ |
| #define OGF_EXTENSION 0X3f |
| enum hci_extension_commands { |
| HCI_SET_ACL_LINK_DATA_FLOW_MODE = 0x0010, |
| HCI_SET_ACL_LINK_STATUS = 0x0020, |
| HCI_SET_SCO_LINK_STATUS = 0x0030, |
| HCI_SET_RSSI_VALUE = 0x0040, |
| HCI_SET_CURRENT_BLUETOOTH_STATUS = 0x0041, |
| |
| /* The following is for RTK8723 */ |
| HCI_EXTENSION_VERSION_NOTIFY = 0x0100, |
| HCI_LINK_STATUS_NOTIFY = 0x0101, |
| HCI_BT_OPERATION_NOTIFY = 0x0102, |
| HCI_ENABLE_WIFI_SCAN_NOTIFY = 0x0103, |
| |
| |
| /* The following is for IVT */ |
| HCI_WIFI_CURRENT_CHANNEL = 0x0300, |
| HCI_WIFI_CURRENT_BANDWIDTH = 0x0301, |
| HCI_WIFI_CONNECTION_STATUS = 0x0302, |
| }; |
| |
| enum bt_spec { |
| BT_SPEC_1_0_b = 0x00, |
| BT_SPEC_1_1 = 0x01, |
| BT_SPEC_1_2 = 0x02, |
| BT_SPEC_2_0_EDR = 0x03, |
| BT_SPEC_2_1_EDR = 0x04, |
| BT_SPEC_3_0_HS = 0x05, |
| BT_SPEC_4_0 = 0x06 |
| }; |
| |
| /* The following is for BT 3.0 + HS EVENTS */ |
| enum hci_event { |
| HCI_EVENT_INQUIRY_COMPLETE = 0x01, |
| HCI_EVENT_INQUIRY_RESULT = 0x02, |
| HCI_EVENT_CONNECTION_COMPLETE = 0x03, |
| HCI_EVENT_CONNECTION_REQUEST = 0x04, |
| HCI_EVENT_DISCONNECTION_COMPLETE = 0x05, |
| HCI_EVENT_AUTHENTICATION_COMPLETE = 0x06, |
| HCI_EVENT_REMOTE_NAME_REQUEST_COMPLETE = 0x07, |
| HCI_EVENT_ENCRYPTION_CHANGE = 0x08, |
| HCI_EVENT_CHANGE_LINK_KEY_COMPLETE = 0x09, |
| HCI_EVENT_MASTER_LINK_KEY_COMPLETE = 0x0a, |
| HCI_EVENT_READ_REMOTE_SUPPORT_FEATURES_COMPLETE = 0x0b, |
| HCI_EVENT_READ_REMOTE_VER_INFO_COMPLETE = 0x0c, |
| HCI_EVENT_QOS_SETUP_COMPLETE = 0x0d, |
| HCI_EVENT_COMMAND_COMPLETE = 0x0e, |
| HCI_EVENT_COMMAND_STATUS = 0x0f, |
| HCI_EVENT_HARDWARE_ERROR = 0x10, |
| HCI_EVENT_FLUSH_OCCRUED = 0x11, |
| HCI_EVENT_ROLE_CHANGE = 0x12, |
| HCI_EVENT_NUMBER_OF_COMPLETE_PACKETS = 0x13, |
| HCI_EVENT_MODE_CHANGE = 0x14, |
| HCI_EVENT_RETURN_LINK_KEYS = 0x15, |
| HCI_EVENT_PIN_CODE_REQUEST = 0x16, |
| HCI_EVENT_LINK_KEY_REQUEST = 0x17, |
| HCI_EVENT_LINK_KEY_NOTIFICATION = 0x18, |
| HCI_EVENT_LOOPBACK_COMMAND = 0x19, |
| HCI_EVENT_DATA_BUFFER_OVERFLOW = 0x1a, |
| HCI_EVENT_MAX_SLOTS_CHANGE = 0x1b, |
| HCI_EVENT_READ_CLOCK_OFFSET_COMPLETE = 0x1c, |
| HCI_EVENT_CONNECT_PACKET_TYPE_CHANGE = 0x1d, |
| HCI_EVENT_QOS_VIOLATION = 0x1e, |
| HCI_EVENT_PAGE_SCAN_REPETITION_MODE_CHANGE = 0x20, |
| HCI_EVENT_FLOW_SEPC_COMPLETE = 0x21, |
| HCI_EVENT_INQUIRY_RESULT_WITH_RSSI = 0x22, |
| HCI_EVENT_READ_REMOTE_EXT_FEATURES_COMPLETE = 0x23, |
| HCI_EVENT_SYNC_CONNECT_COMPLETE = 0x2c, |
| HCI_EVENT_SYNC_CONNECT_CHANGE = 0x2d, |
| HCI_EVENT_SNIFFER_SUBRATING = 0x2e, |
| HCI_EVENT_EXTENTED_INQUIRY_RESULT = 0x2f, |
| HCI_EVENT_ENCRYPTION_KEY_REFLASH_COMPLETE = 0x30, |
| HCI_EVENT_IO_CAPIBILITY_COMPLETE = 0x31, |
| HCI_EVENT_IO_CAPIBILITY_RESPONSE = 0x32, |
| HCI_EVENT_USER_CONFIRMTION_REQUEST = 0x33, |
| HCI_EVENT_USER_PASSKEY_REQUEST = 0x34, |
| HCI_EVENT_REMOTE_OOB_DATA_REQUEST = 0x35, |
| HCI_EVENT_SIMPLE_PAIRING_COMPLETE = 0x36, |
| HCI_EVENT_LINK_SUPERVISION_TIMEOUT_CHANGE = 0x38, |
| HCI_EVENT_ENHANCED_FLUSH_COMPLETE = 0x39, |
| HCI_EVENT_USER_PASSKEY_NOTIFICATION = 0x3b, |
| HCI_EVENT_KEYPRESS_NOTIFICATION = 0x3c, |
| HCI_EVENT_REMOTE_HOST_SUPPORT_FEATURES_NOTIFICATION = 0x3d, |
| HCI_EVENT_PHY_LINK_COMPLETE = 0x40, |
| HCI_EVENT_CHANNEL_SELECT = 0x41, |
| HCI_EVENT_DISCONNECT_PHY_LINK_COMPLETE = 0x42, |
| HCI_EVENT_PHY_LINK_LOSS_EARLY_WARNING = 0x43, |
| HCI_EVENT_PHY_LINK_RECOVER = 0x44, |
| HCI_EVENT_LOGICAL_LINK_COMPLETE = 0x45, |
| HCI_EVENT_DISCONNECT_LOGICAL_LINK_COMPLETE = 0x46, |
| HCI_EVENT_FLOW_SPEC_MODIFY_COMPLETE = 0x47, |
| HCI_EVENT_NUM_OF_COMPLETE_DATA_BLOCKS = 0x48, |
| HCI_EVENT_AMP_START_TEST = 0x49, |
| HCI_EVENT_AMP_TEST_END = 0x4a, |
| HCI_EVENT_AMP_RECEIVER_REPORT = 0x4b, |
| HCI_EVENT_SHORT_RANGE_MODE_CHANGE_COMPLETE = 0x4c, |
| HCI_EVENT_AMP_STATUS_CHANGE = 0x4d, |
| HCI_EVENT_EXTENSION_RTK = 0xfe, |
| HCI_EVENT_EXTENSION_MOTO = 0xff, |
| }; |
| |
| enum hci_extension_event_moto { |
| HCI_EVENT_GET_BT_RSSI = 0x01, |
| }; |
| |
| enum hci_extension_event { |
| HCI_EVENT_EXT_WIFI_SCAN_NOTIFY = 0x01, |
| }; |
| |
| enum hci_event_mask_page_2 { |
| EMP2_HCI_EVENT_PHY_LINK_COMPLETE = 0x0000000000000001, |
| EMP2_HCI_EVENT_CHANNEL_SELECT = 0x0000000000000002, |
| EMP2_HCI_EVENT_DISCONNECT_PHY_LINK_COMPLETE = 0x0000000000000004, |
| EMP2_HCI_EVENT_PHY_LINK_LOSS_EARLY_WARNING = 0x0000000000000008, |
| EMP2_HCI_EVENT_PHY_LINK_RECOVER = 0x0000000000000010, |
| EMP2_HCI_EVENT_LOGICAL_LINK_COMPLETE = 0x0000000000000020, |
| EMP2_HCI_EVENT_DISCONNECT_LOGICAL_LINK_COMPLETE = 0x0000000000000040, |
| EMP2_HCI_EVENT_FLOW_SPEC_MODIFY_COMPLETE = 0x0000000000000080, |
| EMP2_HCI_EVENT_NUM_OF_COMPLETE_DATA_BLOCKS = 0x0000000000000100, |
| EMP2_HCI_EVENT_AMP_START_TEST = 0x0000000000000200, |
| EMP2_HCI_EVENT_AMP_TEST_END = 0x0000000000000400, |
| EMP2_HCI_EVENT_AMP_RECEIVER_REPORT = 0x0000000000000800, |
| EMP2_HCI_EVENT_SHORT_RANGE_MODE_CHANGE_COMPLETE = 0x0000000000001000, |
| EMP2_HCI_EVENT_AMP_STATUS_CHANGE = 0x0000000000002000, |
| }; |
| |
| enum hci_state_machine { |
| HCI_STATE_STARTING = 0x01, |
| HCI_STATE_CONNECTING = 0x02, |
| HCI_STATE_AUTHENTICATING = 0x04, |
| HCI_STATE_CONNECTED = 0x08, |
| HCI_STATE_DISCONNECTING = 0x10, |
| HCI_STATE_DISCONNECTED = 0x20 |
| }; |
| |
| enum amp_assoc_structure_type { |
| AMP_MAC_ADDR = 0x01, |
| AMP_PREFERRED_CHANNEL_LIST = 0x02, |
| AMP_CONNECTED_CHANNEL = 0x03, |
| AMP_80211_PAL_CAP_LIST = 0x04, |
| AMP_80211_PAL_VISION = 0x05, |
| AMP_RESERVED_FOR_TESTING = 0x33 |
| }; |
| |
| enum amp_btap_type { |
| AMP_BTAP_NONE, |
| AMP_BTAP_CREATOR, |
| AMP_BTAP_JOINER |
| }; |
| |
| enum hci_state_with_cmd { |
| STATE_CMD_CREATE_PHY_LINK, |
| STATE_CMD_ACCEPT_PHY_LINK, |
| STATE_CMD_DISCONNECT_PHY_LINK, |
| STATE_CMD_CONNECT_ACCEPT_TIMEOUT, |
| STATE_CMD_MAC_START_COMPLETE, |
| STATE_CMD_MAC_START_FAILED, |
| STATE_CMD_MAC_CONNECT_COMPLETE, |
| STATE_CMD_MAC_CONNECT_FAILED, |
| STATE_CMD_MAC_DISCONNECT_INDICATE, |
| STATE_CMD_MAC_CONNECT_CANCEL_INDICATE, |
| STATE_CMD_4WAY_FAILED, |
| STATE_CMD_4WAY_SUCCESSED, |
| STATE_CMD_ENTER_STATE, |
| STATE_CMD_NO_SUCH_CMD, |
| }; |
| |
| enum hci_service_type { |
| SERVICE_NO_TRAFFIC, |
| SERVICE_BEST_EFFORT, |
| SERVICE_GUARANTEE |
| }; |
| |
| enum hci_traffic_mode { |
| TRAFFIC_MODE_BEST_EFFORT = 0x00, |
| TRAFFIC_MODE_GUARANTEED_LATENCY = 0x01, |
| TRAFFIC_MODE_GUARANTEED_BANDWIDTH = 0x02, |
| TRAFFIC_MODE_GUARANTEED_LATENCY_AND_BANDWIDTH = 0x03 |
| }; |
| |
| #define HCIOPCODE(_OCF, _OGF) (_OGF<<10|_OCF) |
| #define HCIOPCODELOW(_OCF, _OGF) (u8)(HCIOPCODE(_OCF, _OGF)&0x00ff) |
| #define HCIOPCODEHIGHT(_OCF, _OGF) (u8)(HCIOPCODE(_OCF, _OGF)>>8) |
| |
| #define TWOBYTE_HIGHTBYTE(_DATA) (u8)(_DATA>>8) |
| #define TWOBYTE_LOWBYTE(_DATA) (u8)(_DATA) |
| |
| enum amp_status { |
| AMP_STATUS_AVA_PHY_PWR_DWN = 0x0, |
| AMP_STATUS_BT_USE_ONLY = 0x1, |
| AMP_STATUS_NO_CAPACITY_FOR_BT = 0x2, |
| AMP_STATUS_LOW_CAPACITY_FOR_BT = 0x3, |
| AMP_STATUS_MEDIUM_CAPACITY_FOR_BT = 0x4, |
| AMP_STATUS_HIGH_CAPACITY_FOR_BT = 0x5, |
| AMP_STATUS_FULL_CAPACITY_FOR_BT = 0x6 |
| }; |
| |
| enum bt_wpa_msg_type { |
| Type_BT_4way1st = 0, |
| Type_BT_4way2nd = 1, |
| Type_BT_4way3rd = 2, |
| Type_BT_4way4th = 3, |
| Type_BT_unknow = 4 |
| }; |
| |
| enum bt_connect_type { |
| BT_CONNECT_AUTH_REQ = 0x00, |
| BT_CONNECT_AUTH_RSP = 0x01, |
| BT_CONNECT_ASOC_REQ = 0x02, |
| BT_CONNECT_ASOC_RSP = 0x03, |
| BT_DISCONNECT = 0x04 |
| }; |
| |
| enum bt_ll_service_type { |
| BT_LL_BE = 0x01, |
| BT_LL_GU = 0x02 |
| }; |
| |
| enum bt_ll_flowspec { |
| BT_TX_BE_FS, /* TX best effort flowspec */ |
| BT_RX_BE_FS, /* RX best effort flowspec */ |
| BT_TX_GU_FS, /* TX guaranteed latency flowspec */ |
| BT_RX_GU_FS, /* RX guaranteed latency flowspec */ |
| BT_TX_BE_AGG_FS, /* TX aggregated best effort flowspec */ |
| BT_RX_BE_AGG_FS, /* RX aggregated best effort flowspec */ |
| BT_TX_GU_BW_FS, /* TX guaranteed bandwidth flowspec */ |
| BT_RX_GU_BW_FS, /* RX guaranteed bandwidth flowspec */ |
| BT_TX_GU_LARGE_FS, /* TX guaranteed latency flowspec, for testing only */ |
| BT_RX_GU_LARGE_FS, /* RX guaranteed latency flowspec, for testing only */ |
| }; |
| |
| enum bt_traffic_mode { |
| BT_MOTOR_EXT_BE = 0x00, /* Best Effort. Default. for HCRP, PAN, SDP, RFCOMM-based profiles like FTP, OPP, SPP, DUN, etc. */ |
| BT_MOTOR_EXT_GUL = 0x01, /* Guaranteed Latency. This type of traffic is used e.g. for HID and AVRCP. */ |
| BT_MOTOR_EXT_GUB = 0X02, /* Guaranteed Bandwidth. */ |
| BT_MOTOR_EXT_GULB = 0X03 /* Guaranteed Latency and Bandwidth. for A2DP and VDP. */ |
| }; |
| |
| enum bt_traffic_mode_profile { |
| BT_PROFILE_NONE, |
| BT_PROFILE_A2DP, |
| BT_PROFILE_PAN, |
| BT_PROFILE_HID, |
| BT_PROFILE_SCO |
| }; |
| |
| enum bt_link_role { |
| BT_LINK_MASTER = 0, |
| BT_LINK_SLAVE = 1 |
| }; |
| |
| enum bt_state_wpa_auth { |
| STATE_WPA_AUTH_UNINITIALIZED, |
| STATE_WPA_AUTH_WAIT_PACKET_1, /* Join */ |
| STATE_WPA_AUTH_WAIT_PACKET_2, /* Creat */ |
| STATE_WPA_AUTH_WAIT_PACKET_3, |
| STATE_WPA_AUTH_WAIT_PACKET_4, |
| STATE_WPA_AUTH_SUCCESSED |
| }; |
| |
| #define BT_WPA_AUTH_TIMEOUT_PERIOD 1000 |
| #define BTMaxWPAAuthReTransmitCoun 5 |
| |
| #define MAX_AMP_ASSOC_FRAG_LEN 248 |
| #define TOTAL_ALLOCIATE_ASSOC_LEN 1000 |
| |
| struct hci_flow_spec { |
| u8 Identifier; |
| u8 ServiceType; |
| u16 MaximumSDUSize; |
| u32 SDUInterArrivalTime; |
| u32 AccessLatency; |
| u32 FlushTimeout; |
| }; |
| |
| struct hci_log_link_cmd_data { |
| u8 BtPhyLinkhandle; |
| u16 BtLogLinkhandle; |
| u8 BtTxFlowSpecID; |
| struct hci_flow_spec Tx_Flow_Spec; |
| struct hci_flow_spec Rx_Flow_Spec; |
| u32 TxPacketCount; |
| u32 BestEffortFlushTimeout; |
| |
| u8 bLLCompleteEventIsSet; |
| |
| u8 bLLCancelCMDIsSetandComplete; |
| }; |
| |
| struct hci_phy_link_cmd_data { |
| /* Physical_Link_Handle */ |
| u8 BtPhyLinkhandle; |
| |
| u16 LinkSuperversionTimeout; |
| |
| /* u16 SuperTimeOutCnt; */ |
| |
| /* Dedicated_AMP_Key_Length */ |
| u8 BtAMPKeyLen; |
| /* Dedicated_AMP_Key_Type */ |
| u8 BtAMPKeyType; |
| /* Dedicated_AMP_Key */ |
| u8 BtAMPKey[PMK_LEN]; |
| }; |
| |
| struct amp_assoc_structure { |
| /* TYPE ID */ |
| u8 TypeID; |
| /* Length */ |
| u16 Length; |
| /* Value */ |
| u8 Data[1]; |
| }; |
| |
| struct amp_pref_chnl_regulatory { |
| u8 reXId; |
| u8 regulatoryClass; |
| u8 coverageClass; |
| }; |
| |
| struct amp_assoc_cmd_data { |
| /* Physical_Link_Handle */ |
| u8 BtPhyLinkhandle; |
| /* Length_So_Far */ |
| u16 LenSoFar; |
| |
| u16 MaxRemoteASSOCLen; |
| /* AMP_ASSOC_Remaining_Length */ |
| u16 AMPAssocRemLen; |
| /* AMP_ASSOC_fragment */ |
| void *AMPAssocfragment; |
| }; |
| |
| struct hci_link_info { |
| u16 ConnectHandle; |
| u8 IncomingTrafficMode; |
| u8 OutgoingTrafficMode; |
| u8 BTProfile; |
| u8 BTCoreSpec; |
| s8 BT_RSSI; |
| u8 TrafficProfile; |
| u8 linkRole; |
| }; |
| |
| struct hci_ext_config { |
| struct hci_link_info linkInfo[MAX_BT_ASOC_ENTRY_NUM]; |
| u8 btOperationCode; |
| u16 CurrentConnectHandle; |
| u8 CurrentIncomingTrafficMode; |
| u8 CurrentOutgoingTrafficMode; |
| s8 MIN_BT_RSSI; |
| u8 NumberOfHandle; |
| u8 NumberOfSCO; |
| u8 CurrentBTStatus; |
| u16 HCIExtensionVer; |
| |
| /* Bt coexist related */ |
| u8 btProfileCase; |
| u8 btProfileAction; |
| u8 bManualControl; |
| u8 bBTBusy; |
| u8 bBTA2DPBusy; |
| u8 bEnableWifiScanNotify; |
| |
| u8 bHoldForBtOperation; |
| u32 bHoldPeriodCnt; |
| }; |
| |
| struct hci_acl_packet_data { |
| u16 ACLDataPacketLen; |
| u8 SyncDataPacketLen; |
| u16 TotalNumACLDataPackets; |
| u16 TotalSyncNumDataPackets; |
| }; |
| |
| struct hci_phy_link_bss_info { |
| u16 bdCap; /* capability information */ |
| }; |
| |
| struct packet_irp_hcicmd_data { |
| u16 OCF:10; |
| u16 OGF:6; |
| u8 Length; |
| u8 Data[20]; |
| }; |
| |
| struct bt_asoc_entry { |
| u8 bUsed; |
| u8 mAssoc; |
| u8 b4waySuccess; |
| u8 Bssid[6]; |
| struct hci_phy_link_cmd_data PhyLinkCmdData; |
| |
| struct hci_log_link_cmd_data LogLinkCmdData[MAX_LOGICAL_LINK_NUM]; |
| |
| struct hci_acl_packet_data ACLPacketsData; |
| |
| struct amp_assoc_cmd_data AmpAsocCmdData; |
| struct octet_string BTSsid; |
| u8 BTSsidBuf[33]; |
| |
| enum hci_status PhyLinkDisconnectReason; |
| |
| u8 bSendSupervisionPacket; |
| /* u8 CurrentSuervisionPacketSendNum; */ |
| /* u8 LastSuervisionPacketSendNum; */ |
| u32 NoRxPktCnt; |
| /* Is Creator or Joiner */ |
| enum amp_btap_type AMPRole; |
| |
| /* BT current state */ |
| u8 BtCurrentState; |
| /* BT next state */ |
| u8 BtNextState; |
| |
| u8 bNeedPhysLinkCompleteEvent; |
| |
| enum hci_status PhysLinkCompleteStatus; |
| |
| u8 BTRemoteMACAddr[6]; |
| |
| u32 BTCapability; |
| |
| u8 SyncDataPacketLen; |
| |
| u16 TotalSyncNumDataPackets; |
| u16 TotalNumACLDataPackets; |
| |
| u8 ShortRangeMode; |
| |
| u8 PTK[PTK_LEN_TKIP]; |
| u8 GTK[GTK_LEN]; |
| u8 ANonce[KEY_NONCE_LEN]; |
| u8 SNonce[KEY_NONCE_LEN]; |
| u64 KeyReplayCounter; |
| u8 WPAAuthReplayCount; |
| u8 AESKeyBuf[AESCCMP_BLK_SIZE_TOTAL]; |
| u8 PMK[PMK_LEN]; |
| enum bt_state_wpa_auth BTWPAAuthState; |
| s32 UndecoratedSmoothedPWDB; |
| |
| /* Add for HW security !! */ |
| u8 HwCAMIndex; /* Cam index */ |
| u8 bPeerQosSta; |
| |
| u32 rxSuvpPktCnt; |
| }; |
| |
| struct bt_traffic_statistics { |
| u8 bTxBusyTraffic; |
| u8 bRxBusyTraffic; |
| u8 bIdle; |
| u32 TxPktCntInPeriod; |
| u32 RxPktCntInPeriod; |
| u64 TxPktLenInPeriod; |
| u64 RxPktLenInPeriod; |
| }; |
| |
| struct bt_mgnt { |
| u8 bBTConnectInProgress; |
| u8 bLogLinkInProgress; |
| u8 bPhyLinkInProgress; |
| u8 bPhyLinkInProgressStartLL; |
| u8 BtCurrentPhyLinkhandle; |
| u16 BtCurrentLogLinkhandle; |
| u8 CurrentConnectEntryNum; |
| u8 DisconnectEntryNum; |
| u8 CurrentBTConnectionCnt; |
| enum bt_connect_type BTCurrentConnectType; |
| enum bt_connect_type BTReceiveConnectPkt; |
| u8 BTAuthCount; |
| u8 BTAsocCount; |
| u8 bStartSendSupervisionPkt; |
| u8 BtOperationOn; |
| u8 BTNeedAMPStatusChg; |
| u8 JoinerNeedSendAuth; |
| struct hci_phy_link_bss_info bssDesc; |
| struct hci_ext_config ExtConfig; |
| u8 bNeedNotifyAMPNoCap; |
| u8 bCreateSpportQos; |
| u8 bSupportProfile; |
| u8 BTChannel; |
| u8 CheckChnlIsSuit; |
| u8 bBtScan; |
| u8 btLogoTest; |
| }; |
| |
| struct bt_hci_dgb_info { |
| u32 hciCmdCnt; |
| u32 hciCmdCntUnknown; |
| u32 hciCmdCntCreatePhyLink; |
| u32 hciCmdCntAcceptPhyLink; |
| u32 hciCmdCntDisconnectPhyLink; |
| u32 hciCmdPhyLinkStatus; |
| u32 hciCmdCntCreateLogLink; |
| u32 hciCmdCntAcceptLogLink; |
| u32 hciCmdCntDisconnectLogLink; |
| u32 hciCmdCntReadLocalAmpAssoc; |
| u32 hciCmdCntWriteRemoteAmpAssoc; |
| u32 hciCmdCntSetAclLinkStatus; |
| u32 hciCmdCntSetScoLinkStatus; |
| u32 hciCmdCntExtensionVersionNotify; |
| u32 hciCmdCntLinkStatusNotify; |
| }; |
| |
| struct bt_irp_dgb_info { |
| u32 irpMJCreate; |
| /* Io Control */ |
| u32 irpIoControl; |
| u32 irpIoCtrlHciCmd; |
| u32 irpIoCtrlHciEvent; |
| u32 irpIoCtrlHciTxData; |
| u32 irpIoCtrlHciRxData; |
| u32 irpIoCtrlUnknown; |
| |
| u32 irpIoCtrlHciTxData1s; |
| }; |
| |
| struct bt_packet_dgb_info { |
| u32 btPktTxProbReq; |
| u32 btPktRxProbReq; |
| u32 btPktRxProbReqFail; |
| u32 btPktTxProbRsp; |
| u32 btPktRxProbRsp; |
| u32 btPktTxAuth; |
| u32 btPktRxAuth; |
| u32 btPktRxAuthButDrop; |
| u32 btPktTxAssocReq; |
| u32 btPktRxAssocReq; |
| u32 btPktRxAssocReqButDrop; |
| u32 btPktTxAssocRsp; |
| u32 btPktRxAssocRsp; |
| u32 btPktTxDisassoc; |
| u32 btPktRxDisassoc; |
| u32 btPktRxDeauth; |
| u32 btPktTx4way1st; |
| u32 btPktRx4way1st; |
| u32 btPktTx4way2nd; |
| u32 btPktRx4way2nd; |
| u32 btPktTx4way3rd; |
| u32 btPktRx4way3rd; |
| u32 btPktTx4way4th; |
| u32 btPktRx4way4th; |
| u32 btPktTxLinkSuperReq; |
| u32 btPktRxLinkSuperReq; |
| u32 btPktTxLinkSuperRsp; |
| u32 btPktRxLinkSuperRsp; |
| u32 btPktTxData; |
| u32 btPktRxData; |
| }; |
| |
| struct bt_dgb { |
| u8 dbgCtrl; |
| u32 dbgProfile; |
| struct bt_hci_dgb_info dbgHciInfo; |
| struct bt_irp_dgb_info dbgIrpInfo; |
| struct bt_packet_dgb_info dbgBtPkt; |
| }; |
| |
| struct bt_hci_info { |
| /* 802.11 Pal version specifier */ |
| u8 BTPalVersion; |
| u16 BTPalCompanyID; |
| u16 BTPalsubversion; |
| |
| /* Connected channel list */ |
| u16 BTConnectChnlListLen; |
| u8 BTConnectChnllist[64]; |
| |
| /* Fail contact counter */ |
| u16 FailContactCount; |
| |
| /* Event mask */ |
| u64 BTEventMask; |
| u64 BTEventMaskPage2; |
| |
| /* timeout var */ |
| u16 ConnAcceptTimeout; |
| u16 LogicalAcceptTimeout; |
| u16 PageTimeout; |
| |
| u8 LocationDomainAware; |
| u16 LocationDomain; |
| u8 LocationDomainOptions; |
| u8 LocationOptions; |
| |
| u8 FlowControlMode; |
| |
| /* Preferred channel list */ |
| u16 BtPreChnlListLen; |
| u8 BTPreChnllist[64]; |
| |
| u16 enFlush_LLH; /* enhanced flush handle */ |
| u16 FLTO_LLH; /* enhanced flush handle */ |
| |
| /* */ |
| /* Test command only. */ |
| u8 bInTestMode; |
| u8 bTestIsEnd; |
| u8 bTestNeedReport; |
| u8 TestScenario; |
| u8 TestReportInterval; |
| u8 TestCtrType; |
| u32 TestEventType; |
| u16 TestNumOfFrame; |
| u16 TestNumOfErrFrame; |
| u16 TestNumOfBits; |
| u16 TestNumOfErrBits; |
| /* */ |
| }; |
| |
| struct bt_traffic { |
| /* Add for check replay data */ |
| u8 LastRxUniFragNum; |
| u16 LastRxUniSeqNum; |
| |
| /* s32 EntryMaxUndecoratedSmoothedPWDB; */ |
| /* s32 EntryMinUndecoratedSmoothedPWDB; */ |
| |
| struct bt_traffic_statistics Bt30TrafficStatistics; |
| }; |
| |
| #define RT_WORK_ITEM struct work_struct |
| |
| struct bt_security { |
| /* WPA auth state |
| * May need to remove to BTSecInfo ... |
| * enum bt_state_wpa_auth BTWPAAuthState; |
| */ |
| struct octet_string RSNIE; |
| u8 RSNIEBuf[MAXRSNIELEN]; |
| u8 bRegNoEncrypt; |
| u8 bUsedHwEncrypt; |
| }; |
| |
| struct bt_30info { |
| struct rtw_adapter *padapter; |
| struct bt_asoc_entry BtAsocEntry[MAX_BT_ASOC_ENTRY_NUM]; |
| struct bt_mgnt BtMgnt; |
| struct bt_dgb BtDbg; |
| struct bt_hci_info BtHciInfo; |
| struct bt_traffic BtTraffic; |
| struct bt_security BtSec; |
| RT_WORK_ITEM HCICmdWorkItem; |
| struct timer_list BTHCICmdTimer; |
| RT_WORK_ITEM BTPsDisableWorkItem; |
| RT_WORK_ITEM BTConnectWorkItem; |
| struct timer_list BTHCIDiscardAclDataTimer; |
| struct timer_list BTHCIJoinTimeoutTimer; |
| struct timer_list BTTestSendPacketTimer; |
| struct timer_list BTDisconnectPhyLinkTimer; |
| struct timer_list BTBeaconTimer; |
| u8 BTBeaconTmrOn; |
| |
| struct timer_list BTPsDisableTimer; |
| |
| void * pBtChnlList; |
| }; |
| |
| struct packet_irp_acl_data { |
| u16 Handle:12; |
| u16 PB_Flag:2; |
| u16 BC_Flag:2; |
| u16 Length; |
| u8 Data[1]; |
| }; |
| |
| struct packet_irp_hcievent_data { |
| u8 EventCode; |
| u8 Length; |
| u8 Data[20]; |
| }; |
| |
| struct common_triple { |
| u8 byte_1st; |
| u8 byte_2nd; |
| u8 byte_3rd; |
| }; |
| |
| #define COUNTRY_STR_LEN 3 /* country string len = 3 */ |
| |
| #define LOCAL_PMK 0 |
| |
| enum hci_wifi_connect_status { |
| HCI_WIFI_NOT_CONNECTED = 0x0, |
| HCI_WIFI_CONNECTED = 0x1, |
| HCI_WIFI_CONNECT_IN_PROGRESS = 0x2, |
| }; |
| |
| enum hci_ext_bp_operation { |
| HCI_BT_OP_NONE = 0x0, |
| HCI_BT_OP_INQUIRY_START = 0x1, |
| HCI_BT_OP_INQUIRY_FINISH = 0x2, |
| HCI_BT_OP_PAGING_START = 0x3, |
| HCI_BT_OP_PAGING_SUCCESS = 0x4, |
| HCI_BT_OP_PAGING_UNSUCCESS = 0x5, |
| HCI_BT_OP_PAIRING_START = 0x6, |
| HCI_BT_OP_PAIRING_FINISH = 0x7, |
| HCI_BT_OP_BT_DEV_ENABLE = 0x8, |
| HCI_BT_OP_BT_DEV_DISABLE = 0x9, |
| HCI_BT_OP_MAX |
| }; |
| |
| #define BTHCI_SM_WITH_INFO(_Adapter, _StateToEnter, _StateCmd, _EntryNum) \ |
| { \ |
| RTPRINT(FIOCTL, IOCTL_STATE, ("[BT state change] caused by ""%s"", line =%d\n", __func__, __LINE__)); \ |
| BTHCI_StateMachine(_Adapter, _StateToEnter, _StateCmd, _EntryNum);\ |
| } |
| |
| void BTHCI_EventParse(struct rtw_adapter *padapter, void *pEvntData, |
| u32 dataLen); |
| #define BT_EventParse BTHCI_EventParse |
| u8 BTHCI_HsConnectionEstablished(struct rtw_adapter *padapter); |
| void BTHCI_UpdateBTProfileRTKToMoto(struct rtw_adapter *padapter); |
| void BTHCI_WifiScanNotify(struct rtw_adapter *padapter, u8 scanType); |
| void BTHCI_StateMachine(struct rtw_adapter *padapter, u8 StateToEnter, |
| enum hci_state_with_cmd StateCmd, u8 EntryNum); |
| void BTHCI_DisconnectPeer(struct rtw_adapter *padapter, u8 EntryNum); |
| void BTHCI_EventNumOfCompletedDataBlocks(struct rtw_adapter *padapter); |
| void BTHCI_EventAMPStatusChange(struct rtw_adapter *padapter, u8 AMP_Status); |
| void BTHCI_DisconnectAll(struct rtw_adapter *padapter); |
| enum hci_status BTHCI_HandleHCICMD(struct rtw_adapter *padapter, |
| struct packet_irp_hcicmd_data *pHciCmd); |
| |
| /* ===== End of sync from SD7 driver COMMON/bt_hci.h ===== */ |
| |
| /* ===== Below this line is sync from SD7 driver HAL/BTCoexist/HalBtc87231Ant.h ===== */ |
| #define GET_BT_INFO(padapter) (&GET_HAL_DATA(padapter)->BtInfo) |
| |
| #define BTC_FOR_SCAN_START 1 |
| #define BTC_FOR_SCAN_FINISH 0 |
| |
| #define BT_TXRX_CNT_THRES_1 1200 |
| #define BT_TXRX_CNT_THRES_2 1400 |
| #define BT_TXRX_CNT_THRES_3 3000 |
| #define BT_TXRX_CNT_LEVEL_0 0 /* < 1200 */ |
| #define BT_TXRX_CNT_LEVEL_1 1 /* >= 1200 && < 1400 */ |
| #define BT_TXRX_CNT_LEVEL_2 2 /* >= 1400 */ |
| #define BT_TXRX_CNT_LEVEL_3 3 /* >= 3000 */ |
| |
| enum bt_state_1ant { |
| BT_INFO_STATE_DISABLED = 0, |
| BT_INFO_STATE_NO_CONNECTION = 1, |
| BT_INFO_STATE_CONNECT_IDLE = 2, |
| BT_INFO_STATE_INQ_OR_PAG = 3, |
| BT_INFO_STATE_ACL_ONLY_BUSY = 4, |
| BT_INFO_STATE_SCO_ONLY_BUSY = 5, |
| BT_INFO_STATE_ACL_SCO_BUSY = 6, |
| BT_INFO_STATE_ACL_INQ_OR_PAG = 7, |
| BT_INFO_STATE_MAX = 8 |
| }; |
| |
| struct btdm_8723a_1ant { |
| u8 prePsTdma; |
| u8 curPsTdma; |
| u8 psTdmaDuAdjType; |
| u8 bPrePsTdmaOn; |
| u8 bCurPsTdmaOn; |
| u8 preWifiPara; |
| u8 curWifiPara; |
| u8 preCoexWifiCon; |
| u8 curCoexWifiCon; |
| u8 wifiRssiThresh; |
| |
| u32 psTdmaMonitorCnt; |
| u32 psTdmaGlobalCnt; |
| |
| /* DurationAdjust For SCO */ |
| u32 psTdmaMonitorCntForSCO; |
| u8 psTdmaDuAdjTypeForSCO; |
| u8 RSSI_WiFi_Last; |
| u8 RSSI_BT_Last; |
| |
| u8 bWiFiHalt; |
| u8 bRAChanged; |
| }; |
| |
| void BTDM_1AntSignalCompensation(struct rtw_adapter *padapter, |
| u8 *rssi_wifi, u8 *rssi_bt); |
| void BTDM_1AntForDhcp(struct rtw_adapter *padapter); |
| void BTDM_1AntBtCoexist8723A(struct rtw_adapter *padapter); |
| |
| /* ===== End of sync from SD7 driver HAL/BTCoexist/HalBtc87231Ant.h ===== */ |
| |
| /* ===== Below this line is sync from SD7 driver HAL/BTCoexist/HalBtc87232Ant.h ===== */ |
| enum bt_2ant_bt_status { |
| BT_2ANT_BT_STATUS_IDLE = 0x0, |
| BT_2ANT_BT_STATUS_CONNECTED_IDLE = 0x1, |
| BT_2ANT_BT_STATUS_NON_IDLE = 0x2, |
| BT_2ANT_BT_STATUS_MAX |
| }; |
| |
| enum bt_2ant_coex_algo { |
| BT_2ANT_COEX_ALGO_UNDEFINED = 0x0, |
| BT_2ANT_COEX_ALGO_SCO = 0x1, |
| BT_2ANT_COEX_ALGO_HID = 0x2, |
| BT_2ANT_COEX_ALGO_A2DP = 0x3, |
| BT_2ANT_COEX_ALGO_PANEDR = 0x4, |
| BT_2ANT_COEX_ALGO_PANHS = 0x5, |
| BT_2ANT_COEX_ALGO_PANEDR_A2DP = 0x6, |
| BT_2ANT_COEX_ALGO_PANEDR_HID = 0x7, |
| BT_2ANT_COEX_ALGO_HID_A2DP_PANEDR = 0x8, |
| BT_2ANT_COEX_ALGO_HID_A2DP = 0x9, |
| BT_2ANT_COEX_ALGO_HID_A2DP_PANHS = 0xA, |
| BT_2ANT_COEX_ALGO_MAX = 0xB, |
| }; |
| |
| struct btdm_8723a_2ant { |
| u8 bPreDecBtPwr; |
| u8 bCurDecBtPwr; |
| |
| u8 preWlanActHi; |
| u8 curWlanActHi; |
| u8 preWlanActLo; |
| u8 curWlanActLo; |
| |
| u8 preFwDacSwingLvl; |
| u8 curFwDacSwingLvl; |
| |
| u8 bPreRfRxLpfShrink; |
| u8 bCurRfRxLpfShrink; |
| |
| u8 bPreLowPenaltyRa; |
| u8 bCurLowPenaltyRa; |
| |
| u8 preBtRetryIndex; |
| u8 curBtRetryIndex; |
| |
| u8 bPreDacSwingOn; |
| u32 preDacSwingLvl; |
| u8 bCurDacSwingOn; |
| u32 curDacSwingLvl; |
| |
| u8 bPreAdcBackOff; |
| u8 bCurAdcBackOff; |
| |
| u8 bPreAgcTableEn; |
| u8 bCurAgcTableEn; |
| |
| u32 preVal0x6c0; |
| u32 curVal0x6c0; |
| u32 preVal0x6c8; |
| u32 curVal0x6c8; |
| u8 preVal0x6cc; |
| u8 curVal0x6cc; |
| |
| u8 bCurIgnoreWlanAct; |
| u8 bPreIgnoreWlanAct; |
| |
| u8 prePsTdma; |
| u8 curPsTdma; |
| u8 psTdmaDuAdjType; |
| u8 bPrePsTdmaOn; |
| u8 bCurPsTdmaOn; |
| |
| u8 preAlgorithm; |
| u8 curAlgorithm; |
| u8 bResetTdmaAdjust; |
| |
| u8 btStatus; |
| }; |
| |
| void BTDM_2AntBtCoexist8723A(struct rtw_adapter *padapter); |
| /* ===== End of sync from SD7 driver HAL/BTCoexist/HalBtc87232Ant.h ===== */ |
| |
| /* ===== Below this line is sync from SD7 driver HAL/BTCoexist/HalBtc8723.h ===== */ |
| |
| #define BT_Q_PKT_OFF 0 |
| #define BT_Q_PKT_ON 1 |
| |
| #define BT_TX_PWR_OFF 0 |
| #define BT_TX_PWR_ON 1 |
| |
| /* TDMA mode definition */ |
| #define TDMA_2ANT 0 |
| #define TDMA_1ANT 1 |
| #define TDMA_NAV_OFF 0 |
| #define TDMA_NAV_ON 1 |
| #define TDMA_DAC_SWING_OFF 0 |
| #define TDMA_DAC_SWING_ON 1 |
| |
| #define BT_RSSI_LEVEL_H 0 |
| #define BT_RSSI_LEVEL_M 1 |
| #define BT_RSSI_LEVEL_L 2 |
| |
| /* PTA mode related definition */ |
| #define BT_PTA_MODE_OFF 0 |
| #define BT_PTA_MODE_ON 1 |
| |
| /* Penalty Tx Rate Adaptive */ |
| #define BT_TX_RATE_ADAPTIVE_NORMAL 0 |
| #define BT_TX_RATE_ADAPTIVE_LOW_PENALTY 1 |
| |
| /* RF Corner */ |
| #define BT_RF_RX_LPF_CORNER_RESUME 0 |
| #define BT_RF_RX_LPF_CORNER_SHRINK 1 |
| |
| #define BT_INFO_ACL BIT(0) |
| #define BT_INFO_SCO BIT(1) |
| #define BT_INFO_INQ_PAG BIT(2) |
| #define BT_INFO_ACL_BUSY BIT(3) |
| #define BT_INFO_SCO_BUSY BIT(4) |
| #define BT_INFO_HID BIT(5) |
| #define BT_INFO_A2DP BIT(6) |
| #define BT_INFO_FTP BIT(7) |
| |
| |
| |
| struct bt_coexist_8723a { |
| u32 highPriorityTx; |
| u32 highPriorityRx; |
| u32 lowPriorityTx; |
| u32 lowPriorityRx; |
| u8 btRssi; |
| u8 TotalAntNum; |
| u8 bC2hBtInfoSupport; |
| u8 c2hBtInfo; |
| u8 c2hBtInfoOriginal; |
| u8 prec2hBtInfo; /* for 1Ant */ |
| u8 bC2hBtInquiryPage; |
| unsigned long btInqPageStartTime; /* for 2Ant */ |
| u8 c2hBtProfile; /* for 1Ant */ |
| u8 btRetryCnt; |
| u8 btInfoExt; |
| u8 bC2hBtInfoReqSent; |
| u8 bForceFwBtInfo; |
| u8 bForceA2dpSink; |
| struct btdm_8723a_2ant btdm2Ant; |
| struct btdm_8723a_1ant btdm1Ant; |
| }; |
| |
| void BTDM_SetFwChnlInfo(struct rtw_adapter *padapter, |
| enum rt_media_status mstatus); |
| u8 BTDM_IsWifiConnectionExist(struct rtw_adapter *padapter); |
| void BTDM_SetFw3a(struct rtw_adapter *padapter, u8 byte1, u8 byte2, u8 byte3, |
| u8 byte4, u8 byte5); |
| void BTDM_QueryBtInformation(struct rtw_adapter *padapter); |
| void BTDM_SetSwRfRxLpfCorner(struct rtw_adapter *padapter, u8 type); |
| void BTDM_SetSwPenaltyTxRateAdaptive(struct rtw_adapter *padapter, u8 raType); |
| void BTDM_SetFwDecBtPwr(struct rtw_adapter *padapter, u8 bDecBtPwr); |
| u8 BTDM_BtProfileSupport(struct rtw_adapter *padapter); |
| void BTDM_LpsLeave(struct rtw_adapter *padapter); |
| |
| /* ===== End of sync from SD7 driver HAL/BTCoexist/HalBtc8723.h ===== */ |
| |
| /* ===== Below this line is sync from SD7 driver HAL/BTCoexist/HalBtcCsr1Ant.h ===== */ |
| |
| enum BT_A2DP_INDEX{ |
| BT_A2DP_INDEX0 = 0, /* 32, 12; the most critical for BT */ |
| BT_A2DP_INDEX1, /* 12, 24 */ |
| BT_A2DP_INDEX2, /* 0, 0 */ |
| BT_A2DP_INDEX_MAX |
| }; |
| |
| #define BT_A2DP_STATE_NOT_ENTERED 0 |
| #define BT_A2DP_STATE_DETECTING 1 |
| #define BT_A2DP_STATE_DETECTED 2 |
| |
| #define BTDM_ANT_BT_IDLE 0 |
| #define BTDM_ANT_WIFI 1 |
| #define BTDM_ANT_BT 2 |
| |
| |
| void BTDM_SingleAnt(struct rtw_adapter *padapter, u8 bSingleAntOn, |
| u8 bInterruptOn, u8 bMultiNAVOn); |
| void BTDM_CheckBTIdleChange1Ant(struct rtw_adapter *padapter); |
| |
| /* ===== End of sync from SD7 driver HAL/BTCoexist/HalBtcCsr1Ant.h ===== */ |
| |
| /* ===== Below this line is sync from SD7 driver HAL/BTCoexist/HalBtcCsr2Ant.h ===== */ |
| |
| /* */ |
| /* For old core stack before v251 */ |
| /* */ |
| #define BT_RSSI_STATE_NORMAL_POWER BIT(0) |
| #define BT_RSSI_STATE_AMDPU_OFF BIT(1) |
| #define BT_RSSI_STATE_SPECIAL_LOW BIT(2) |
| #define BT_RSSI_STATE_BG_EDCA_LOW BIT(3) |
| #define BT_RSSI_STATE_TXPOWER_LOW BIT(4) |
| |
| #define BT_DACSWING_OFF 0 |
| #define BT_DACSWING_M4 1 |
| #define BT_DACSWING_M7 2 |
| #define BT_DACSWING_M10 3 |
| |
| void BTDM_DiminishWiFi(struct rtw_adapter *Adapter, u8 bDACOn, u8 bInterruptOn, |
| u8 DACSwingLevel, u8 bNAVOn); |
| |
| /* ===== End of sync from SD7 driver HAL/BTCoexist/HalBtcCsr2Ant.h ===== */ |
| |
| /* HEADER/TypeDef.h */ |
| #define MAX_FW_SUPPORT_MACID_NUM 64 |
| |
| /* ===== Below this line is sync from SD7 driver HAL/BTCoexist/HalBtCoexist.h ===== */ |
| |
| #define FW_VER_BT_REG 62 |
| #define FW_VER_BT_REG1 74 |
| #define REG_BT_ACTIVE 0x444 |
| #define REG_BT_STATE 0x448 |
| #define REG_BT_POLLING1 0x44c |
| #define REG_BT_POLLING 0x700 |
| |
| #define REG_BT_ACTIVE_OLD 0x488 |
| #define REG_BT_STATE_OLD 0x48c |
| #define REG_BT_POLLING_OLD 0x490 |
| |
| /* The reg define is for 8723 */ |
| #define REG_HIGH_PRIORITY_TXRX 0x770 |
| #define REG_LOW_PRIORITY_TXRX 0x774 |
| |
| #define BT_FW_COEX_THRESH_TOL 6 |
| #define BT_FW_COEX_THRESH_20 20 |
| #define BT_FW_COEX_THRESH_23 23 |
| #define BT_FW_COEX_THRESH_25 25 |
| #define BT_FW_COEX_THRESH_30 30 |
| #define BT_FW_COEX_THRESH_35 35 |
| #define BT_FW_COEX_THRESH_40 40 |
| #define BT_FW_COEX_THRESH_45 45 |
| #define BT_FW_COEX_THRESH_47 47 |
| #define BT_FW_COEX_THRESH_50 50 |
| #define BT_FW_COEX_THRESH_55 55 |
| #define BT_FW_COEX_THRESH_65 65 |
| |
| #define BT_COEX_STATE_BT30 BIT(0) |
| #define BT_COEX_STATE_WIFI_HT20 BIT(1) |
| #define BT_COEX_STATE_WIFI_HT40 BIT(2) |
| #define BT_COEX_STATE_WIFI_LEGACY BIT(3) |
| |
| #define BT_COEX_STATE_WIFI_RSSI_LOW BIT(4) |
| #define BT_COEX_STATE_WIFI_RSSI_MEDIUM BIT(5) |
| #define BT_COEX_STATE_WIFI_RSSI_HIGH BIT(6) |
| #define BT_COEX_STATE_DEC_BT_POWER BIT(7) |
| |
| #define BT_COEX_STATE_WIFI_IDLE BIT(8) |
| #define BT_COEX_STATE_WIFI_UPLINK BIT(9) |
| #define BT_COEX_STATE_WIFI_DOWNLINK BIT(10) |
| |
| #define BT_COEX_STATE_BT_INQ_PAGE BIT(11) |
| #define BT_COEX_STATE_BT_IDLE BIT(12) |
| #define BT_COEX_STATE_BT_UPLINK BIT(13) |
| #define BT_COEX_STATE_BT_DOWNLINK BIT(14) |
| /* */ |
| /* Todo: Remove these definitions */ |
| #define BT_COEX_STATE_BT_PAN_IDLE BIT(15) |
| #define BT_COEX_STATE_BT_PAN_UPLINK BIT(16) |
| #define BT_COEX_STATE_BT_PAN_DOWNLINK BIT(17) |
| #define BT_COEX_STATE_BT_A2DP_IDLE BIT(18) |
| /* */ |
| #define BT_COEX_STATE_BT_RSSI_LOW BIT(19) |
| |
| #define BT_COEX_STATE_PROFILE_HID BIT(20) |
| #define BT_COEX_STATE_PROFILE_A2DP BIT(21) |
| #define BT_COEX_STATE_PROFILE_PAN BIT(22) |
| #define BT_COEX_STATE_PROFILE_SCO BIT(23) |
| |
| #define BT_COEX_STATE_WIFI_RSSI_1_LOW BIT(24) |
| #define BT_COEX_STATE_WIFI_RSSI_1_MEDIUM BIT(25) |
| #define BT_COEX_STATE_WIFI_RSSI_1_HIGH BIT(26) |
| |
| #define BT_COEX_STATE_WIFI_RSSI_BEACON_LOW BIT(27) |
| #define BT_COEX_STATE_WIFI_RSSI_BEACON_MEDIUM BIT(28) |
| #define BT_COEX_STATE_WIFI_RSSI_BEACON_HIGH BIT(29) |
| |
| |
| #define BT_COEX_STATE_BTINFO_COMMON BIT(30) |
| #define BT_COEX_STATE_BTINFO_B_HID_SCOESCO BIT(31) |
| #define BT_COEX_STATE_BTINFO_B_FTP_A2DP BIT(32) |
| |
| #define BT_COEX_STATE_BT_CNT_LEVEL_0 BIT(33) |
| #define BT_COEX_STATE_BT_CNT_LEVEL_1 BIT(34) |
| #define BT_COEX_STATE_BT_CNT_LEVEL_2 BIT(35) |
| #define BT_COEX_STATE_BT_CNT_LEVEL_3 BIT(36) |
| |
| #define BT_RSSI_STATE_HIGH 0 |
| #define BT_RSSI_STATE_MEDIUM 1 |
| #define BT_RSSI_STATE_LOW 2 |
| #define BT_RSSI_STATE_STAY_HIGH 3 |
| #define BT_RSSI_STATE_STAY_MEDIUM 4 |
| #define BT_RSSI_STATE_STAY_LOW 5 |
| |
| #define BT_AGCTABLE_OFF 0 |
| #define BT_AGCTABLE_ON 1 |
| |
| #define BT_BB_BACKOFF_OFF 0 |
| #define BT_BB_BACKOFF_ON 1 |
| |
| #define BT_FW_NAV_OFF 0 |
| #define BT_FW_NAV_ON 1 |
| |
| #define BT_COEX_MECH_NONE 0 |
| #define BT_COEX_MECH_SCO 1 |
| #define BT_COEX_MECH_HID 2 |
| #define BT_COEX_MECH_A2DP 3 |
| #define BT_COEX_MECH_PAN 4 |
| #define BT_COEX_MECH_HID_A2DP 5 |
| #define BT_COEX_MECH_HID_PAN 6 |
| #define BT_COEX_MECH_PAN_A2DP 7 |
| #define BT_COEX_MECH_HID_SCO_ESCO 8 |
| #define BT_COEX_MECH_FTP_A2DP 9 |
| #define BT_COEX_MECH_COMMON 10 |
| #define BT_COEX_MECH_MAX 11 |
| /* BT Dbg Ctrl */ |
| #define BT_DBG_PROFILE_NONE 0 |
| #define BT_DBG_PROFILE_SCO 1 |
| #define BT_DBG_PROFILE_HID 2 |
| #define BT_DBG_PROFILE_A2DP 3 |
| #define BT_DBG_PROFILE_PAN 4 |
| #define BT_DBG_PROFILE_HID_A2DP 5 |
| #define BT_DBG_PROFILE_HID_PAN 6 |
| #define BT_DBG_PROFILE_PAN_A2DP 7 |
| #define BT_DBG_PROFILE_MAX 9 |
| |
| struct bt_coexist_str { |
| u8 BluetoothCoexist; |
| u8 BT_Ant_Num; |
| u8 BT_CoexistType; |
| u8 BT_Ant_isolation; /* 0:good, 1:bad */ |
| u8 bt_radiosharedtype; |
| u32 Ratio_Tx; |
| u32 Ratio_PRI; |
| u8 bInitlized; |
| u32 BtRfRegOrigin1E; |
| u32 BtRfRegOrigin1F; |
| u8 bBTBusyTraffic; |
| u8 bBTTrafficModeSet; |
| u8 bBTNonTrafficModeSet; |
| struct bt_traffic_statistics BT21TrafficStatistics; |
| u64 CurrentState; |
| u64 PreviousState; |
| u8 preRssiState; |
| u8 preRssiState1; |
| u8 preRssiStateBeacon; |
| u8 bFWCoexistAllOff; |
| u8 bSWCoexistAllOff; |
| u8 bHWCoexistAllOff; |
| u8 bBalanceOn; |
| u8 bSingleAntOn; |
| u8 bInterruptOn; |
| u8 bMultiNAVOn; |
| u8 PreWLANActH; |
| u8 PreWLANActL; |
| u8 WLANActH; |
| u8 WLANActL; |
| u8 A2DPState; |
| u8 AntennaState; |
| u32 lastBtEdca; |
| u16 last_aggr_num; |
| u8 bEDCAInitialized; |
| u8 exec_cnt; |
| u8 b8723aAgcTableOn; |
| u8 b92DAgcTableOn; |
| struct bt_coexist_8723a halCoex8723; |
| u8 btActiveZeroCnt; |
| u8 bCurBtDisabled; |
| u8 bPreBtDisabled; |
| u8 bNeedToRoamForBtDisableEnable; |
| u8 fw3aVal[5]; |
| }; |
| |
| void BTDM_CheckAntSelMode(struct rtw_adapter *padapter); |
| void BTDM_FwC2hBtRssi(struct rtw_adapter *padapter, u8 *tmpBuf); |
| #define BT_FwC2hBtRssi BTDM_FwC2hBtRssi |
| void BTDM_DisplayBtCoexInfo(struct rtw_adapter *padapter); |
| #define BT_DisplayBtCoexInfo BTDM_DisplayBtCoexInfo |
| void BTDM_RejectAPAggregatedPacket(struct rtw_adapter *padapter, u8 bReject); |
| u8 BTDM_IsHT40(struct rtw_adapter *padapter); |
| u8 BTDM_Legacy(struct rtw_adapter *padapter); |
| void BTDM_CheckWiFiState(struct rtw_adapter *padapter); |
| s32 BTDM_GetRxSS(struct rtw_adapter *padapter); |
| u8 BTDM_CheckCoexBcnRssiState(struct rtw_adapter *padapter, u8 levelNum, |
| u8 RssiThresh, u8 RssiThresh1); |
| u8 BTDM_CheckCoexRSSIState1(struct rtw_adapter *padapter, u8 levelNum, |
| u8 RssiThresh, u8 RssiThresh1); |
| u8 BTDM_CheckCoexRSSIState(struct rtw_adapter *padapter, u8 levelNum, |
| u8 RssiThresh, u8 RssiThresh1); |
| void BTDM_Balance(struct rtw_adapter *padapter, u8 bBalanceOn, u8 ms0, u8 ms1); |
| void BTDM_AGCTable(struct rtw_adapter *padapter, u8 type); |
| void BTDM_BBBackOffLevel(struct rtw_adapter *padapter, u8 type); |
| void BTDM_FWCoexAllOff(struct rtw_adapter *padapter); |
| void BTDM_SWCoexAllOff(struct rtw_adapter *padapter); |
| void BTDM_HWCoexAllOff(struct rtw_adapter *padapter); |
| void BTDM_CoexAllOff(struct rtw_adapter *padapter); |
| void BTDM_TurnOffBtCoexistBeforeEnterIPS(struct rtw_adapter *padapter); |
| void BTDM_SignalCompensation(struct rtw_adapter *padapter, u8 *rssi_wifi, |
| u8 *rssi_bt); |
| void BTDM_UpdateCoexState(struct rtw_adapter *padapter); |
| u8 BTDM_IsSameCoexistState(struct rtw_adapter *padapter); |
| void BTDM_PWDBMonitor(struct rtw_adapter *padapter); |
| u8 BTDM_IsBTBusy(struct rtw_adapter *padapter); |
| #define BT_IsBtBusy BTDM_IsBTBusy |
| u8 BTDM_IsWifiBusy(struct rtw_adapter *padapter); |
| u8 BTDM_IsCoexistStateChanged(struct rtw_adapter *padapter); |
| u8 BTDM_IsWifiUplink(struct rtw_adapter *padapter); |
| u8 BTDM_IsWifiDownlink(struct rtw_adapter *padapter); |
| u8 BTDM_IsBTHSMode(struct rtw_adapter *padapter); |
| u8 BTDM_IsBTUplink(struct rtw_adapter *padapter); |
| u8 BTDM_IsBTDownlink(struct rtw_adapter *padapter); |
| void BTDM_AdjustForBtOperation(struct rtw_adapter *padapter); |
| void BTDM_ForHalt(struct rtw_adapter *padapter); |
| void BTDM_WifiScanNotify(struct rtw_adapter *padapter, u8 scanType); |
| void BTDM_WifiAssociateNotify(struct rtw_adapter *padapter, u8 action); |
| void BTDM_MediaStatusNotify(struct rtw_adapter *padapter, |
| enum rt_media_status mstatus); |
| void BTDM_ForDhcp(struct rtw_adapter *padapter); |
| void BTDM_ResetActionProfileState(struct rtw_adapter *padapter); |
| void BTDM_SetBtCoexCurrAntNum(struct rtw_adapter *padapter, u8 antNum); |
| #define BT_SetBtCoexCurrAntNum BTDM_SetBtCoexCurrAntNum |
| u8 BTDM_IsActionSCO(struct rtw_adapter *padapter); |
| u8 BTDM_IsActionHID(struct rtw_adapter *padapter); |
| u8 BTDM_IsActionA2DP(struct rtw_adapter *padapter); |
| u8 BTDM_IsActionPAN(struct rtw_adapter *padapter); |
| u8 BTDM_IsActionHIDA2DP(struct rtw_adapter *padapter); |
| u8 BTDM_IsActionHIDPAN(struct rtw_adapter *padapter); |
| u8 BTDM_IsActionPANA2DP(struct rtw_adapter *padapter); |
| u32 BTDM_BtTxRxCounterH(struct rtw_adapter *padapter); |
| u32 BTDM_BtTxRxCounterL(struct rtw_adapter *padapter); |
| |
| /* ===== End of sync from SD7 driver HAL/BTCoexist/HalBtCoexist.h ===== */ |
| |
| /* ===== Below this line is sync from SD7 driver HAL/HalBT.h ===== */ |
| |
| #define RTS_CTS_NO_LEN_LIMIT 0 |
| |
| u8 HALBT_GetPGAntNum(struct rtw_adapter *padapter); |
| #define BT_GetPGAntNum HALBT_GetPGAntNum |
| void HALBT_SetKey(struct rtw_adapter *padapter, u8 EntryNum); |
| void HALBT_RemoveKey(struct rtw_adapter *padapter, u8 EntryNum); |
| u8 HALBT_IsBTExist(struct rtw_adapter *padapter); |
| #define BT_IsBtExist HALBT_IsBTExist |
| u8 HALBT_BTChipType(struct rtw_adapter *padapter); |
| void HALBT_SetRtsCtsNoLenLimit(struct rtw_adapter *padapter); |
| |
| /* ===== End of sync from SD7 driver HAL/HalBT.c ===== */ |
| |
| #define _bt_dbg_off_ 0 |
| #define _bt_dbg_on_ 1 |
| |
| extern u32 BTCoexDbgLevel; |
| |
| |
| |
| #endif /* __RTL8723A_BT_COEXIST_H__ */ |