net: wireless: rockchip: add rtl8822be pcie wifi driver
[firefly-linux-kernel-4.4.55.git] / drivers / net / wireless / rockchip_wlan / rtl8822be / hal / halmac / halmac_fw_offload_h2c_ap.h
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8822be/hal/halmac/halmac_fw_offload_h2c_ap.h b/drivers/net/wireless/rockchip_wlan/rtl8822be/hal/halmac/halmac_fw_offload_h2c_ap.h
new file mode 100644 (file)
index 0000000..8e5e6a1
--- /dev/null
@@ -0,0 +1,273 @@
+#ifndef _HAL_FWOFFLOADH2CFORMAT_H2C_C2H_AP_H_
+#define _HAL_FWOFFLOADH2CFORMAT_H2C_C2H_AP_H_
+#define CMD_ID_FW_OFFLOAD_H2C  0XFF
+#define CMD_ID_CHANNEL_SWITCH  0XFF
+#define CMD_ID_DUMP_PHYSICAL_EFUSE  0XFF
+#define CMD_ID_UPDATE_BEACON_PARSING_INFO  0XFF
+#define CMD_ID_CFG_PARAMETER  0XFF
+#define CMD_ID_UPDATE_DATAPACK  0XFF
+#define CMD_ID_RUN_DATAPACK  0XFF
+#define CMD_ID_DOWNLOAD_FLASH  0XFF
+#define CMD_ID_UPDATE_PACKET  0XFF
+#define CMD_ID_GENERAL_INFO  0XFF
+#define CMD_ID_IQK  0XFF
+#define CMD_ID_POWER_TRACKING  0XFF
+#define CMD_ID_PSD  0XFF
+#define CMD_ID_BT_COEX  0XFF
+#define CATEGORY_H2C_CMD_HEADER  0X00
+#define CATEGORY_FW_OFFLOAD_H2C  0X01
+#define CATEGORY_CHANNEL_SWITCH  0X01
+#define CATEGORY_DUMP_PHYSICAL_EFUSE  0X01
+#define CATEGORY_UPDATE_BEACON_PARSING_INFO  0X01
+#define CATEGORY_CFG_PARAMETER  0X01
+#define CATEGORY_UPDATE_DATAPACK  0X01
+#define CATEGORY_RUN_DATAPACK  0X01
+#define CATEGORY_DOWNLOAD_FLASH  0X01
+#define CATEGORY_UPDATE_PACKET  0X01
+#define CATEGORY_GENERAL_INFO  0X01
+#define CATEGORY_IQK  0X01
+#define CATEGORY_POWER_TRACKING  0X01
+#define CATEGORY_PSD  0X01
+#define CATEGORY_BT_COEX  0X01
+#define SUB_CMD_ID_CHANNEL_SWITCH  0X02
+#define SUB_CMD_ID_DUMP_PHYSICAL_EFUSE  0X03
+#define SUB_CMD_ID_UPDATE_BEACON_PARSING_INFO  0X05
+#define SUB_CMD_ID_CFG_PARAMETER  0X08
+#define SUB_CMD_ID_UPDATE_DATAPACK  0X09
+#define SUB_CMD_ID_RUN_DATAPACK  0X0A
+#define SUB_CMD_ID_DOWNLOAD_FLASH  0X0B
+#define SUB_CMD_ID_UPDATE_PACKET  0X0C
+#define SUB_CMD_ID_GENERAL_INFO  0X0D
+#define SUB_CMD_ID_IQK  0X0E
+#define SUB_CMD_ID_POWER_TRACKING  0X0F
+#define SUB_CMD_ID_PSD  0X10
+#define SUB_CMD_ID_BT_COEX  0X60
+#define H2C_CMD_HEADER_GET_CATEGORY(__pH2C)    GET_H2C_FIELD(__pH2C + 0X00, 0, 7)
+#define H2C_CMD_HEADER_SET_CATEGORY(__pH2C, __Value)    SET_H2C_FIELD_CLR(__pH2C + 0X00, 0, 7, __Value)
+#define H2C_CMD_HEADER_SET_CATEGORY_NO_CLR(__pH2C, __Value)    SET_H2C_FIELD_NO_CLR(__pH2C + 0X00, 0, 7, __Value)
+#define H2C_CMD_HEADER_GET_ACK(__pH2C)    GET_H2C_FIELD(__pH2C + 0X00, 7, 1)
+#define H2C_CMD_HEADER_SET_ACK(__pH2C, __Value)    SET_H2C_FIELD_CLR(__pH2C + 0X00, 7, 1, __Value)
+#define H2C_CMD_HEADER_SET_ACK_NO_CLR(__pH2C, __Value)    SET_H2C_FIELD_NO_CLR(__pH2C + 0X00, 7, 1, __Value)
+#define H2C_CMD_HEADER_GET_TOTAL_LEN(__pH2C)    GET_H2C_FIELD(__pH2C + 0X04, 0, 16)
+#define H2C_CMD_HEADER_SET_TOTAL_LEN(__pH2C, __Value)    SET_H2C_FIELD_CLR(__pH2C + 0X04, 0, 16, __Value)
+#define H2C_CMD_HEADER_SET_TOTAL_LEN_NO_CLR(__pH2C, __Value)    SET_H2C_FIELD_NO_CLR(__pH2C + 0X04, 0, 16, __Value)
+#define H2C_CMD_HEADER_GET_SEQ_NUM(__pH2C)    GET_H2C_FIELD(__pH2C + 0X04, 16, 16)
+#define H2C_CMD_HEADER_SET_SEQ_NUM(__pH2C, __Value)    SET_H2C_FIELD_CLR(__pH2C + 0X04, 16, 16, __Value)
+#define H2C_CMD_HEADER_SET_SEQ_NUM_NO_CLR(__pH2C, __Value)    SET_H2C_FIELD_NO_CLR(__pH2C + 0X04, 16, 16, __Value)
+#define FW_OFFLOAD_H2C_GET_CATEGORY(__pH2C)    GET_H2C_FIELD(__pH2C + 0X00, 0, 7)
+#define FW_OFFLOAD_H2C_SET_CATEGORY(__pH2C, __Value)    SET_H2C_FIELD_CLR(__pH2C + 0X00, 0, 7, __Value)
+#define FW_OFFLOAD_H2C_SET_CATEGORY_NO_CLR(__pH2C, __Value)    SET_H2C_FIELD_NO_CLR(__pH2C + 0X00, 0, 7, __Value)
+#define FW_OFFLOAD_H2C_GET_ACK(__pH2C)    GET_H2C_FIELD(__pH2C + 0X00, 7, 1)
+#define FW_OFFLOAD_H2C_SET_ACK(__pH2C, __Value)    SET_H2C_FIELD_CLR(__pH2C + 0X00, 7, 1, __Value)
+#define FW_OFFLOAD_H2C_SET_ACK_NO_CLR(__pH2C, __Value)    SET_H2C_FIELD_NO_CLR(__pH2C + 0X00, 7, 1, __Value)
+#define FW_OFFLOAD_H2C_GET_CMD_ID(__pH2C)    GET_H2C_FIELD(__pH2C + 0X00, 8, 8)
+#define FW_OFFLOAD_H2C_SET_CMD_ID(__pH2C, __Value)    SET_H2C_FIELD_CLR(__pH2C + 0X00, 8, 8, __Value)
+#define FW_OFFLOAD_H2C_SET_CMD_ID_NO_CLR(__pH2C, __Value)    SET_H2C_FIELD_NO_CLR(__pH2C + 0X00, 8, 8, __Value)
+#define FW_OFFLOAD_H2C_GET_SUB_CMD_ID(__pH2C)    GET_H2C_FIELD(__pH2C + 0X00, 16, 16)
+#define FW_OFFLOAD_H2C_SET_SUB_CMD_ID(__pH2C, __Value)    SET_H2C_FIELD_CLR(__pH2C + 0X00, 16, 16, __Value)
+#define FW_OFFLOAD_H2C_SET_SUB_CMD_ID_NO_CLR(__pH2C, __Value)    SET_H2C_FIELD_NO_CLR(__pH2C + 0X00, 16, 16, __Value)
+#define FW_OFFLOAD_H2C_GET_TOTAL_LEN(__pH2C)    GET_H2C_FIELD(__pH2C + 0X04, 0, 16)
+#define FW_OFFLOAD_H2C_SET_TOTAL_LEN(__pH2C, __Value)    SET_H2C_FIELD_CLR(__pH2C + 0X04, 0, 16, __Value)
+#define FW_OFFLOAD_H2C_SET_TOTAL_LEN_NO_CLR(__pH2C, __Value)    SET_H2C_FIELD_NO_CLR(__pH2C + 0X04, 0, 16, __Value)
+#define FW_OFFLOAD_H2C_GET_SEQ_NUM(__pH2C)    GET_H2C_FIELD(__pH2C + 0X04, 16, 16)
+#define FW_OFFLOAD_H2C_SET_SEQ_NUM(__pH2C, __Value)    SET_H2C_FIELD_CLR(__pH2C + 0X04, 16, 16, __Value)
+#define FW_OFFLOAD_H2C_SET_SEQ_NUM_NO_CLR(__pH2C, __Value)    SET_H2C_FIELD_NO_CLR(__pH2C + 0X04, 16, 16, __Value)
+#define CHANNEL_SWITCH_GET_SWITCH_START(__pH2C)    GET_H2C_FIELD(__pH2C + 0X08, 0, 1)
+#define CHANNEL_SWITCH_SET_SWITCH_START(__pH2C, __Value)    SET_H2C_FIELD_CLR(__pH2C + 0X08, 0, 1, __Value)
+#define CHANNEL_SWITCH_SET_SWITCH_START_NO_CLR(__pH2C, __Value)    SET_H2C_FIELD_NO_CLR(__pH2C + 0X08, 0, 1, __Value)
+#define CHANNEL_SWITCH_GET_DEST_CH_EN(__pH2C)    GET_H2C_FIELD(__pH2C + 0X08, 1, 1)
+#define CHANNEL_SWITCH_SET_DEST_CH_EN(__pH2C, __Value)    SET_H2C_FIELD_CLR(__pH2C + 0X08, 1, 1, __Value)
+#define CHANNEL_SWITCH_SET_DEST_CH_EN_NO_CLR(__pH2C, __Value)    SET_H2C_FIELD_NO_CLR(__pH2C + 0X08, 1, 1, __Value)
+#define CHANNEL_SWITCH_GET_ABSOLUTE_TIME(__pH2C)    GET_H2C_FIELD(__pH2C + 0X08, 2, 1)
+#define CHANNEL_SWITCH_SET_ABSOLUTE_TIME(__pH2C, __Value)    SET_H2C_FIELD_CLR(__pH2C + 0X08, 2, 1, __Value)
+#define CHANNEL_SWITCH_SET_ABSOLUTE_TIME_NO_CLR(__pH2C, __Value)    SET_H2C_FIELD_NO_CLR(__pH2C + 0X08, 2, 1, __Value)
+#define CHANNEL_SWITCH_GET_PERIODIC_OPTION(__pH2C)    GET_H2C_FIELD(__pH2C + 0X08, 3, 2)
+#define CHANNEL_SWITCH_SET_PERIODIC_OPTION(__pH2C, __Value)    SET_H2C_FIELD_CLR(__pH2C + 0X08, 3, 2, __Value)
+#define CHANNEL_SWITCH_SET_PERIODIC_OPTION_NO_CLR(__pH2C, __Value)    SET_H2C_FIELD_NO_CLR(__pH2C + 0X08, 3, 2, __Value)
+#define CHANNEL_SWITCH_GET_CHANNEL_INFO_LOC(__pH2C)    GET_H2C_FIELD(__pH2C + 0X08, 8, 8)
+#define CHANNEL_SWITCH_SET_CHANNEL_INFO_LOC(__pH2C, __Value)    SET_H2C_FIELD_CLR(__pH2C + 0X08, 8, 8, __Value)
+#define CHANNEL_SWITCH_SET_CHANNEL_INFO_LOC_NO_CLR(__pH2C, __Value)    SET_H2C_FIELD_NO_CLR(__pH2C + 0X08, 8, 8, __Value)
+#define CHANNEL_SWITCH_GET_CHANNEL_NUM(__pH2C)    GET_H2C_FIELD(__pH2C + 0X08, 16, 8)
+#define CHANNEL_SWITCH_SET_CHANNEL_NUM(__pH2C, __Value)    SET_H2C_FIELD_CLR(__pH2C + 0X08, 16, 8, __Value)
+#define CHANNEL_SWITCH_SET_CHANNEL_NUM_NO_CLR(__pH2C, __Value)    SET_H2C_FIELD_NO_CLR(__pH2C + 0X08, 16, 8, __Value)
+#define CHANNEL_SWITCH_GET_PRI_CH_IDX(__pH2C)    GET_H2C_FIELD(__pH2C + 0X08, 24, 4)
+#define CHANNEL_SWITCH_SET_PRI_CH_IDX(__pH2C, __Value)    SET_H2C_FIELD_CLR(__pH2C + 0X08, 24, 4, __Value)
+#define CHANNEL_SWITCH_SET_PRI_CH_IDX_NO_CLR(__pH2C, __Value)    SET_H2C_FIELD_NO_CLR(__pH2C + 0X08, 24, 4, __Value)
+#define CHANNEL_SWITCH_GET_DEST_BW(__pH2C)    GET_H2C_FIELD(__pH2C + 0X08, 28, 4)
+#define CHANNEL_SWITCH_SET_DEST_BW(__pH2C, __Value)    SET_H2C_FIELD_CLR(__pH2C + 0X08, 28, 4, __Value)
+#define CHANNEL_SWITCH_SET_DEST_BW_NO_CLR(__pH2C, __Value)    SET_H2C_FIELD_NO_CLR(__pH2C + 0X08, 28, 4, __Value)
+#define CHANNEL_SWITCH_GET_DEST_CH(__pH2C)    GET_H2C_FIELD(__pH2C + 0X0C, 0, 8)
+#define CHANNEL_SWITCH_SET_DEST_CH(__pH2C, __Value)    SET_H2C_FIELD_CLR(__pH2C + 0X0C, 0, 8, __Value)
+#define CHANNEL_SWITCH_SET_DEST_CH_NO_CLR(__pH2C, __Value)    SET_H2C_FIELD_NO_CLR(__pH2C + 0X0C, 0, 8, __Value)
+#define CHANNEL_SWITCH_GET_NORMAL_PERIOD(__pH2C)    GET_H2C_FIELD(__pH2C + 0X0C, 8, 8)
+#define CHANNEL_SWITCH_SET_NORMAL_PERIOD(__pH2C, __Value)    SET_H2C_FIELD_CLR(__pH2C + 0X0C, 8, 8, __Value)
+#define CHANNEL_SWITCH_SET_NORMAL_PERIOD_NO_CLR(__pH2C, __Value)    SET_H2C_FIELD_NO_CLR(__pH2C + 0X0C, 8, 8, __Value)
+#define CHANNEL_SWITCH_GET_SLOW_PERIOD(__pH2C)    GET_H2C_FIELD(__pH2C + 0X0C, 16, 8)
+#define CHANNEL_SWITCH_SET_SLOW_PERIOD(__pH2C, __Value)    SET_H2C_FIELD_CLR(__pH2C + 0X0C, 16, 8, __Value)
+#define CHANNEL_SWITCH_SET_SLOW_PERIOD_NO_CLR(__pH2C, __Value)    SET_H2C_FIELD_NO_CLR(__pH2C + 0X0C, 16, 8, __Value)
+#define CHANNEL_SWITCH_GET_NORMAL_CYCLE(__pH2C)    GET_H2C_FIELD(__pH2C + 0X0C, 24, 8)
+#define CHANNEL_SWITCH_SET_NORMAL_CYCLE(__pH2C, __Value)    SET_H2C_FIELD_CLR(__pH2C + 0X0C, 24, 8, __Value)
+#define CHANNEL_SWITCH_SET_NORMAL_CYCLE_NO_CLR(__pH2C, __Value)    SET_H2C_FIELD_NO_CLR(__pH2C + 0X0C, 24, 8, __Value)
+#define CHANNEL_SWITCH_GET_TSF_HIGH(__pH2C)    GET_H2C_FIELD(__pH2C + 0X10, 0, 32)
+#define CHANNEL_SWITCH_SET_TSF_HIGH(__pH2C, __Value)    SET_H2C_FIELD_CLR(__pH2C + 0X10, 0, 32, __Value)
+#define CHANNEL_SWITCH_SET_TSF_HIGH_NO_CLR(__pH2C, __Value)    SET_H2C_FIELD_NO_CLR(__pH2C + 0X10, 0, 32, __Value)
+#define CHANNEL_SWITCH_GET_TSF_LOW(__pH2C)    GET_H2C_FIELD(__pH2C + 0X14, 0, 32)
+#define CHANNEL_SWITCH_SET_TSF_LOW(__pH2C, __Value)    SET_H2C_FIELD_CLR(__pH2C + 0X14, 0, 32, __Value)
+#define CHANNEL_SWITCH_SET_TSF_LOW_NO_CLR(__pH2C, __Value)    SET_H2C_FIELD_NO_CLR(__pH2C + 0X14, 0, 32, __Value)
+#define CHANNEL_SWITCH_GET_CHANNEL_INFO_SIZE(__pH2C)    GET_H2C_FIELD(__pH2C + 0X18, 0, 16)
+#define CHANNEL_SWITCH_SET_CHANNEL_INFO_SIZE(__pH2C, __Value)    SET_H2C_FIELD_CLR(__pH2C + 0X18, 0, 16, __Value)
+#define CHANNEL_SWITCH_SET_CHANNEL_INFO_SIZE_NO_CLR(__pH2C, __Value)    SET_H2C_FIELD_NO_CLR(__pH2C + 0X18, 0, 16, __Value)
+#define UPDATE_BEACON_PARSING_INFO_GET_FUNC_EN(__pH2C)    GET_H2C_FIELD(__pH2C + 0X08, 0, 1)
+#define UPDATE_BEACON_PARSING_INFO_SET_FUNC_EN(__pH2C, __Value)    SET_H2C_FIELD_CLR(__pH2C + 0X08, 0, 1, __Value)
+#define UPDATE_BEACON_PARSING_INFO_SET_FUNC_EN_NO_CLR(__pH2C, __Value)    SET_H2C_FIELD_NO_CLR(__pH2C + 0X08, 0, 1, __Value)
+#define UPDATE_BEACON_PARSING_INFO_GET_SIZE_TH(__pH2C)    GET_H2C_FIELD(__pH2C + 0X08, 8, 4)
+#define UPDATE_BEACON_PARSING_INFO_SET_SIZE_TH(__pH2C, __Value)    SET_H2C_FIELD_CLR(__pH2C + 0X08, 8, 4, __Value)
+#define UPDATE_BEACON_PARSING_INFO_SET_SIZE_TH_NO_CLR(__pH2C, __Value)    SET_H2C_FIELD_NO_CLR(__pH2C + 0X08, 8, 4, __Value)
+#define UPDATE_BEACON_PARSING_INFO_GET_TIMEOUT(__pH2C)    GET_H2C_FIELD(__pH2C + 0X08, 12, 4)
+#define UPDATE_BEACON_PARSING_INFO_SET_TIMEOUT(__pH2C, __Value)    SET_H2C_FIELD_CLR(__pH2C + 0X08, 12, 4, __Value)
+#define UPDATE_BEACON_PARSING_INFO_SET_TIMEOUT_NO_CLR(__pH2C, __Value)    SET_H2C_FIELD_NO_CLR(__pH2C + 0X08, 12, 4, __Value)
+#define UPDATE_BEACON_PARSING_INFO_GET_IE_ID_BMP_0(__pH2C)    GET_H2C_FIELD(__pH2C + 0X0C, 0, 32)
+#define UPDATE_BEACON_PARSING_INFO_SET_IE_ID_BMP_0(__pH2C, __Value)    SET_H2C_FIELD_CLR(__pH2C + 0X0C, 0, 32, __Value)
+#define UPDATE_BEACON_PARSING_INFO_SET_IE_ID_BMP_0_NO_CLR(__pH2C, __Value)    SET_H2C_FIELD_NO_CLR(__pH2C + 0X0C, 0, 32, __Value)
+#define UPDATE_BEACON_PARSING_INFO_GET_IE_ID_BMP_1(__pH2C)    GET_H2C_FIELD(__pH2C + 0X10, 0, 32)
+#define UPDATE_BEACON_PARSING_INFO_SET_IE_ID_BMP_1(__pH2C, __Value)    SET_H2C_FIELD_CLR(__pH2C + 0X10, 0, 32, __Value)
+#define UPDATE_BEACON_PARSING_INFO_SET_IE_ID_BMP_1_NO_CLR(__pH2C, __Value)    SET_H2C_FIELD_NO_CLR(__pH2C + 0X10, 0, 32, __Value)
+#define UPDATE_BEACON_PARSING_INFO_GET_IE_ID_BMP_2(__pH2C)    GET_H2C_FIELD(__pH2C + 0X14, 0, 32)
+#define UPDATE_BEACON_PARSING_INFO_SET_IE_ID_BMP_2(__pH2C, __Value)    SET_H2C_FIELD_CLR(__pH2C + 0X14, 0, 32, __Value)
+#define UPDATE_BEACON_PARSING_INFO_SET_IE_ID_BMP_2_NO_CLR(__pH2C, __Value)    SET_H2C_FIELD_NO_CLR(__pH2C + 0X14, 0, 32, __Value)
+#define UPDATE_BEACON_PARSING_INFO_GET_IE_ID_BMP_3(__pH2C)    GET_H2C_FIELD(__pH2C + 0X18, 0, 32)
+#define UPDATE_BEACON_PARSING_INFO_SET_IE_ID_BMP_3(__pH2C, __Value)    SET_H2C_FIELD_CLR(__pH2C + 0X18, 0, 32, __Value)
+#define UPDATE_BEACON_PARSING_INFO_SET_IE_ID_BMP_3_NO_CLR(__pH2C, __Value)    SET_H2C_FIELD_NO_CLR(__pH2C + 0X18, 0, 32, __Value)
+#define UPDATE_BEACON_PARSING_INFO_GET_IE_ID_BMP_4(__pH2C)    GET_H2C_FIELD(__pH2C + 0X1C, 0, 32)
+#define UPDATE_BEACON_PARSING_INFO_SET_IE_ID_BMP_4(__pH2C, __Value)    SET_H2C_FIELD_CLR(__pH2C + 0X1C, 0, 32, __Value)
+#define UPDATE_BEACON_PARSING_INFO_SET_IE_ID_BMP_4_NO_CLR(__pH2C, __Value)    SET_H2C_FIELD_NO_CLR(__pH2C + 0X1C, 0, 32, __Value)
+#define CFG_PARAMETER_GET_NUM(__pH2C)    GET_H2C_FIELD(__pH2C + 0X08, 0, 16)
+#define CFG_PARAMETER_SET_NUM(__pH2C, __Value)    SET_H2C_FIELD_CLR(__pH2C + 0X08, 0, 16, __Value)
+#define CFG_PARAMETER_SET_NUM_NO_CLR(__pH2C, __Value)    SET_H2C_FIELD_NO_CLR(__pH2C + 0X08, 0, 16, __Value)
+#define CFG_PARAMETER_GET_INIT_CASE(__pH2C)    GET_H2C_FIELD(__pH2C + 0X08, 16, 1)
+#define CFG_PARAMETER_SET_INIT_CASE(__pH2C, __Value)    SET_H2C_FIELD_CLR(__pH2C + 0X08, 16, 1, __Value)
+#define CFG_PARAMETER_SET_INIT_CASE_NO_CLR(__pH2C, __Value)    SET_H2C_FIELD_NO_CLR(__pH2C + 0X08, 16, 1, __Value)
+#define CFG_PARAMETER_GET_PHY_PARAMETER_LOC(__pH2C)    GET_H2C_FIELD(__pH2C + 0X08, 24, 8)
+#define CFG_PARAMETER_SET_PHY_PARAMETER_LOC(__pH2C, __Value)    SET_H2C_FIELD_CLR(__pH2C + 0X08, 24, 8, __Value)
+#define CFG_PARAMETER_SET_PHY_PARAMETER_LOC_NO_CLR(__pH2C, __Value)    SET_H2C_FIELD_NO_CLR(__pH2C + 0X08, 24, 8, __Value)
+#define UPDATE_DATAPACK_GET_SIZE(__pH2C)    GET_H2C_FIELD(__pH2C + 0X08, 0, 16)
+#define UPDATE_DATAPACK_SET_SIZE(__pH2C, __Value)    SET_H2C_FIELD_CLR(__pH2C + 0X08, 0, 16, __Value)
+#define UPDATE_DATAPACK_SET_SIZE_NO_CLR(__pH2C, __Value)    SET_H2C_FIELD_NO_CLR(__pH2C + 0X08, 0, 16, __Value)
+#define UPDATE_DATAPACK_GET_DATAPACK_ID(__pH2C)    GET_H2C_FIELD(__pH2C + 0X08, 16, 8)
+#define UPDATE_DATAPACK_SET_DATAPACK_ID(__pH2C, __Value)    SET_H2C_FIELD_CLR(__pH2C + 0X08, 16, 8, __Value)
+#define UPDATE_DATAPACK_SET_DATAPACK_ID_NO_CLR(__pH2C, __Value)    SET_H2C_FIELD_NO_CLR(__pH2C + 0X08, 16, 8, __Value)
+#define UPDATE_DATAPACK_GET_DATAPACK_LOC(__pH2C)    GET_H2C_FIELD(__pH2C + 0X08, 24, 8)
+#define UPDATE_DATAPACK_SET_DATAPACK_LOC(__pH2C, __Value)    SET_H2C_FIELD_CLR(__pH2C + 0X08, 24, 8, __Value)
+#define UPDATE_DATAPACK_SET_DATAPACK_LOC_NO_CLR(__pH2C, __Value)    SET_H2C_FIELD_NO_CLR(__pH2C + 0X08, 24, 8, __Value)
+#define UPDATE_DATAPACK_GET_DATAPACK_SEGMENT(__pH2C)    GET_H2C_FIELD(__pH2C + 0X0C, 0, 8)
+#define UPDATE_DATAPACK_SET_DATAPACK_SEGMENT(__pH2C, __Value)    SET_H2C_FIELD_CLR(__pH2C + 0X0C, 0, 8, __Value)
+#define UPDATE_DATAPACK_SET_DATAPACK_SEGMENT_NO_CLR(__pH2C, __Value)    SET_H2C_FIELD_NO_CLR(__pH2C + 0X0C, 0, 8, __Value)
+#define UPDATE_DATAPACK_GET_END_SEGMENT(__pH2C)    GET_H2C_FIELD(__pH2C + 0X0C, 8, 1)
+#define UPDATE_DATAPACK_SET_END_SEGMENT(__pH2C, __Value)    SET_H2C_FIELD_CLR(__pH2C + 0X0C, 8, 1, __Value)
+#define UPDATE_DATAPACK_SET_END_SEGMENT_NO_CLR(__pH2C, __Value)    SET_H2C_FIELD_NO_CLR(__pH2C + 0X0C, 8, 1, __Value)
+#define RUN_DATAPACK_GET_DATAPACK_ID(__pH2C)    GET_H2C_FIELD(__pH2C + 0X08, 0, 8)
+#define RUN_DATAPACK_SET_DATAPACK_ID(__pH2C, __Value)    SET_H2C_FIELD_CLR(__pH2C + 0X08, 0, 8, __Value)
+#define RUN_DATAPACK_SET_DATAPACK_ID_NO_CLR(__pH2C, __Value)    SET_H2C_FIELD_NO_CLR(__pH2C + 0X08, 0, 8, __Value)
+#define DOWNLOAD_FLASH_GET_SPI_CMD(__pH2C)    GET_H2C_FIELD(__pH2C + 0X08, 0, 8)
+#define DOWNLOAD_FLASH_SET_SPI_CMD(__pH2C, __Value)    SET_H2C_FIELD_CLR(__pH2C + 0X08, 0, 8, __Value)
+#define DOWNLOAD_FLASH_SET_SPI_CMD_NO_CLR(__pH2C, __Value)    SET_H2C_FIELD_NO_CLR(__pH2C + 0X08, 0, 8, __Value)
+#define DOWNLOAD_FLASH_GET_LOCATION(__pH2C)    GET_H2C_FIELD(__pH2C + 0X08, 8, 16)
+#define DOWNLOAD_FLASH_SET_LOCATION(__pH2C, __Value)    SET_H2C_FIELD_CLR(__pH2C + 0X08, 8, 16, __Value)
+#define DOWNLOAD_FLASH_SET_LOCATION_NO_CLR(__pH2C, __Value)    SET_H2C_FIELD_NO_CLR(__pH2C + 0X08, 8, 16, __Value)
+#define DOWNLOAD_FLASH_GET_START_ADDR(__pH2C)    GET_H2C_FIELD(__pH2C + 0X0C, 0, 32)
+#define DOWNLOAD_FLASH_SET_START_ADDR(__pH2C, __Value)    SET_H2C_FIELD_CLR(__pH2C + 0X0C, 0, 32, __Value)
+#define DOWNLOAD_FLASH_SET_START_ADDR_NO_CLR(__pH2C, __Value)    SET_H2C_FIELD_NO_CLR(__pH2C + 0X0C, 0, 32, __Value)
+#define DOWNLOAD_FLASH_GET_SIZE(__pH2C)    GET_H2C_FIELD(__pH2C + 0X10, 0, 16)
+#define DOWNLOAD_FLASH_SET_SIZE(__pH2C, __Value)    SET_H2C_FIELD_CLR(__pH2C + 0X10, 0, 16, __Value)
+#define DOWNLOAD_FLASH_SET_SIZE_NO_CLR(__pH2C, __Value)    SET_H2C_FIELD_NO_CLR(__pH2C + 0X10, 0, 16, __Value)
+#define DOWNLOAD_FLASH_GET_SEGMENT_ID(__pH2C)    GET_H2C_FIELD(__pH2C + 0X10, 16, 7)
+#define DOWNLOAD_FLASH_SET_SEGMENT_ID(__pH2C, __Value)    SET_H2C_FIELD_CLR(__pH2C + 0X10, 16, 7, __Value)
+#define DOWNLOAD_FLASH_SET_SEGMENT_ID_NO_CLR(__pH2C, __Value)    SET_H2C_FIELD_NO_CLR(__pH2C + 0X10, 16, 7, __Value)
+#define DOWNLOAD_FLASH_GET_END_SEGMENT(__pH2C)    GET_H2C_FIELD(__pH2C + 0X10, 23, 1)
+#define DOWNLOAD_FLASH_SET_END_SEGMENT(__pH2C, __Value)    SET_H2C_FIELD_CLR(__pH2C + 0X10, 23, 1, __Value)
+#define DOWNLOAD_FLASH_SET_END_SEGMENT_NO_CLR(__pH2C, __Value)    SET_H2C_FIELD_NO_CLR(__pH2C + 0X10, 23, 1, __Value)
+#define UPDATE_PACKET_GET_SIZE(__pH2C)    GET_H2C_FIELD(__pH2C + 0X08, 0, 16)
+#define UPDATE_PACKET_SET_SIZE(__pH2C, __Value)    SET_H2C_FIELD_CLR(__pH2C + 0X08, 0, 16, __Value)
+#define UPDATE_PACKET_SET_SIZE_NO_CLR(__pH2C, __Value)    SET_H2C_FIELD_NO_CLR(__pH2C + 0X08, 0, 16, __Value)
+#define UPDATE_PACKET_GET_PACKET_ID(__pH2C)    GET_H2C_FIELD(__pH2C + 0X08, 16, 8)
+#define UPDATE_PACKET_SET_PACKET_ID(__pH2C, __Value)    SET_H2C_FIELD_CLR(__pH2C + 0X08, 16, 8, __Value)
+#define UPDATE_PACKET_SET_PACKET_ID_NO_CLR(__pH2C, __Value)    SET_H2C_FIELD_NO_CLR(__pH2C + 0X08, 16, 8, __Value)
+#define UPDATE_PACKET_GET_PACKET_LOC(__pH2C)    GET_H2C_FIELD(__pH2C + 0X08, 24, 8)
+#define UPDATE_PACKET_SET_PACKET_LOC(__pH2C, __Value)    SET_H2C_FIELD_CLR(__pH2C + 0X08, 24, 8, __Value)
+#define UPDATE_PACKET_SET_PACKET_LOC_NO_CLR(__pH2C, __Value)    SET_H2C_FIELD_NO_CLR(__pH2C + 0X08, 24, 8, __Value)
+#define GENERAL_INFO_GET_REF_TYPE(__pH2C)    GET_H2C_FIELD(__pH2C + 0X08, 0, 8)
+#define GENERAL_INFO_SET_REF_TYPE(__pH2C, __Value)    SET_H2C_FIELD_CLR(__pH2C + 0X08, 0, 8, __Value)
+#define GENERAL_INFO_SET_REF_TYPE_NO_CLR(__pH2C, __Value)    SET_H2C_FIELD_NO_CLR(__pH2C + 0X08, 0, 8, __Value)
+#define GENERAL_INFO_GET_RF_TYPE(__pH2C)    GET_H2C_FIELD(__pH2C + 0X08, 8, 9)
+#define GENERAL_INFO_SET_RF_TYPE(__pH2C, __Value)    SET_H2C_FIELD_CLR(__pH2C + 0X08, 8, 9, __Value)
+#define GENERAL_INFO_SET_RF_TYPE_NO_CLR(__pH2C, __Value)    SET_H2C_FIELD_NO_CLR(__pH2C + 0X08, 8, 9, __Value)
+#define GENERAL_INFO_GET_FW_TX_BOUNDARY(__pH2C)    GET_H2C_FIELD(__pH2C + 0X08, 16, 8)
+#define GENERAL_INFO_SET_FW_TX_BOUNDARY(__pH2C, __Value)    SET_H2C_FIELD_CLR(__pH2C + 0X08, 16, 8, __Value)
+#define GENERAL_INFO_SET_FW_TX_BOUNDARY_NO_CLR(__pH2C, __Value)    SET_H2C_FIELD_NO_CLR(__pH2C + 0X08, 16, 8, __Value)
+#define IQK_GET_CLEAR(__pH2C)    GET_H2C_FIELD(__pH2C + 0X08, 0, 1)
+#define IQK_SET_CLEAR(__pH2C, __Value)    SET_H2C_FIELD_CLR(__pH2C + 0X08, 0, 1, __Value)
+#define IQK_SET_CLEAR_NO_CLR(__pH2C, __Value)    SET_H2C_FIELD_NO_CLR(__pH2C + 0X08, 0, 1, __Value)
+#define POWER_TRACKING_GET_ENABLE_A(__pH2C)    GET_H2C_FIELD(__pH2C + 0X08, 0, 1)
+#define POWER_TRACKING_SET_ENABLE_A(__pH2C, __Value)    SET_H2C_FIELD_CLR(__pH2C + 0X08, 0, 1, __Value)
+#define POWER_TRACKING_SET_ENABLE_A_NO_CLR(__pH2C, __Value)    SET_H2C_FIELD_NO_CLR(__pH2C + 0X08, 0, 1, __Value)
+#define POWER_TRACKING_GET_ENABLE_B(__pH2C)    GET_H2C_FIELD(__pH2C + 0X08, 1, 1)
+#define POWER_TRACKING_SET_ENABLE_B(__pH2C, __Value)    SET_H2C_FIELD_CLR(__pH2C + 0X08, 1, 1, __Value)
+#define POWER_TRACKING_SET_ENABLE_B_NO_CLR(__pH2C, __Value)    SET_H2C_FIELD_NO_CLR(__pH2C + 0X08, 1, 1, __Value)
+#define POWER_TRACKING_GET_ENABLE_C(__pH2C)    GET_H2C_FIELD(__pH2C + 0X08, 2, 1)
+#define POWER_TRACKING_SET_ENABLE_C(__pH2C, __Value)    SET_H2C_FIELD_CLR(__pH2C + 0X08, 2, 1, __Value)
+#define POWER_TRACKING_SET_ENABLE_C_NO_CLR(__pH2C, __Value)    SET_H2C_FIELD_NO_CLR(__pH2C + 0X08, 2, 1, __Value)
+#define POWER_TRACKING_GET_ENABLE_D(__pH2C)    GET_H2C_FIELD(__pH2C + 0X08, 3, 1)
+#define POWER_TRACKING_SET_ENABLE_D(__pH2C, __Value)    SET_H2C_FIELD_CLR(__pH2C + 0X08, 3, 1, __Value)
+#define POWER_TRACKING_SET_ENABLE_D_NO_CLR(__pH2C, __Value)    SET_H2C_FIELD_NO_CLR(__pH2C + 0X08, 3, 1, __Value)
+#define POWER_TRACKING_GET_TYPE(__pH2C)    GET_H2C_FIELD(__pH2C + 0X08, 4, 3)
+#define POWER_TRACKING_SET_TYPE(__pH2C, __Value)    SET_H2C_FIELD_CLR(__pH2C + 0X08, 4, 3, __Value)
+#define POWER_TRACKING_SET_TYPE_NO_CLR(__pH2C, __Value)    SET_H2C_FIELD_NO_CLR(__pH2C + 0X08, 4, 3, __Value)
+#define POWER_TRACKING_GET_BBSWING_INDEX(__pH2C)    GET_H2C_FIELD(__pH2C + 0X08, 8, 8)
+#define POWER_TRACKING_SET_BBSWING_INDEX(__pH2C, __Value)    SET_H2C_FIELD_CLR(__pH2C + 0X08, 8, 8, __Value)
+#define POWER_TRACKING_SET_BBSWING_INDEX_NO_CLR(__pH2C, __Value)    SET_H2C_FIELD_NO_CLR(__pH2C + 0X08, 8, 8, __Value)
+#define POWER_TRACKING_GET_TX_PWR_INDEX_A(__pH2C)    GET_H2C_FIELD(__pH2C + 0X0C, 0, 8)
+#define POWER_TRACKING_SET_TX_PWR_INDEX_A(__pH2C, __Value)    SET_H2C_FIELD_CLR(__pH2C + 0X0C, 0, 8, __Value)
+#define POWER_TRACKING_SET_TX_PWR_INDEX_A_NO_CLR(__pH2C, __Value)    SET_H2C_FIELD_NO_CLR(__pH2C + 0X0C, 0, 8, __Value)
+#define POWER_TRACKING_GET_PWR_TRACKING_OFFSET_VALUE_A(__pH2C)    GET_H2C_FIELD(__pH2C + 0X0C, 8, 8)
+#define POWER_TRACKING_SET_PWR_TRACKING_OFFSET_VALUE_A(__pH2C, __Value)    SET_H2C_FIELD_CLR(__pH2C + 0X0C, 8, 8, __Value)
+#define POWER_TRACKING_SET_PWR_TRACKING_OFFSET_VALUE_A_NO_CLR(__pH2C, __Value)    SET_H2C_FIELD_NO_CLR(__pH2C + 0X0C, 8, 8, __Value)
+#define POWER_TRACKING_GET_TSSI_VALUE_A(__pH2C)    GET_H2C_FIELD(__pH2C + 0X0C, 16, 8)
+#define POWER_TRACKING_SET_TSSI_VALUE_A(__pH2C, __Value)    SET_H2C_FIELD_CLR(__pH2C + 0X0C, 16, 8, __Value)
+#define POWER_TRACKING_SET_TSSI_VALUE_A_NO_CLR(__pH2C, __Value)    SET_H2C_FIELD_NO_CLR(__pH2C + 0X0C, 16, 8, __Value)
+#define POWER_TRACKING_GET_TX_PWR_INDEX_B(__pH2C)    GET_H2C_FIELD(__pH2C + 0X10, 0, 8)
+#define POWER_TRACKING_SET_TX_PWR_INDEX_B(__pH2C, __Value)    SET_H2C_FIELD_CLR(__pH2C + 0X10, 0, 8, __Value)
+#define POWER_TRACKING_SET_TX_PWR_INDEX_B_NO_CLR(__pH2C, __Value)    SET_H2C_FIELD_NO_CLR(__pH2C + 0X10, 0, 8, __Value)
+#define POWER_TRACKING_GET_PWR_TRACKING_OFFSET_VALUE_B(__pH2C)    GET_H2C_FIELD(__pH2C + 0X10, 8, 8)
+#define POWER_TRACKING_SET_PWR_TRACKING_OFFSET_VALUE_B(__pH2C, __Value)    SET_H2C_FIELD_CLR(__pH2C + 0X10, 8, 8, __Value)
+#define POWER_TRACKING_SET_PWR_TRACKING_OFFSET_VALUE_B_NO_CLR(__pH2C, __Value)    SET_H2C_FIELD_NO_CLR(__pH2C + 0X10, 8, 8, __Value)
+#define POWER_TRACKING_GET_TSSI_VALUE_B(__pH2C)    GET_H2C_FIELD(__pH2C + 0X10, 16, 8)
+#define POWER_TRACKING_SET_TSSI_VALUE_B(__pH2C, __Value)    SET_H2C_FIELD_CLR(__pH2C + 0X10, 16, 8, __Value)
+#define POWER_TRACKING_SET_TSSI_VALUE_B_NO_CLR(__pH2C, __Value)    SET_H2C_FIELD_NO_CLR(__pH2C + 0X10, 16, 8, __Value)
+#define POWER_TRACKING_GET_TX_PWR_INDEX_C(__pH2C)    GET_H2C_FIELD(__pH2C + 0X14, 0, 8)
+#define POWER_TRACKING_SET_TX_PWR_INDEX_C(__pH2C, __Value)    SET_H2C_FIELD_CLR(__pH2C + 0X14, 0, 8, __Value)
+#define POWER_TRACKING_SET_TX_PWR_INDEX_C_NO_CLR(__pH2C, __Value)    SET_H2C_FIELD_NO_CLR(__pH2C + 0X14, 0, 8, __Value)
+#define POWER_TRACKING_GET_PWR_TRACKING_OFFSET_VALUE_C(__pH2C)    GET_H2C_FIELD(__pH2C + 0X14, 8, 8)
+#define POWER_TRACKING_SET_PWR_TRACKING_OFFSET_VALUE_C(__pH2C, __Value)    SET_H2C_FIELD_CLR(__pH2C + 0X14, 8, 8, __Value)
+#define POWER_TRACKING_SET_PWR_TRACKING_OFFSET_VALUE_C_NO_CLR(__pH2C, __Value)    SET_H2C_FIELD_NO_CLR(__pH2C + 0X14, 8, 8, __Value)
+#define POWER_TRACKING_GET_TSSI_VALUE_C(__pH2C)    GET_H2C_FIELD(__pH2C + 0X14, 16, 8)
+#define POWER_TRACKING_SET_TSSI_VALUE_C(__pH2C, __Value)    SET_H2C_FIELD_CLR(__pH2C + 0X14, 16, 8, __Value)
+#define POWER_TRACKING_SET_TSSI_VALUE_C_NO_CLR(__pH2C, __Value)    SET_H2C_FIELD_NO_CLR(__pH2C + 0X14, 16, 8, __Value)
+#define POWER_TRACKING_GET_TX_PWR_INDEX_D(__pH2C)    GET_H2C_FIELD(__pH2C + 0X18, 0, 8)
+#define POWER_TRACKING_SET_TX_PWR_INDEX_D(__pH2C, __Value)    SET_H2C_FIELD_CLR(__pH2C + 0X18, 0, 8, __Value)
+#define POWER_TRACKING_SET_TX_PWR_INDEX_D_NO_CLR(__pH2C, __Value)    SET_H2C_FIELD_NO_CLR(__pH2C + 0X18, 0, 8, __Value)
+#define POWER_TRACKING_GET_PWR_TRACKING_OFFSET_VALUE_D(__pH2C)    GET_H2C_FIELD(__pH2C + 0X18, 8, 8)
+#define POWER_TRACKING_SET_PWR_TRACKING_OFFSET_VALUE_D(__pH2C, __Value)    SET_H2C_FIELD_CLR(__pH2C + 0X18, 8, 8, __Value)
+#define POWER_TRACKING_SET_PWR_TRACKING_OFFSET_VALUE_D_NO_CLR(__pH2C, __Value)    SET_H2C_FIELD_NO_CLR(__pH2C + 0X18, 8, 8, __Value)
+#define POWER_TRACKING_GET_TSSI_VALUE_D(__pH2C)    GET_H2C_FIELD(__pH2C + 0X18, 16, 8)
+#define POWER_TRACKING_SET_TSSI_VALUE_D(__pH2C, __Value)    SET_H2C_FIELD_CLR(__pH2C + 0X18, 16, 8, __Value)
+#define POWER_TRACKING_SET_TSSI_VALUE_D_NO_CLR(__pH2C, __Value)    SET_H2C_FIELD_NO_CLR(__pH2C + 0X18, 16, 8, __Value)
+#define PSD_GET_START_PSD(__pH2C)    GET_H2C_FIELD(__pH2C + 0X08, 0, 16)
+#define PSD_SET_START_PSD(__pH2C, __Value)    SET_H2C_FIELD_CLR(__pH2C + 0X08, 0, 16, __Value)
+#define PSD_SET_START_PSD_NO_CLR(__pH2C, __Value)    SET_H2C_FIELD_NO_CLR(__pH2C + 0X08, 0, 16, __Value)
+#define PSD_GET_END_PSD(__pH2C)    GET_H2C_FIELD(__pH2C + 0X08, 16, 16)
+#define PSD_SET_END_PSD(__pH2C, __Value)    SET_H2C_FIELD_CLR(__pH2C + 0X08, 16, 16, __Value)
+#define PSD_SET_END_PSD_NO_CLR(__pH2C, __Value)    SET_H2C_FIELD_NO_CLR(__pH2C + 0X08, 16, 16, __Value)
+#define BT_COEX_GET_DATA_START(__pH2C)    GET_H2C_FIELD(__pH2C + 0X08, 0, 8)
+#define BT_COEX_SET_DATA_START(__pH2C, __Value)    SET_H2C_FIELD_CLR(__pH2C + 0X08, 0, 8, __Value)
+#define BT_COEX_SET_DATA_START_NO_CLR(__pH2C, __Value)    SET_H2C_FIELD_NO_CLR(__pH2C + 0X08, 0, 8, __Value)
+#endif