1 /* SPDX-License-Identifier: GPL-2.0 */ 2 /****************************************************************************** 3 * 4 * Copyright(c) 2016 Realtek Corporation. 5 * 6 * Contact Information: 7 * wlanfae <wlanfae@realtek.com> 8 * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, 9 * Hsinchu 300, Taiwan. 10 * 11 * Larry Finger <Larry.Finger@lwfinger.net> 12 * 13 *****************************************************************************/ 14 #ifndef _HAL_FWOFFLOADC2HFORMAT_H2C_C2H_NIC_H_ 15 #define _HAL_FWOFFLOADC2HFORMAT_H2C_C2H_NIC_H_ 16 #define C2H_SUB_CMD_ID_C2H_DBG 0X00 17 #define C2H_SUB_CMD_ID_BT_COEX_INFO 0X02 18 #define C2H_SUB_CMD_ID_SCAN_STATUS_RPT 0X03 19 #define C2H_SUB_CMD_ID_H2C_ACK_HDR 0X01 20 #define C2H_SUB_CMD_ID_CFG_PARAMETER_ACK 0X01 21 #define C2H_SUB_CMD_ID_BT_COEX_ACK 0X01 22 #define C2H_SUB_CMD_ID_DUMP_PHYSICAL_EFUSE_ACK 0X01 23 #define C2H_SUB_CMD_ID_UPDATE_PACKET_ACK 0X01 24 #define C2H_SUB_CMD_ID_UPDATE_DATAPACK_ACK 0X01 25 #define C2H_SUB_CMD_ID_RUN_DATAPACK_ACK 0X01 26 #define C2H_SUB_CMD_ID_CHANNEL_SWITCH_ACK 0X01 27 #define C2H_SUB_CMD_ID_IQK_ACK 0X01 28 #define C2H_SUB_CMD_ID_POWER_TRACKING_ACK 0X01 29 #define C2H_SUB_CMD_ID_PSD_ACK 0X01 30 #define C2H_SUB_CMD_ID_PSD_DATA 0X04 31 #define C2H_SUB_CMD_ID_EFUSE_DATA 0X05 32 #define C2H_SUB_CMD_ID_IQK_DATA 0X06 33 #define C2H_SUB_CMD_ID_C2H_PKT_FTM_DBG 0X07 34 #define C2H_SUB_CMD_ID_C2H_PKT_FTM_2_DBG 0X08 35 #define C2H_SUB_CMD_ID_C2H_PKT_FTM_3_DBG 0X09 36 #define C2H_SUB_CMD_ID_C2H_PKT_FTM_4_DBG 0X0A 37 #define C2H_SUB_CMD_ID_FTMACKRPT_HDL_DBG 0X0B 38 #define C2H_SUB_CMD_ID_FTMC2H_RPT 0X0C 39 #define C2H_SUB_CMD_ID_DRVFTMC2H_RPT 0X0D 40 #define C2H_SUB_CMD_ID_C2H_PKT_FTM_5_DBG 0X0E 41 #define C2H_SUB_CMD_ID_CCX_RPT 0X0F 42 #define C2H_SUB_CMD_ID_C2H_PKT_NAN_RPT 0X10 43 #define H2C_SUB_CMD_ID_CFG_PARAMETER_ACK SUB_CMD_ID_CFG_PARAMETER 44 #define H2C_SUB_CMD_ID_BT_COEX_ACK SUB_CMD_ID_BT_COEX 45 #define H2C_SUB_CMD_ID_DUMP_PHYSICAL_EFUSE_ACK SUB_CMD_ID_DUMP_PHYSICAL_EFUSE 46 #define H2C_SUB_CMD_ID_UPDATE_PACKET_ACK SUB_CMD_ID_UPDATE_PACKET 47 #define H2C_SUB_CMD_ID_UPDATE_DATAPACK_ACK SUB_CMD_ID_UPDATE_DATAPACK 48 #define H2C_SUB_CMD_ID_RUN_DATAPACK_ACK SUB_CMD_ID_RUN_DATAPACK 49 #define H2C_SUB_CMD_ID_CHANNEL_SWITCH_ACK SUB_CMD_ID_CHANNEL_SWITCH 50 #define H2C_SUB_CMD_ID_IQK_ACK SUB_CMD_ID_IQK 51 #define H2C_SUB_CMD_ID_POWER_TRACKING_ACK SUB_CMD_ID_POWER_TRACKING 52 #define H2C_SUB_CMD_ID_PSD_ACK SUB_CMD_ID_PSD 53 #define H2C_SUB_CMD_ID_CCX_RPT SUB_CMD_ID_CCX_RPT 54 #define H2C_CMD_ID_CFG_PARAMETER_ACK 0XFF 55 #define H2C_CMD_ID_BT_COEX_ACK 0XFF 56 #define H2C_CMD_ID_DUMP_PHYSICAL_EFUSE_ACK 0XFF 57 #define H2C_CMD_ID_UPDATE_PACKET_ACK 0XFF 58 #define H2C_CMD_ID_UPDATE_DATAPACK_ACK 0XFF 59 #define H2C_CMD_ID_RUN_DATAPACK_ACK 0XFF 60 #define H2C_CMD_ID_CHANNEL_SWITCH_ACK 0XFF 61 #define H2C_CMD_ID_IQK_ACK 0XFF 62 #define H2C_CMD_ID_POWER_TRACKING_ACK 0XFF 63 #define H2C_CMD_ID_PSD_ACK 0XFF 64 #define H2C_CMD_ID_CCX_RPT 0XFF 65 #define C2H_HDR_GET_CMD_ID(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X00, 0, 8) 66 #define C2H_HDR_SET_CMD_ID(__c2h, __value) \ 67 SET_BITS_TO_LE_4BYTE(__c2h + 0X00, 0, 8, __value) 68 #define C2H_HDR_GET_SEQ(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X00, 8, 8) 69 #define C2H_HDR_SET_SEQ(__c2h, __value) \ 70 SET_BITS_TO_LE_4BYTE(__c2h + 0X00, 8, 8, __value) 71 #define C2H_HDR_GET_C2H_SUB_CMD_ID(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X00, 16, 8) 72 #define C2H_HDR_SET_C2H_SUB_CMD_ID(__c2h, __value) \ 73 SET_BITS_TO_LE_4BYTE(__c2h + 0X00, 16, 8, __value) 74 #define C2H_HDR_GET_LEN(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X00, 24, 8) 75 #define C2H_HDR_SET_LEN(__c2h, __value) \ 76 SET_BITS_TO_LE_4BYTE(__c2h + 0X00, 24, 8, __value) 77 #define C2H_DBG_GET_DBG_MSG(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X04, 0, 8) 78 #define C2H_DBG_SET_DBG_MSG(__c2h, __value) \ 79 SET_BITS_TO_LE_4BYTE(__c2h + 0X04, 0, 8, __value) 80 #define BT_COEX_INFO_GET_DATA_START(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X04, 0, 8) 81 #define BT_COEX_INFO_SET_DATA_START(__c2h, __value) \ 82 SET_BITS_TO_LE_4BYTE(__c2h + 0X04, 0, 8, __value) 83 #define SCAN_STATUS_RPT_GET_H2C_RETURN_CODE(__c2h) \ 84 LE_BITS_TO_4BYTE(__c2h + 0X04, 0, 8) 85 #define SCAN_STATUS_RPT_SET_H2C_RETURN_CODE(__c2h, __value) \ 86 SET_BITS_TO_LE_4BYTE(__c2h + 0X04, 0, 8, __value) 87 #define SCAN_STATUS_RPT_GET_H2C_SEQ(__c2h) \ 88 LE_BITS_TO_4BYTE(__c2h + 0X04, 16, 16) 89 #define SCAN_STATUS_RPT_SET_H2C_SEQ(__c2h, __value) \ 90 SET_BITS_TO_LE_4BYTE(__c2h + 0X04, 16, 16, __value) 91 #define H2C_ACK_HDR_GET_H2C_RETURN_CODE(__c2h) \ 92 LE_BITS_TO_4BYTE(__c2h + 0X04, 0, 8) 93 #define H2C_ACK_HDR_SET_H2C_RETURN_CODE(__c2h, __value) \ 94 SET_BITS_TO_LE_4BYTE(__c2h + 0X04, 0, 8, __value) 95 #define H2C_ACK_HDR_GET_H2C_CMD_ID(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X04, 8, 8) 96 #define H2C_ACK_HDR_SET_H2C_CMD_ID(__c2h, __value) \ 97 SET_BITS_TO_LE_4BYTE(__c2h + 0X04, 8, 8, __value) 98 #define H2C_ACK_HDR_GET_H2C_SUB_CMD_ID(__c2h) \ 99 LE_BITS_TO_4BYTE(__c2h + 0X04, 16, 16) 100 #define H2C_ACK_HDR_SET_H2C_SUB_CMD_ID(__c2h, __value) \ 101 SET_BITS_TO_LE_4BYTE(__c2h + 0X04, 16, 16, __value) 102 #define H2C_ACK_HDR_GET_H2C_SEQ(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X08, 0, 16) 103 #define H2C_ACK_HDR_SET_H2C_SEQ(__c2h, __value) \ 104 SET_BITS_TO_LE_4BYTE(__c2h + 0X08, 0, 16, __value) 105 #define CFG_PARAMETER_ACK_GET_OFFSET_ACCUMULATION(__c2h) \ 106 LE_BITS_TO_4BYTE(__c2h + 0XC, 0, 32) 107 #define CFG_PARAMETER_ACK_SET_OFFSET_ACCUMULATION(__c2h, __value) \ 108 SET_BITS_TO_LE_4BYTE(__c2h + 0XC, 0, 32, __value) 109 #define CFG_PARAMETER_ACK_GET_VALUE_ACCUMULATION(__c2h) \ 110 LE_BITS_TO_4BYTE(__c2h + 0X10, 0, 32) 111 #define CFG_PARAMETER_ACK_SET_VALUE_ACCUMULATION(__c2h, __value) \ 112 SET_BITS_TO_LE_4BYTE(__c2h + 0X10, 0, 32, __value) 113 #define BT_COEX_ACK_GET_DATA_START(__c2h) LE_BITS_TO_4BYTE(__c2h + 0XC, 0, 8) 114 #define BT_COEX_ACK_SET_DATA_START(__c2h, __value) \ 115 SET_BITS_TO_LE_4BYTE(__c2h + 0XC, 0, 8, __value) 116 #define PSD_DATA_GET_SEGMENT_ID(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X04, 0, 7) 117 #define PSD_DATA_SET_SEGMENT_ID(__c2h, __value) \ 118 SET_BITS_TO_LE_4BYTE(__c2h + 0X04, 0, 7, __value) 119 #define PSD_DATA_GET_END_SEGMENT(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X04, 7, 1) 120 #define PSD_DATA_SET_END_SEGMENT(__c2h, __value) \ 121 SET_BITS_TO_LE_4BYTE(__c2h + 0X04, 7, 1, __value) 122 #define PSD_DATA_GET_SEGMENT_SIZE(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X04, 8, 8) 123 #define PSD_DATA_SET_SEGMENT_SIZE(__c2h, __value) \ 124 SET_BITS_TO_LE_4BYTE(__c2h + 0X04, 8, 8, __value) 125 #define PSD_DATA_GET_TOTAL_SIZE(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X04, 16, 16) 126 #define PSD_DATA_SET_TOTAL_SIZE(__c2h, __value) \ 127 SET_BITS_TO_LE_4BYTE(__c2h + 0X04, 16, 16, __value) 128 #define PSD_DATA_GET_H2C_SEQ(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X8, 0, 16) 129 #define PSD_DATA_SET_H2C_SEQ(__c2h, __value) \ 130 SET_BITS_TO_LE_4BYTE(__c2h + 0X8, 0, 16, __value) 131 #define PSD_DATA_GET_DATA_START(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X8, 16, 8) 132 #define PSD_DATA_SET_DATA_START(__c2h, __value) \ 133 SET_BITS_TO_LE_4BYTE(__c2h + 0X8, 16, 8, __value) 134 #define EFUSE_DATA_GET_SEGMENT_ID(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X04, 0, 7) 135 #define EFUSE_DATA_SET_SEGMENT_ID(__c2h, __value) \ 136 SET_BITS_TO_LE_4BYTE(__c2h + 0X04, 0, 7, __value) 137 #define EFUSE_DATA_GET_END_SEGMENT(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X04, 7, 1) 138 #define EFUSE_DATA_SET_END_SEGMENT(__c2h, __value) \ 139 SET_BITS_TO_LE_4BYTE(__c2h + 0X04, 7, 1, __value) 140 #define EFUSE_DATA_GET_SEGMENT_SIZE(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X04, 8, 8) 141 #define EFUSE_DATA_SET_SEGMENT_SIZE(__c2h, __value) \ 142 SET_BITS_TO_LE_4BYTE(__c2h + 0X04, 8, 8, __value) 143 #define EFUSE_DATA_GET_TOTAL_SIZE(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X04, 16, 16) 144 #define EFUSE_DATA_SET_TOTAL_SIZE(__c2h, __value) \ 145 SET_BITS_TO_LE_4BYTE(__c2h + 0X04, 16, 16, __value) 146 #define EFUSE_DATA_GET_H2C_SEQ(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X8, 0, 16) 147 #define EFUSE_DATA_SET_H2C_SEQ(__c2h, __value) \ 148 SET_BITS_TO_LE_4BYTE(__c2h + 0X8, 0, 16, __value) 149 #define EFUSE_DATA_GET_DATA_START(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X8, 16, 8) 150 #define EFUSE_DATA_SET_DATA_START(__c2h, __value) \ 151 SET_BITS_TO_LE_4BYTE(__c2h + 0X8, 16, 8, __value) 152 #define IQK_DATA_GET_SEGMENT_ID(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X04, 0, 7) 153 #define IQK_DATA_SET_SEGMENT_ID(__c2h, __value) \ 154 SET_BITS_TO_LE_4BYTE(__c2h + 0X04, 0, 7, __value) 155 #define IQK_DATA_GET_END_SEGMENT(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X04, 7, 1) 156 #define IQK_DATA_SET_END_SEGMENT(__c2h, __value) \ 157 SET_BITS_TO_LE_4BYTE(__c2h + 0X04, 7, 1, __value) 158 #define IQK_DATA_GET_SEGMENT_SIZE(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X04, 8, 8) 159 #define IQK_DATA_SET_SEGMENT_SIZE(__c2h, __value) \ 160 SET_BITS_TO_LE_4BYTE(__c2h + 0X04, 8, 8, __value) 161 #define IQK_DATA_GET_TOTAL_SIZE(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X04, 16, 16) 162 #define IQK_DATA_SET_TOTAL_SIZE(__c2h, __value) \ 163 SET_BITS_TO_LE_4BYTE(__c2h + 0X04, 16, 16, __value) 164 #define IQK_DATA_GET_H2C_SEQ(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X8, 0, 16) 165 #define IQK_DATA_SET_H2C_SEQ(__c2h, __value) \ 166 SET_BITS_TO_LE_4BYTE(__c2h + 0X8, 0, 16, __value) 167 #define IQK_DATA_GET_DATA_START(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X8, 16, 8) 168 #define IQK_DATA_SET_DATA_START(__c2h, __value) \ 169 SET_BITS_TO_LE_4BYTE(__c2h + 0X8, 16, 8, __value) 170 #define CCX_RPT_GET_CCX_RPT(__c2h) LE_BITS_TO_4BYTE(__c2h + 0X4, 0, 129) 171 #define CCX_RPT_SET_CCX_RPT(__c2h, __value) \ 172 SET_BITS_TO_LE_4BYTE(__c2h + 0X4, 0, 129, __value) 173 #endif 174