GNU Linux-libre 4.19.286-gnu1
[releases.git] / drivers / staging / rtlwifi / halmac / halmac_88xx / halmac_8822b / halmac_8822b_cfg.h
1 /* SPDX-License-Identifier: GPL-2.0 */
2 /******************************************************************************
3  *
4  * Copyright(c) 2016  Realtek Corporation.
5  *
6  * Contact Information:
7  * wlanfae <wlanfae@realtek.com>
8  * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park,
9  * Hsinchu 300, Taiwan.
10  *
11  * Larry Finger <Larry.Finger@lwfinger.net>
12  *
13  *****************************************************************************/
14 #ifndef _HALMAC_8822B_CFG_H_
15 #define _HALMAC_8822B_CFG_H_
16
17 #include "halmac_8822b_pwr_seq.h"
18 #include "halmac_api_8822b.h"
19 #include "halmac_api_8822b_usb.h"
20 #include "halmac_api_8822b_sdio.h"
21 #include "halmac_api_8822b_pcie.h"
22 #include "../../halmac_bit2.h"
23 #include "../../halmac_reg2.h"
24 #include "../../halmac_api.h"
25
26 #define HALMAC_TX_FIFO_SIZE_8822B 262144 /* 256k */
27 #define HALMAC_TX_FIFO_SIZE_LA_8822B 131072 /* 128k */
28 #define HALMAC_RX_FIFO_SIZE_8822B 24576 /* 24k */
29 #define HALMAC_TX_PAGE_SIZE_8822B 128 /* PageSize 128Byte */
30 #define HALMAC_TX_ALIGN_SIZE_8822B 8
31 #define HALMAC_TX_PAGE_SIZE_2_POWER_8822B 7 /* 128 = 2^7 */
32 #define HALMAC_SECURITY_CAM_ENTRY_NUM_8822B 64 /* CAM Entry size */
33 #define HALMAC_TX_AGG_ALIGNMENT_SIZE_8822B 8
34 #define HALMAC_TX_DESC_SIZE_8822B 48
35 #define HALMAC_RX_DESC_SIZE_8822B 24
36 #define HALMAC_RX_DESC_DUMMY_SIZE_MAX_8822B 120
37 #define HALMAC_C2H_PKT_BUF_8822B 256
38 #define HALMAC_RX_FIFO_EXPANDING_MODE_PKT_SIZE_MAX_8822B 80 /* align 8 Byte*/
39 #define HALMAC_RX_FIFO_EXPANDING_UNIT_8822B                                    \
40         (HALMAC_RX_DESC_SIZE_8822B + HALMAC_RX_DESC_DUMMY_SIZE_MAX_8822B +     \
41          HALMAC_RX_FIFO_EXPANDING_MODE_PKT_SIZE) /* align 8 Byte*/
42 #define HALMAC_RX_FIFO_EXPANDING_UNIT_MAX_8822B                                \
43         (HALMAC_RX_DESC_SIZE_8822B + HALMAC_RX_DESC_DUMMY_SIZE_MAX_8822B +     \
44          HALMAC_RX_FIFO_EXPANDING_MODE_PKT_SIZE_MAX_8822B) /* align 8 Byte*/
45
46 #define HALMAC_TX_FIFO_SIZE_EX_1_BLK_8822B 196608 /* 192k */
47 #define HALMAC_RX_FIFO_SIZE_EX_1_BLK_8822B                                     \
48         ((((HALMAC_RX_FIFO_EXPANDING_UNIT_8822B << 8) - 1) >> 10)              \
49          << 10) /* < 56k*/
50 #define HALMAC_RX_FIFO_SIZE_EX_1_BLK_MAX_8822B                                 \
51         ((((HALMAC_RX_FIFO_EXPANDING_UNIT_MAX_8822B << 8) - 1) >> 10)          \
52          << 10) /* 55k*/
53 #define HALMAC_TX_FIFO_SIZE_EX_2_BLK_8822B 131072 /* 128k */
54 #define HALMAC_RX_FIFO_SIZE_EX_2_BLK_8822B 155648 /* 152k */
55 #define HALMAC_TX_FIFO_SIZE_EX_3_BLK_8822B 65536 /* 64k */
56 #define HALMAC_RX_FIFO_SIZE_EX_3_BLK_8822B 221184 /* 216k */
57
58 /* TXFIFO LAYOUT
59  * HIGH_QUEUE
60  * NORMAL_QUEUE
61  * LOW_QUEUE
62  * EXTRA_QUEUE
63  * PUBLIC_QUEUE -- decided after all other queue are defined
64  * GAP_QUEUE -- Used to separate AC queue and Rsvd page
65  *
66  * RSVD_DRIVER -- Driver used rsvd page area
67  * RSVD_H2C_EXTRAINFO -- Extra Information for h2c
68  * RSVD_H2C_QUEUE -- h2c queue in rsvd page
69  * RSVD_CPU_INSTRUCTION -- extend fw code
70  * RSVD_FW_TXBUFF -- fw used this area to send packet
71  *
72  * Symbol: HALMAC_MODE_QUEUE_UNIT_CHIP, ex: HALMAC_LB_2BULKOUT_FWCMD_PGNUM_8822B
73  */
74 #define HALMAC_EXTRA_INFO_BUFF_SIZE_FULL_FIFO_8822B                            \
75         16384 /*16K, only used in init case*/
76
77 #define HALMAC_RSVD_DRV_PGNUM_8822B 16 /*2048*/
78 #define HALMAC_RSVD_H2C_EXTRAINFO_PGNUM_8822B 32 /*4096*/
79 #define HALMAC_RSVD_H2C_QUEUE_PGNUM_8822B 8 /*1024*/
80 #define HALMAC_RSVD_CPU_INSTRUCTION_PGNUM_8822B 0 /*0*/
81 #define HALMAC_RSVD_FW_TXBUFF_PGNUM_8822B 4 /*512*/
82
83 #define HALMAC_EFUSE_SIZE_8822B 1024 /* 0x400 */
84 #define HALMAC_BT_EFUSE_SIZE_8822B 128 /* 0x80 */
85 #define HALMAC_EEPROM_SIZE_8822B 0x300
86 #define HALMAC_CR_TRX_ENABLE_8822B                                             \
87         (BIT_HCI_TXDMA_EN | BIT_HCI_RXDMA_EN | BIT_TXDMA_EN | BIT_RXDMA_EN |   \
88          BIT_PROTOCOL_EN | BIT_SCHEDULE_EN | BIT_MACTXEN | BIT_MACRXEN)
89
90 #define HALMAC_BLK_DESC_NUM_8822B 0x3 /* Only for USB */
91
92 /* AMPDU max time (unit : 32us) */
93 #define HALMAC_AMPDU_MAX_TIME_8822B 0x70
94
95 /* Protect mode control */
96 #define HALMAC_PROT_RTS_LEN_TH_8822B 0xFF
97 #define HALMAC_PROT_RTS_TX_TIME_TH_8822B 0x08
98 #define HALMAC_PROT_MAX_AGG_PKT_LIMIT_8822B 0x20
99 #define HALMAC_PROT_RTS_MAX_AGG_PKT_LIMIT_8822B 0x20
100
101 /* Fast EDCA setting */
102 #define HALMAC_FAST_EDCA_VO_TH_8822B 0x06
103 #define HALMAC_FAST_EDCA_VI_TH_8822B 0x06
104 #define HALMAC_FAST_EDCA_BE_TH_8822B 0x06
105 #define HALMAC_FAST_EDCA_BK_TH_8822B 0x06
106
107 /* BAR setting */
108 #define HALMAC_BAR_RETRY_LIMIT_8822B 0x01
109 #define HALMAC_RA_TRY_RATE_AGG_LIMIT_8822B 0x08
110
111 enum halmac_normal_rxagg_th_to_8822b {
112         HALMAC_NORMAL_RXAGG_THRESHOLD_8822B = 0xFF,
113         HALMAC_NORMAL_RXAGG_TIMEOUT_8822B = 0x01,
114 };
115
116 enum halmac_loopback_rxagg_th_to_8822b {
117         HALMAC_LOOPBACK_RXAGG_THRESHOLD_8822B = 0xFF,
118         HALMAC_LOOPBACK_RXAGG_TIMEOUT_8822B = 0x01,
119 };
120
121 #endif