1 /* 2 * Copyright (c) 2024 Qualcomm Innovation Center, Inc. All rights reserved. 3 * 4 * Permission to use, copy, modify, and/or distribute this software for any 5 * purpose with or without fee is hereby granted, provided that the above 6 * copyright notice and this permission notice appear in all copies. 7 * 8 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 9 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 10 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 11 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 12 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 13 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 14 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 15 */ 16 17 18 #ifndef _PHYTX_PKT_END_H_ 19 #define _PHYTX_PKT_END_H_ 20 21 #define NUM_OF_WORDS_PHYTX_PKT_END 26 22 23 #define NUM_OF_DWORDS_PHYTX_PKT_END 13 24 25 struct phytx_pkt_end { 26 #ifndef WIFI_BIT_ORDER_BIG_ENDIAN 27 uint16_t start_of_frame_timestamp_15_0 : 16; 28 uint16_t start_of_frame_timestamp_31_16 : 16; 29 uint16_t end_of_frame_timestamp_15_0 : 16; 30 uint16_t end_of_frame_timestamp_31_16 : 16; 31 uint16_t tx_group_delay : 12, 32 timing_status : 2, 33 phyrx_entered_nap_state : 1, 34 dpdtrain_done : 1; 35 uint16_t transmit_delay : 16; 36 uint16_t tpc_dbg_info_cmn_15_0 : 16; 37 uint16_t tpc_dbg_info_cmn_31_16 : 16; 38 uint16_t tpc_dbg_info_cmn_47_32 : 16; 39 uint16_t tpc_dbg_info_chn1_15_0 : 16; 40 uint16_t tpc_dbg_info_chn1_31_16 : 16; 41 uint16_t tpc_dbg_info_chn1_47_32 : 16; 42 uint16_t tpc_dbg_info_chn1_63_48 : 16; 43 uint16_t tpc_dbg_info_chn1_79_64 : 16; 44 uint16_t tpc_dbg_info_chn2_15_0 : 16; 45 uint16_t tpc_dbg_info_chn2_31_16 : 16; 46 uint16_t tpc_dbg_info_chn2_47_32 : 16; 47 uint16_t tpc_dbg_info_chn2_63_48 : 16; 48 uint16_t tpc_dbg_info_chn2_79_64 : 16; 49 uint16_t phytx_tx_end_sw_info_15_0 : 16; 50 uint16_t phytx_tx_end_sw_info_31_16 : 16; 51 uint16_t phytx_tx_end_sw_info_47_32 : 16; 52 uint16_t phytx_tx_end_sw_info_63_48 : 16; 53 uint16_t beamform_masked_user_bitmap_15_0 : 16; 54 uint16_t beamform_masked_user_bitmap_31_16 : 16; 55 uint16_t beamform_masked_user_bitmap_36_32 : 5, 56 reserved_23 : 11; 57 #else 58 uint16_t start_of_frame_timestamp_15_0 : 16; 59 uint16_t start_of_frame_timestamp_31_16 : 16; 60 uint16_t end_of_frame_timestamp_15_0 : 16; 61 uint16_t end_of_frame_timestamp_31_16 : 16; 62 uint16_t dpdtrain_done : 1, 63 phyrx_entered_nap_state : 1, 64 timing_status : 2, 65 tx_group_delay : 12; 66 uint16_t transmit_delay : 16; 67 uint16_t tpc_dbg_info_cmn_15_0 : 16; 68 uint16_t tpc_dbg_info_cmn_31_16 : 16; 69 uint16_t tpc_dbg_info_cmn_47_32 : 16; 70 uint16_t tpc_dbg_info_chn1_15_0 : 16; 71 uint16_t tpc_dbg_info_chn1_31_16 : 16; 72 uint16_t tpc_dbg_info_chn1_47_32 : 16; 73 uint16_t tpc_dbg_info_chn1_63_48 : 16; 74 uint16_t tpc_dbg_info_chn1_79_64 : 16; 75 uint16_t tpc_dbg_info_chn2_15_0 : 16; 76 uint16_t tpc_dbg_info_chn2_31_16 : 16; 77 uint16_t tpc_dbg_info_chn2_47_32 : 16; 78 uint16_t tpc_dbg_info_chn2_63_48 : 16; 79 uint16_t tpc_dbg_info_chn2_79_64 : 16; 80 uint16_t phytx_tx_end_sw_info_15_0 : 16; 81 uint16_t phytx_tx_end_sw_info_31_16 : 16; 82 uint16_t phytx_tx_end_sw_info_47_32 : 16; 83 uint16_t phytx_tx_end_sw_info_63_48 : 16; 84 uint16_t beamform_masked_user_bitmap_15_0 : 16; 85 uint16_t beamform_masked_user_bitmap_31_16 : 16; 86 uint16_t reserved_23 : 11, 87 beamform_masked_user_bitmap_36_32 : 5; 88 #endif 89 }; 90 91 #define PHYTX_PKT_END_START_OF_FRAME_TIMESTAMP_15_0_OFFSET 0x00000000 92 #define PHYTX_PKT_END_START_OF_FRAME_TIMESTAMP_15_0_LSB 0 93 #define PHYTX_PKT_END_START_OF_FRAME_TIMESTAMP_15_0_MSB 15 94 #define PHYTX_PKT_END_START_OF_FRAME_TIMESTAMP_15_0_MASK 0x0000ffff 95 96 #define PHYTX_PKT_END_START_OF_FRAME_TIMESTAMP_31_16_OFFSET 0x00000002 97 #define PHYTX_PKT_END_START_OF_FRAME_TIMESTAMP_31_16_LSB 0 98 #define PHYTX_PKT_END_START_OF_FRAME_TIMESTAMP_31_16_MSB 15 99 #define PHYTX_PKT_END_START_OF_FRAME_TIMESTAMP_31_16_MASK 0x0000ffff 100 101 #define PHYTX_PKT_END_END_OF_FRAME_TIMESTAMP_15_0_OFFSET 0x00000004 102 #define PHYTX_PKT_END_END_OF_FRAME_TIMESTAMP_15_0_LSB 0 103 #define PHYTX_PKT_END_END_OF_FRAME_TIMESTAMP_15_0_MSB 15 104 #define PHYTX_PKT_END_END_OF_FRAME_TIMESTAMP_15_0_MASK 0x0000ffff 105 106 #define PHYTX_PKT_END_END_OF_FRAME_TIMESTAMP_31_16_OFFSET 0x00000006 107 #define PHYTX_PKT_END_END_OF_FRAME_TIMESTAMP_31_16_LSB 0 108 #define PHYTX_PKT_END_END_OF_FRAME_TIMESTAMP_31_16_MSB 15 109 #define PHYTX_PKT_END_END_OF_FRAME_TIMESTAMP_31_16_MASK 0x0000ffff 110 111 #define PHYTX_PKT_END_TX_GROUP_DELAY_OFFSET 0x00000008 112 #define PHYTX_PKT_END_TX_GROUP_DELAY_LSB 0 113 #define PHYTX_PKT_END_TX_GROUP_DELAY_MSB 11 114 #define PHYTX_PKT_END_TX_GROUP_DELAY_MASK 0x00000fff 115 116 #define PHYTX_PKT_END_TIMING_STATUS_OFFSET 0x00000008 117 #define PHYTX_PKT_END_TIMING_STATUS_LSB 12 118 #define PHYTX_PKT_END_TIMING_STATUS_MSB 13 119 #define PHYTX_PKT_END_TIMING_STATUS_MASK 0x00003000 120 121 #define PHYTX_PKT_END_PHYRX_ENTERED_NAP_STATE_OFFSET 0x00000008 122 #define PHYTX_PKT_END_PHYRX_ENTERED_NAP_STATE_LSB 14 123 #define PHYTX_PKT_END_PHYRX_ENTERED_NAP_STATE_MSB 14 124 #define PHYTX_PKT_END_PHYRX_ENTERED_NAP_STATE_MASK 0x00004000 125 126 #define PHYTX_PKT_END_DPDTRAIN_DONE_OFFSET 0x00000008 127 #define PHYTX_PKT_END_DPDTRAIN_DONE_LSB 15 128 #define PHYTX_PKT_END_DPDTRAIN_DONE_MSB 15 129 #define PHYTX_PKT_END_DPDTRAIN_DONE_MASK 0x00008000 130 131 #define PHYTX_PKT_END_TRANSMIT_DELAY_OFFSET 0x0000000a 132 #define PHYTX_PKT_END_TRANSMIT_DELAY_LSB 0 133 #define PHYTX_PKT_END_TRANSMIT_DELAY_MSB 15 134 #define PHYTX_PKT_END_TRANSMIT_DELAY_MASK 0x0000ffff 135 136 #define PHYTX_PKT_END_TPC_DBG_INFO_CMN_15_0_OFFSET 0x0000000c 137 #define PHYTX_PKT_END_TPC_DBG_INFO_CMN_15_0_LSB 0 138 #define PHYTX_PKT_END_TPC_DBG_INFO_CMN_15_0_MSB 15 139 #define PHYTX_PKT_END_TPC_DBG_INFO_CMN_15_0_MASK 0x0000ffff 140 141 #define PHYTX_PKT_END_TPC_DBG_INFO_CMN_31_16_OFFSET 0x0000000e 142 #define PHYTX_PKT_END_TPC_DBG_INFO_CMN_31_16_LSB 0 143 #define PHYTX_PKT_END_TPC_DBG_INFO_CMN_31_16_MSB 15 144 #define PHYTX_PKT_END_TPC_DBG_INFO_CMN_31_16_MASK 0x0000ffff 145 146 #define PHYTX_PKT_END_TPC_DBG_INFO_CMN_47_32_OFFSET 0x00000010 147 #define PHYTX_PKT_END_TPC_DBG_INFO_CMN_47_32_LSB 0 148 #define PHYTX_PKT_END_TPC_DBG_INFO_CMN_47_32_MSB 15 149 #define PHYTX_PKT_END_TPC_DBG_INFO_CMN_47_32_MASK 0x0000ffff 150 151 #define PHYTX_PKT_END_TPC_DBG_INFO_CHN1_15_0_OFFSET 0x00000012 152 #define PHYTX_PKT_END_TPC_DBG_INFO_CHN1_15_0_LSB 0 153 #define PHYTX_PKT_END_TPC_DBG_INFO_CHN1_15_0_MSB 15 154 #define PHYTX_PKT_END_TPC_DBG_INFO_CHN1_15_0_MASK 0x0000ffff 155 156 #define PHYTX_PKT_END_TPC_DBG_INFO_CHN1_31_16_OFFSET 0x00000014 157 #define PHYTX_PKT_END_TPC_DBG_INFO_CHN1_31_16_LSB 0 158 #define PHYTX_PKT_END_TPC_DBG_INFO_CHN1_31_16_MSB 15 159 #define PHYTX_PKT_END_TPC_DBG_INFO_CHN1_31_16_MASK 0x0000ffff 160 161 #define PHYTX_PKT_END_TPC_DBG_INFO_CHN1_47_32_OFFSET 0x00000016 162 #define PHYTX_PKT_END_TPC_DBG_INFO_CHN1_47_32_LSB 0 163 #define PHYTX_PKT_END_TPC_DBG_INFO_CHN1_47_32_MSB 15 164 #define PHYTX_PKT_END_TPC_DBG_INFO_CHN1_47_32_MASK 0x0000ffff 165 166 #define PHYTX_PKT_END_TPC_DBG_INFO_CHN1_63_48_OFFSET 0x00000018 167 #define PHYTX_PKT_END_TPC_DBG_INFO_CHN1_63_48_LSB 0 168 #define PHYTX_PKT_END_TPC_DBG_INFO_CHN1_63_48_MSB 15 169 #define PHYTX_PKT_END_TPC_DBG_INFO_CHN1_63_48_MASK 0x0000ffff 170 171 #define PHYTX_PKT_END_TPC_DBG_INFO_CHN1_79_64_OFFSET 0x0000001a 172 #define PHYTX_PKT_END_TPC_DBG_INFO_CHN1_79_64_LSB 0 173 #define PHYTX_PKT_END_TPC_DBG_INFO_CHN1_79_64_MSB 15 174 #define PHYTX_PKT_END_TPC_DBG_INFO_CHN1_79_64_MASK 0x0000ffff 175 176 #define PHYTX_PKT_END_TPC_DBG_INFO_CHN2_15_0_OFFSET 0x0000001c 177 #define PHYTX_PKT_END_TPC_DBG_INFO_CHN2_15_0_LSB 0 178 #define PHYTX_PKT_END_TPC_DBG_INFO_CHN2_15_0_MSB 15 179 #define PHYTX_PKT_END_TPC_DBG_INFO_CHN2_15_0_MASK 0x0000ffff 180 181 #define PHYTX_PKT_END_TPC_DBG_INFO_CHN2_31_16_OFFSET 0x0000001e 182 #define PHYTX_PKT_END_TPC_DBG_INFO_CHN2_31_16_LSB 0 183 #define PHYTX_PKT_END_TPC_DBG_INFO_CHN2_31_16_MSB 15 184 #define PHYTX_PKT_END_TPC_DBG_INFO_CHN2_31_16_MASK 0x0000ffff 185 186 #define PHYTX_PKT_END_TPC_DBG_INFO_CHN2_47_32_OFFSET 0x00000020 187 #define PHYTX_PKT_END_TPC_DBG_INFO_CHN2_47_32_LSB 0 188 #define PHYTX_PKT_END_TPC_DBG_INFO_CHN2_47_32_MSB 15 189 #define PHYTX_PKT_END_TPC_DBG_INFO_CHN2_47_32_MASK 0x0000ffff 190 191 #define PHYTX_PKT_END_TPC_DBG_INFO_CHN2_63_48_OFFSET 0x00000022 192 #define PHYTX_PKT_END_TPC_DBG_INFO_CHN2_63_48_LSB 0 193 #define PHYTX_PKT_END_TPC_DBG_INFO_CHN2_63_48_MSB 15 194 #define PHYTX_PKT_END_TPC_DBG_INFO_CHN2_63_48_MASK 0x0000ffff 195 196 #define PHYTX_PKT_END_TPC_DBG_INFO_CHN2_79_64_OFFSET 0x00000024 197 #define PHYTX_PKT_END_TPC_DBG_INFO_CHN2_79_64_LSB 0 198 #define PHYTX_PKT_END_TPC_DBG_INFO_CHN2_79_64_MSB 15 199 #define PHYTX_PKT_END_TPC_DBG_INFO_CHN2_79_64_MASK 0x0000ffff 200 201 #define PHYTX_PKT_END_PHYTX_TX_END_SW_INFO_15_0_OFFSET 0x00000026 202 #define PHYTX_PKT_END_PHYTX_TX_END_SW_INFO_15_0_LSB 0 203 #define PHYTX_PKT_END_PHYTX_TX_END_SW_INFO_15_0_MSB 15 204 #define PHYTX_PKT_END_PHYTX_TX_END_SW_INFO_15_0_MASK 0x0000ffff 205 206 #define PHYTX_PKT_END_PHYTX_TX_END_SW_INFO_31_16_OFFSET 0x00000028 207 #define PHYTX_PKT_END_PHYTX_TX_END_SW_INFO_31_16_LSB 0 208 #define PHYTX_PKT_END_PHYTX_TX_END_SW_INFO_31_16_MSB 15 209 #define PHYTX_PKT_END_PHYTX_TX_END_SW_INFO_31_16_MASK 0x0000ffff 210 211 #define PHYTX_PKT_END_PHYTX_TX_END_SW_INFO_47_32_OFFSET 0x0000002a 212 #define PHYTX_PKT_END_PHYTX_TX_END_SW_INFO_47_32_LSB 0 213 #define PHYTX_PKT_END_PHYTX_TX_END_SW_INFO_47_32_MSB 15 214 #define PHYTX_PKT_END_PHYTX_TX_END_SW_INFO_47_32_MASK 0x0000ffff 215 216 #define PHYTX_PKT_END_PHYTX_TX_END_SW_INFO_63_48_OFFSET 0x0000002c 217 #define PHYTX_PKT_END_PHYTX_TX_END_SW_INFO_63_48_LSB 0 218 #define PHYTX_PKT_END_PHYTX_TX_END_SW_INFO_63_48_MSB 15 219 #define PHYTX_PKT_END_PHYTX_TX_END_SW_INFO_63_48_MASK 0x0000ffff 220 221 #define PHYTX_PKT_END_BEAMFORM_MASKED_USER_BITMAP_15_0_OFFSET 0x0000002e 222 #define PHYTX_PKT_END_BEAMFORM_MASKED_USER_BITMAP_15_0_LSB 0 223 #define PHYTX_PKT_END_BEAMFORM_MASKED_USER_BITMAP_15_0_MSB 15 224 #define PHYTX_PKT_END_BEAMFORM_MASKED_USER_BITMAP_15_0_MASK 0x0000ffff 225 226 #define PHYTX_PKT_END_BEAMFORM_MASKED_USER_BITMAP_31_16_OFFSET 0x00000030 227 #define PHYTX_PKT_END_BEAMFORM_MASKED_USER_BITMAP_31_16_LSB 0 228 #define PHYTX_PKT_END_BEAMFORM_MASKED_USER_BITMAP_31_16_MSB 15 229 #define PHYTX_PKT_END_BEAMFORM_MASKED_USER_BITMAP_31_16_MASK 0x0000ffff 230 231 #define PHYTX_PKT_END_BEAMFORM_MASKED_USER_BITMAP_36_32_OFFSET 0x00000032 232 #define PHYTX_PKT_END_BEAMFORM_MASKED_USER_BITMAP_36_32_LSB 0 233 #define PHYTX_PKT_END_BEAMFORM_MASKED_USER_BITMAP_36_32_MSB 4 234 #define PHYTX_PKT_END_BEAMFORM_MASKED_USER_BITMAP_36_32_MASK 0x0000001f 235 236 #define PHYTX_PKT_END_RESERVED_23_OFFSET 0x00000032 237 #define PHYTX_PKT_END_RESERVED_23_LSB 5 238 #define PHYTX_PKT_END_RESERVED_23_MSB 15 239 #define PHYTX_PKT_END_RESERVED_23_MASK 0x0000ffe0 240 241 #endif 242