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