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 _PHYRX_ABORT_REQUEST_INFO_H_
19 #define _PHYRX_ABORT_REQUEST_INFO_H_
20 
21 #define NUM_OF_DWORDS_PHYRX_ABORT_REQUEST_INFO 1
22 
23 struct phyrx_abort_request_info {
24 #ifndef WIFI_BIT_ORDER_BIG_ENDIAN
25              uint32_t phyrx_abort_reason                                      :  8,
26                       phy_enters_nap_state                                    :  1,
27                       phy_enters_defer_state                                  :  1,
28                       gain_change_by_main                                     :  1,
29                       gain_change_by_bt                                       :  1,
30                       main_tx_indication                                      :  1,
31                       bt_tx_indication                                        :  1,
32                       concurrent_mode                                         :  1,
33                       reserved_0                                              :  1,
34                       receive_duration                                        : 16;
35 #else
36              uint32_t receive_duration                                        : 16,
37                       reserved_0                                              :  1,
38                       concurrent_mode                                         :  1,
39                       bt_tx_indication                                        :  1,
40                       main_tx_indication                                      :  1,
41                       gain_change_by_bt                                       :  1,
42                       gain_change_by_main                                     :  1,
43                       phy_enters_defer_state                                  :  1,
44                       phy_enters_nap_state                                    :  1,
45                       phyrx_abort_reason                                      :  8;
46 #endif
47 };
48 
49 #define PHYRX_ABORT_REQUEST_INFO_PHYRX_ABORT_REASON_OFFSET                          0x00000000
50 #define PHYRX_ABORT_REQUEST_INFO_PHYRX_ABORT_REASON_LSB                             0
51 #define PHYRX_ABORT_REQUEST_INFO_PHYRX_ABORT_REASON_MSB                             7
52 #define PHYRX_ABORT_REQUEST_INFO_PHYRX_ABORT_REASON_MASK                            0x000000ff
53 
54 #define PHYRX_ABORT_REQUEST_INFO_PHY_ENTERS_NAP_STATE_OFFSET                        0x00000000
55 #define PHYRX_ABORT_REQUEST_INFO_PHY_ENTERS_NAP_STATE_LSB                           8
56 #define PHYRX_ABORT_REQUEST_INFO_PHY_ENTERS_NAP_STATE_MSB                           8
57 #define PHYRX_ABORT_REQUEST_INFO_PHY_ENTERS_NAP_STATE_MASK                          0x00000100
58 
59 #define PHYRX_ABORT_REQUEST_INFO_PHY_ENTERS_DEFER_STATE_OFFSET                      0x00000000
60 #define PHYRX_ABORT_REQUEST_INFO_PHY_ENTERS_DEFER_STATE_LSB                         9
61 #define PHYRX_ABORT_REQUEST_INFO_PHY_ENTERS_DEFER_STATE_MSB                         9
62 #define PHYRX_ABORT_REQUEST_INFO_PHY_ENTERS_DEFER_STATE_MASK                        0x00000200
63 
64 #define PHYRX_ABORT_REQUEST_INFO_GAIN_CHANGE_BY_MAIN_OFFSET                         0x00000000
65 #define PHYRX_ABORT_REQUEST_INFO_GAIN_CHANGE_BY_MAIN_LSB                            10
66 #define PHYRX_ABORT_REQUEST_INFO_GAIN_CHANGE_BY_MAIN_MSB                            10
67 #define PHYRX_ABORT_REQUEST_INFO_GAIN_CHANGE_BY_MAIN_MASK                           0x00000400
68 
69 #define PHYRX_ABORT_REQUEST_INFO_GAIN_CHANGE_BY_BT_OFFSET                           0x00000000
70 #define PHYRX_ABORT_REQUEST_INFO_GAIN_CHANGE_BY_BT_LSB                              11
71 #define PHYRX_ABORT_REQUEST_INFO_GAIN_CHANGE_BY_BT_MSB                              11
72 #define PHYRX_ABORT_REQUEST_INFO_GAIN_CHANGE_BY_BT_MASK                             0x00000800
73 
74 #define PHYRX_ABORT_REQUEST_INFO_MAIN_TX_INDICATION_OFFSET                          0x00000000
75 #define PHYRX_ABORT_REQUEST_INFO_MAIN_TX_INDICATION_LSB                             12
76 #define PHYRX_ABORT_REQUEST_INFO_MAIN_TX_INDICATION_MSB                             12
77 #define PHYRX_ABORT_REQUEST_INFO_MAIN_TX_INDICATION_MASK                            0x00001000
78 
79 #define PHYRX_ABORT_REQUEST_INFO_BT_TX_INDICATION_OFFSET                            0x00000000
80 #define PHYRX_ABORT_REQUEST_INFO_BT_TX_INDICATION_LSB                               13
81 #define PHYRX_ABORT_REQUEST_INFO_BT_TX_INDICATION_MSB                               13
82 #define PHYRX_ABORT_REQUEST_INFO_BT_TX_INDICATION_MASK                              0x00002000
83 
84 #define PHYRX_ABORT_REQUEST_INFO_CONCURRENT_MODE_OFFSET                             0x00000000
85 #define PHYRX_ABORT_REQUEST_INFO_CONCURRENT_MODE_LSB                                14
86 #define PHYRX_ABORT_REQUEST_INFO_CONCURRENT_MODE_MSB                                14
87 #define PHYRX_ABORT_REQUEST_INFO_CONCURRENT_MODE_MASK                               0x00004000
88 
89 #define PHYRX_ABORT_REQUEST_INFO_RESERVED_0_OFFSET                                  0x00000000
90 #define PHYRX_ABORT_REQUEST_INFO_RESERVED_0_LSB                                     15
91 #define PHYRX_ABORT_REQUEST_INFO_RESERVED_0_MSB                                     15
92 #define PHYRX_ABORT_REQUEST_INFO_RESERVED_0_MASK                                    0x00008000
93 
94 #define PHYRX_ABORT_REQUEST_INFO_RECEIVE_DURATION_OFFSET                            0x00000000
95 #define PHYRX_ABORT_REQUEST_INFO_RECEIVE_DURATION_LSB                               16
96 #define PHYRX_ABORT_REQUEST_INFO_RECEIVE_DURATION_MSB                               31
97 #define PHYRX_ABORT_REQUEST_INFO_RECEIVE_DURATION_MASK                              0xffff0000
98 
99 #endif
100