summaryrefslogtreecommitdiffstats
path: root/freebsd/sys/dev/rtwn/rtl8812a/r12a_reg.h
blob: 581e7078138d5bd47d57bfa33f6b30e8a79e7965 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
/*-
 * Copyright (c) 2016 Andriy Voskoboinyk <avos@FreeBSD.org>
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 * $FreeBSD$
 */

#ifndef R12A_REG_H
#define R12A_REG_H

#include <dev/rtwn/rtl8188e/r88e_reg.h>

/*
 * MAC registers.
 */
/* System Configuration. */
#define R12A_SDIO_CTRL			0x070
#define R12A_RF_B_CTRL			0x076
/* Rx DMA Configuration. */
#define R12A_RXDMA_PRO			0x290
#define R12A_EARLY_MODE_CONTROL		0x2bc
/* Protocol Configuration. */
#define R12A_TXPKT_EMPTY		0x41a
#define R12A_ARFR_5G(i)			(0x444 + (i) * 8)
#define R12A_CCK_CHECK			0x454
#define R12A_AMPDU_MAX_TIME		0x456
#define R12A_AMPDU_MAX_LENGTH		R92C_AGGLEN_LMT
#define R12A_DATA_SEC			0x483
#define R12A_ARFR_2G(i)			(0x48c + (i) * 8)
#define R12A_HT_SINGLE_AMPDU		0x4c7


/* Bits for R92C_MAC_PHY_CTRL. */
#define R12A_MAC_PHY_CRYSTALCAP_M	0x7ff80000
#define R12A_MAC_PHY_CRYSTALCAP_S	19

/* Bits for R92C_LEDCFG2. */
#define R12A_LEDCFG2_ENA		0x20

/* Bits for R12A_RXDMA_PRO. */
#define R12A_DMA_MODE			0x02
#define R12A_BURST_CNT_M		0x0c
#define R12A_BURST_CNT_S		2
#define R12A_BURST_SZ_M			0x30
#define R12A_BURST_SZ_S			4
#define R12A_BURST_SZ_USB3		0
#define R12A_BURST_SZ_USB2		1
#define R12A_BURST_SZ_USB1		2

/* Bits for R12A_CCK_CHECK. */
#define R12A_CCK_CHECK_BCN1		0x20
#define R12A_CCK_CHECK_5GHZ		0x80

/* Bits for R12A_DATA_SEC. */
#define R12A_DATA_SEC_NO_EXT		0x00
#define R12A_DATA_SEC_PRIM_UP_20	0x01
#define R12A_DATA_SEC_PRIM_DOWN_20	0x02
#define R12A_DATA_SEC_PRIM_UPPER_20	0x03
#define R12A_DATA_SEC_PRIM_LOWER_20	0x04
#define R12A_DATA_SEC_PRIM_UP_40	0x90
#define R12A_DATA_SEC_PRIM_DOWN_40	0xa0

/* Bits for R12A_HT_SINGLE_AMPDU. */
#define R12A_HT_SINGLE_AMPDU_PKT_ENA	0x80

/* Bits for R92C_RCR. */
#define R12A_RCR_DIS_CHK_14		0x00200000
#define R12A_RCR_TCP_OFFLD_EN		0x02000000
#define R12A_RCR_VHT_ACK		0x04000000


/*
 * Baseband registers.
 */
#define R12A_CCK_RPT_FORMAT		0x804
#define R12A_OFDMCCK_EN			0x808
#define R12A_RX_PATH			R12A_OFDMCCK_EN
#define R12A_TX_PATH			0x80c
#define R12A_TXAGC_TABLE_SELECT		0x82c
#define R12A_PWED_TH			0x830
#define R12A_BW_INDICATION		0x834
#define R12A_CCA_ON_SEC			0x838
#define R12A_L1_PEAK_TH			0x848
#define R12A_FC_AREA			0x860
#define R12A_RFMOD			0x8ac
#define R12A_HSSI_PARAM2		0x8b0
#define R12A_ADC_BUF_CLK		0x8c4
#define R12A_ANTSEL_SW			0x900
#define R12A_SINGLETONE_CONT_TX		0x914
#define R12A_CCK_RX_PATH		0xa04
#define R12A_HSSI_PARAM1(chain)		(0xc00 + (chain) * 0x200)
#define R12A_TX_SCALE(chain)		(0xc1c + (chain) * 0x200)
#define R12A_TXAGC_CCK11_1(chain)	(0xc20 + (chain) * 0x200)
#define R12A_TXAGC_OFDM18_6(chain)	(0xc24 + (chain) * 0x200)
#define R12A_TXAGC_OFDM54_24(chain)	(0xc28 + (chain) * 0x200)
#define R12A_TXAGC_MCS3_0(chain)	(0xc2c + (chain) * 0x200)
#define R12A_TXAGC_MCS7_4(chain)	(0xc30 + (chain) * 0x200)
#define R12A_TXAGC_MCS11_8(chain)	(0xc34 + (chain) * 0x200)
#define R12A_TXAGC_MCS15_12(chain)	(0xc38 + (chain) * 0x200)
#define R12A_TXAGC_NSS1IX3_1IX0(chain)	(0xc3c + (chain) * 0x200)
#define R12A_TXAGC_NSS1IX7_1IX4(chain)	(0xc40 + (chain) * 0x200)
#define R12A_TXAGC_NSS2IX1_1IX8(chain)	(0xc44 + (chain) * 0x200)
#define R12A_TXAGC_NSS2IX5_2IX2(chain)	(0xc48 + (chain) * 0x200)
#define R12A_TXAGC_NSS2IX9_2IX6(chain)	(0xc4c + (chain) * 0x200)
#define R12A_INITIAL_GAIN(chain)	(0xc50 + (chain) * 0x200)
#define R12A_AFE_POWER_1(chain)		(0xc60 + (chain) * 0x200)
#define R12A_AFE_POWER_2(chain)		(0xc64 + (chain) * 0x200)
#define R12A_SLEEP_NAV(chain)		(0xc80 + (chain) * 0x200)
#define R12A_PMPD(chain)		(0xc84 + (chain) * 0x200)
#define R12A_LSSI_PARAM(chain)		(0xc90 + (chain) * 0x200)
#define R12A_RFE_PINMUX(chain)		(0xcb0 + (chain) * 0x200)
#define R12A_RFE_INV(chain)		(0xcb4 + (chain) * 0x200)
#define R12A_RFE(chain)			(0xcb8 + (chain) * 0x200)
#define R12A_HSPI_READBACK(chain)	(0xd04 + (chain) * 0x40)
#define R12A_LSSI_READBACK(chain)	(0xd08 + (chain) * 0x40)

/* Bits for R12A_CCK_RPT_FORMAT. */
#define R12A_CCK_RPT_FORMAT_HIPWR	0x00010000

/* Bits for R12A_OFDMCCK_EN. */
#define R12A_OFDMCCK_EN_CCK	0x10000000
#define R12A_OFDMCCK_EN_OFDM	0x20000000

/* Bits for R12A_CCA_ON_SEC. */
#define R12A_CCA_ON_SEC_EXT_CHAN_M	0xf0000000
#define R12A_CCA_ON_SEC_EXT_CHAN_S	28

/* Bits for R12A_RFE_PINMUX(i). */
#define R12A_RFE_PINMUX_PA_A_MASK	0x000000f0
#define R12A_RFE_PINMUX_LNA_MASK	0x0000f000

/* Bits for R12A_RFMOD. */
#define R12A_RFMOD_EXT_CHAN_M		0x3C
#define R12A_RFMOD_EXT_CHAN_S		2

/* Bits for R12A_HSSI_PARAM2. */
#define R12A_HSSI_PARAM2_READ_ADDR_MASK	0xff

/* Bits for R12A_HSSI_PARAM1(i). */
#define R12A_HSSI_PARAM1_PI		0x00000004

/* Bits for R12A_TX_SCALE(i). */
#define R12A_TX_SCALE_SWING_M		0xffe00000
#define R12A_TX_SCALE_SWING_S		21

/* Bits for R12A_TXAGC_CCK11_1(i). */
#define R12A_TXAGC_CCK1_M		0x000000ff
#define R12A_TXAGC_CCK1_S		0
#define R12A_TXAGC_CCK2_M		0x0000ff00
#define R12A_TXAGC_CCK2_S		8
#define R12A_TXAGC_CCK55_M		0x00ff0000
#define R12A_TXAGC_CCK55_S		16
#define R12A_TXAGC_CCK11_M		0xff000000
#define R12A_TXAGC_CCK11_S		24

/* Bits for R12A_TXAGC_OFDM18_6(i). */
#define R12A_TXAGC_OFDM06_M		0x000000ff
#define R12A_TXAGC_OFDM06_S		0
#define R12A_TXAGC_OFDM09_M		0x0000ff00
#define R12A_TXAGC_OFDM09_S		8
#define R12A_TXAGC_OFDM12_M		0x00ff0000
#define R12A_TXAGC_OFDM12_S		16
#define R12A_TXAGC_OFDM18_M		0xff000000
#define R12A_TXAGC_OFDM18_S		24

/* Bits for R12A_TXAGC_OFDM54_24(i). */
#define R12A_TXAGC_OFDM24_M		0x000000ff
#define R12A_TXAGC_OFDM24_S		0
#define R12A_TXAGC_OFDM36_M		0x0000ff00
#define R12A_TXAGC_OFDM36_S		8
#define R12A_TXAGC_OFDM48_M		0x00ff0000
#define R12A_TXAGC_OFDM48_S		16
#define R12A_TXAGC_OFDM54_M		0xff000000
#define R12A_TXAGC_OFDM54_S		24

/* Bits for R12A_TXAGC_MCS3_0(i). */
#define R12A_TXAGC_MCS0_M		0x000000ff
#define R12A_TXAGC_MCS0_S		0
#define R12A_TXAGC_MCS1_M		0x0000ff00
#define R12A_TXAGC_MCS1_S		8
#define R12A_TXAGC_MCS2_M		0x00ff0000
#define R12A_TXAGC_MCS2_S		16
#define R12A_TXAGC_MCS3_M		0xff000000
#define R12A_TXAGC_MCS3_S		24

/* Bits for R12A_TXAGC_MCS7_4(i). */
#define R12A_TXAGC_MCS4_M		0x000000ff
#define R12A_TXAGC_MCS4_S		0
#define R12A_TXAGC_MCS5_M		0x0000ff00
#define R12A_TXAGC_MCS5_S		8
#define R12A_TXAGC_MCS6_M		0x00ff0000
#define R12A_TXAGC_MCS6_S		16
#define R12A_TXAGC_MCS7_M		0xff000000
#define R12A_TXAGC_MCS7_S		24

/* Bits for R12A_TXAGC_MCS11_8(i). */
#define R12A_TXAGC_MCS8_M		0x000000ff
#define R12A_TXAGC_MCS8_S		0
#define R12A_TXAGC_MCS9_M		0x0000ff00
#define R12A_TXAGC_MCS9_S		8
#define R12A_TXAGC_MCS10_M		0x00ff0000
#define R12A_TXAGC_MCS10_S		16
#define R12A_TXAGC_MCS11_M		0xff000000
#define R12A_TXAGC_MCS11_S		24

/* Bits for R12A_TXAGC_MCS15_12(i). */
#define R12A_TXAGC_MCS12_M		0x000000ff
#define R12A_TXAGC_MCS12_S		0
#define R12A_TXAGC_MCS13_M		0x0000ff00
#define R12A_TXAGC_MCS13_S		8
#define R12A_TXAGC_MCS14_M		0x00ff0000
#define R12A_TXAGC_MCS14_S		16
#define R12A_TXAGC_MCS15_M		0xff000000
#define R12A_TXAGC_MCS15_S		24


/*
 * RF (6052) registers.
 */
#define R12A_RF_LCK		0xb4

/* Bits for R12A_RF_LCK. */
#define R12A_RF_LCK_MODE	0x4000

#endif	/* R12A_REG_H */