162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 262306a36Sopenharmony_ci/* Copyright(c) 2009-2012 Realtek Corporation.*/ 362306a36Sopenharmony_ci 462306a36Sopenharmony_ci#ifndef __REALTEK_92S_DEF_H__ 562306a36Sopenharmony_ci#define __REALTEK_92S_DEF_H__ 662306a36Sopenharmony_ci 762306a36Sopenharmony_ci#define RX_MPDU_QUEUE 0 862306a36Sopenharmony_ci#define RX_CMD_QUEUE 1 962306a36Sopenharmony_ci 1062306a36Sopenharmony_ci#define SHORT_SLOT_TIME 9 1162306a36Sopenharmony_ci#define NON_SHORT_SLOT_TIME 20 1262306a36Sopenharmony_ci 1362306a36Sopenharmony_ci/* Queue Select Value in TxDesc */ 1462306a36Sopenharmony_ci#define QSLT_BK 0x2 1562306a36Sopenharmony_ci#define QSLT_BE 0x0 1662306a36Sopenharmony_ci#define QSLT_VI 0x5 1762306a36Sopenharmony_ci#define QSLT_VO 0x6 1862306a36Sopenharmony_ci#define QSLT_BEACON 0x10 1962306a36Sopenharmony_ci#define QSLT_HIGH 0x11 2062306a36Sopenharmony_ci#define QSLT_MGNT 0x12 2162306a36Sopenharmony_ci#define QSLT_CMD 0x13 2262306a36Sopenharmony_ci 2362306a36Sopenharmony_ci/* Tx Desc */ 2462306a36Sopenharmony_ci#define TX_DESC_SIZE_RTL8192S (16 * 4) 2562306a36Sopenharmony_ci#define TX_CMDDESC_SIZE_RTL8192S (16 * 4) 2662306a36Sopenharmony_ci 2762306a36Sopenharmony_ci/* macros to read/write various fields in RX or TX descriptors */ 2862306a36Sopenharmony_ci 2962306a36Sopenharmony_ci/* Dword 0 */ 3062306a36Sopenharmony_cistatic inline void set_tx_desc_pkt_size(__le32 *__pdesc, u32 __val) 3162306a36Sopenharmony_ci{ 3262306a36Sopenharmony_ci le32p_replace_bits(__pdesc, __val, GENMASK(15, 0)); 3362306a36Sopenharmony_ci} 3462306a36Sopenharmony_ci 3562306a36Sopenharmony_cistatic inline void set_tx_desc_offset(__le32 *__pdesc, u32 __val) 3662306a36Sopenharmony_ci{ 3762306a36Sopenharmony_ci le32p_replace_bits(__pdesc, __val, GENMASK(23, 16)); 3862306a36Sopenharmony_ci} 3962306a36Sopenharmony_ci 4062306a36Sopenharmony_cistatic inline void set_tx_desc_last_seg(__le32 *__pdesc, u32 __val) 4162306a36Sopenharmony_ci{ 4262306a36Sopenharmony_ci le32p_replace_bits(__pdesc, __val, BIT(26)); 4362306a36Sopenharmony_ci} 4462306a36Sopenharmony_ci 4562306a36Sopenharmony_cistatic inline void set_tx_desc_first_seg(__le32 *__pdesc, u32 __val) 4662306a36Sopenharmony_ci{ 4762306a36Sopenharmony_ci le32p_replace_bits(__pdesc, __val, BIT(27)); 4862306a36Sopenharmony_ci} 4962306a36Sopenharmony_ci 5062306a36Sopenharmony_cistatic inline void set_tx_desc_linip(__le32 *__pdesc, u32 __val) 5162306a36Sopenharmony_ci{ 5262306a36Sopenharmony_ci le32p_replace_bits(__pdesc, __val, BIT(28)); 5362306a36Sopenharmony_ci} 5462306a36Sopenharmony_ci 5562306a36Sopenharmony_cistatic inline void set_tx_desc_own(__le32 *__pdesc, u32 __val) 5662306a36Sopenharmony_ci{ 5762306a36Sopenharmony_ci le32p_replace_bits(__pdesc, __val, BIT(31)); 5862306a36Sopenharmony_ci} 5962306a36Sopenharmony_ci 6062306a36Sopenharmony_cistatic inline u32 get_tx_desc_own(__le32 *__pdesc) 6162306a36Sopenharmony_ci{ 6262306a36Sopenharmony_ci return le32_get_bits(*(__pdesc), BIT(31)); 6362306a36Sopenharmony_ci} 6462306a36Sopenharmony_ci 6562306a36Sopenharmony_ci/* Dword 1 */ 6662306a36Sopenharmony_cistatic inline void set_tx_desc_macid(__le32 *__pdesc, u32 __val) 6762306a36Sopenharmony_ci{ 6862306a36Sopenharmony_ci le32p_replace_bits((__pdesc + 1), __val, GENMASK(4, 0)); 6962306a36Sopenharmony_ci} 7062306a36Sopenharmony_ci 7162306a36Sopenharmony_cistatic inline void set_tx_desc_queue_sel(__le32 *__pdesc, u32 __val) 7262306a36Sopenharmony_ci{ 7362306a36Sopenharmony_ci le32p_replace_bits((__pdesc + 1), __val, GENMASK(12, 8)); 7462306a36Sopenharmony_ci} 7562306a36Sopenharmony_ci 7662306a36Sopenharmony_cistatic inline void set_tx_desc_non_qos(__le32 *__pdesc, u32 __val) 7762306a36Sopenharmony_ci{ 7862306a36Sopenharmony_ci le32p_replace_bits((__pdesc + 1), __val, BIT(16)); 7962306a36Sopenharmony_ci} 8062306a36Sopenharmony_ci 8162306a36Sopenharmony_cistatic inline void set_tx_desc_sec_type(__le32 *__pdesc, u32 __val) 8262306a36Sopenharmony_ci{ 8362306a36Sopenharmony_ci le32p_replace_bits((__pdesc + 1), __val, GENMASK(23, 22)); 8462306a36Sopenharmony_ci} 8562306a36Sopenharmony_ci 8662306a36Sopenharmony_ci/* Dword 2 */ 8762306a36Sopenharmony_cistatic inline void set_tx_desc_rsvd_macid(__le32 *__pdesc, u32 __val) 8862306a36Sopenharmony_ci{ 8962306a36Sopenharmony_ci le32p_replace_bits((__pdesc + 2), __val, GENMASK(28, 24)); 9062306a36Sopenharmony_ci} 9162306a36Sopenharmony_ci 9262306a36Sopenharmony_cistatic inline void set_tx_desc_agg_enable(__le32 *__pdesc, u32 __val) 9362306a36Sopenharmony_ci{ 9462306a36Sopenharmony_ci le32p_replace_bits((__pdesc + 2), __val, BIT(29)); 9562306a36Sopenharmony_ci} 9662306a36Sopenharmony_ci 9762306a36Sopenharmony_ci/* Dword 3 */ 9862306a36Sopenharmony_cistatic inline void set_tx_desc_seq(__le32 *__pdesc, u32 __val) 9962306a36Sopenharmony_ci{ 10062306a36Sopenharmony_ci le32p_replace_bits((__pdesc + 3), __val, GENMASK(27, 16)); 10162306a36Sopenharmony_ci} 10262306a36Sopenharmony_ci 10362306a36Sopenharmony_ci/* Dword 4 */ 10462306a36Sopenharmony_cistatic inline void set_tx_desc_rts_rate(__le32 *__pdesc, u32 __val) 10562306a36Sopenharmony_ci{ 10662306a36Sopenharmony_ci le32p_replace_bits((__pdesc + 4), __val, GENMASK(5, 0)); 10762306a36Sopenharmony_ci} 10862306a36Sopenharmony_ci 10962306a36Sopenharmony_cistatic inline void set_tx_desc_cts_enable(__le32 *__pdesc, u32 __val) 11062306a36Sopenharmony_ci{ 11162306a36Sopenharmony_ci le32p_replace_bits((__pdesc + 4), __val, BIT(11)); 11262306a36Sopenharmony_ci} 11362306a36Sopenharmony_ci 11462306a36Sopenharmony_cistatic inline void set_tx_desc_rts_enable(__le32 *__pdesc, u32 __val) 11562306a36Sopenharmony_ci{ 11662306a36Sopenharmony_ci le32p_replace_bits((__pdesc + 4), __val, BIT(12)); 11762306a36Sopenharmony_ci} 11862306a36Sopenharmony_ci 11962306a36Sopenharmony_cistatic inline void set_tx_desc_ra_brsr_id(__le32 *__pdesc, u32 __val) 12062306a36Sopenharmony_ci{ 12162306a36Sopenharmony_ci le32p_replace_bits((__pdesc + 4), __val, GENMASK(15, 13)); 12262306a36Sopenharmony_ci} 12362306a36Sopenharmony_ci 12462306a36Sopenharmony_cistatic inline void set_tx_desc_txht(__le32 *__pdesc, u32 __val) 12562306a36Sopenharmony_ci{ 12662306a36Sopenharmony_ci le32p_replace_bits((__pdesc + 4), __val, BIT(16)); 12762306a36Sopenharmony_ci} 12862306a36Sopenharmony_ci 12962306a36Sopenharmony_cistatic inline void set_tx_desc_tx_short(__le32 *__pdesc, u32 __val) 13062306a36Sopenharmony_ci{ 13162306a36Sopenharmony_ci le32p_replace_bits((__pdesc + 4), __val, BIT(17)); 13262306a36Sopenharmony_ci} 13362306a36Sopenharmony_ci 13462306a36Sopenharmony_cistatic inline void set_tx_desc_tx_bandwidth(__le32 *__pdesc, u32 __val) 13562306a36Sopenharmony_ci{ 13662306a36Sopenharmony_ci le32p_replace_bits((__pdesc + 4), __val, BIT(18)); 13762306a36Sopenharmony_ci} 13862306a36Sopenharmony_ci 13962306a36Sopenharmony_cistatic inline void set_tx_desc_tx_sub_carrier(__le32 *__pdesc, u32 __val) 14062306a36Sopenharmony_ci{ 14162306a36Sopenharmony_ci le32p_replace_bits((__pdesc + 4), __val, GENMASK(20, 19)); 14262306a36Sopenharmony_ci} 14362306a36Sopenharmony_ci 14462306a36Sopenharmony_cistatic inline void set_tx_desc_rts_short(__le32 *__pdesc, u32 __val) 14562306a36Sopenharmony_ci{ 14662306a36Sopenharmony_ci le32p_replace_bits((__pdesc + 4), __val, BIT(25)); 14762306a36Sopenharmony_ci} 14862306a36Sopenharmony_ci 14962306a36Sopenharmony_cistatic inline void set_tx_desc_rts_bandwidth(__le32 *__pdesc, u32 __val) 15062306a36Sopenharmony_ci{ 15162306a36Sopenharmony_ci le32p_replace_bits((__pdesc + 4), __val, BIT(26)); 15262306a36Sopenharmony_ci} 15362306a36Sopenharmony_ci 15462306a36Sopenharmony_cistatic inline void set_tx_desc_rts_sub_carrier(__le32 *__pdesc, u32 __val) 15562306a36Sopenharmony_ci{ 15662306a36Sopenharmony_ci le32p_replace_bits((__pdesc + 4), __val, GENMASK(28, 27)); 15762306a36Sopenharmony_ci} 15862306a36Sopenharmony_ci 15962306a36Sopenharmony_cistatic inline void set_tx_desc_rts_stbc(__le32 *__pdesc, u32 __val) 16062306a36Sopenharmony_ci{ 16162306a36Sopenharmony_ci le32p_replace_bits((__pdesc + 4), __val, GENMASK(30, 29)); 16262306a36Sopenharmony_ci} 16362306a36Sopenharmony_ci 16462306a36Sopenharmony_cistatic inline void set_tx_desc_user_rate(__le32 *__pdesc, u32 __val) 16562306a36Sopenharmony_ci{ 16662306a36Sopenharmony_ci le32p_replace_bits((__pdesc + 4), __val, BIT(31)); 16762306a36Sopenharmony_ci} 16862306a36Sopenharmony_ci 16962306a36Sopenharmony_ci/* Dword 5 */ 17062306a36Sopenharmony_cistatic inline void set_tx_desc_packet_id(__le32 *__pdesc, u32 __val) 17162306a36Sopenharmony_ci{ 17262306a36Sopenharmony_ci le32p_replace_bits((__pdesc + 5), __val, GENMASK(8, 0)); 17362306a36Sopenharmony_ci} 17462306a36Sopenharmony_ci 17562306a36Sopenharmony_cistatic inline void set_tx_desc_tx_rate(__le32 *__pdesc, u32 __val) 17662306a36Sopenharmony_ci{ 17762306a36Sopenharmony_ci le32p_replace_bits((__pdesc + 5), __val, GENMASK(14, 9)); 17862306a36Sopenharmony_ci} 17962306a36Sopenharmony_ci 18062306a36Sopenharmony_cistatic inline void set_tx_desc_data_rate_fb_limit(__le32 *__pdesc, u32 __val) 18162306a36Sopenharmony_ci{ 18262306a36Sopenharmony_ci le32p_replace_bits((__pdesc + 5), __val, GENMASK(20, 16)); 18362306a36Sopenharmony_ci} 18462306a36Sopenharmony_ci 18562306a36Sopenharmony_ci/* Dword 7 */ 18662306a36Sopenharmony_cistatic inline void set_tx_desc_tx_buffer_size(__le32 *__pdesc, u32 __val) 18762306a36Sopenharmony_ci{ 18862306a36Sopenharmony_ci le32p_replace_bits((__pdesc + 7), __val, GENMASK(15, 0)); 18962306a36Sopenharmony_ci} 19062306a36Sopenharmony_ci 19162306a36Sopenharmony_ci/* Dword 8 */ 19262306a36Sopenharmony_cistatic inline void set_tx_desc_tx_buffer_address(__le32 *__pdesc, u32 __val) 19362306a36Sopenharmony_ci{ 19462306a36Sopenharmony_ci *(__pdesc + 8) = cpu_to_le32(__val); 19562306a36Sopenharmony_ci} 19662306a36Sopenharmony_ci 19762306a36Sopenharmony_cistatic inline u32 get_tx_desc_tx_buffer_address(__le32 *__pdesc) 19862306a36Sopenharmony_ci{ 19962306a36Sopenharmony_ci return le32_to_cpu(*((__pdesc + 8))); 20062306a36Sopenharmony_ci} 20162306a36Sopenharmony_ci 20262306a36Sopenharmony_ci/* Dword 9 */ 20362306a36Sopenharmony_cistatic inline void set_tx_desc_next_desc_address(__le32 *__pdesc, u32 __val) 20462306a36Sopenharmony_ci{ 20562306a36Sopenharmony_ci *(__pdesc + 9) = cpu_to_le32(__val); 20662306a36Sopenharmony_ci} 20762306a36Sopenharmony_ci 20862306a36Sopenharmony_ci/* Because the PCI Tx descriptors are chaied at the 20962306a36Sopenharmony_ci * initialization and all the NextDescAddresses in 21062306a36Sopenharmony_ci * these descriptors cannot not be cleared (,or 21162306a36Sopenharmony_ci * driver/HW cannot find the next descriptor), the 21262306a36Sopenharmony_ci * offset 36 (NextDescAddresses) is reserved when 21362306a36Sopenharmony_ci * the desc is cleared. */ 21462306a36Sopenharmony_ci#define TX_DESC_NEXT_DESC_OFFSET 36 21562306a36Sopenharmony_ci#define CLEAR_PCI_TX_DESC_CONTENT(__pdesc, _size) \ 21662306a36Sopenharmony_ci memset(__pdesc, 0, min_t(size_t, _size, TX_DESC_NEXT_DESC_OFFSET)) 21762306a36Sopenharmony_ci 21862306a36Sopenharmony_ci/* Rx Desc */ 21962306a36Sopenharmony_ci#define RX_STATUS_DESC_SIZE 24 22062306a36Sopenharmony_ci#define RX_DRV_INFO_SIZE_UNIT 8 22162306a36Sopenharmony_ci 22262306a36Sopenharmony_ci/* DWORD 0 */ 22362306a36Sopenharmony_cistatic inline void set_rx_status_desc_pkt_len(__le32 *__pdesc, u32 __val) 22462306a36Sopenharmony_ci{ 22562306a36Sopenharmony_ci le32p_replace_bits(__pdesc, __val, GENMASK(13, 0)); 22662306a36Sopenharmony_ci} 22762306a36Sopenharmony_ci 22862306a36Sopenharmony_cistatic inline void set_rx_status_desc_eor(__le32 *__pdesc, u32 __val) 22962306a36Sopenharmony_ci{ 23062306a36Sopenharmony_ci le32p_replace_bits(__pdesc, __val, BIT(30)); 23162306a36Sopenharmony_ci} 23262306a36Sopenharmony_ci 23362306a36Sopenharmony_cistatic inline void set_rx_status_desc_own(__le32 *__pdesc, u32 __val) 23462306a36Sopenharmony_ci{ 23562306a36Sopenharmony_ci le32p_replace_bits(__pdesc, __val, BIT(31)); 23662306a36Sopenharmony_ci} 23762306a36Sopenharmony_ci 23862306a36Sopenharmony_cistatic inline u32 get_rx_status_desc_pkt_len(__le32 *__pdesc) 23962306a36Sopenharmony_ci{ 24062306a36Sopenharmony_ci return le32_get_bits(*(__pdesc), GENMASK(13, 0)); 24162306a36Sopenharmony_ci} 24262306a36Sopenharmony_ci 24362306a36Sopenharmony_cistatic inline u32 get_rx_status_desc_crc32(__le32 *__pdesc) 24462306a36Sopenharmony_ci{ 24562306a36Sopenharmony_ci return le32_get_bits(*(__pdesc), BIT(14)); 24662306a36Sopenharmony_ci} 24762306a36Sopenharmony_ci 24862306a36Sopenharmony_cistatic inline u32 get_rx_status_desc_icv(__le32 *__pdesc) 24962306a36Sopenharmony_ci{ 25062306a36Sopenharmony_ci return le32_get_bits(*(__pdesc), BIT(15)); 25162306a36Sopenharmony_ci} 25262306a36Sopenharmony_ci 25362306a36Sopenharmony_cistatic inline u32 get_rx_status_desc_drvinfo_size(__le32 *__pdesc) 25462306a36Sopenharmony_ci{ 25562306a36Sopenharmony_ci return le32_get_bits(*(__pdesc), GENMASK(19, 16)); 25662306a36Sopenharmony_ci} 25762306a36Sopenharmony_ci 25862306a36Sopenharmony_cistatic inline u32 get_rx_status_desc_shift(__le32 *__pdesc) 25962306a36Sopenharmony_ci{ 26062306a36Sopenharmony_ci return le32_get_bits(*(__pdesc), GENMASK(25, 24)); 26162306a36Sopenharmony_ci} 26262306a36Sopenharmony_ci 26362306a36Sopenharmony_cistatic inline u32 get_rx_status_desc_phy_status(__le32 *__pdesc) 26462306a36Sopenharmony_ci{ 26562306a36Sopenharmony_ci return le32_get_bits(*(__pdesc), BIT(26)); 26662306a36Sopenharmony_ci} 26762306a36Sopenharmony_ci 26862306a36Sopenharmony_cistatic inline u32 get_rx_status_desc_swdec(__le32 *__pdesc) 26962306a36Sopenharmony_ci{ 27062306a36Sopenharmony_ci return le32_get_bits(*(__pdesc), BIT(27)); 27162306a36Sopenharmony_ci} 27262306a36Sopenharmony_ci 27362306a36Sopenharmony_cistatic inline u32 get_rx_status_desc_own(__le32 *__pdesc) 27462306a36Sopenharmony_ci{ 27562306a36Sopenharmony_ci return le32_get_bits(*(__pdesc), BIT(31)); 27662306a36Sopenharmony_ci} 27762306a36Sopenharmony_ci 27862306a36Sopenharmony_ci/* DWORD 1 */ 27962306a36Sopenharmony_cistatic inline u32 get_rx_status_desc_paggr(__le32 *__pdesc) 28062306a36Sopenharmony_ci{ 28162306a36Sopenharmony_ci return le32_get_bits(*(__pdesc + 1), BIT(14)); 28262306a36Sopenharmony_ci} 28362306a36Sopenharmony_ci 28462306a36Sopenharmony_cistatic inline u32 get_rx_status_desc_faggr(__le32 *__pdesc) 28562306a36Sopenharmony_ci{ 28662306a36Sopenharmony_ci return le32_get_bits(*(__pdesc + 1), BIT(15)); 28762306a36Sopenharmony_ci} 28862306a36Sopenharmony_ci 28962306a36Sopenharmony_ci/* DWORD 3 */ 29062306a36Sopenharmony_cistatic inline u32 get_rx_status_desc_rx_mcs(__le32 *__pdesc) 29162306a36Sopenharmony_ci{ 29262306a36Sopenharmony_ci return le32_get_bits(*(__pdesc + 3), GENMASK(5, 0)); 29362306a36Sopenharmony_ci} 29462306a36Sopenharmony_ci 29562306a36Sopenharmony_cistatic inline u32 get_rx_status_desc_rx_ht(__le32 *__pdesc) 29662306a36Sopenharmony_ci{ 29762306a36Sopenharmony_ci return le32_get_bits(*(__pdesc + 3), BIT(6)); 29862306a36Sopenharmony_ci} 29962306a36Sopenharmony_ci 30062306a36Sopenharmony_cistatic inline u32 get_rx_status_desc_splcp(__le32 *__pdesc) 30162306a36Sopenharmony_ci{ 30262306a36Sopenharmony_ci return le32_get_bits(*(__pdesc + 3), BIT(8)); 30362306a36Sopenharmony_ci} 30462306a36Sopenharmony_ci 30562306a36Sopenharmony_cistatic inline u32 get_rx_status_desc_bw(__le32 *__pdesc) 30662306a36Sopenharmony_ci{ 30762306a36Sopenharmony_ci return le32_get_bits(*(__pdesc + 3), BIT(9)); 30862306a36Sopenharmony_ci} 30962306a36Sopenharmony_ci 31062306a36Sopenharmony_ci/* DWORD 5 */ 31162306a36Sopenharmony_cistatic inline u32 get_rx_status_desc_tsfl(__le32 *__pdesc) 31262306a36Sopenharmony_ci{ 31362306a36Sopenharmony_ci return le32_to_cpu(*((__pdesc + 5))); 31462306a36Sopenharmony_ci} 31562306a36Sopenharmony_ci 31662306a36Sopenharmony_ci/* DWORD 6 */ 31762306a36Sopenharmony_cistatic inline void set_rx_status__desc_buff_addr(__le32 *__pdesc, u32 __val) 31862306a36Sopenharmony_ci{ 31962306a36Sopenharmony_ci *(__pdesc + 6) = cpu_to_le32(__val); 32062306a36Sopenharmony_ci} 32162306a36Sopenharmony_ci 32262306a36Sopenharmony_cistatic inline u32 get_rx_status_desc_buff_addr(__le32 *__pdesc) 32362306a36Sopenharmony_ci{ 32462306a36Sopenharmony_ci return le32_to_cpu(*(__pdesc + 6)); 32562306a36Sopenharmony_ci} 32662306a36Sopenharmony_ci 32762306a36Sopenharmony_ci#define SE_RX_HAL_IS_CCK_RATE(_pdesc)\ 32862306a36Sopenharmony_ci (get_rx_status_desc_rx_mcs(_pdesc) == DESC_RATE1M || \ 32962306a36Sopenharmony_ci get_rx_status_desc_rx_mcs(_pdesc) == DESC_RATE2M || \ 33062306a36Sopenharmony_ci get_rx_status_desc_rx_mcs(_pdesc) == DESC_RATE5_5M ||\ 33162306a36Sopenharmony_ci get_rx_status_desc_rx_mcs(_pdesc) == DESC_RATE11M) 33262306a36Sopenharmony_ci 33362306a36Sopenharmony_cienum rf_optype { 33462306a36Sopenharmony_ci RF_OP_BY_SW_3WIRE = 0, 33562306a36Sopenharmony_ci RF_OP_BY_FW, 33662306a36Sopenharmony_ci RF_OP_MAX 33762306a36Sopenharmony_ci}; 33862306a36Sopenharmony_ci 33962306a36Sopenharmony_cienum ic_inferiority { 34062306a36Sopenharmony_ci IC_INFERIORITY_A = 0, 34162306a36Sopenharmony_ci IC_INFERIORITY_B = 1, 34262306a36Sopenharmony_ci}; 34362306a36Sopenharmony_ci 34462306a36Sopenharmony_cienum fwcmd_iotype { 34562306a36Sopenharmony_ci /* For DIG DM */ 34662306a36Sopenharmony_ci FW_CMD_DIG_ENABLE = 0, 34762306a36Sopenharmony_ci FW_CMD_DIG_DISABLE = 1, 34862306a36Sopenharmony_ci FW_CMD_DIG_HALT = 2, 34962306a36Sopenharmony_ci FW_CMD_DIG_RESUME = 3, 35062306a36Sopenharmony_ci /* For High Power DM */ 35162306a36Sopenharmony_ci FW_CMD_HIGH_PWR_ENABLE = 4, 35262306a36Sopenharmony_ci FW_CMD_HIGH_PWR_DISABLE = 5, 35362306a36Sopenharmony_ci /* For Rate adaptive DM */ 35462306a36Sopenharmony_ci FW_CMD_RA_RESET = 6, 35562306a36Sopenharmony_ci FW_CMD_RA_ACTIVE = 7, 35662306a36Sopenharmony_ci FW_CMD_RA_REFRESH_N = 8, 35762306a36Sopenharmony_ci FW_CMD_RA_REFRESH_BG = 9, 35862306a36Sopenharmony_ci FW_CMD_RA_INIT = 10, 35962306a36Sopenharmony_ci /* For FW supported IQK */ 36062306a36Sopenharmony_ci FW_CMD_IQK_INIT = 11, 36162306a36Sopenharmony_ci /* Tx power tracking switch, 36262306a36Sopenharmony_ci * MP driver only */ 36362306a36Sopenharmony_ci FW_CMD_TXPWR_TRACK_ENABLE = 12, 36462306a36Sopenharmony_ci /* Tx power tracking switch, 36562306a36Sopenharmony_ci * MP driver only */ 36662306a36Sopenharmony_ci FW_CMD_TXPWR_TRACK_DISABLE = 13, 36762306a36Sopenharmony_ci /* Tx power tracking with thermal 36862306a36Sopenharmony_ci * indication, for Normal driver */ 36962306a36Sopenharmony_ci FW_CMD_TXPWR_TRACK_THERMAL = 14, 37062306a36Sopenharmony_ci FW_CMD_PAUSE_DM_BY_SCAN = 15, 37162306a36Sopenharmony_ci FW_CMD_RESUME_DM_BY_SCAN = 16, 37262306a36Sopenharmony_ci FW_CMD_RA_REFRESH_N_COMB = 17, 37362306a36Sopenharmony_ci FW_CMD_RA_REFRESH_BG_COMB = 18, 37462306a36Sopenharmony_ci FW_CMD_ANTENNA_SW_ENABLE = 19, 37562306a36Sopenharmony_ci FW_CMD_ANTENNA_SW_DISABLE = 20, 37662306a36Sopenharmony_ci /* Tx Status report for CCX from FW */ 37762306a36Sopenharmony_ci FW_CMD_TX_FEEDBACK_CCX_ENABLE = 21, 37862306a36Sopenharmony_ci /* Indifate firmware that driver 37962306a36Sopenharmony_ci * enters LPS, For PS-Poll issue */ 38062306a36Sopenharmony_ci FW_CMD_LPS_ENTER = 22, 38162306a36Sopenharmony_ci /* Indicate firmware that driver 38262306a36Sopenharmony_ci * leave LPS*/ 38362306a36Sopenharmony_ci FW_CMD_LPS_LEAVE = 23, 38462306a36Sopenharmony_ci /* Set DIG mode to signal strength */ 38562306a36Sopenharmony_ci FW_CMD_DIG_MODE_SS = 24, 38662306a36Sopenharmony_ci /* Set DIG mode to false alarm. */ 38762306a36Sopenharmony_ci FW_CMD_DIG_MODE_FA = 25, 38862306a36Sopenharmony_ci FW_CMD_ADD_A2_ENTRY = 26, 38962306a36Sopenharmony_ci FW_CMD_CTRL_DM_BY_DRIVER = 27, 39062306a36Sopenharmony_ci FW_CMD_CTRL_DM_BY_DRIVER_NEW = 28, 39162306a36Sopenharmony_ci FW_CMD_PAPE_CONTROL = 29, 39262306a36Sopenharmony_ci FW_CMD_IQK_ENABLE = 30, 39362306a36Sopenharmony_ci}; 39462306a36Sopenharmony_ci 39562306a36Sopenharmony_ci/* Driver info contain PHY status 39662306a36Sopenharmony_ci * and other variabel size info 39762306a36Sopenharmony_ci * PHY Status content as below 39862306a36Sopenharmony_ci */ 39962306a36Sopenharmony_cistruct rx_fwinfo { 40062306a36Sopenharmony_ci /* DWORD 0 */ 40162306a36Sopenharmony_ci u8 gain_trsw[4]; 40262306a36Sopenharmony_ci /* DWORD 1 */ 40362306a36Sopenharmony_ci u8 pwdb_all; 40462306a36Sopenharmony_ci u8 cfosho[4]; 40562306a36Sopenharmony_ci /* DWORD 2 */ 40662306a36Sopenharmony_ci u8 cfotail[4]; 40762306a36Sopenharmony_ci /* DWORD 3 */ 40862306a36Sopenharmony_ci s8 rxevm[2]; 40962306a36Sopenharmony_ci s8 rxsnr[4]; 41062306a36Sopenharmony_ci /* DWORD 4 */ 41162306a36Sopenharmony_ci u8 pdsnr[2]; 41262306a36Sopenharmony_ci /* DWORD 5 */ 41362306a36Sopenharmony_ci u8 csi_current[2]; 41462306a36Sopenharmony_ci u8 csi_target[2]; 41562306a36Sopenharmony_ci /* DWORD 6 */ 41662306a36Sopenharmony_ci u8 sigevm; 41762306a36Sopenharmony_ci u8 max_ex_pwr; 41862306a36Sopenharmony_ci u8 ex_intf_flag:1; 41962306a36Sopenharmony_ci u8 sgi_en:1; 42062306a36Sopenharmony_ci u8 rxsc:2; 42162306a36Sopenharmony_ci u8 reserve:4; 42262306a36Sopenharmony_ci}; 42362306a36Sopenharmony_ci 42462306a36Sopenharmony_cistruct phy_sts_cck_8192s_t { 42562306a36Sopenharmony_ci u8 adc_pwdb_x[4]; 42662306a36Sopenharmony_ci u8 sq_rpt; 42762306a36Sopenharmony_ci u8 cck_agc_rpt; 42862306a36Sopenharmony_ci}; 42962306a36Sopenharmony_ci 43062306a36Sopenharmony_ci#endif 43162306a36Sopenharmony_ci 432