xref: /freebsd/sys/dev/rtwn/rtl8188e/r88e_reg.h (revision a466cc55373fc3cf86837f09da729535b57e69a1)
1 /*-
2  * Copyright (c) 2010 Damien Bergamini <damien.bergamini@free.fr>
3  * Copyright (c) 2015-2016 Andriy Voskoboinyk <avos@FreeBSD.org>
4  *
5  * Permission to use, copy, modify, and distribute this software for any
6  * purpose with or without fee is hereby granted, provided that the above
7  * copyright notice and this permission notice appear in all copies.
8  *
9  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16  *
17  * $OpenBSD: if_urtwnreg.h,v 1.3 2010/11/16 18:02:59 damien Exp $
18  * $FreeBSD$
19  */
20 
21 #ifndef R88E_REG_H
22 #define R88E_REG_H
23 
24 #include <dev/rtwn/rtl8192c/r92c_reg.h>
25 
26 /*
27  * MAC registers.
28  */
29 /* System Configuration. */
30 #define R88E_BB_PAD_CTRL		0x064
31 #define R88E_HIMR			0x0b0
32 #define R88E_HISR			0x0b4
33 #define R88E_HIMRE			0x0b8
34 #define R88E_HISRE			0x0bc
35 #define R88E_XCK_OUT_CTRL	0x07c
36 /* MAC General Configuration. */
37 #define R88E_32K_CTRL			0x194
38 #define R88E_HMEBOX_EXT(idx)		(0x1f0 + (idx) * 4)
39 /* Protocol Configuration. */
40 #define R88E_TXPKTBUF_BCNQ1_BDNY	0x457
41 #define R88E_MACID_NO_LINK		0x484
42 #define R88E_TX_RPT_CTRL		0x4ec
43 #define R88E_TX_RPT_MACID_MAX		0x4ed
44 #define R88E_TX_RPT_TIME		0x4f0
45 #define R88E_SCH_TXCMD			0x5f8
46 
47 /* Bits for R88E_HIMR. */
48 #define R88E_HIMR_ROK		0x00000001	/* receive DMA OK */
49 #define R88E_HIMR_RDU		0x00000002	/* Rx descriptor unavailable */
50 #define R88E_HIMR_VODOK		0x00000004	/* AC_VO DMA OK */
51 #define R88E_HIMR_VIDOK		0x00000008	/* AC_VI DMA OK */
52 #define R88E_HIMR_BEDOK		0x00000010	/* AC_BE DMA OK */
53 #define R88E_HIMR_BKDOK		0x00000020	/* AC_BK DMA OK */
54 #define R88E_HIMR_MGNTDOK	0x00000040	/* management queue DMA OK */
55 #define R88E_HIMR_HIGHDOK	0x00000080	/* high queue DMA OK */
56 #define R88E_HIMR_CPWM		0x00000100	/* CPU power mode intr 1 */
57 #define R88E_HIMR_CPWM2		0x00000200	/* CPU power mode intr 2 */
58 #define R88E_HIMR_C2HCMD	0x00000400	/* C2H command interrupt */
59 #define R88E_HIMR_HISR		0x00000800	/* (HISR & HIMR) != 0 */
60 #define R88E_HIMR_ATIMEND	0x00001000	/* ATIM window end interrupt */
61 #define R88E_HIMR_HSISR		0x00008000	/* (HSIMR & HSISR) != 0 */
62 #define R88E_HIMR_BCNDERR	0x00010000	/* beacon queue DMA error */
63 #define R88E_HIMR_BCNINT	0x00100000	/* beacon DMA interrupt 0 */
64 #define R88E_HIMR_TSF32		0x01000000	/* TSF 32 bit interrupt */
65 #define R88E_HIMR_TBDOK		0x02000000	/* beacon transmit OK */
66 #define R88E_HIMR_TBDER		0x04000000	/* beacon transmit error */
67 #define R88E_HIMR_GTIMER3	0x08000000	/* GTIMER3 interrupt */
68 #define R88E_HIMR_GTIMER4	0x10000000	/* GTIMER4 interrupt */
69 #define R88E_HIMR_PSTIMEOUT	0x20000000	/* powersave timeout */
70 #define R88E_HIMR_TXRPT		0x40000000	/* Tx report interrupt */
71 
72 /* Bits for R88E_HIMRE.*/
73 #define R88E_HIMRE_RXFOVW	0x00000100	/* receive FIFO overflow */
74 #define R88E_HIMRE_TXFOVW	0x00000200	/* transmit FIFO overflow */
75 #define R88E_HIMRE_RXERR	0x00000400	/* receive error */
76 #define R88E_HIMRE_TXERR	0x00000800	/* transmit error */
77 #define R88E_HIMRE_BCNDOK1	0x00004000	/* beacon queue DMA OK (1) */
78 #define R88E_HIMRE_BCNDOK2	0x00008000	/* beacon queue DMA OK (2) */
79 #define R88E_HIMRE_BCNDOK3	0x00010000	/* beacon queue DMA OK (3) */
80 #define R88E_HIMRE_BCNDOK4	0x00020000	/* beacon queue DMA OK (4) */
81 #define R88E_HIMRE_BCNDOK5	0x00040000	/* beacon queue DMA OK (5) */
82 #define R88E_HIMRE_BCNDOK6	0x00080000	/* beacon queue DMA OK (6) */
83 #define R88E_HIMRE_BCNDOK7	0x00100000	/* beacon queue DMA OK (7) */
84 #define R88E_HIMRE_BCNDMAINT1	0x00200000	/* beacon DMA interrupt 1 */
85 #define R88E_HIMRE_BCNDMAINT2	0x00400000	/* beacon DMA interrupt 2 */
86 #define R88E_HIMRE_BCNDMAINT3	0x00800000	/* beacon DMA interrupt 3 */
87 #define R88E_HIMRE_BCNDMAINT4	0x01000000	/* beacon DMA interrupt 4 */
88 #define R88E_HIMRE_BCNDMAINT5	0x02000000	/* beacon DMA interrupt 5 */
89 #define R88E_HIMRE_BCNDMAINT6	0x04000000	/* beacon DMA interrupt 6 */
90 #define R88E_HIMRE_BCNDMAINT7	0x08000000	/* beacon DMA interrupt 7 */
91 
92 /* Bits for R88E_TX_RPT_CTRL. */
93 #define R88E_TX_RPT1_ENA		0x01
94 #define R88E_TX_RPT2_ENA		0x02
95 
96 /* Bits for R92C_MBID_NUM. */
97 #define R88E_MBID_TXBCN_RPT(id)		(0x08 << (id))
98 
99 /* Bits for R92C_SECCFG. */
100 #define R88E_SECCFG_CHK_KEYID	0x0100
101 
102 /*
103  * Baseband registers.
104  */
105 /* Bits for R92C_LSSI_PARAM(i). */
106 #define R88E_LSSI_PARAM_ADDR_M	0x0ff00000
107 #define R88E_LSSI_PARAM_ADDR_S	20
108 
109 /*
110  * RF (6052) registers.
111  */
112 #define R88E_RF_T_METER		0x42
113 #define R88E_RF_WE_LUT		0xef
114 
115 /* Bits for R92C_RF_CHNLBW. */
116 #define R88E_RF_CHNLBW_BW20	0x00c00
117 
118 /* Bits for R88E_RF_T_METER. */
119 #define R88E_RF_T_METER_VAL_M	0x0fc00
120 #define R88E_RF_T_METER_VAL_S	10
121 #define R88E_RF_T_METER_START	0x30000
122 
123 /* Bits for R88E_XCK_OUT_CTRL. */
124 #define R88E_XCK_OUT_CTRL_EN	1
125 
126 #endif	/* R88E_REG_H */
127