summaryrefslogtreecommitdiff
path: root/sys/dev/ic/rtwreg.h
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/ic/rtwreg.h')
-rw-r--r--sys/dev/ic/rtwreg.h254
1 files changed, 174 insertions, 80 deletions
diff --git a/sys/dev/ic/rtwreg.h b/sys/dev/ic/rtwreg.h
index 12dae298573..ea759e9cc8a 100644
--- a/sys/dev/ic/rtwreg.h
+++ b/sys/dev/ic/rtwreg.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: rtwreg.h,v 1.5 2005/02/14 12:49:29 jsg Exp $ */
+/* $OpenBSD: rtwreg.h,v 1.6 2005/05/29 02:56:33 reyk Exp $ */
/* $NetBSD: rtwreg.h,v 1.12 2005/01/16 11:50:43 dyoung Exp $ */
/*-
* Copyright (c) 2004, 2005 David Young. All rights reserved.
@@ -78,7 +78,7 @@
#endif /* _BIT_TWIDDLE */
-/* RTL8180L Host Control and Status Registers */
+/* RTL8180/RTL8185 Host Control and Status Registers */
#define RTW_IDR0 0x00 /* ID Register: MAC addr, 6 bytes.
* Auto-loaded from EEPROM. Read by byte,
@@ -105,20 +105,25 @@
*/
#define RTW_BRSR 0x2c /* Basic Rate Set Register, 16b */
-#define RTW_BRSR_BPLCP BIT(8) /* 1: use short PLCP header for CTS/ACK packet,
- * 0: use long PLCP header
- */
-#define RTW_BRSR_MBR8180_MASK BITS(1,0) /* Maximum Basic Service Rate */
-#define RTW_BRSR_MBR8180_1MBPS LSHIFT(0, RTW_BRSR_MBR8180_MASK)
-#define RTW_BRSR_MBR8180_2MBPS LSHIFT(1, RTW_BRSR_MBR8180_MASK)
-#define RTW_BRSR_MBR8180_5MBPS LSHIFT(2, RTW_BRSR_MBR8180_MASK)
-#define RTW_BRSR_MBR8180_11MBPS LSHIFT(3, RTW_BRSR_MBR8180_MASK)
-
-/* 8181 and 8180 docs conflict! */
-#define RTW_BRSR_MBR8181_1MBPS BIT(0)
-#define RTW_BRSR_MBR8181_2MBPS BIT(1)
-#define RTW_BRSR_MBR8181_5MBPS BIT(2)
-#define RTW_BRSR_MBR8181_11MBPS BIT(3)
+#define RTW8180_BRSR_BPLCP BIT(8) /* 1: Short PLCP CTS/ACK header */
+#define RTW8180_BRSR_MBR_MASK BITS(1,0) /* Basic Service Rate */
+#define RTW8180_BRSR_MBR_1MBPS LSHIFT(0, RTW8180_BRSR_MBR_MASK)
+#define RTW8180_BRSR_MBR_2MBPS LSHIFT(1, RTW8180_BRSR_MBR_MASK)
+#define RTW8180_BRSR_MBR_5MBPS LSHIFT(2, RTW8180_BRSR_MBR_MASK)
+#define RTW8180_BRSR_MBR_11MBPS LSHIFT(3, RTW8180_BRSR_MBR_MASK)
+#define RTW8185_BRSR_MBR_MASK BITS(11, 0) /* Basic Service Rate */
+#define RTW8185_BRSR_MBR_1MBPS BIT(0)
+#define RTW8185_BRSR_MBR_2MBPS BIT(1)
+#define RTW8185_BRSR_MBR_5MBPS BIT(2)
+#define RTW8185_BRSR_MBR_11MBPS BIT(3)
+#define RTW8185_BRSR_MBR_6MBPS BIT(4)
+#define RTW8185_BRSR_MBR_9MBPS BIT(5)
+#define RTW8185_BRSR_MBR_12MBPS BIT(6)
+#define RTW8185_BRSR_MBR_18MBPS BIT(7)
+#define RTW8185_BRSR_MBR_24MBPS BIT(8)
+#define RTW8185_BRSR_MBR_36MBPS BIT(9)
+#define RTW8185_BRSR_MBR_48MBPS BIT(10)
+#define RTW8185_BRSR_MBR_54MBPS BIT(11)
#define RTW_BSSID 0x2e
/* BSSID, 6 bytes */
@@ -131,6 +136,36 @@
#define RTW_BSSID4 (RTW_BSSID3 + 1) /* BSSID[4], 8b */
#define RTW_BSSID5 (RTW_BSSID4 + 1) /* BSSID[5], 8b */
+#define RTW8185_RR 0x34 /* Response Rate Register, 8b */
+#define RTW8185_RR_MAX BIT(7, 4)
+#define RTW8185_RR_MAX_1MPBS LSHIFT(0, RTW8185_RR_MAX_MASK)
+#define RTW8185_RR_MAX_2MPBS LSHIFT(1, RTW8185_RR_MAX_MASK)
+#define RTW8185_RR_MAX_5MPBS LSHIFT(2, RTW8185_RR_MAX_MASK)
+#define RTW8185_RR_MAX_11MPBS LSHIFT(3, RTW8185_RR_MAX_MASK)
+#define RTW8185_RR_MAX_6MPBS LSHIFT(4, RTW8185_RR_MAX_MASK)
+#define RTW8185_RR_MAX_9MPBS LSHIFT(5, RTW8185_RR_MAX_MASK)
+#define RTW8185_RR_MAX_12MPBS LSHIFT(6, RTW8185_RR_MAX_MASK)
+#define RTW8185_RR_MAX_18MPBS LSHIFT(7, RTW8185_RR_MAX_MASK)
+#define RTW8185_RR_MAX_24MPBS LSHIFT(8, RTW8185_RR_MAX_MASK)
+#define RTW8185_RR_MAX_36MPBS LSHIFT(9, RTW8185_RR_MAX_MASK)
+#define RTW8185_RR_MAX_48MPBS LSHIFT(10, RTW8185_RR_MAX_MASK)
+#define RTW8185_RR_MAX_54MPBS LSHIFT(11, RTW8185_RR_MAX_MASK)
+#define RTW8185_RR_MIN_MASK BIT(3, 0)
+#define RTW8185_RR_MIN_1MPBS LSHIFT(0, RTW8185_RR_MIN_MASK)
+#define RTW8185_RR_MIN_2MPBS LSHIFT(1, RTW8185_RR_MIN_MASK)
+#define RTW8185_RR_MIN_5MPBS LSHIFT(2, RTW8185_RR_MIN_MASK)
+#define RTW8185_RR_MIN_11MPBS LSHIFT(3, RTW8185_RR_MIN_MASK)
+#define RTW8185_RR_MIN_6MPBS LSHIFT(4, RTW8185_RR_MIN_MASK)
+#define RTW8185_RR_MIN_9MPBS LSHIFT(5, RTW8185_RR_MIN_MASK)
+#define RTW8185_RR_MIN_12MPBS LSHIFT(6, RTW8185_RR_MIN_MASK)
+#define RTW8185_RR_MIN_18MPBS LSHIFT(7, RTW8185_RR_MIN_MASK)
+#define RTW8185_RR_MIN_24MPBS LSHIFT(8, RTW8185_RR_MIN_MASK)
+#define RTW8185_RR_MIN_36MPBS LSHIFT(9, RTW8185_RR_MIN_MASK)
+#define RTW8185_RR_MIN_48MPBS LSHIFT(10, RTW8185_RR_MIN_MASK)
+#define RTW8185_RR_MIN_54MPBS LSHIFT(11, RTW8185_RR_MIN_MASK)
+
+#define RTW8185_EIFS_TIMER 0x35 /* Extended IFS Register, 16b ??? */
+
#define RTW_CR 0x37 /* Command Register, 8b */
#define RTW_CR_RST BIT(4) /* Reset: host sets to 1 to disable
* transmitter & receiver, reinitialize FIFO.
@@ -204,17 +239,21 @@
#define RTW_TCR_SWSEQ BIT(30) /* 1: host assigns 802.11 sequence number,
* 0: hardware assigns sequence number
*/
+#define RTW8185_TCR_NOPROBERSPTO BIT(29) /* No Probe Rsp timeout */
/* Hardware version ID, read-only */
-#define RTW_TCR_HWVERID_MASK BITS(29, 25)
-#define RTW_TCR_HWVERID_D LSHIFT(26, RTW_TCR_HWVERID_MASK)
-#define RTW_TCR_HWVERID_F LSHIFT(27, RTW_TCR_HWVERID_MASK)
-#define RTW_TCR_HWVERID_RTL8180 RTW_TCR_HWVERID_F
-
+#define RTW_TCR_HWVERID_MASK BITS(27, 25)
+#define RTW_TCR_HWVERID_RTL8180D BIT(26)
+#define RTW_TCR_HWVERID_RTL8180F BITS(26, 25)
+#define RTW_TCR_HWVERID_RTL8185 (BIT(27) | BIT(25))
/* Set ACK/CTS Timeout (EIFS).
* 1: ACK rate = max(RTW_BRSR_MBR, Rx rate) (XXX not min? typo in datasheet?)
* 0: ACK rate = 1Mbps
*/
-#define RTW_TCR_SAT BIT(24)
+#define RTW8180_TCR_SAT BIT(24)
+/* 1: Software PLCP length,
+ * 0: Hardware PLCP length
+ */
+#define RTW8185_TCR_PLCPLENGTH BIT(24)
/* Max DMA Burst Size per Tx DMA Burst */
#define RTW_TCR_MXDMA_MASK BITS(23,21)
#define RTW_TCR_MXDMA_16 LSHIFT(0, RTW_TCR_MXDMA_MASK)
@@ -275,13 +314,13 @@
/* Rx FIFO Threshold: RTL8180 begins PCI transfer when this many data
* bytes are received
*/
-#define RTW_RCR_RXFTH_MASK BITS(15,13)
-#define RTW_RCR_RXFTH_64 LSHIFT(2, RTW_RCR_RXFTH_MASK)
-#define RTW_RCR_RXFTH_128 LSHIFT(3, RTW_RCR_RXFTH_MASK)
-#define RTW_RCR_RXFTH_256 LSHIFT(4, RTW_RCR_RXFTH_MASK)
-#define RTW_RCR_RXFTH_512 LSHIFT(5, RTW_RCR_RXFTH_MASK)
-#define RTW_RCR_RXFTH_1024 LSHIFT(6, RTW_RCR_RXFTH_MASK)
-#define RTW_RCR_RXFTH_WHOLE LSHIFT(7, RTW_RCR_RXFTH_MASK)
+#define RTW8180_RCR_RXFTH_MASK BITS(15,13)
+#define RTW8180_RCR_RXFTH_64 LSHIFT(2, RTW8180_RCR_RXFTH_MASK)
+#define RTW8180_RCR_RXFTH_128 LSHIFT(3, RTW8180_RCR_RXFTH_MASK)
+#define RTW8180_RCR_RXFTH_256 LSHIFT(4, RTW8180_RCR_RXFTH_MASK)
+#define RTW8180_RCR_RXFTH_512 LSHIFT(5, RTW8180_RCR_RXFTH_MASK)
+#define RTW8180_RCR_RXFTH_1024 LSHIFT(6, RTW8180_RCR_RXFTH_MASK)
+#define RTW8180_RCR_RXFTH_WHOLE LSHIFT(7, RTW8180_RCR_RXFTH_MASK)
#define RTW_RCR_AICV BIT(12) /* accept frames w/ ICV errors */
@@ -365,30 +404,24 @@
#define RTW_9346CR_EEDO BIT(0) /* read-only */
#define RTW_CONFIG0 0x51 /* Configuration Register 0, 8b */
-#define RTW_CONFIG0_WEP40 BIT(7) /* implements 40-bit WEP,
- * XXX RTL8180 only?
- */
-#define RTW_CONFIG0_WEP104 BIT(6) /* implements 104-bit WEP,
- * from EEPROM, read-only
- * XXX RTL8180 only?
- */
-#define RTW_CONFIG0_LEDGPOEN BIT(4) /* 1: RTW_PSR_LEDGPO[01] control
- * LED[01] pins.
- * 0: LED behavior defined by
- * RTW_CONFIG1_LEDS10_MASK
- * XXX RTL8180 only?
- */
+#define RTW8180_CONFIG0_WEP40 BIT(7) /* implements 40-bit WEP,
+ */
+#define RTW8180_CONFIG0_WEP104 BIT(6) /* implements 104-bit WEP,
+ * from EEPROM, read-only
+ */
+#define RTW8180_CONFIG0_LEDGPOEN BIT(4) /* 1: RTW_PSR_LEDGPO[01] control
+ * LED[01] pins.
+ * 0: LED behavior defined by
+ * RTW_CONFIG1_LEDS10_MASK
+ */
/* auxiliary power is present, read-only */
-#define RTW_CONFIG0_AUXPWR BIT(3)
+#define RTW_CONFIG0_AUXPWR BIT(3)
/* Geographic Location, read-only */
-#define RTW_CONFIG0_GL_MASK BITS(1,0)
-/* _RTW_CONFIG0_GL_* is what the datasheet says, but RTW_CONFIG0_GL_*
- * work.
- */
-#define _RTW_CONFIG0_GL_USA LSHIFT(3, RTW_CONFIG0_GL_MASK)
-#define RTW_CONFIG0_GL_EUROPE LSHIFT(2, RTW_CONFIG0_GL_MASK)
-#define RTW_CONFIG0_GL_JAPAN LSHIFT(1, RTW_CONFIG0_GL_MASK)
-#define RTW_CONFIG0_GL_USA LSHIFT(0, RTW_CONFIG0_GL_MASK)
+#define RTW8180_CONFIG0_GL_MASK BITS(1,0)
+#define RTW8180_CONFIG0_GL_USA LSHIFT(3, RTW8180_CONFIG0_GL_MASK)
+#define RTW8180_CONFIG0_GL_EUROPE LSHIFT(2, RTW8180_CONFIG0_GL_MASK)
+#define RTW8180_CONFIG0_GL_JAPAN LSHIFT(1, RTW8180_CONFIG0_GL_MASK)
+#define RTW8180_CONFIG0_GL_JAPAN2 LSHIFT(0, RTW8180_CONFIG0_GL_MASK)
/* RTL8181 datasheet says RTW_CONFIG0_GL_JAPAN = 0. */
#define RTW_CONFIG1 0x52 /* Configuration Register 1, 8b */
@@ -431,7 +464,7 @@
* Tx frequency & symbol clocks
* are derived from the same OSC
*/
-#define RTW_CONFIG2_ANT BIT(6) /* diversity enabled, read-only */
+#define RTW8180_CONFIG2_ANT BIT(6) /* diversity enabled, read-only */
#define RTW_CONFIG2_DPS BIT(3) /* Descriptor Polling State: enable
* test mode.
*/
@@ -591,19 +624,21 @@
#define RTW_PSR_UWF BIT(1) /* Enable Unicast Wakeup Frame */
#define RTW_PSR_PSEN BIT(0) /* 1: page 1, 0: page 0 */
-#define RTW_SCR 0x5f /* Security Configuration Register, 8b */
-#define RTW_SCR_KM_MASK BITS(5,4) /* Key Mode */
-#define RTW_SCR_KM_WEP104 LSHIFT(1, RTW_SCR_KM_MASK)
-#define RTW_SCR_KM_WEP40 LSHIFT(0, RTW_SCR_KM_MASK)
-#define RTW_SCR_TXSECON BIT(1) /* Enable Tx WEP. Invalid if
+#define RTW8180_SCR 0x5f /* Security Configuration Register, 8b */
+#define RTW8180_SCR_KM_MASK BITS(5,4) /* Key Mode */
+#define RTW8180_SCR_KM_WEP104 LSHIFT(1, RTW8180_SCR_KM_MASK)
+#define RTW8180_SCR_KM_WEP40 LSHIFT(0, RTW8180_SCR_KM_MASK)
+#define RTW8180_SCR_TXSECON BIT(1) /* Enable Tx WEP. Invalid if
* neither RTW_CONFIG0_WEP40 nor
* RTW_CONFIG0_WEP104 is set.
*/
-#define RTW_SCR_RXSECON BIT(0) /* Enable Rx WEP. Invalid if
+#define RTW8180_SCR_RXSECON BIT(0) /* Enable Rx WEP. Invalid if
* neither RTW_CONFIG0_WEP40 nor
* RTW_CONFIG0_WEP104 is set.
*/
+#define RTW8185_RFPARM 0x60 /* RF Parameter Register, 32b */
+
#define RTW_BCNITV 0x70 /* Beacon Interval Register, 16b */
#define RTW_BCNITV_BCNITV_MASK BITS(9,0) /* TU between TBTT, written
* by host.
@@ -648,27 +683,33 @@
#define RTW_PHYDATAW 0x7d /* Write data to PHY, 8b, write-only */
#define RTW_PHYDATAR 0x7e /* Read data from PHY, 8b (?), read-only */
-#define RTW_PHYCFG 0x80 /* PHY Configuration Register, 32b */
-#define RTW_PHYCFG_MAC_POLL BIT(31) /* if !RTW_PHYCFG_HST,
+#define RTW8180_PHYCFG 0x80 /* PHY Configuration Register, 32b */
+#define RTW8180_PHYCFG_MAC_POLL BIT(31) /* if !RTW8180_PHYCFG_HST,
* host sets. MAC clears
* after banging bits.
*/
-#define RTW_PHYCFG_HST BIT(30) /* 1: host bangs bits
+#define RTW8180_PHYCFG_HST BIT(30) /* 1: host bangs bits
* 0: MAC bangs bits
*/
-#define RTW_PHYCFG_MAC_RFTYPE_MASK BITS(29,28)
-#define RTW_PHYCFG_MAC_RFTYPE_INTERSIL LSHIFT(0, RTW_PHYCFG_MAC_RFTYPE_MASK)
-#define RTW_PHYCFG_MAC_RFTYPE_RFMD LSHIFT(1, RTW_PHYCFG_MAC_RFTYPE_MASK)
-#define RTW_PHYCFG_MAC_RFTYPE_GCT RTW_PHYCFG_MAC_RFTYPE_RFMD
-#define RTW_PHYCFG_MAC_RFTYPE_PHILIPS LSHIFT(3, RTW_PHYCFG_MAC_RFTYPE_MASK)
-#define RTW_PHYCFG_MAC_PHILIPS_ADDR_MASK BITS(27,24)
-#define RTW_PHYCFG_MAC_PHILIPS_DATA_MASK BITS(23,0)
-#define RTW_PHYCFG_MAC_MAXIM_LODATA_MASK BITS(27,24)
-#define RTW_PHYCFG_MAC_MAXIM_ADDR_MASK BITS(11,8)
-#define RTW_PHYCFG_MAC_MAXIM_HIDATA_MASK BITS(7,0)
-#define RTW_PHYCFG_HST_EN BIT(2)
-#define RTW_PHYCFG_HST_CLK BIT(1)
-#define RTW_PHYCFG_HST_DATA BIT(0)
+#define RTW8180_PHYCFG_MAC_RFTYPE_MASK BITS(29,28)
+#define RTW8180_PHYCFG_MAC_RFTYPE_INTERSIL LSHIFT(0, RTW8180_PHYCFG_MAC_RFTYPE_MASK)
+#define RTW8180_PHYCFG_MAC_RFTYPE_RFMD LSHIFT(1, RTW8180_PHYCFG_MAC_RFTYPE_MASK)
+#define RTW8180_PHYCFG_MAC_RFTYPE_GCT RTW8180_PHYCFG_MAC_RFTYPE_RFMD
+#define RTW8180_PHYCFG_MAC_RFTYPE_PHILIPS LSHIFT(3, RTW8180_PHYCFG_MAC_RFTYPE_MASK)
+#define RTW8180_PHYCFG_MAC_PHILIPS_ADDR_MASK BITS(27,24)
+#define RTW8180_PHYCFG_MAC_PHILIPS_DATA_MASK BITS(23,0)
+#define RTW8180_PHYCFG_MAC_MAXIM_LODATA_MASK BITS(27,24)
+#define RTW8180_PHYCFG_MAC_MAXIM_ADDR_MASK BITS(11,8)
+#define RTW8180_PHYCFG_MAC_MAXIM_HIDATA_MASK BITS(7,0)
+#define RTW8180_PHYCFG_HST_EN BIT(2)
+#define RTW8180_PHYCFG_HST_CLK BIT(1)
+#define RTW8180_PHYCFG_HST_DATA BIT(0)
+
+#define RTW8185_RFPINSOUTPUT 0x80
+#define RTW8185_RFPINSOUTPUT_MASK 0xfff3
+
+#define RTW8185_RFPINSENABLE 0x82
+#define RTW8185_RFPINSENABLE_ENABLE 0x0007
#define RTW_MAXIM_HIDATA_MASK BITS(11,4)
#define RTW_MAXIM_LODATA_MASK BITS(3,0)
@@ -713,13 +754,66 @@
/* Default Key Registers, each 128b
*
- * If RTW_SCR_KM_WEP104, 104 lsb are the key.
- * If RTW_SCR_KM_WEP40, 40 lsb are the key.
+ * If RTW8180_SCR_KM_WEP104, 104 lsb are the key.
+ * If RTW8180_SCR_KM_WEP40, 40 lsb are the key.
*/
-#define RTW_DK0 0x90 /* Default Key 0 Register, 128b */
-#define RTW_DK1 0xa0 /* Default Key 1 Register, 128b */
-#define RTW_DK2 0xb0 /* Default Key 2 Register, 128b */
-#define RTW_DK3 0xc0 /* Default Key 3 Register, 128b */
+#define RTW8180_DK0 0x90 /* Default Key 0 Register, 128b */
+#define RTW8180_DK1 0xa0 /* Default Key 1 Register, 128b */
+#define RTW8180_DK2 0xb0 /* Default Key 2 Register, 128b */
+#define RTW8180_DK3 0xc0 /* Default Key 3 Register, 128b */
+
+#define RTW8185_RFPINSSELECT 0x84
+#define RTW8185_RFPINSSELECT_ENABLE 0x0007
+
+#define RTW8185_RFPINSINPUT 0x86
+#define RTW8185_RFPARA 0x88
+#define RTW8185_RFTIMING 0x8c
+#define RTW8185_GPO 0x90
+#define RTW8185_GPE 0x91
+#define RTW8185_GPI 0x92
+#define RTW8185_TXAGCCTL 0x9c
+#define RTW8185_CCKTXAGC 0x9d
+#define RTW8185_OFDMTXAGC 0x9e
+#define RTW8185_ANTSEL 0x9f
+
+#define RTW8185_CAMRW 0xa0 /* CAM R/W Register, 32b */
+#define RTW8185_CAMRW_POOLING BIT(31) /* Pooling bit */
+#define RTW8185_CAMRW_WRITE BIT(16) /* Write enable */
+#define RTW8185_CAMRW_ADDRESS BITS(6, 0) /* CAM address */
+
+#define RTW8185_CAMOUTPUT 0xa4
+#define RTW8185_CAMINPUT 0xa8
+
+#define RTW8185_CAMDEBUG 0xac /* CAM Debug Interface, 32b */
+#define RTW8185_CAMDEBUG_SELTXRXINFO BIT(31)
+#define RTW8185_CAMDEBUG_KEYFOUND BIT(30)
+#define RTW8185_CAMDEBUG_WPACONFIG BITS(29, 24)
+#define RTW8185_CAMDEBUG_CAMKEY BITS(23, 0)
+
+#define RTW8185_WPACONFIG 0xb0 /* WPA Config Register, 16b */
+#define RTW8185_WPACONFIG_RXWPADUMMY BIT(8)
+#define RTW8185_WPACONFIG_DISRX_AESMIC BIT(3)
+#define RTW8185_WPACONFIG_RXDECRYPT BIT(2)
+#define RTW8185_WPACONFIG_TXENCRYPT BIT(1)
+#define RTW8185_WPACONFIG_USEDEFAULTKEY BIT(0)
+
+#define RTW8185_AESMASK 0xb2
+#define RTW8185_SIFS 0xb4
+#define RTW8185_DIFS 0xb5
+#define RTW8185_SLOTTIME 0xb6
+#define RTW8185_UTUNE 0xb7
+
+#define RTW8185_CWCONFIG 0xbc /* CW Config Register, 8b */
+#define RTW8185_CWCONFIG_PPRETRYLIMIT BIT(1) /* Per-Packet Retry Limit */
+#define RTW8185_CWCONFIG_PPCW BIT(1) /* Per-Packet Cont. Window */
+
+#define RTW8185_CWVALUES 0xbd /* CW Values, 8b */
+#define RTW8185_CWVALUES_CWMAX BITS(7, 4) /* Max Contention Window */
+#define RTW8185_CWVALUES_CWMIN BITS(3, 0) /* Min Contention Window */
+
+#define RTW8185_RATEFALLBACKCTL 0xbe /* Auto Rate Fallback, 8b */
+#define RTW8185_RATEFALLBACKCTL_ENABLE BIT(7)
+#define RTW8185_RATEFALLBACKCTL_STEP BITS(1, 0)
#define RTW_CONFIG5 0xd8 /* Configuration Register 5, 8b */
#define RTW_CONFIG5_TXFIFOOK BIT(7) /* Tx FIFO self-test pass, read-only */