From 75dffb24b3413ea642a3fa5b8cc6c947597e72a0 Mon Sep 17 00:00:00 2001 From: Sandeep Puligilla Date: Sat, 11 Dec 2021 06:01:24 -0800 Subject: [PATCH] fw-api: CL 16645516 - update fw common interface files Change-Id: I36b2683460902be10e42cfc91c937587c3325059 HTT: add H2T MSI_SETUP msg def CRs-Fixed: 2262693 --- fw/htt.h | 110 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 109 insertions(+), 1 deletion(-) diff --git a/fw/htt.h b/fw/htt.h index 817e04ff79d3..fe01877a67d3 100644 --- a/fw/htt.h +++ b/fw/htt.h @@ -225,9 +225,10 @@ * HTT_T2H_SAWF_DEF_QUEUES_MAP_REPORT_CONF defs. * 3.100 Add htt_tx_wbm_completion_v3 def. * 3.101 Add HTT_UL_OFDMA_USER_INFO_V1_BITMAP defs. + * 3.102 Add HTT_H2T_MSG_TYPE_MSI_SETUP def. */ #define HTT_CURRENT_VERSION_MAJOR 3 -#define HTT_CURRENT_VERSION_MINOR 101 +#define HTT_CURRENT_VERSION_MINOR 102 #define HTT_NUM_TX_FRAG_DESC 1024 @@ -784,6 +785,7 @@ enum htt_h2t_msg_type { HTT_H2T_SAWF_DEF_QUEUES_MAP_REQ = 0x1c, HTT_H2T_SAWF_DEF_QUEUES_UNMAP_REQ = 0x1d, HTT_H2T_SAWF_DEF_QUEUES_MAP_REPORT_REQ = 0x1e, + HTT_H2T_MSG_TYPE_MSI_SETUP = 0x1f, /* keep this last */ HTT_H2T_NUM_MSGS @@ -4851,6 +4853,112 @@ PREPACK struct htt_wdi_ipa_op_request_t ((_var) |= ((_val) << HTT_WDI_IPA_OP_REQUEST_OP_CODE_S)); \ } while (0) +/* + * @brief host -> target HTT_MSI_SETUP message + * + * MSG_TYPE => HTT_H2T_MSG_TYPE_MSI_SETUP + * + * @details + * After target is booted up, host can send MSI setup message so that + * target sets up HW registers based on setup message. + * + * The message would appear as follows: + * |31 24|23 16|15|14 8|7 0| + * |---------------+-----------------+-----------------+-----------------| + * | reserved | msi_type | pdev_id | msg_type | + * |---------------------------------------------------------------------| + * | msi_addr_lo | + * |---------------------------------------------------------------------| + * | msi_addr_hi | + * |---------------------------------------------------------------------| + * | msi_data | + * |---------------------------------------------------------------------| + * + * The message is interpreted as follows: + * dword0 - b'0:7 - msg_type: This will be set to + * 0x1f (HTT_H2T_MSG_TYPE_MSI_SETUP) + * b'8:15 - pdev_id: + * 0 (for rings at SOC/UMAC level), + * 1/2/3 mac id (for rings at LMAC level) + * b'16:23 - msi_type: identify which msi registers need to be setup + * more details can be got from enum htt_msi_setup_type + * b'24:31 - reserved + * dword8 - b'0:31 - ring_msi_addr_lo: Lower 32bits of MSI cfg address + * dword9 - b'0:31 - ring_msi_addr_hi: Upper 32bits of MSI cfg address + * dword10 - b'0:31 - ring_msi_data: MSI data configured by host + */ +PREPACK struct htt_msi_setup_t { + A_UINT32 msg_type: 8, + pdev_id: 8, + msi_type: 8, + reserved: 8; + A_UINT32 msi_addr_lo; + A_UINT32 msi_addr_hi; + A_UINT32 msi_data; +} POSTPACK; + +enum htt_msi_setup_type { + HTT_PPDU_END_MSI_SETUP_TYPE, + + /* Insert new types here*/ +}; + +#define HTT_MSI_SETUP_SZ (sizeof(struct htt_msi_setup_t)) +#define HTT_MSI_SETUP_PDEV_ID_M 0x0000ff00 +#define HTT_MSI_SETUP_PDEV_ID_S 8 +#define HTT_MSI_SETUP_PDEV_ID_GET(_var) \ + (((_var) & HTT_MSI_SETUP_PDEV_ID_M) >> \ + HTT_MSI_SETUP_PDEV_ID_S) +#define HTT_MSI_SETUP_PDEV_ID_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_MSI_SETUP_PDEV_ID, _val); \ + ((_var) |= ((_val) << HTT_MSI_SETUP_PDEV_ID_S)); \ + } while (0) + +#define HTT_MSI_SETUP_MSI_TYPE_M 0x00ff0000 +#define HTT_MSI_SETUP_MSI_TYPE_S 16 +#define HTT_MSI_SETUP_MSI_TYPE_GET(_var) \ + (((_var) & HTT_MSI_SETUP_MSI_TYPE_M) >> \ + HTT_MSI_SETUP_MSI_TYPE_S) +#define HTT_MSI_SETUP_MSI_TYPE_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_MSI_SETUP_MSI_TYPE, _val); \ + ((_var) |= ((_val) << HTT_MSI_SETUP_MSI_TYPE_S)); \ + } while (0) + +#define HTT_MSI_SETUP_MSI_ADDR_LO_M 0xffffffff +#define HTT_MSI_SETUP_MSI_ADDR_LO_S 0 +#define HTT_MSI_SETUP_MSI_ADDR_LO_GET(_var) \ + (((_var) & HTT_MSI_SETUP_MSI_ADDR_LO_M) >> \ + HTT_MSI_SETUP_MSI_ADDR_LO_S) +#define HTT_MSI_SETUP_MSI_ADDR_LO_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_MSI_SETUP_MSI_ADDR_LO, _val); \ + ((_var) |= ((_val) << HTT_MSI_SETUP_MSI_ADDR_LO_S)); \ + } while (0) + +#define HTT_MSI_SETUP_MSI_ADDR_HI_M 0xffffffff +#define HTT_MSI_SETUP_MSI_ADDR_HI_S 0 +#define HTT_MSI_SETUP_MSI_ADDR_HI_GET(_var) \ + (((_var) & HTT_MSI_SETUP_MSI_ADDR_HI_M) >> \ + HTT_MSI_SETUP_MSI_ADDR_HI_S) +#define HTT_MSI_SETUP_MSI_ADDR_HI_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_MSI_SETUP_MSI_ADDR_HI, _val); \ + ((_var) |= ((_val) << HTT_MSI_SETUP_MSI_ADDR_HI_S)); \ + } while (0) + +#define HTT_MSI_SETUP_MSI_DATA_M 0xffffffff +#define HTT_MSI_SETUP_MSI_DATA_S 0 +#define HTT_MSI_SETUP_MSI_DATA_GET(_var) \ + (((_var) & HTT_MSI_SETUP_MSI_DATA_M) >> \ + HTT_MSI_SETUP_MSI_DATA_S) +#define HTT_MSI_SETUP_MSI_DATA_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_MSI_SETUP_MSI_DATA, _val); \ + ((_var) |= ((_val) << HTT_MSI_SETUP_MSI_DATA_S)); \ + } while (0) + /* * @brief host -> target HTT_SRING_SETUP message *