xref: /openbsd-src/sys/dev/ic/r92creg.h (revision 079591e77b73412ef56d61ce5a91b1332910831c)
1*079591e7Sjsg /*	$OpenBSD: r92creg.h,v 1.31 2024/09/01 03:14:48 jsg Exp $	*/
253c3c4d0Sstsp 
353c3c4d0Sstsp /*-
453c3c4d0Sstsp  * Copyright (c) 2010 Damien Bergamini <damien.bergamini@free.fr>
553c3c4d0Sstsp  * Copyright (c) 2015 Stefan Sperling <stsp@openbsd.org>
653c3c4d0Sstsp  *
753c3c4d0Sstsp  * Permission to use, copy, modify, and distribute this software for any
853c3c4d0Sstsp  * purpose with or without fee is hereby granted, provided that the above
953c3c4d0Sstsp  * copyright notice and this permission notice appear in all copies.
1053c3c4d0Sstsp  *
1153c3c4d0Sstsp  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
1253c3c4d0Sstsp  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
1353c3c4d0Sstsp  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
1453c3c4d0Sstsp  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
1553c3c4d0Sstsp  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
1653c3c4d0Sstsp  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
1753c3c4d0Sstsp  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
1853c3c4d0Sstsp  */
1953c3c4d0Sstsp 
2053c3c4d0Sstsp #define R92C_MAX_CHAINS	2
212a915f22Sstsp #define R92C_MAX_TX_PWR	0x3f
222a915f22Sstsp #define R92C_H2C_NBOX	4
2353c3c4d0Sstsp 
2453c3c4d0Sstsp /*
2553c3c4d0Sstsp  * MAC registers.
2653c3c4d0Sstsp  */
2753c3c4d0Sstsp /* System Configuration. */
2853c3c4d0Sstsp #define R92C_SYS_ISO_CTRL		0x000
2953c3c4d0Sstsp #define R92C_SYS_FUNC_EN		0x002
3053c3c4d0Sstsp #define R92C_APS_FSMCO			0x004
3153c3c4d0Sstsp #define R92C_SYS_CLKR			0x008
3253c3c4d0Sstsp #define R92C_AFE_MISC			0x010
3353c3c4d0Sstsp #define R92C_SPS0_CTRL			0x011
3490540544Sjmatthew #define R92C_SYS_SWR_CTRL2		0x014
3553c3c4d0Sstsp #define R92C_SPS_OCP_CFG		0x018
3653c3c4d0Sstsp #define R92C_RSV_CTRL			0x01c
3753c3c4d0Sstsp #define R92C_RF_CTRL			0x01f
3853c3c4d0Sstsp #define R92C_LDOA15_CTRL		0x020
3953c3c4d0Sstsp #define R92C_LDOV12D_CTRL		0x021
4053c3c4d0Sstsp #define R92C_LDOHCI12_CTRL		0x022
4153c3c4d0Sstsp #define R92C_LPLDO_CTRL			0x023
4253c3c4d0Sstsp #define R92C_AFE_XTAL_CTRL		0x024
43067851b1Skevlo #define R92C_AFE_LDO_CTRL		0x027
4453c3c4d0Sstsp #define R92C_AFE_PLL_CTRL		0x028
4590540544Sjmatthew #define R92C_AFE_CTRL3			0x02c
4653c3c4d0Sstsp #define R92C_EFUSE_CTRL			0x030
4753c3c4d0Sstsp #define R92C_EFUSE_TEST			0x034
4853c3c4d0Sstsp #define R92C_PWR_DATA			0x038
4953c3c4d0Sstsp #define R92C_CAL_TIMER			0x03c
5053c3c4d0Sstsp #define R92C_ACLK_MON			0x03e
5153c3c4d0Sstsp #define R92C_GPIO_MUXCFG		0x040
5253c3c4d0Sstsp #define R92C_GPIO_IO_SEL		0x042
5353c3c4d0Sstsp #define R92C_MAC_PINMUX_CFG		0x043
5453c3c4d0Sstsp #define R92C_GPIO_PIN_CTRL		0x044
5553c3c4d0Sstsp #define R92C_GPIO_INTM			0x048
5653c3c4d0Sstsp #define R92C_LEDCFG0			0x04c
5753c3c4d0Sstsp #define R92C_LEDCFG1			0x04d
5853c3c4d0Sstsp #define R92C_LEDCFG2			0x04e
5953c3c4d0Sstsp #define R92C_LEDCFG3			0x04f
6053c3c4d0Sstsp #define R92C_FSIMR			0x050
6153c3c4d0Sstsp #define R92C_FSISR			0x054
6253c3c4d0Sstsp #define R92C_HSIMR			0x058
6353c3c4d0Sstsp #define R92C_HSISR			0x05c
64d8e41173Sjmatthew #define R92C_AFE_XTAL_CTRL_EXT		0x078
65d8e41173Sjmatthew #define R88E_XCK_OUT_CTRL		0x07c
6690540544Sjmatthew #define R92E_LDO_SWR_CTRL		0x07c
6753c3c4d0Sstsp #define R92C_MCUFWDL			0x080
6853c3c4d0Sstsp #define R92C_HMEBOX_EXT(idx)		(0x088 + (idx) * 2)
6953c3c4d0Sstsp #define R88E_HIMR			0x0b0
7053c3c4d0Sstsp #define R88E_HISR			0x0b4
7153c3c4d0Sstsp #define R88E_HIMRE			0x0b8
7253c3c4d0Sstsp #define R88E_HISRE			0x0bc
7353c3c4d0Sstsp #define R92C_EFUSE_ACCESS               0x0cf
7453c3c4d0Sstsp #define R92C_BIST_SCAN			0x0d0
7553c3c4d0Sstsp #define R92C_BIST_RPT			0x0d4
7653c3c4d0Sstsp #define R92C_BIST_ROM_RPT		0x0d8
7753c3c4d0Sstsp #define R92C_USB_SIE_INTF		0x0e0
7853c3c4d0Sstsp #define R92C_PCIE_MIO_INTF		0x0e4
7953c3c4d0Sstsp #define R92C_PCIE_MIO_INTD		0x0e8
8053c3c4d0Sstsp #define R92C_HPON_FSM			0x0ec
8153c3c4d0Sstsp #define R92C_SYS_CFG			0x0f0
8253c3c4d0Sstsp /* MAC General Configuration. */
8353c3c4d0Sstsp #define R92C_CR				0x100
8456fbb35bSkevlo #define R92C_MSR			0x102
8553c3c4d0Sstsp #define R92C_PBP			0x104
8653c3c4d0Sstsp #define R92C_TRXDMA_CTRL		0x10c
8753c3c4d0Sstsp #define R92C_TRXFF_BNDY			0x114
8853c3c4d0Sstsp #define R92C_TRXFF_STATUS		0x118
8953c3c4d0Sstsp #define R92C_RXFF_PTR			0x11c
9053c3c4d0Sstsp #define R92C_HIMR			0x120
9153c3c4d0Sstsp #define R92C_HISR			0x124
9253c3c4d0Sstsp #define R92C_HIMRE			0x128
9353c3c4d0Sstsp #define R92C_HISRE			0x12c
9453c3c4d0Sstsp #define R92C_CPWM			0x12f
9553c3c4d0Sstsp #define R92C_FWIMR			0x130
9653c3c4d0Sstsp #define R92C_FWISR			0x134
9753c3c4d0Sstsp #define R92C_PKTBUF_DBG_CTRL		0x140
9853c3c4d0Sstsp #define R92C_PKTBUF_DBG_DATA_L		0x144
9953c3c4d0Sstsp #define R92C_PKTBUF_DBG_DATA_H		0x148
10053c3c4d0Sstsp #define R92C_TC0_CTRL(i)		(0x150 + (i) * 4)
10153c3c4d0Sstsp #define R92C_TCUNIT_BASE		0x164
10253c3c4d0Sstsp #define R92C_MBIST_START		0x174
10353c3c4d0Sstsp #define R92C_MBIST_DONE			0x178
10453c3c4d0Sstsp #define R92C_MBIST_FAIL			0x17c
105d8e41173Sjmatthew #define R88E_32K_CTRL			0x194
1061f929dc7Sstsp #define R92C_C2HEVT_MSG			0x1a0
1071f929dc7Sstsp #define R92C_C2HEVT_CLEAR		0x1af
10853c3c4d0Sstsp #define R92C_C2HEVT_MSG_TEST		0x1b8
10953c3c4d0Sstsp #define R92C_MCUTST_1			0x1c0
11053c3c4d0Sstsp #define R92C_FMETHR			0x1c8
11153c3c4d0Sstsp #define R92C_HMETFR			0x1cc
11253c3c4d0Sstsp #define R92C_HMEBOX(idx)		(0x1d0 + (idx) * 4)
11353c3c4d0Sstsp #define R92C_LLT_INIT			0x1e0
11453c3c4d0Sstsp #define R92C_BB_ACCESS_CTRL		0x1e8
11553c3c4d0Sstsp #define R92C_BB_ACCESS_DATA		0x1ec
11653c3c4d0Sstsp #define R88E_HMEBOX_EXT(idx)            (0x1f0 + (idx) * 4)
11753c3c4d0Sstsp /* Tx DMA Configuration. */
11853c3c4d0Sstsp #define R92C_RQPN			0x200
11953c3c4d0Sstsp #define R92C_FIFOPAGE			0x204
12053c3c4d0Sstsp #define R92C_TDECTRL			0x208
12153c3c4d0Sstsp #define R92C_TXDMA_OFFSET_CHK		0x20c
12253c3c4d0Sstsp #define R92C_TXDMA_STATUS		0x210
12353c3c4d0Sstsp #define R92C_RQPN_NPQ			0x214
12490540544Sjmatthew #define R92E_AUTO_LLT			0x224
12590540544Sjmatthew #define R92E_DWBCN1_CTRL		0x228
12653c3c4d0Sstsp /* Rx DMA Configuration. */
12753c3c4d0Sstsp #define R92C_RXDMA_AGG_PG_TH		0x280
12853c3c4d0Sstsp #define R92C_RXPKT_NUM			0x284
129d8e41173Sjmatthew #define R88E_RXDMA_CTRL			0x286
13053c3c4d0Sstsp #define R92C_RXDMA_STATUS		0x288
13190540544Sjmatthew #define R92E_RXDMA_PRO			0x290
13253c3c4d0Sstsp 
13353c3c4d0Sstsp #define R92C_PCIE_CTRL_REG		0x300
13453c3c4d0Sstsp #define R92C_INT_MIG			0x304
13553c3c4d0Sstsp #define R92C_BCNQ_DESA			0x308
13653c3c4d0Sstsp #define R92C_HQ_DESA			0x310
13753c3c4d0Sstsp #define R92C_MGQ_DESA			0x318
13853c3c4d0Sstsp #define R92C_VOQ_DESA			0x320
13953c3c4d0Sstsp #define R92C_VIQ_DESA			0x328
14053c3c4d0Sstsp #define R92C_BEQ_DESA			0x330
14153c3c4d0Sstsp #define R92C_BKQ_DESA			0x338
14253c3c4d0Sstsp #define R92C_RX_DESA			0x340
14353c3c4d0Sstsp #define R92C_DBI			0x348
14453c3c4d0Sstsp #define R92C_MDIO			0x354
14553c3c4d0Sstsp #define R92C_DBG_SEL			0x360
14653c3c4d0Sstsp #define R92C_PCIE_HRPWM			0x361
14753c3c4d0Sstsp #define R92C_PCIE_HCPWM			0x363
14853c3c4d0Sstsp #define R92C_UART_CTRL			0x364
14953c3c4d0Sstsp #define R92C_UART_TX_DES		0x370
15053c3c4d0Sstsp #define R92C_UART_RX_DES		0x378
15153c3c4d0Sstsp 
15253c3c4d0Sstsp #define R92C_VOQ_INFORMATION		0x0400
15353c3c4d0Sstsp #define R92C_VIQ_INFORMATION		0x0404
15453c3c4d0Sstsp #define R92C_BEQ_INFORMATION		0x0408
155067851b1Skevlo #define R92C_BKQ_INFORMATION		0x040c
15653c3c4d0Sstsp #define R92C_MGQ_INFORMATION		0x0410
15753c3c4d0Sstsp #define R92C_HGQ_INFORMATION		0x0414
15853c3c4d0Sstsp #define R92C_BCNQ_INFORMATION		0x0418
159067851b1Skevlo #define R92C_CPU_MGQ_INFORMATION	0x041c
16053c3c4d0Sstsp 
16153c3c4d0Sstsp /* Protocol Configuration. */
16253c3c4d0Sstsp #define R92C_FWHW_TXQ_CTRL		0x420
16353c3c4d0Sstsp #define R92C_HWSEQ_CTRL			0x423
16453c3c4d0Sstsp #define R92C_TXPKTBUF_BCNQ_BDNY		0x424
16553c3c4d0Sstsp #define R92C_TXPKTBUF_MGQ_BDNY		0x425
16653c3c4d0Sstsp #define R92C_SPEC_SIFS			0x428
16753c3c4d0Sstsp #define R92C_RL				0x42a
16853c3c4d0Sstsp #define R92C_DARFRC			0x430
16953c3c4d0Sstsp #define R92C_RARFRC			0x438
17053c3c4d0Sstsp #define R92C_RRSR			0x440
17153c3c4d0Sstsp #define R92C_ARFR(i)			(0x444 + (i) * 4)
172067851b1Skevlo #define R88F_AMPDU_MAX_TIME		0x456
17353c3c4d0Sstsp #define R92C_AGGLEN_LMT			0x458
17453c3c4d0Sstsp #define R92C_AMPDU_MIN_SPACE		0x45c
17553c3c4d0Sstsp #define R92C_TXPKTBUF_WMAC_LBK_BF_HD	0x45d
17653c3c4d0Sstsp #define R92C_FAST_EDCA_CTRL		0x460
17753c3c4d0Sstsp #define R92C_RD_RESP_PKT_TH		0x463
17853c3c4d0Sstsp #define R92C_INIRTS_RATE_SEL		0x480
17990540544Sjmatthew #define R92E_DATA_SC			0x483
18053c3c4d0Sstsp #define R92C_INIDATA_RATE_SEL(macid)	(0x484 + (macid))
18190540544Sjmatthew #define R92C_QUEUE_CTRL			0x4c6
182067851b1Skevlo #define R88F_HT_SINGLE_AMPDU		0x4c7
18353c3c4d0Sstsp #define R92C_MAX_AGGR_NUM		0x4ca
18490540544Sjmatthew #define R92C_BAR_MODE_CTRL		0x4cc
185d8e41173Sjmatthew #define R88E_TX_RPT_CTRL		0x4ec
186d8e41173Sjmatthew #define R88E_TX_RPT_TIME		0x4f0
18753c3c4d0Sstsp /* EDCA Configuration. */
18853c3c4d0Sstsp #define R92C_EDCA_VO_PARAM		0x500
18953c3c4d0Sstsp #define R92C_EDCA_VI_PARAM		0x504
19053c3c4d0Sstsp #define R92C_EDCA_BE_PARAM		0x508
19153c3c4d0Sstsp #define R92C_EDCA_BK_PARAM		0x50c
19253c3c4d0Sstsp #define R92C_BCNTCFG			0x510
19353c3c4d0Sstsp #define R92C_PIFS			0x512
19453c3c4d0Sstsp #define R92C_RDG_PIFS			0x513
19553c3c4d0Sstsp #define R92C_SIFS_CCK			0x514
19653c3c4d0Sstsp #define R92C_SIFS_OFDM			0x516
19753c3c4d0Sstsp #define R92C_AGGR_BREAK_TIME		0x51a
19853c3c4d0Sstsp #define R92C_SLOT			0x51b
19953c3c4d0Sstsp #define R92C_TX_PTCL_CTRL		0x520
20053c3c4d0Sstsp #define R92C_TXPAUSE			0x522
20153c3c4d0Sstsp #define R92C_DIS_TXREQ_CLR		0x523
20253c3c4d0Sstsp #define R92C_RD_CTRL			0x524
20353c3c4d0Sstsp #define R92C_TBTT_PROHIBIT		0x540
20453c3c4d0Sstsp #define R92C_RD_NAV_NXT			0x544
20553c3c4d0Sstsp #define R92C_NAV_PROT_LEN		0x546
20653c3c4d0Sstsp #define R92C_BCN_CTRL			0x550
207eaa9bfb9Sstsp #define R92C_BCN_CTRL1			0x551
20853c3c4d0Sstsp #define R92C_MBID_NUM			0x552
20953c3c4d0Sstsp #define R92C_DUAL_TSF_RST		0x553
21053c3c4d0Sstsp #define R92C_BCN_INTERVAL		0x554
21153c3c4d0Sstsp #define R92C_DRVERLYINT			0x558
21253c3c4d0Sstsp #define R92C_BCNDMATIM			0x559
21353c3c4d0Sstsp #define R92C_ATIMWND			0x55a
2143426e859Sstsp #define R92C_USTIME_TSF			0x55c
21553c3c4d0Sstsp #define R92C_BCN_MAX_ERR		0x55d
21653c3c4d0Sstsp #define R92C_RXTSF_OFFSET_CCK		0x55e
21753c3c4d0Sstsp #define R92C_RXTSF_OFFSET_OFDM		0x55f
21853c3c4d0Sstsp #define R92C_TSFTR			0x560
21953c3c4d0Sstsp #define R92C_INIT_TSFTR			0x564
22053c3c4d0Sstsp #define R92C_PSTIMER			0x580
22153c3c4d0Sstsp #define R92C_TIMER0			0x584
22253c3c4d0Sstsp #define R92C_TIMER1			0x588
22353c3c4d0Sstsp #define R92C_ACMHWCTRL			0x5c0
22453c3c4d0Sstsp #define R92C_ACMRSTCTRL			0x5c1
22553c3c4d0Sstsp #define R92C_ACMAVG			0x5c2
22653c3c4d0Sstsp #define R92C_VO_ADMTIME			0x5c4
22753c3c4d0Sstsp #define R92C_VI_ADMTIME			0x5c6
22853c3c4d0Sstsp #define R92C_BE_ADMTIME			0x5c8
22953c3c4d0Sstsp #define R92C_EDCA_RANDOM_GEN		0x5cc
23053c3c4d0Sstsp #define R92C_SCH_TXCMD			0x5d0
23153c3c4d0Sstsp /* WMAC Configuration. */
23253c3c4d0Sstsp #define R92C_APSD_CTRL			0x600
23353c3c4d0Sstsp #define R92C_BWOPMODE			0x603
23453c3c4d0Sstsp #define R92C_TCR			0x604
23553c3c4d0Sstsp #define R92C_RCR			0x608
236067851b1Skevlo #define R88F_RX_PKT_LIMIT		0x60c
23753c3c4d0Sstsp #define R92C_RX_DRVINFO_SZ		0x60f
23853c3c4d0Sstsp #define R92C_MACID			0x610
23953c3c4d0Sstsp #define R92C_BSSID			0x618
24053c3c4d0Sstsp #define R92C_MAR			0x620
241067851b1Skevlo #define R88F_USTIME_EDCA		0x638
24253c3c4d0Sstsp #define R92C_MAC_SPEC_SIFS		0x63a
243af1fd538Sstsp #define R92C_RESP_SIFS_CCK		0x63c
244af1fd538Sstsp #define R92C_RESP_SIFS_OFDM		0x63e
24553c3c4d0Sstsp #define R92C_ACKTO			0x640
24690540544Sjmatthew #define R92C_NAV_UPPER			0x652
24756fbb35bSkevlo #define R92C_WMAC_TRXPTCL_CTL		0x668
24853c3c4d0Sstsp #define R92C_CAMCMD			0x670
24953c3c4d0Sstsp #define R92C_CAMWRITE			0x674
25053c3c4d0Sstsp #define R92C_CAMREAD			0x678
25153c3c4d0Sstsp #define R92C_CAMDBG			0x67c
25253c3c4d0Sstsp #define R92C_SECCFG			0x680
25353c3c4d0Sstsp #define R92C_RXFLTMAP0			0x6a0
25453c3c4d0Sstsp #define R92C_RXFLTMAP1			0x6a2
25553c3c4d0Sstsp #define R92C_RXFLTMAP2			0x6a4
25653c3c4d0Sstsp 
25790540544Sjmatthew #define R92C_CONFIG_ANT_A		0xb68
25890540544Sjmatthew #define R92C_CONFIG_ANT_B		0xb6c
25990540544Sjmatthew 
26053c3c4d0Sstsp /* Bits for R92C_SYS_ISO_CTRL. */
26153c3c4d0Sstsp #define R92C_SYS_ISO_CTRL_MD2PP		0x0001
26253c3c4d0Sstsp #define R92C_SYS_ISO_CTRL_UA2USB	0x0002
26353c3c4d0Sstsp #define R92C_SYS_ISO_CTRL_UD2CORE	0x0004
26453c3c4d0Sstsp #define R92C_SYS_ISO_CTRL_PA2PCIE	0x0008
26553c3c4d0Sstsp #define R92C_SYS_ISO_CTRL_PD2CORE	0x0010
26653c3c4d0Sstsp #define R92C_SYS_ISO_CTRL_IP2MAC	0x0020
26753c3c4d0Sstsp #define R92C_SYS_ISO_CTRL_DIOP		0x0040
26853c3c4d0Sstsp #define R92C_SYS_ISO_CTRL_DIOE		0x0080
26953c3c4d0Sstsp #define R92C_SYS_ISO_CTRL_EB2CORE	0x0100
27053c3c4d0Sstsp #define R92C_SYS_ISO_CTRL_DIOR		0x0200
27153c3c4d0Sstsp #define R92C_SYS_ISO_CTRL_PWC_EV25V	0x4000
27253c3c4d0Sstsp #define R92C_SYS_ISO_CTRL_PWC_EV12V	0x8000
27353c3c4d0Sstsp 
27453c3c4d0Sstsp /* Bits for R92C_SYS_FUNC_EN. */
27553c3c4d0Sstsp #define R92C_SYS_FUNC_EN_BBRSTB		0x0001
27653c3c4d0Sstsp #define R92C_SYS_FUNC_EN_BB_GLB_RST	0x0002
27753c3c4d0Sstsp #define R92C_SYS_FUNC_EN_USBA		0x0004
27853c3c4d0Sstsp #define R92C_SYS_FUNC_EN_UPLL		0x0008
27953c3c4d0Sstsp #define R92C_SYS_FUNC_EN_USBD		0x0010
28053c3c4d0Sstsp #define R92C_SYS_FUNC_EN_DIO_PCIE	0x0020
28153c3c4d0Sstsp #define R92C_SYS_FUNC_EN_PCIEA		0x0040
28253c3c4d0Sstsp #define R92C_SYS_FUNC_EN_PPLL		0x0080
28353c3c4d0Sstsp #define R92C_SYS_FUNC_EN_PCIED		0x0100
28453c3c4d0Sstsp #define R92C_SYS_FUNC_EN_DIOE		0x0200
28553c3c4d0Sstsp #define R92C_SYS_FUNC_EN_CPUEN		0x0400
28653c3c4d0Sstsp #define R92C_SYS_FUNC_EN_DCORE		0x0800
28753c3c4d0Sstsp #define R92C_SYS_FUNC_EN_ELDR		0x1000
28853c3c4d0Sstsp #define R92C_SYS_FUNC_EN_DIO_RF		0x2000
28953c3c4d0Sstsp #define R92C_SYS_FUNC_EN_HWPDN		0x4000
29053c3c4d0Sstsp #define R92C_SYS_FUNC_EN_MREGEN		0x8000
29153c3c4d0Sstsp 
29253c3c4d0Sstsp /* Bits for R92C_APS_FSMCO. */
29353c3c4d0Sstsp #define R92C_APS_FSMCO_PFM_LDALL	0x00000001
29453c3c4d0Sstsp #define R92C_APS_FSMCO_PFM_ALDN		0x00000002
29553c3c4d0Sstsp #define R92C_APS_FSMCO_PFM_LDKP		0x00000004
29653c3c4d0Sstsp #define R92C_APS_FSMCO_PFM_WOWL		0x00000008
29753c3c4d0Sstsp #define R92C_APS_FSMCO_PDN_EN		0x00000010
29853c3c4d0Sstsp #define R92C_APS_FSMCO_PDN_PL		0x00000020
29953c3c4d0Sstsp #define R92C_APS_FSMCO_APFM_ONMAC	0x00000100
30053c3c4d0Sstsp #define R92C_APS_FSMCO_APFM_OFF		0x00000200
30153c3c4d0Sstsp #define R92C_APS_FSMCO_APFM_RSM		0x00000400
30253c3c4d0Sstsp #define R92C_APS_FSMCO_AFSM_HSUS	0x00000800
30353c3c4d0Sstsp #define R92C_APS_FSMCO_AFSM_PCIE	0x00001000
30453c3c4d0Sstsp #define R92C_APS_FSMCO_APDM_MAC		0x00002000
30553c3c4d0Sstsp #define R92C_APS_FSMCO_APDM_HOST	0x00004000
30653c3c4d0Sstsp #define R92C_APS_FSMCO_APDM_HPDN	0x00008000
30753c3c4d0Sstsp #define R92C_APS_FSMCO_RDY_MACON	0x00010000
30853c3c4d0Sstsp #define R92C_APS_FSMCO_SUS_HOST		0x00020000
30953c3c4d0Sstsp #define R92C_APS_FSMCO_ROP_ALD		0x00100000
31053c3c4d0Sstsp #define R92C_APS_FSMCO_ROP_PWR		0x00200000
31153c3c4d0Sstsp #define R92C_APS_FSMCO_ROP_SPS		0x00400000
31253c3c4d0Sstsp #define R92C_APS_FSMCO_SOP_MRST		0x02000000
31353c3c4d0Sstsp #define R92C_APS_FSMCO_SOP_FUSE		0x04000000
31453c3c4d0Sstsp #define R92C_APS_FSMCO_SOP_ABG		0x08000000
31553c3c4d0Sstsp #define R92C_APS_FSMCO_SOP_AMB		0x10000000
31653c3c4d0Sstsp #define R92C_APS_FSMCO_SOP_RCK		0x20000000
31753c3c4d0Sstsp #define R92C_APS_FSMCO_SOP_A8M		0x40000000
31853c3c4d0Sstsp #define R92C_APS_FSMCO_XOP_BTCK		0x80000000
31953c3c4d0Sstsp 
32053c3c4d0Sstsp /* Bits for R92C_SYS_CLKR. */
32153c3c4d0Sstsp #define R92C_SYS_CLKR_ANAD16V_EN	0x00000001
32253c3c4d0Sstsp #define R92C_SYS_CLKR_ANA8M		0x00000002
32353c3c4d0Sstsp #define R92C_SYS_CLKR_MACSLP		0x00000010
32453c3c4d0Sstsp #define R92C_SYS_CLKR_LOADER_EN		0x00000020
32553c3c4d0Sstsp #define R92C_SYS_CLKR_80M_SSC_DIS	0x00000080
32653c3c4d0Sstsp #define R92C_SYS_CLKR_80M_SSC_EN_HO	0x00000100
32753c3c4d0Sstsp #define R92C_SYS_CLKR_PHY_SSC_RSTB	0x00000200
32853c3c4d0Sstsp #define R92C_SYS_CLKR_SEC_EN		0x00000400
32953c3c4d0Sstsp #define R92C_SYS_CLKR_MAC_EN		0x00000800
33053c3c4d0Sstsp #define R92C_SYS_CLKR_SYS_EN		0x00001000
33153c3c4d0Sstsp #define R92C_SYS_CLKR_RING_EN		0x00002000
33253c3c4d0Sstsp 
333bedde684Skevlo /* Bits for R92C_RSV_CTRL. */
3342d2a7e26Skevlo #define R92C_RSV_CTRL_WLOCK_ALL		0x0001
3352d2a7e26Skevlo #define R92C_RSV_CTRL_WLOCK_00		0x0002
3362d2a7e26Skevlo #define R92C_RSV_CTRL_WLOCK_04		0x0004
3372d2a7e26Skevlo #define R92C_RSV_CTRL_WLOCK_08		0x0008
3382d2a7e26Skevlo #define R92C_RSV_CTRL_WLOCK_40		0x0010
3392d2a7e26Skevlo #define R92C_RSV_CTRL_R_DIS_PRST_0	0x0020
3402d2a7e26Skevlo #define R92C_RSV_CTRL_R_DIS_PRST_1	0x0040
3412d2a7e26Skevlo #define R92C_RSV_CTRL_LOCK_ALL_EN	0x0080
34290540544Sjmatthew #define R88E_RSV_CTRL_MIO_EN		0x0100
3432d2a7e26Skevlo #define R88E_RSV_CTRL_MCU_RST		0x0800
344bedde684Skevlo 
34553c3c4d0Sstsp /* Bits for R92C_RF_CTRL. */
34653c3c4d0Sstsp #define R92C_RF_CTRL_EN		0x01
34753c3c4d0Sstsp #define R92C_RF_CTRL_RSTB	0x02
34853c3c4d0Sstsp #define R92C_RF_CTRL_SDMRSTB	0x04
34953c3c4d0Sstsp 
35053c3c4d0Sstsp /* Bits for R92C_LDOV12D_CTRL. */
35153c3c4d0Sstsp #define R92C_LDOV12D_CTRL_LDV12_EN	0x01
35253c3c4d0Sstsp 
35353c3c4d0Sstsp /* Bits for R92C_AFE_XTAL_CTRL. */
35453c3c4d0Sstsp #define R92C_AFE_XTAL_CTRL_ADDR_M	0x007ff800
35553c3c4d0Sstsp #define R92C_AFE_XTAL_CTRL_ADDR_S	11
35653c3c4d0Sstsp 
357d8e41173Sjmatthew /* Bits for R88E_XCK_OUT_CTRL. */
358d8e41173Sjmatthew #define R88E_XCK_OUT_CTRL_EN		1
359d8e41173Sjmatthew 
3608bca19d0Skevlo /* Bits for R92C_AFE_CTRL3. */
3618bca19d0Skevlo #define R92C_AFE_CTRL3_ADDR_M	0x00fff000
3628bca19d0Skevlo #define R92C_AFE_CTRL3_ADDR_S	12
3638bca19d0Skevlo 
36453c3c4d0Sstsp /* Bits for R92C_EFUSE_CTRL. */
36553c3c4d0Sstsp #define R92C_EFUSE_CTRL_DATA_M	0x000000ff
36653c3c4d0Sstsp #define R92C_EFUSE_CTRL_DATA_S	0
36753c3c4d0Sstsp #define R92C_EFUSE_CTRL_ADDR_M	0x0003ff00
36853c3c4d0Sstsp #define R92C_EFUSE_CTRL_ADDR_S	8
36953c3c4d0Sstsp #define R92C_EFUSE_CTRL_VALID	0x80000000
37053c3c4d0Sstsp 
371067851b1Skevlo /* Bits for R92C_EFUSE_TEST. */
372067851b1Skevlo #define R92C_EFUSE_TEST_SEL_M	0x00000300
373067851b1Skevlo #define R92C_EFUSE_TEST_SEL_S	8
374067851b1Skevlo 
37553c3c4d0Sstsp /* Bits for R92C_GPIO_MUXCFG. */
37653c3c4d0Sstsp #define R92C_GPIO_MUXCFG_RFKILL	0x0008
37753c3c4d0Sstsp #define R92C_GPIO_MUXCFG_ENBT	0x0020
378d8e41173Sjmatthew #define R92C_GPIO_MUXCFG_ENSIC	0x1000
37953c3c4d0Sstsp 
38053c3c4d0Sstsp /* Bits for R92C_GPIO_IO_SEL. */
38153c3c4d0Sstsp #define R92C_GPIO_IO_SEL_RFKILL	0x0008
38253c3c4d0Sstsp 
38353c3c4d0Sstsp /* Bits for R92C_LEDCFG0. */
38453c3c4d0Sstsp #define R92C_LEDCFG0_DIS	0x08
38553c3c4d0Sstsp 
38690540544Sjmatthew /* Bits for R92C_LEDCFG1. */
38790540544Sjmatthew #define R92E_LEDSON		0x60
38890540544Sjmatthew 
38953c3c4d0Sstsp /* Bits for R92C_LEDCFG2. */
39053c3c4d0Sstsp #define R92C_LEDCFG2_EN		0x60
39153c3c4d0Sstsp #define R92C_LEDCFG2_DIS	0x68
39253c3c4d0Sstsp 
39353c3c4d0Sstsp /* Bits for R92C_MCUFWDL. */
39453c3c4d0Sstsp #define R92C_MCUFWDL_EN			0x00000001
39553c3c4d0Sstsp #define R92C_MCUFWDL_RDY		0x00000002
39653c3c4d0Sstsp #define R92C_MCUFWDL_CHKSUM_RPT		0x00000004
39753c3c4d0Sstsp #define R92C_MCUFWDL_MACINI_RDY		0x00000008
39853c3c4d0Sstsp #define R92C_MCUFWDL_BBINI_RDY		0x00000010
39953c3c4d0Sstsp #define R92C_MCUFWDL_RFINI_RDY		0x00000020
40053c3c4d0Sstsp #define R92C_MCUFWDL_WINTINI_RDY	0x00000040
40153c3c4d0Sstsp #define R92C_MCUFWDL_RAM_DL_SEL		0x00000080 /* 1: RAM, 0: ROM */
40253c3c4d0Sstsp #define R92C_MCUFWDL_PAGE_M		0x00070000
40353c3c4d0Sstsp #define R92C_MCUFWDL_PAGE_S		16
404bedde684Skevlo #define R92C_MCUFWDL_ROM_DLEN		0x00080000
40553c3c4d0Sstsp #define R92C_MCUFWDL_CPRST		0x00800000
40653c3c4d0Sstsp 
40753c3c4d0Sstsp /* Bits for R88E_HIMR. */
408d8e41173Sjmatthew #define R88E_HIMR_ROK			0x00000001
409d8e41173Sjmatthew #define R88E_HIMR_RDU			0x00000002
410d8e41173Sjmatthew #define R88E_HIMR_VODOK			0x00000004
411d8e41173Sjmatthew #define R88E_HIMR_VIDOK			0x00000008
412d8e41173Sjmatthew #define R88E_HIMR_BEDOK			0x00000010
413d8e41173Sjmatthew #define R88E_HIMR_BKDOK			0x00000020
414d8e41173Sjmatthew #define R88E_HIMR_MGNTDOK		0x00000040
415d8e41173Sjmatthew #define R88E_HIMR_HIGHDOK		0x00000080
41653c3c4d0Sstsp #define R88E_HIMR_CPWM			0x00000100
41753c3c4d0Sstsp #define R88E_HIMR_CPWM2			0x00000200
418d8e41173Sjmatthew #define R88E_HIMR_C2HCMD		0x00000400
419d8e41173Sjmatthew #define R88E_HIMR_HISR1_IND_INT		0x00000800
420d8e41173Sjmatthew #define R88E_HIMR_ATIMEND		0x00001000
421d8e41173Sjmatthew #define R88E_HIMR_BCNDMAINT_E		0x00004000
422d8e41173Sjmatthew #define R88E_HIMR_HSISR_IND_ON_INT	0x00008000
423d8e41173Sjmatthew #define R88E_HIMR_BCNDOK0		0x00010000
424d8e41173Sjmatthew #define R88E_HIMR_BCNDMAINT0		0x00100000
425d8e41173Sjmatthew #define R88E_HIMR_TSF_BIT32_TOGGLE	0x01000000
426d8e41173Sjmatthew #define R88E_HIMR_TBDOK			0x02000000
42753c3c4d0Sstsp #define R88E_HIMR_TBDER			0x04000000
428d8e41173Sjmatthew #define R88E_HIMR_GTINT3		0x08000000
429d8e41173Sjmatthew #define R88E_HIMR_GTINT4		0x10000000
43053c3c4d0Sstsp #define R88E_HIMR_PSTIMEOUT		0x20000000
431d8e41173Sjmatthew #define R88E_HIMR_TXCCK			0x40000000
43253c3c4d0Sstsp 
43353c3c4d0Sstsp /* Bits for R88E_HIMRE.*/
43453c3c4d0Sstsp #define R88E_HIMRE_RXFOVW		0x00000100
43553c3c4d0Sstsp #define R88E_HIMRE_TXFOVW		0x00000200
43653c3c4d0Sstsp #define R88E_HIMRE_RXERR		0x00000400
43753c3c4d0Sstsp #define R88E_HIMRE_TXERR		0x00000800
43853c3c4d0Sstsp 
439d8e41173Sjmatthew /* Bits for R88E_HSIMR */
440d8e41173Sjmatthew #define R88E_HSIMR_GPIO12_0_INT_EN	0x00000001
441d8e41173Sjmatthew #define R88E_HSIMR_SPS_OCP_INT_EN	0x00000020
442d8e41173Sjmatthew #define R88E_HSIMR_RON_INT_EN		0x00000040
443d8e41173Sjmatthew #define R88E_HSIMR_PDN_INT_EN		0x00000080
444d8e41173Sjmatthew #define R88E_HSIMR_GPIO9_INT_EN		0x02000000
445d8e41173Sjmatthew 
44653c3c4d0Sstsp /* Bits for R92C_EFUSE_ACCESS. */
44753c3c4d0Sstsp #define R92C_EFUSE_ACCESS_OFF		0x00
44853c3c4d0Sstsp #define R92C_EFUSE_ACCESS_ON		0x69
44953c3c4d0Sstsp 
45053c3c4d0Sstsp /* Bits for R92C_HPON_FSM. */
45153c3c4d0Sstsp #define R92C_HPON_FSM_CHIP_BONDING_ID_S		22
45253c3c4d0Sstsp #define R92C_HPON_FSM_CHIP_BONDING_ID_M		0x00c00000
45353c3c4d0Sstsp #define R92C_HPON_FSM_CHIP_BONDING_ID_92C_1T2R	1
45453c3c4d0Sstsp 
45553c3c4d0Sstsp /* Bits for R92C_SYS_CFG. */
45653c3c4d0Sstsp #define R92C_SYS_CFG_XCLK_VLD		0x00000001
45753c3c4d0Sstsp #define R92C_SYS_CFG_ACLK_VLD		0x00000002
45853c3c4d0Sstsp #define R92C_SYS_CFG_UCLK_VLD		0x00000004
45953c3c4d0Sstsp #define R92C_SYS_CFG_PCLK_VLD		0x00000008
46053c3c4d0Sstsp #define R92C_SYS_CFG_PCIRSTB		0x00000010
46153c3c4d0Sstsp #define R92C_SYS_CFG_V15_VLD		0x00000020
46253c3c4d0Sstsp #define R92C_SYS_CFG_TRP_B15V_EN	0x00000080
46353c3c4d0Sstsp #define R92C_SYS_CFG_SIC_IDLE		0x00000100
46453c3c4d0Sstsp #define R92C_SYS_CFG_BD_MAC2		0x00000200
46553c3c4d0Sstsp #define R92C_SYS_CFG_BD_MAC1		0x00000400
46653c3c4d0Sstsp #define R92C_SYS_CFG_IC_MACPHY_MODE	0x00000800
46753c3c4d0Sstsp #define R92C_SYS_CFG_CHIP_VER_RTL_M	0x0000f000
46853c3c4d0Sstsp #define R92C_SYS_CFG_CHIP_VER_RTL_S	12
46953c3c4d0Sstsp #define R92C_SYS_CFG_BT_FUNC		0x00010000
47053c3c4d0Sstsp #define R92C_SYS_CFG_VENDOR_UMC		0x00080000
47153c3c4d0Sstsp #define R92C_SYS_CFG_PAD_HWPD_IDN	0x00400000
47253c3c4d0Sstsp #define R92C_SYS_CFG_TRP_VAUX_EN	0x00800000
47353c3c4d0Sstsp #define R92C_SYS_CFG_TRP_BT_EN		0x01000000
47490540544Sjmatthew #define R92E_SYS_CFG_SPSLDO_SEL		0x01000000
47553c3c4d0Sstsp #define R92C_SYS_CFG_BD_PKG_SEL		0x02000000
47653c3c4d0Sstsp #define R92C_SYS_CFG_BD_HCI_SEL		0x04000000
47753c3c4d0Sstsp #define R92C_SYS_CFG_TYPE_92C		0x08000000
47853c3c4d0Sstsp 
47953c3c4d0Sstsp /* Bits for R92C_CR. */
48053c3c4d0Sstsp #define R92C_CR_HCI_TXDMA_EN	0x00000001
48153c3c4d0Sstsp #define R92C_CR_HCI_RXDMA_EN	0x00000002
48253c3c4d0Sstsp #define R92C_CR_TXDMA_EN	0x00000004
48353c3c4d0Sstsp #define R92C_CR_RXDMA_EN	0x00000008
48453c3c4d0Sstsp #define R92C_CR_PROTOCOL_EN	0x00000010
48553c3c4d0Sstsp #define R92C_CR_SCHEDULE_EN	0x00000020
48653c3c4d0Sstsp #define R92C_CR_MACTXEN		0x00000040
48753c3c4d0Sstsp #define R92C_CR_MACRXEN		0x00000080
488600882e8Sjmatthew #define R92C_CR_ENSWBCN		0x00000100
48953c3c4d0Sstsp #define R92C_CR_ENSEC		0x00000200
49053c3c4d0Sstsp #define R92C_CR_CALTMR_EN	0x00000400
49156fbb35bSkevlo 
49256fbb35bSkevlo /* Bits for R92C_MSR. */
49356fbb35bSkevlo #define R92C_MSR_NETTYPE_NOLINK	0x00
49456fbb35bSkevlo #define R92C_MSR_NETTYPE_ADHOC	0x01
49556fbb35bSkevlo #define R92C_MSR_NETTYPE_INFRA	0x02
49656fbb35bSkevlo #define R92C_MSR_NETTYPE_AP	0x03
49756fbb35bSkevlo #define R92C_MSR_NETTYPE_MASK	0x03
49853c3c4d0Sstsp 
49953c3c4d0Sstsp /* Bits for R92C_PBP. */
50053c3c4d0Sstsp #define R92C_PBP_PSRX_M		0x0f
50153c3c4d0Sstsp #define R92C_PBP_PSRX_S		0
50253c3c4d0Sstsp #define R92C_PBP_PSTX_M		0xf0
50353c3c4d0Sstsp #define R92C_PBP_PSTX_S		4
50453c3c4d0Sstsp #define R92C_PBP_64		0
50553c3c4d0Sstsp #define R92C_PBP_128		1
50653c3c4d0Sstsp #define R92C_PBP_256		2
50753c3c4d0Sstsp #define R92C_PBP_512		3
50853c3c4d0Sstsp #define R92C_PBP_1024		4
50953c3c4d0Sstsp 
51053c3c4d0Sstsp /* Bits for R92C_TRXDMA_CTRL. */
51153c3c4d0Sstsp #define R92C_TRXDMA_CTRL_RXDMA_AGG_EN		0x0004
51253c3c4d0Sstsp #define R92C_TRXDMA_CTRL_TXDMA_VOQ_MAP_M	0x0030
51353c3c4d0Sstsp #define R92C_TRXDMA_CTRL_TXDMA_VOQ_MAP_S	4
51453c3c4d0Sstsp #define R92C_TRXDMA_CTRL_TXDMA_VIQ_MAP_M	0x00c0
51553c3c4d0Sstsp #define R92C_TRXDMA_CTRL_TXDMA_VIQ_MAP_S	6
51653c3c4d0Sstsp #define R92C_TRXDMA_CTRL_TXDMA_BEQ_MAP_M	0x0300
51753c3c4d0Sstsp #define R92C_TRXDMA_CTRL_TXDMA_BEQ_MAP_S	8
51853c3c4d0Sstsp #define R92C_TRXDMA_CTRL_TXDMA_BKQ_MAP_M	0x0c00
51953c3c4d0Sstsp #define R92C_TRXDMA_CTRL_TXDMA_BKQ_MAP_S	10
52053c3c4d0Sstsp #define R92C_TRXDMA_CTRL_TXDMA_MGQ_MAP_M	0x3000
52153c3c4d0Sstsp #define R92C_TRXDMA_CTRL_TXDMA_MGQ_MAP_S	12
52253c3c4d0Sstsp #define R92C_TRXDMA_CTRL_TXDMA_HIQ_MAP_M	0xc000
52353c3c4d0Sstsp #define R92C_TRXDMA_CTRL_TXDMA_HIQ_MAP_S	14
52453c3c4d0Sstsp #define R92C_TRXDMA_CTRL_QUEUE_LOW		1
52553c3c4d0Sstsp #define R92C_TRXDMA_CTRL_QUEUE_NORMAL		2
52653c3c4d0Sstsp #define R92C_TRXDMA_CTRL_QUEUE_HIGH		3
52753c3c4d0Sstsp #define R92C_TRXDMA_CTRL_QMAP_M			0xfff0
52853c3c4d0Sstsp #define R92C_TRXDMA_CTRL_QMAP_S			4
52953c3c4d0Sstsp /* Shortcuts. */
53053c3c4d0Sstsp #define R92C_TRXDMA_CTRL_QMAP_3EP		0xf5b0
53153c3c4d0Sstsp #define R92C_TRXDMA_CTRL_QMAP_HQ_LQ		0xf5f0
53253c3c4d0Sstsp #define R92C_TRXDMA_CTRL_QMAP_HQ_NQ		0xfaf0
53353c3c4d0Sstsp #define R92C_TRXDMA_CTRL_QMAP_LQ		0x5550
53453c3c4d0Sstsp #define R92C_TRXDMA_CTRL_QMAP_NQ		0xaaa0
53553c3c4d0Sstsp #define R92C_TRXDMA_CTRL_QMAP_HQ		0xfff0
53653c3c4d0Sstsp 
53753c3c4d0Sstsp /* Bits for R92C_LLT_INIT. */
53853c3c4d0Sstsp #define R92C_LLT_INIT_DATA_M		0x000000ff
53953c3c4d0Sstsp #define R92C_LLT_INIT_DATA_S		0
54053c3c4d0Sstsp #define R92C_LLT_INIT_ADDR_M		0x0000ff00
54153c3c4d0Sstsp #define R92C_LLT_INIT_ADDR_S		8
54253c3c4d0Sstsp #define R92C_LLT_INIT_OP_M		0xc0000000
54353c3c4d0Sstsp #define R92C_LLT_INIT_OP_S		30
54453c3c4d0Sstsp #define R92C_LLT_INIT_OP_NO_ACTIVE	0
54553c3c4d0Sstsp #define R92C_LLT_INIT_OP_WRITE		1
54690540544Sjmatthew #define R92C_LLT_INIT_OP_READ		2
54753c3c4d0Sstsp 
54853c3c4d0Sstsp /* Bits for R92C_RQPN. */
54953c3c4d0Sstsp #define R92C_RQPN_HPQ_M		0x000000ff
55053c3c4d0Sstsp #define R92C_RQPN_HPQ_S		0
55153c3c4d0Sstsp #define R92C_RQPN_LPQ_M		0x0000ff00
55253c3c4d0Sstsp #define R92C_RQPN_LPQ_S		8
55353c3c4d0Sstsp #define R92C_RQPN_PUBQ_M	0x00ff0000
55453c3c4d0Sstsp #define R92C_RQPN_PUBQ_S	16
55553c3c4d0Sstsp #define R92C_RQPN_LD		0x80000000
55653c3c4d0Sstsp 
55753c3c4d0Sstsp /* Bits for R92C_TDECTRL. */
558c72e1306Sstsp #define R92C_TDECTRL_BLK_DESC_NUM_M	0x000000f0
55953c3c4d0Sstsp #define R92C_TDECTRL_BLK_DESC_NUM_S	4
56053c3c4d0Sstsp 
5612d2a7e26Skevlo /* Bits for R92C_TXDMA_OFFSET_CHK. */
5622d2a7e26Skevlo #define R92C_TXDMA_OFFSET_CHK_DROP_DATA_EN	0x00000200
5632d2a7e26Skevlo 
56490540544Sjmatthew /* Bits for R92E_AUTO_LLT. */
56590540544Sjmatthew #define R92E_AUTO_LLT_EN	0x00010000
56690540544Sjmatthew 
567067851b1Skevlo /* Bits for R92E_RXDMA_PRO. */
568067851b1Skevlo #define R92E_RXDMA_PRO_DMA_MODE	0x02
569067851b1Skevlo 
57053c3c4d0Sstsp /* Bits for R92C_FWHW_TXQ_CTRL. */
57153c3c4d0Sstsp #define R92C_FWHW_TXQ_CTRL_AMPDU_RTY_NEW	0x80
57253c3c4d0Sstsp 
57353c3c4d0Sstsp /* Bits for R92C_SPEC_SIFS. */
57453c3c4d0Sstsp #define R92C_SPEC_SIFS_CCK_M	0x00ff
57553c3c4d0Sstsp #define R92C_SPEC_SIFS_CCK_S	0
57653c3c4d0Sstsp #define R92C_SPEC_SIFS_OFDM_M	0xff00
57753c3c4d0Sstsp #define R92C_SPEC_SIFS_OFDM_S	8
57853c3c4d0Sstsp 
57953c3c4d0Sstsp /* Bits for R92C_RL. */
58053c3c4d0Sstsp #define R92C_RL_LRL_M		0x003f
58153c3c4d0Sstsp #define R92C_RL_LRL_S		0
58253c3c4d0Sstsp #define R92C_RL_SRL_M		0x3f00
58353c3c4d0Sstsp #define R92C_RL_SRL_S		8
58453c3c4d0Sstsp 
58553c3c4d0Sstsp /* Bits for R92C_RRSR. */
58653c3c4d0Sstsp #define R92C_RRSR_RATE_BITMAP_M		0x000fffff
58753c3c4d0Sstsp #define R92C_RRSR_RATE_BITMAP_S		0
58853c3c4d0Sstsp #define R92C_RRSR_RATE_CCK_ONLY_1M	0xffff1
58953c3c4d0Sstsp #define R92C_RRSR_RATE_ALL		0xfffff
59053c3c4d0Sstsp #define R92C_RRSR_RSC_LOWSUBCHNL	0x00200000
59153c3c4d0Sstsp #define R92C_RRSR_RSC_UPSUBCHNL		0x00400000
59253c3c4d0Sstsp #define R92C_RRSR_SHORT			0x00800000
59353c3c4d0Sstsp 
594067851b1Skevlo /* Bits for R88F_HT_SINGLE_AMPDU. */
595067851b1Skevlo #define R88F_HT_SINGLE_AMPDU_EN	0x80
596067851b1Skevlo 
5972f5d27e0Skevlo /* Bits for R88E_TX_RPT_CTRL. */
5982f5d27e0Skevlo #define R88E_TX_RPT_CTRL_EN		0x01
5992f5d27e0Skevlo #define R88E_TX_RPT_CTRL_TIMER_EN	0x02
6002f5d27e0Skevlo 
60153c3c4d0Sstsp /* Bits for R92C_EDCA_XX_PARAM. */
60253c3c4d0Sstsp #define R92C_EDCA_PARAM_AIFS_M		0x000000ff
60353c3c4d0Sstsp #define R92C_EDCA_PARAM_AIFS_S		0
60453c3c4d0Sstsp #define R92C_EDCA_PARAM_ECWMIN_M	0x00000f00
60553c3c4d0Sstsp #define R92C_EDCA_PARAM_ECWMIN_S	8
60653c3c4d0Sstsp #define R92C_EDCA_PARAM_ECWMAX_M	0x0000f000
60753c3c4d0Sstsp #define R92C_EDCA_PARAM_ECWMAX_S	12
60853c3c4d0Sstsp #define R92C_EDCA_PARAM_TXOP_M		0xffff0000
60953c3c4d0Sstsp #define R92C_EDCA_PARAM_TXOP_S		16
61053c3c4d0Sstsp 
611af1fd538Sstsp /* Bits for R92C_ACMHWCTRL */
612af1fd538Sstsp #define R92C_ACMHW_HWEN			0x01
613af1fd538Sstsp #define R92C_ACMHW_BEQEN		0x02
614af1fd538Sstsp #define R92C_ACMHW_VIQEN		0x04
615af1fd538Sstsp #define R92C_ACMHW_VOQEN		0x08
616af1fd538Sstsp #define R92C_ACMHW_BEQSTATUS		0x10
617af1fd538Sstsp #define R92C_ACMHW_VIQSTATUS		0x20
618af1fd538Sstsp #define R92C_ACMHW_VOQSTATUS		0x40
619af1fd538Sstsp 
62053c3c4d0Sstsp /* Bits for R92C_TXPAUSE. */
62153c3c4d0Sstsp #define R92C_TXPAUSE_AC_VO		0x01
62253c3c4d0Sstsp #define R92C_TXPAUSE_AC_VI		0x02
62353c3c4d0Sstsp #define R92C_TXPAUSE_AC_BE		0x04
62453c3c4d0Sstsp #define R92C_TXPAUSE_AC_BK		0x08
62556fbb35bSkevlo #define R92C_TXPAUSE_MGNT		0x10
62656fbb35bSkevlo #define R92C_TXPAUSE_HIGH		0x20
62756fbb35bSkevlo #define R92C_TXPAUSE_BCN		0x40
62856fbb35bSkevlo #define R92C_TXPAUSE_BCN_HIGH_MGNT	0x80
62956fbb35bSkevlo 
63056fbb35bSkevlo #define R92C_TXPAUSE_ALL	(R92C_TXPAUSE_AC_VO | R92C_TXPAUSE_AC_VI | \
63156fbb35bSkevlo 				R92C_TXPAUSE_AC_BE | R92C_TXPAUSE_AC_BK | \
63256fbb35bSkevlo 				R92C_TXPAUSE_MGNT | R92C_TXPAUSE_HIGH | \
63356fbb35bSkevlo 				R92C_TXPAUSE_BCN | R92C_TXPAUSE_BCN_HIGH_MGNT)
63453c3c4d0Sstsp 
63553c3c4d0Sstsp /* Bits for R92C_BCN_CTRL. */
63653c3c4d0Sstsp #define R92C_BCN_CTRL_EN_MBSSID		0x02
63753c3c4d0Sstsp #define R92C_BCN_CTRL_TXBCN_RPT		0x04
63853c3c4d0Sstsp #define R92C_BCN_CTRL_EN_BCN		0x08
63953c3c4d0Sstsp #define R92C_BCN_CTRL_DIS_TSF_UDT0	0x10
64053c3c4d0Sstsp 
6415fb81a6cSkevlo /* Bits for R92C_DRVERLYINT. */
6425fb81a6cSkevlo #define R92C_DRVERLYINT_INIT_TIME	0x05
6435fb81a6cSkevlo 
6445fb81a6cSkevlo /* Bits for R92C_BCNDMATIM. */
6455fb81a6cSkevlo #define R92C_BCNDMATIM_INIT_TIME	0x02
6465fb81a6cSkevlo 
64753c3c4d0Sstsp /* Bits for R92C_APSD_CTRL. */
64853c3c4d0Sstsp #define R92C_APSD_CTRL_OFF		0x40
64953c3c4d0Sstsp #define R92C_APSD_CTRL_OFF_STATUS	0x80
65053c3c4d0Sstsp 
65153c3c4d0Sstsp /* Bits for R92C_BWOPMODE. */
65253c3c4d0Sstsp #define R92C_BWOPMODE_11J	0x01
65353c3c4d0Sstsp #define R92C_BWOPMODE_5G	0x02
65453c3c4d0Sstsp #define R92C_BWOPMODE_20MHZ	0x04
65553c3c4d0Sstsp 
65653c3c4d0Sstsp /* Bits for R92C_TCR. */
65753c3c4d0Sstsp #define R92C_TCR_TSFRST		0x00000001
65853c3c4d0Sstsp #define R92C_TCR_DIS_GCLK	0x00000002
65953c3c4d0Sstsp #define R92C_TCR_PAD_SEL	0x00000004
66053c3c4d0Sstsp #define R92C_TCR_PWR_ST		0x00000040
66153c3c4d0Sstsp #define R92C_TCR_PWRBIT_OW_EN	0x00000080
66253c3c4d0Sstsp #define R92C_TCR_ACRC		0x00000100
66353c3c4d0Sstsp #define R92C_TCR_CFENDFORM	0x00000200
66453c3c4d0Sstsp #define R92C_TCR_ICV		0x00000400
6655cc093eeSkevlo #define R92C_TCR_ERRSTEN0	0x00001000
6665cc093eeSkevlo #define R92C_TCR_ERRSTEN1	0x00002000
6675cc093eeSkevlo #define R92C_TCR_ERRSTEN2	0x00004000
6685cc093eeSkevlo #define R92C_TCR_ERRSTEN3	0x00008000
66953c3c4d0Sstsp 
67053c3c4d0Sstsp /* Bits for R92C_RCR. */
67153c3c4d0Sstsp #define R92C_RCR_AAP		0x00000001
67253c3c4d0Sstsp #define R92C_RCR_APM		0x00000002
67353c3c4d0Sstsp #define R92C_RCR_AM		0x00000004
67453c3c4d0Sstsp #define R92C_RCR_AB		0x00000008
67553c3c4d0Sstsp #define R92C_RCR_ADD3		0x00000010
67653c3c4d0Sstsp #define R92C_RCR_APWRMGT	0x00000020
67753c3c4d0Sstsp #define R92C_RCR_CBSSID_DATA	0x00000040
67853c3c4d0Sstsp #define R92C_RCR_CBSSID_BCN	0x00000080
67953c3c4d0Sstsp #define R92C_RCR_ACRC32		0x00000100
68053c3c4d0Sstsp #define R92C_RCR_AICV		0x00000200
68153c3c4d0Sstsp #define R92C_RCR_ADF		0x00000800
68253c3c4d0Sstsp #define R92C_RCR_ACF		0x00001000
68353c3c4d0Sstsp #define R92C_RCR_AMF		0x00002000
68453c3c4d0Sstsp #define R92C_RCR_HTC_LOC_CTRL	0x00004000
68553c3c4d0Sstsp #define R92C_RCR_MFBEN		0x00400000
68653c3c4d0Sstsp #define R92C_RCR_LSIGEN		0x00800000
68753c3c4d0Sstsp #define R92C_RCR_ENMBID		0x01000000
68853c3c4d0Sstsp #define R92C_RCR_APP_BA_SSN	0x08000000
68953c3c4d0Sstsp #define R92C_RCR_APP_PHYSTS	0x10000000
69053c3c4d0Sstsp #define R92C_RCR_APP_ICV	0x20000000
69153c3c4d0Sstsp #define R92C_RCR_APP_MIC	0x40000000
69253c3c4d0Sstsp #define R92C_RCR_APPFCS		0x80000000
69353c3c4d0Sstsp 
69456fbb35bSkevlo /* Bits for R92C_WMAC_TRXPTCL_CTL. */
69556fbb35bSkevlo #define R92C_WMAC_TRXPTCL_CTL_SHORT	0x00020000
69690540544Sjmatthew #define R92C_WMAC_TRXPTCL_CTL_BW_20	0
69790540544Sjmatthew #define R92C_WMAC_TRXPTCL_CTL_BW_40	0x00000080
69890540544Sjmatthew #define R92C_WMAC_TRXPTCL_CTL_BW_80	0x00000100
69990540544Sjmatthew #define R92C_WMAC_TRXPTCL_CTL_BW_MASK \
70090540544Sjmatthew     (R92C_WMAC_TRXPTCL_CTL_BW_40 | \
70190540544Sjmatthew     R92C_WMAC_TRXPTCL_CTL_BW_80)
70256fbb35bSkevlo 
70353c3c4d0Sstsp /* Bits for R92C_CAMCMD. */
70453c3c4d0Sstsp #define R92C_CAMCMD_ADDR_M	0x0000ffff
70553c3c4d0Sstsp #define R92C_CAMCMD_ADDR_S	0
70653c3c4d0Sstsp #define R92C_CAMCMD_WRITE	0x00010000
70753c3c4d0Sstsp #define R92C_CAMCMD_CLR		0x40000000
70853c3c4d0Sstsp #define R92C_CAMCMD_POLLING	0x80000000
70953c3c4d0Sstsp 
710a299d652Sjmatthew /* Bits for R92C_SECCFG. */
711a299d652Sjmatthew #define R92C_SECCFG_TXUCKEY_DEF 0x0001
712a299d652Sjmatthew #define R92C_SECCFG_RXUCKEY_DEF	0x0002
713a299d652Sjmatthew #define R92C_SECCFG_TXENC_ENA	0x0004
714a299d652Sjmatthew #define R92C_SECCFG_RXENC_ENA	0x0008
715a299d652Sjmatthew #define R92C_SECCFG_CMP_A2	0x0010
716a299d652Sjmatthew #define R92C_SECCFG_MC_SRCH_DIS	0x0020
717a299d652Sjmatthew #define R92C_SECCFG_TXBCKEY_DEF 0x0040
718a299d652Sjmatthew #define R92C_SECCFG_RXBCKEY_DEF 0x0080
719a299d652Sjmatthew 
72053c3c4d0Sstsp /* IMR */
72153c3c4d0Sstsp 
72253c3c4d0Sstsp /*Beacon DMA interrupt 6 */
72353c3c4d0Sstsp #define R92C_IMR_BCNDMAINT6	0x80000000
72453c3c4d0Sstsp /*Beacon DMA interrupt 5 */
72553c3c4d0Sstsp #define R92C_IMR_BCNDMAINT5	0x40000000
72653c3c4d0Sstsp /*Beacon DMA interrupt 4 */
72753c3c4d0Sstsp #define R92C_IMR_BCNDMAINT4	0x20000000
72853c3c4d0Sstsp /*Beacon DMA interrupt 3 */
72953c3c4d0Sstsp #define R92C_IMR_BCNDMAINT3	0x10000000
73053c3c4d0Sstsp /*Beacon DMA interrupt 2 */
73153c3c4d0Sstsp #define R92C_IMR_BCNDMAINT2	0x08000000
73253c3c4d0Sstsp /*Beacon DMA interrupt 1 */
73353c3c4d0Sstsp #define R92C_IMR_BCNDMAINT1	0x04000000
73453c3c4d0Sstsp /*Beacon Queue DMA OK interrupt 8 */
73553c3c4d0Sstsp #define R92C_IMR_BCNDOK8	0x02000000
73653c3c4d0Sstsp /*Beacon Queue DMA OK interrupt 7 */
73753c3c4d0Sstsp #define R92C_IMR_BCNDOK7	0x01000000
73853c3c4d0Sstsp /*Beacon Queue DMA OK interrupt 6 */
73953c3c4d0Sstsp #define R92C_IMR_BCNDOK6	0x00800000
74053c3c4d0Sstsp /*Beacon Queue DMA OK interrupt 5 */
74153c3c4d0Sstsp #define R92C_IMR_BCNDOK5	0x00400000
74253c3c4d0Sstsp /*Beacon Queue DMA OK interrupt 4 */
74353c3c4d0Sstsp #define R92C_IMR_BCNDOK4	0x00200000
74453c3c4d0Sstsp /*Beacon Queue DMA OK interrupt 3 */
74553c3c4d0Sstsp #define R92C_IMR_BCNDOK3	0x00100000
74653c3c4d0Sstsp /*Beacon Queue DMA OK interrupt 2 */
74753c3c4d0Sstsp #define R92C_IMR_BCNDOK2	0x00080000
74853c3c4d0Sstsp /*Beacon Queue DMA OK interrupt 1 */
74953c3c4d0Sstsp #define R92C_IMR_BCNDOK1	0x00040000
75053c3c4d0Sstsp /*Timeout interrupt 2 */
75153c3c4d0Sstsp #define R92C_IMR_TIMEOUT2	0x00020000
75253c3c4d0Sstsp /*Timeout interrupt 1 */
75353c3c4d0Sstsp #define R92C_IMR_TIMEOUT1	0x00010000
75453c3c4d0Sstsp /*Transmit FIFO Overflow */
75553c3c4d0Sstsp #define R92C_IMR_TXFOVW		0x00008000
75653c3c4d0Sstsp /*Power save time out interrupt */
75753c3c4d0Sstsp #define R92C_IMR_PSTIMEOUT	0x00004000
75853c3c4d0Sstsp /*Beacon DMA interrupt 0 */
75953c3c4d0Sstsp #define R92C_IMR_BCNINT		0x00002000
76053c3c4d0Sstsp /*Receive FIFO Overflow */
76153c3c4d0Sstsp #define R92C_IMR_RXFOVW		0x00001000
76253c3c4d0Sstsp /*Receive Descriptor Unavailable */
76353c3c4d0Sstsp #define R92C_IMR_RDU		0x00000800
76453c3c4d0Sstsp /*For 92C,ATIM Window End interrupt */
76553c3c4d0Sstsp #define R92C_IMR_ATIMEND	0x00000400
76653c3c4d0Sstsp /*Beacon Queue DMA OK interrupt */
76753c3c4d0Sstsp #define R92C_IMR_BDOK		0x00000200
76853c3c4d0Sstsp /*High Queue DMA OK interrupt */
76953c3c4d0Sstsp #define R92C_IMR_HIGHDOK	0x00000100
77053c3c4d0Sstsp /*Transmit Beacon OK interrupt */
77153c3c4d0Sstsp #define R92C_IMR_TBDOK		0x00000080
77253c3c4d0Sstsp /*Management Queue DMA OK interrupt */
77353c3c4d0Sstsp #define R92C_IMR_MGNTDOK	0x00000040
77453c3c4d0Sstsp /*For 92C,Transmit Beacon Error interrupt */
77553c3c4d0Sstsp #define R92C_IMR_TBDER		0x00000020
77653c3c4d0Sstsp /*AC_BK DMA OK interrupt */
77753c3c4d0Sstsp #define R92C_IMR_BKDOK		0x00000010
77853c3c4d0Sstsp /*AC_BE DMA OK interrupt */
77953c3c4d0Sstsp #define R92C_IMR_BEDOK		0x00000008
78053c3c4d0Sstsp /*AC_VI DMA OK interrupt */
78153c3c4d0Sstsp #define R92C_IMR_VIDOK		0x00000004
78253c3c4d0Sstsp /*AC_VO DMA interrupt */
78353c3c4d0Sstsp #define R92C_IMR_VODOK		0x00000002
78453c3c4d0Sstsp /*Receive DMA OK interrupt */
78553c3c4d0Sstsp #define R92C_IMR_ROK		0x00000001
78653c3c4d0Sstsp 
78756fbb35bSkevlo #define R92C_IBSS_INT_MASK	(R92C_IMR_BCNINT | R92C_IMR_TBDOK | \
78856fbb35bSkevlo 				R92C_IMR_TBDER)
78953c3c4d0Sstsp 
79053c3c4d0Sstsp /*
79153c3c4d0Sstsp  * Baseband registers.
79253c3c4d0Sstsp  */
79353c3c4d0Sstsp #define R92C_FPGA0_RFMOD		0x800
79453c3c4d0Sstsp #define R92C_FPGA0_TXINFO		0x804
79590540544Sjmatthew #define R92C_FPGA0_POWER_SAVE		0x818
79653c3c4d0Sstsp #define R92C_HSSI_PARAM1(chain)		(0x820 + (chain) * 8)
79753c3c4d0Sstsp #define R92C_HSSI_PARAM2(chain)		(0x824 + (chain) * 8)
79853c3c4d0Sstsp #define R92C_TXAGC_RATE18_06(i)		(((i) == 0) ? 0xe00 : 0x830)
79953c3c4d0Sstsp #define R92C_TXAGC_RATE54_24(i)		(((i) == 0) ? 0xe04 : 0x834)
80053c3c4d0Sstsp #define R92C_TXAGC_A_CCK1_MCS32		0xe08
80153c3c4d0Sstsp #define R92C_TXAGC_B_CCK1_55_MCS32	0x838
80253c3c4d0Sstsp #define R92C_TXAGC_B_CCK11_A_CCK2_11	0x86c
80353c3c4d0Sstsp #define R92C_TXAGC_MCS03_MCS00(i)	(((i) == 0) ? 0xe10 : 0x83c)
80453c3c4d0Sstsp #define R92C_TXAGC_MCS07_MCS04(i)	(((i) == 0) ? 0xe14 : 0x848)
80553c3c4d0Sstsp #define R92C_TXAGC_MCS11_MCS08(i)	(((i) == 0) ? 0xe18 : 0x84c)
80653c3c4d0Sstsp #define R92C_TXAGC_MCS15_MCS12(i)	(((i) == 0) ? 0xe1c : 0x868)
80753c3c4d0Sstsp #define R92C_LSSI_PARAM(chain)		(0x840 + (chain) * 4)
80853c3c4d0Sstsp #define R92C_FPGA0_RFIFACEOE(chain)	(0x860 + (chain) * 4)
80953c3c4d0Sstsp #define R92C_FPGA0_RFIFACESW(idx)	(0x870 + (idx) * 4)
81053c3c4d0Sstsp #define R92C_FPGA0_RFPARAM(idx)		(0x878 + (idx) * 4)
81153c3c4d0Sstsp #define R92C_FPGA0_ANAPARAM2		0x884
81253c3c4d0Sstsp #define R92C_LSSI_READBACK(chain)	(0x8a0 + (chain) * 4)
81353c3c4d0Sstsp #define R92C_HSPI_READBACK(chain)	(0x8b8 + (chain) * 4)
81453c3c4d0Sstsp #define R92C_FPGA1_RFMOD		0x900
81553c3c4d0Sstsp #define R92C_FPGA1_TXINFO		0x90c
816067851b1Skevlo #define R88F_RX_DFIR			0x954
81753c3c4d0Sstsp #define R92C_CCK0_SYSTEM		0xa00
81853c3c4d0Sstsp #define R92C_CCK0_AFESETTING		0xa04
81953c3c4d0Sstsp #define R92C_OFDM0_TRXPATHENA		0xc04
82053c3c4d0Sstsp #define R92C_OFDM0_TRMUXPAR		0xc08
821067851b1Skevlo #define R92C_OFDM0_RXAFE		0xc10
82253c3c4d0Sstsp #define R92C_OFDM0_RXIQIMBALANCE(chain)	(0xc14 + (chain) * 8)
82353c3c4d0Sstsp #define R92C_OFDM0_ECCATHRESHOLD	0xc4c
82453c3c4d0Sstsp #define R92C_OFDM0_AGCCORE1(chain)	(0xc50 + (chain) * 8)
82553c3c4d0Sstsp #define R92C_OFDM0_AGCPARAM1		0xc70
82653c3c4d0Sstsp #define R92C_OFDM0_AGCRSSITABLE		0xc78
82753c3c4d0Sstsp #define R92C_OFDM0_TXIQIMBALANCE(chain)	(0xc80 + (chain) * 8)
82853c3c4d0Sstsp #define R92C_OFDM0_TXAFE(chain)		(0xc94 + (chain) * 8)
82953c3c4d0Sstsp #define R92C_OFDM0_RXIQEXTANTA		0xca0
83090540544Sjmatthew #define R92C_OFDM0_TX_PSDO_NOISE_WEIGHT 0xce4
83153c3c4d0Sstsp #define R92C_OFDM1_LSTF			0xd00
83253c3c4d0Sstsp 
83390540544Sjmatthew #define R92C_FPGA0_IQK			0xe28
83490540544Sjmatthew #define R92C_TX_IQK_TONE_A		0xe30
83590540544Sjmatthew #define R92C_RX_IQK_TONE_A		0xe34
83690540544Sjmatthew #define R92C_TX_IQK_PI_A		0xe38
83790540544Sjmatthew #define R92C_RX_IQK_PI_A		0xe3c
83890540544Sjmatthew #define R92C_TX_IQK			0xe40
83990540544Sjmatthew #define R92C_RX_IQK			0xe44
84090540544Sjmatthew #define R92C_IQK_AGC_PTS		0xe48
84190540544Sjmatthew #define R92C_IQK_AGC_RSP		0xe4c
84290540544Sjmatthew #define R92C_TX_IQK_TONE_B		0xe50
84390540544Sjmatthew #define R92C_RX_IQK_TONE_B		0xe54
84490540544Sjmatthew #define R92C_TX_IQK_PI_B		0xe58
84590540544Sjmatthew #define R92C_RX_IQK_PI_B		0xe5c
84690540544Sjmatthew #define R92C_IQK_AGC_CONT		0xe60
84790540544Sjmatthew 
84890540544Sjmatthew #define R92E_RX_WAIT_CCA		0xe70
84990540544Sjmatthew 
85090540544Sjmatthew #define R92C_TX_POWER_BEFORE_IQK_A	0xe94
85190540544Sjmatthew #define R92C_TX_POWER_AFTER_IQK_A	0xe9c
85290540544Sjmatthew #define R92C_RX_POWER_BEFORE_IQK_A	0xea0
85390540544Sjmatthew #define R92C_RX_POWER_BEFORE_IQK_A_2	0xea4
85490540544Sjmatthew #define R92C_RX_POWER_AFTER_IQK_A	0xea8
85590540544Sjmatthew #define R92C_RX_POWER_AFTER_IQK_A_2	0xeac
85690540544Sjmatthew 
85753c3c4d0Sstsp /* Bits for R92C_FPGA[01]_RFMOD. */
85853c3c4d0Sstsp #define R92C_RFMOD_40MHZ	0x00000001
85953c3c4d0Sstsp #define R92C_RFMOD_JAPAN	0x00000002
86053c3c4d0Sstsp #define R92C_RFMOD_CCK_TXSC	0x00000030
86153c3c4d0Sstsp #define R92C_RFMOD_CCK_EN	0x01000000
86253c3c4d0Sstsp #define R92C_RFMOD_OFDM_EN	0x02000000
86353c3c4d0Sstsp 
86453c3c4d0Sstsp /* Bits for R92C_HSSI_PARAM1(i). */
86553c3c4d0Sstsp #define R92C_HSSI_PARAM1_PI	0x00000100
86653c3c4d0Sstsp 
86753c3c4d0Sstsp /* Bits for R92C_HSSI_PARAM2(i). */
86853c3c4d0Sstsp #define R92C_HSSI_PARAM2_CCK_HIPWR	0x00000200
86953c3c4d0Sstsp #define R92C_HSSI_PARAM2_ADDR_LENGTH	0x00000400
87053c3c4d0Sstsp #define R92C_HSSI_PARAM2_DATA_LENGTH	0x00000800
87153c3c4d0Sstsp #define R92C_HSSI_PARAM2_READ_ADDR_M	0x7f800000
87253c3c4d0Sstsp #define R92C_HSSI_PARAM2_READ_ADDR_S	23
87353c3c4d0Sstsp #define R92C_HSSI_PARAM2_READ_EDGE	0x80000000
87453c3c4d0Sstsp 
87553c3c4d0Sstsp /* Bits for R92C_TXAGC_A_CCK1_MCS32. */
87653c3c4d0Sstsp #define R92C_TXAGC_A_CCK1_M	0x0000ff00
87753c3c4d0Sstsp #define R92C_TXAGC_A_CCK1_S	8
87853c3c4d0Sstsp 
87953c3c4d0Sstsp /* Bits for R92C_TXAGC_B_CCK11_A_CCK2_11. */
88053c3c4d0Sstsp #define R92C_TXAGC_B_CCK11_M	0x000000ff
88153c3c4d0Sstsp #define R92C_TXAGC_B_CCK11_S	0
88253c3c4d0Sstsp #define R92C_TXAGC_A_CCK2_M	0x0000ff00
88353c3c4d0Sstsp #define R92C_TXAGC_A_CCK2_S	8
88453c3c4d0Sstsp #define R92C_TXAGC_A_CCK55_M	0x00ff0000
88553c3c4d0Sstsp #define R92C_TXAGC_A_CCK55_S	16
88653c3c4d0Sstsp #define R92C_TXAGC_A_CCK11_M	0xff000000
88753c3c4d0Sstsp #define R92C_TXAGC_A_CCK11_S	24
88853c3c4d0Sstsp 
88953c3c4d0Sstsp /* Bits for R92C_TXAGC_B_CCK1_55_MCS32. */
89053c3c4d0Sstsp #define R92C_TXAGC_B_CCK1_M	0x0000ff00
89153c3c4d0Sstsp #define R92C_TXAGC_B_CCK1_S	8
89253c3c4d0Sstsp #define R92C_TXAGC_B_CCK2_M	0x00ff0000
89353c3c4d0Sstsp #define R92C_TXAGC_B_CCK2_S	16
89453c3c4d0Sstsp #define R92C_TXAGC_B_CCK55_M	0xff000000
89553c3c4d0Sstsp #define R92C_TXAGC_B_CCK55_S	24
89653c3c4d0Sstsp 
89753c3c4d0Sstsp /* Bits for R92C_TXAGC_RATE18_06(x). */
89853c3c4d0Sstsp #define R92C_TXAGC_RATE06_M	0x000000ff
89953c3c4d0Sstsp #define R92C_TXAGC_RATE06_S	0
90053c3c4d0Sstsp #define R92C_TXAGC_RATE09_M	0x0000ff00
90153c3c4d0Sstsp #define R92C_TXAGC_RATE09_S	8
90253c3c4d0Sstsp #define R92C_TXAGC_RATE12_M	0x00ff0000
90353c3c4d0Sstsp #define R92C_TXAGC_RATE12_S	16
90453c3c4d0Sstsp #define R92C_TXAGC_RATE18_M	0xff000000
90553c3c4d0Sstsp #define R92C_TXAGC_RATE18_S	24
90653c3c4d0Sstsp 
90753c3c4d0Sstsp /* Bits for R92C_TXAGC_RATE54_24(x). */
90853c3c4d0Sstsp #define R92C_TXAGC_RATE24_M	0x000000ff
90953c3c4d0Sstsp #define R92C_TXAGC_RATE24_S	0
91053c3c4d0Sstsp #define R92C_TXAGC_RATE36_M	0x0000ff00
91153c3c4d0Sstsp #define R92C_TXAGC_RATE36_S	8
91253c3c4d0Sstsp #define R92C_TXAGC_RATE48_M	0x00ff0000
91353c3c4d0Sstsp #define R92C_TXAGC_RATE48_S	16
91453c3c4d0Sstsp #define R92C_TXAGC_RATE54_M	0xff000000
91553c3c4d0Sstsp #define R92C_TXAGC_RATE54_S	24
91653c3c4d0Sstsp 
91753c3c4d0Sstsp /* Bits for R92C_TXAGC_MCS03_MCS00(x). */
91853c3c4d0Sstsp #define R92C_TXAGC_MCS00_M	0x000000ff
91953c3c4d0Sstsp #define R92C_TXAGC_MCS00_S	0
92053c3c4d0Sstsp #define R92C_TXAGC_MCS01_M	0x0000ff00
92153c3c4d0Sstsp #define R92C_TXAGC_MCS01_S	8
92253c3c4d0Sstsp #define R92C_TXAGC_MCS02_M	0x00ff0000
92353c3c4d0Sstsp #define R92C_TXAGC_MCS02_S	16
92453c3c4d0Sstsp #define R92C_TXAGC_MCS03_M	0xff000000
92553c3c4d0Sstsp #define R92C_TXAGC_MCS03_S	24
92653c3c4d0Sstsp 
92753c3c4d0Sstsp /* Bits for R92C_TXAGC_MCS07_MCS04(x). */
92853c3c4d0Sstsp #define R92C_TXAGC_MCS04_M	0x000000ff
92953c3c4d0Sstsp #define R92C_TXAGC_MCS04_S	0
93053c3c4d0Sstsp #define R92C_TXAGC_MCS05_M	0x0000ff00
93153c3c4d0Sstsp #define R92C_TXAGC_MCS05_S	8
93253c3c4d0Sstsp #define R92C_TXAGC_MCS06_M	0x00ff0000
93353c3c4d0Sstsp #define R92C_TXAGC_MCS06_S	16
93453c3c4d0Sstsp #define R92C_TXAGC_MCS07_M	0xff000000
93553c3c4d0Sstsp #define R92C_TXAGC_MCS07_S	24
93653c3c4d0Sstsp 
93753c3c4d0Sstsp /* Bits for R92C_TXAGC_MCS11_MCS08(x). */
93853c3c4d0Sstsp #define R92C_TXAGC_MCS08_M	0x000000ff
93953c3c4d0Sstsp #define R92C_TXAGC_MCS08_S	0
94053c3c4d0Sstsp #define R92C_TXAGC_MCS09_M	0x0000ff00
94153c3c4d0Sstsp #define R92C_TXAGC_MCS09_S	8
94253c3c4d0Sstsp #define R92C_TXAGC_MCS10_M	0x00ff0000
94353c3c4d0Sstsp #define R92C_TXAGC_MCS10_S	16
94453c3c4d0Sstsp #define R92C_TXAGC_MCS11_M	0xff000000
94553c3c4d0Sstsp #define R92C_TXAGC_MCS11_S	24
94653c3c4d0Sstsp 
94753c3c4d0Sstsp /* Bits for R92C_TXAGC_MCS15_MCS12(x). */
94853c3c4d0Sstsp #define R92C_TXAGC_MCS12_M	0x000000ff
94953c3c4d0Sstsp #define R92C_TXAGC_MCS12_S	0
95053c3c4d0Sstsp #define R92C_TXAGC_MCS13_M	0x0000ff00
95153c3c4d0Sstsp #define R92C_TXAGC_MCS13_S	8
95253c3c4d0Sstsp #define R92C_TXAGC_MCS14_M	0x00ff0000
95353c3c4d0Sstsp #define R92C_TXAGC_MCS14_S	16
95453c3c4d0Sstsp #define R92C_TXAGC_MCS15_M	0xff000000
95553c3c4d0Sstsp #define R92C_TXAGC_MCS15_S	24
95653c3c4d0Sstsp 
95753c3c4d0Sstsp /* Bits for R92C_LSSI_PARAM(i). */
95853c3c4d0Sstsp #define R92C_LSSI_PARAM_DATA_M	0x000fffff
95953c3c4d0Sstsp #define R92C_LSSI_PARAM_DATA_S	0
96053c3c4d0Sstsp #define R92C_LSSI_PARAM_ADDR_M	0x03f00000
96153c3c4d0Sstsp #define R92C_LSSI_PARAM_ADDR_S	20
96253c3c4d0Sstsp #define R88E_LSSI_PARAM_ADDR_M	0x0ff00000
96353c3c4d0Sstsp #define R88E_LSSI_PARAM_ADDR_S	20
96453c3c4d0Sstsp 
96553c3c4d0Sstsp /* Bits for R92C_FPGA0_ANAPARAM2. */
96653c3c4d0Sstsp #define R92C_FPGA0_ANAPARAM2_CBW20	0x00000400
96753c3c4d0Sstsp 
96853c3c4d0Sstsp /* Bits for R92C_LSSI_READBACK(i). */
96953c3c4d0Sstsp #define R92C_LSSI_READBACK_DATA_M	0x000fffff
97053c3c4d0Sstsp #define R92C_LSSI_READBACK_DATA_S	0
97153c3c4d0Sstsp 
97253c3c4d0Sstsp /* Bits for R92C_OFDM0_AGCCORE1(i). */
97353c3c4d0Sstsp #define R92C_OFDM0_AGCCORE1_GAIN_M	0x0000007f
97453c3c4d0Sstsp #define R92C_OFDM0_AGCCORE1_GAIN_S	0
97553c3c4d0Sstsp 
97653c3c4d0Sstsp 
97753c3c4d0Sstsp /*
97853c3c4d0Sstsp  * USB registers.
97953c3c4d0Sstsp  */
98053c3c4d0Sstsp #define R92C_USB_INFO			0xfe17
98153c3c4d0Sstsp #define R92C_USB_SPECIAL_OPTION		0xfe55
98253c3c4d0Sstsp #define R92C_USB_HCPWM			0xfe57
98353c3c4d0Sstsp #define R92C_USB_HRPWM			0xfe58
98453c3c4d0Sstsp #define R92C_USB_DMA_AGG_TO		0xfe5b
98553c3c4d0Sstsp #define R92C_USB_AGG_TO			0xfe5c
98653c3c4d0Sstsp #define R92C_USB_AGG_TH			0xfe5d
98753c3c4d0Sstsp #define R92C_USB_VID			0xfe60
98853c3c4d0Sstsp #define R92C_USB_PID			0xfe62
98953c3c4d0Sstsp #define R92C_USB_OPTIONAL		0xfe64
99053c3c4d0Sstsp #define R92C_USB_EP			0xfe65
99153c3c4d0Sstsp #define R92C_USB_PHY			0xfe68
99253c3c4d0Sstsp #define R92C_USB_MAC_ADDR		0xfe70
99353c3c4d0Sstsp #define R92C_USB_STRING			0xfe80
99453c3c4d0Sstsp 
99553c3c4d0Sstsp /* Bits for R92C_USB_SPECIAL_OPTION. */
99653c3c4d0Sstsp #define R92C_USB_SPECIAL_OPTION_AGG_EN		0x08
99753c3c4d0Sstsp #define R92C_USB_SPECIAL_OPTION_INT_BULK_SEL	0x10
99853c3c4d0Sstsp 
99953c3c4d0Sstsp /* Bits for R92C_USB_EP. */
100053c3c4d0Sstsp #define R92C_USB_EP_HQ_M	0x000f
100153c3c4d0Sstsp #define R92C_USB_EP_HQ_S	0
100253c3c4d0Sstsp #define R92C_USB_EP_NQ_M	0x00f0
100353c3c4d0Sstsp #define R92C_USB_EP_NQ_S	4
100453c3c4d0Sstsp #define R92C_USB_EP_LQ_M	0x0f00
100553c3c4d0Sstsp #define R92C_USB_EP_LQ_S	8
100653c3c4d0Sstsp 
100753c3c4d0Sstsp /*
100853c3c4d0Sstsp  * Firmware base address.
100953c3c4d0Sstsp  */
101053c3c4d0Sstsp #define R92C_FW_START_ADDR	0x1000
101153c3c4d0Sstsp #define R92C_FW_PAGE_SIZE	4096
101253c3c4d0Sstsp 
101353c3c4d0Sstsp 
101453c3c4d0Sstsp /*
101553c3c4d0Sstsp  * RF (6052) registers.
101653c3c4d0Sstsp  */
101753c3c4d0Sstsp #define R92C_RF_AC		0x00
101853c3c4d0Sstsp #define R92C_RF_IQADJ_G(i)	(0x01 + (i))
101953c3c4d0Sstsp #define R92C_RF_POW_TRSW	0x05
102053c3c4d0Sstsp #define R92C_RF_GAIN_RX		0x06
102153c3c4d0Sstsp #define R92C_RF_GAIN_TX		0x07
102253c3c4d0Sstsp #define R92C_RF_TXM_IDAC	0x08
102353c3c4d0Sstsp #define R92C_RF_BS_IQGEN	0x0f
102453c3c4d0Sstsp #define R92C_RF_MODE1		0x10
102553c3c4d0Sstsp #define R92C_RF_MODE2		0x11
102653c3c4d0Sstsp #define R92C_RF_RX_AGC_HP	0x12
102753c3c4d0Sstsp #define R92C_RF_TX_AGC		0x13
102853c3c4d0Sstsp #define R92C_RF_BIAS		0x14
102953c3c4d0Sstsp #define R92C_RF_IPA		0x15
103053c3c4d0Sstsp #define R92C_RF_POW_ABILITY	0x17
103153c3c4d0Sstsp #define R92C_RF_CHNLBW		0x18
103253c3c4d0Sstsp #define R92C_RF_RX_G1		0x1a
103353c3c4d0Sstsp #define R92C_RF_RX_G2		0x1b
103453c3c4d0Sstsp #define R92C_RF_RX_BB2		0x1c
103553c3c4d0Sstsp #define R92C_RF_RX_BB1		0x1d
103653c3c4d0Sstsp #define R92C_RF_RCK1		0x1e
103753c3c4d0Sstsp #define R92C_RF_RCK2		0x1f
103853c3c4d0Sstsp #define R92C_RF_TX_G(i)		(0x20 + (i))
103953c3c4d0Sstsp #define R92C_RF_TX_BB1		0x23
104053c3c4d0Sstsp #define R92C_RF_T_METER		0x24
104153c3c4d0Sstsp #define R92C_RF_SYN_G(i)	(0x25 + (i))
104253c3c4d0Sstsp #define R92C_RF_RCK_OS		0x30
104353c3c4d0Sstsp #define R92C_RF_TXPA_G(i)	(0x31 + (i))
104490540544Sjmatthew #define R92E_RF_T_METER		0x42
104553c3c4d0Sstsp 
104653c3c4d0Sstsp /* Bits for R92C_RF_AC. */
104753c3c4d0Sstsp #define R92C_RF_AC_MODE_M	0x70000
104853c3c4d0Sstsp #define R92C_RF_AC_MODE_S	16
104953c3c4d0Sstsp #define R92C_RF_AC_MODE_STANDBY	1
105053c3c4d0Sstsp 
105153c3c4d0Sstsp /* Bits for R92C_RF_CHNLBW. */
105253c3c4d0Sstsp #define R92C_RF_CHNLBW_CHNL_M	0x003ff
105353c3c4d0Sstsp #define R92C_RF_CHNLBW_CHNL_S	0
105453c3c4d0Sstsp #define R92C_RF_CHNLBW_BW20	0x00400
105553c3c4d0Sstsp #define R88E_RF_CHNLBW_BW20	0x00c00
105653c3c4d0Sstsp #define R92C_RF_CHNLBW_LCSTART	0x08000
105753c3c4d0Sstsp 
105853c3c4d0Sstsp 
105953c3c4d0Sstsp /*
106053c3c4d0Sstsp  * CAM entries.
106153c3c4d0Sstsp  */
106253c3c4d0Sstsp #define R92C_CAM_ENTRY_COUNT	32
106353c3c4d0Sstsp 
106453c3c4d0Sstsp #define R92C_CAM_CTL0(entry)	((entry) * 8 + 0)
106553c3c4d0Sstsp #define R92C_CAM_CTL1(entry)	((entry) * 8 + 1)
106653c3c4d0Sstsp #define R92C_CAM_KEY(entry, i)	((entry) * 8 + 2 + (i))
106753c3c4d0Sstsp 
106853c3c4d0Sstsp /* Bits for R92C_CAM_CTL0(i). */
106953c3c4d0Sstsp #define R92C_CAM_KEYID_M	0x00000003
107053c3c4d0Sstsp #define R92C_CAM_KEYID_S	0
107153c3c4d0Sstsp #define R92C_CAM_ALGO_M		0x0000001c
107253c3c4d0Sstsp #define R92C_CAM_ALGO_S		2
107353c3c4d0Sstsp #define R92C_CAM_ALGO_NONE	0
107453c3c4d0Sstsp #define R92C_CAM_ALGO_WEP40	1
107553c3c4d0Sstsp #define R92C_CAM_ALGO_TKIP	2
107653c3c4d0Sstsp #define R92C_CAM_ALGO_AES	4
107753c3c4d0Sstsp #define R92C_CAM_ALGO_WEP104	5
107853c3c4d0Sstsp #define R92C_CAM_VALID		0x00008000
107953c3c4d0Sstsp #define R92C_CAM_MACLO_M	0xffff0000
108053c3c4d0Sstsp #define R92C_CAM_MACLO_S	16
108153c3c4d0Sstsp 
108253c3c4d0Sstsp /* Rate adaptation modes. */
108353c3c4d0Sstsp #define R92C_RAID_11GN	1
108453c3c4d0Sstsp #define R92C_RAID_11N	3
108553c3c4d0Sstsp #define R92C_RAID_11BG	4
108653c3c4d0Sstsp #define R92C_RAID_11G	5	/* "pure" 11g */
108753c3c4d0Sstsp #define R92C_RAID_11B	6
108853c3c4d0Sstsp 
108990540544Sjmatthew #define R92E_RAID_11BG	6
109090540544Sjmatthew #define R92E_RAID_11G	7	/* "pure" 11g */
109190540544Sjmatthew #define R92E_RAID_11B	8
109290540544Sjmatthew 
109353c3c4d0Sstsp 
109453c3c4d0Sstsp /* Macros to access unaligned little-endian memory. */
109553c3c4d0Sstsp #define LE_READ_2(x)	((x)[0] | (x)[1] << 8)
109653c3c4d0Sstsp #define LE_READ_4(x)	((x)[0] | (x)[1] << 8 | (x)[2] << 16 | (x)[3] << 24)
109753c3c4d0Sstsp 
109853c3c4d0Sstsp /*
109953c3c4d0Sstsp  * Macros to access subfields in registers.
110053c3c4d0Sstsp  */
110153c3c4d0Sstsp /* Mask and Shift (getter). */
110253c3c4d0Sstsp #define MS(val, field)							\
110353c3c4d0Sstsp 	(((val) & field##_M) >> field##_S)
110453c3c4d0Sstsp 
110553c3c4d0Sstsp /* Shift and Mask (setter). */
110653c3c4d0Sstsp #define SM(field, val)							\
110753c3c4d0Sstsp 	(((val) << field##_S) & field##_M)
110853c3c4d0Sstsp 
110953c3c4d0Sstsp /* Rewrite. */
111053c3c4d0Sstsp #define RW(var, field, val)						\
111153c3c4d0Sstsp 	(((var) & ~field##_M) | SM(field, val))
111253c3c4d0Sstsp 
111353c3c4d0Sstsp /*
111453c3c4d0Sstsp  * Firmware image header.
111553c3c4d0Sstsp  */
111653c3c4d0Sstsp struct r92c_fw_hdr {
111753c3c4d0Sstsp 	/* QWORD0 */
111853c3c4d0Sstsp 	uint16_t	signature;
111953c3c4d0Sstsp 	uint8_t		category;
112053c3c4d0Sstsp 	uint8_t		function;
112153c3c4d0Sstsp 	uint16_t	version;
112253c3c4d0Sstsp 	uint16_t	subversion;
112353c3c4d0Sstsp 	/* QWORD1 */
112453c3c4d0Sstsp 	uint8_t		month;
112553c3c4d0Sstsp 	uint8_t		date;
112653c3c4d0Sstsp 	uint8_t		hour;
112753c3c4d0Sstsp 	uint8_t		minute;
112853c3c4d0Sstsp 	uint16_t	ramcodesize;
112953c3c4d0Sstsp 	uint16_t	reserved2;
113053c3c4d0Sstsp 	/* QWORD2 */
113153c3c4d0Sstsp 	uint32_t	svnidx;
113253c3c4d0Sstsp 	uint32_t	reserved3;
113353c3c4d0Sstsp 	/* QWORD3 */
113453c3c4d0Sstsp 	uint32_t	reserved4;
113553c3c4d0Sstsp 	uint32_t	reserved5;
113653c3c4d0Sstsp } __packed;
113753c3c4d0Sstsp 
113853c3c4d0Sstsp /*
113953c3c4d0Sstsp  * Host to firmware commands.
114053c3c4d0Sstsp  */
114153c3c4d0Sstsp struct r92c_fw_cmd {
114253c3c4d0Sstsp 	uint8_t	id;
114353c3c4d0Sstsp #define R92C_CMD_AP_OFFLOAD		0
114453c3c4d0Sstsp #define R92C_CMD_SET_PWRMODE		1
114553c3c4d0Sstsp #define R92C_CMD_JOINBSS_RPT		2
114653c3c4d0Sstsp #define R92C_CMD_RSVD_PAGE		3
114753c3c4d0Sstsp #define R92C_CMD_RSSI			4
114853c3c4d0Sstsp #define R92C_CMD_RSSI_SETTING		5
114953c3c4d0Sstsp #define R92C_CMD_MACID_CONFIG		6
115053c3c4d0Sstsp #define R92C_CMD_MACID_PS_MODE		7
115153c3c4d0Sstsp #define R92C_CMD_P2P_PS_OFFLOAD		8
115253c3c4d0Sstsp #define R92C_CMD_SELECTIVE_SUSPEND	9
115353c3c4d0Sstsp #define R92C_CMD_FLAG_EXT		0x80
115453c3c4d0Sstsp 
115553c3c4d0Sstsp 	uint8_t	msg[5];
115653c3c4d0Sstsp } __packed;
115753c3c4d0Sstsp 
115853c3c4d0Sstsp /* Structure for R92C_CMD_RSSI_SETTING. */
115953c3c4d0Sstsp struct r92c_fw_cmd_rssi {
116053c3c4d0Sstsp 	uint8_t	macid;
116153c3c4d0Sstsp 	uint8_t	reserved;
116253c3c4d0Sstsp 	uint8_t	pwdb;
116353c3c4d0Sstsp } __packed;
116453c3c4d0Sstsp 
116553c3c4d0Sstsp /* Structure for R92C_CMD_MACID_CONFIG. */
116653c3c4d0Sstsp struct r92c_fw_cmd_macid_cfg {
116753c3c4d0Sstsp 	uint32_t	mask;
116853c3c4d0Sstsp 	uint8_t		macid;
116953c3c4d0Sstsp #define R92C_MACID_BSS		0
117053c3c4d0Sstsp #define R92C_MACID_BC		4	/* Broadcast. */
117153c3c4d0Sstsp #define R92C_MACID_VALID	0x80
117290540544Sjmatthew #define R92C_MACID_SHORTGI	0x20
117390540544Sjmatthew } __packed;
117490540544Sjmatthew 
117590540544Sjmatthew /* Structure for R92C_CMD_SET_PWRMODE. */
117690540544Sjmatthew struct r92c_fw_cmd_setpwrmode {
117790540544Sjmatthew 	uint8_t		mode;
117890540544Sjmatthew 	uint8_t		smartps;
117990540544Sjmatthew 	uint8_t		bcn_time;	/* 100ms increments */
118090540544Sjmatthew } __packed;
118190540544Sjmatthew 
118290540544Sjmatthew #define R92E_CMD_KEEP_ALIVE	0x03
118390540544Sjmatthew #define R92E_CMD_SET_PWRMODE	0x20
118490540544Sjmatthew #define R92E_CMD_RSSI_REPORT	0x42
118590540544Sjmatthew 
118690540544Sjmatthew /* Structure for R92E_CMD_KEEP_ALIVE. */
118790540544Sjmatthew struct r92e_fw_cmd_keepalive {
118890540544Sjmatthew 	uint8_t		mode;
118990540544Sjmatthew 	uint8_t		period;
119090540544Sjmatthew } __packed;
119190540544Sjmatthew 
119290540544Sjmatthew /* Structure for R92E_CMD_SET_PWRMODE. */
119390540544Sjmatthew struct r92e_fw_cmd_setpwrmode {
119490540544Sjmatthew 	uint8_t		mode;
119590540544Sjmatthew #define FWMODE_ACTIVE		0
119690540544Sjmatthew #define FWMODE_LOW_POWER	1
119790540544Sjmatthew #define FWMODE_WMMPS		2
119890540544Sjmatthew 	uint8_t		smartps;
119990540544Sjmatthew #define SRTPS_LOW_POWER		0
120090540544Sjmatthew #define SRTPS_POLL		0x10
120190540544Sjmatthew #define SRTPS_WMMPS		0x20
120290540544Sjmatthew 	uint8_t		awake_int;	/* 100ms increments. */
120390540544Sjmatthew 	uint8_t		all_queue_apsd;
120490540544Sjmatthew 	uint8_t		pwr_state;
120590540544Sjmatthew #define PS_PFOFF		0x00
120690540544Sjmatthew #define PS_RFON			0x04
120790540544Sjmatthew #define PS_ALLON		0x0c
120890540544Sjmatthew } __packed;
120990540544Sjmatthew 
121090540544Sjmatthew /* Structure for R92E_CMD_RSSI_REPORT. */
121190540544Sjmatthew struct r92e_fw_cmd_rssi {
121290540544Sjmatthew 	uint8_t		macid;
121390540544Sjmatthew 	uint8_t		reserved;
121490540544Sjmatthew 	uint8_t		pwdb;
121590540544Sjmatthew 	uint8_t		reserved2;
121653c3c4d0Sstsp } __packed;
121753c3c4d0Sstsp 
121853c3c4d0Sstsp /*
121953c3c4d0Sstsp  * RTL8192CU ROM image.
122053c3c4d0Sstsp  */
122153c3c4d0Sstsp struct r92c_rom {
12225cc093eeSkevlo 	uint16_t	id;		/* 0x8129 */
122353c3c4d0Sstsp 	uint8_t		reserved1[5];
122453c3c4d0Sstsp 	uint8_t		dbg_sel;
122553c3c4d0Sstsp 	uint16_t	reserved2;
122653c3c4d0Sstsp 	uint16_t	vid;
122753c3c4d0Sstsp 	uint16_t	pid;
122853c3c4d0Sstsp 	uint8_t		usb_opt;
122953c3c4d0Sstsp 	uint8_t		ep_setting;
123053c3c4d0Sstsp 	uint16_t	reserved3;
123153c3c4d0Sstsp 	uint8_t		usb_phy;
123253c3c4d0Sstsp 	uint8_t		reserved4[3];
123334a2cadeSkevlo 	uint8_t		macaddr[IEEE80211_ADDR_LEN];
123453c3c4d0Sstsp 	uint8_t		string[61];	/* "Realtek" */
123553c3c4d0Sstsp 	uint8_t		subcustomer_id;
123653c3c4d0Sstsp 	uint8_t		cck_tx_pwr[R92C_MAX_CHAINS][3];
123753c3c4d0Sstsp 	uint8_t		ht40_1s_tx_pwr[R92C_MAX_CHAINS][3];
123853c3c4d0Sstsp 	uint8_t		ht40_2s_tx_pwr_diff[3];
123953c3c4d0Sstsp 	uint8_t		ht20_tx_pwr_diff[3];
124053c3c4d0Sstsp 	uint8_t		ofdm_tx_pwr_diff[3];
124153c3c4d0Sstsp 	uint8_t		ht40_max_pwr[3];
124253c3c4d0Sstsp 	uint8_t		ht20_max_pwr[3];
124334a2cadeSkevlo 	uint8_t		channel_plan;
124453c3c4d0Sstsp 	uint8_t		tssi[R92C_MAX_CHAINS];
124553c3c4d0Sstsp 	uint8_t		thermal_meter;
124653c3c4d0Sstsp 	uint8_t		rf_opt1;
124753c3c4d0Sstsp #define R92C_ROM_RF1_REGULATORY_M	0x07
124853c3c4d0Sstsp #define R92C_ROM_RF1_REGULATORY_S	0
124953c3c4d0Sstsp #define R92C_ROM_RF1_BOARD_TYPE_M	0xe0
125053c3c4d0Sstsp #define R92C_ROM_RF1_BOARD_TYPE_S	5
125153c3c4d0Sstsp #define R92C_BOARD_TYPE_DONGLE		0
125253c3c4d0Sstsp #define R92C_BOARD_TYPE_HIGHPA		1
125353c3c4d0Sstsp #define R92C_BOARD_TYPE_MINICARD	2
125453c3c4d0Sstsp #define R92C_BOARD_TYPE_SOLO		3
125553c3c4d0Sstsp #define R92C_BOARD_TYPE_COMBO		4
125653c3c4d0Sstsp 
125753c3c4d0Sstsp 	uint8_t		rf_opt2;
125853c3c4d0Sstsp 	uint8_t		rf_opt3;
125953c3c4d0Sstsp 	uint8_t		rf_opt4;
126034a2cadeSkevlo 	uint8_t		reserved5;
126153c3c4d0Sstsp 	uint8_t		version;
1262*079591e7Sjsg 	uint8_t		customer_id;
126353c3c4d0Sstsp } __packed;
126453c3c4d0Sstsp 
126590540544Sjmatthew struct r92e_tx_pwr {
126690540544Sjmatthew 	uint8_t		cck_tx_pwr[6];
126790540544Sjmatthew 	uint8_t		ht40_tx_pwr[5];
126890540544Sjmatthew 	uint8_t		ht20_ofdm_tx_pwr_diff;
126990540544Sjmatthew #define R92E_ROM_TXPWR_HT20_DIFF_M	0xf0
127090540544Sjmatthew #define R92E_ROM_TXPWR_HT20_DIFF_S	4
127190540544Sjmatthew #define R92E_ROM_TXPWR_OFDM_DIFF_M	0x0f
127290540544Sjmatthew #define R92E_ROM_TXPWR_OFDM_DIFF_S	0
127333410555Skevlo 
127433410555Skevlo 	struct {
127533410555Skevlo 		uint8_t ht40_ht20_tx_pwr_diff;
127633410555Skevlo #define R92E_ROM_TXPWR_HT40_DIFF_M	0xf0
127733410555Skevlo #define R92E_ROM_TXPWR_HT40_DIFF_S	4
127833410555Skevlo #define R92E_ROM_TXPWR_HT20_2S_DIFF_M	0x0f
127933410555Skevlo #define R92E_ROM_TXPWR_HT20_2S_DIFF_S	0
128033410555Skevlo 
128133410555Skevlo 		uint8_t ofdm_cck_tx_pwr_diff;
128233410555Skevlo 	} __packed pwr_diff[3];
128333410555Skevlo 
128490540544Sjmatthew 	uint8_t		reserved[24];
128590540544Sjmatthew } __packed;
128690540544Sjmatthew 
128790540544Sjmatthew struct r92e_rom {
128890540544Sjmatthew 	uint16_t	id;
128990540544Sjmatthew 	uint8_t		reserved[14];
129090540544Sjmatthew 	struct r92e_tx_pwr txpwr_a;
129190540544Sjmatthew 	struct r92e_tx_pwr txpwr_b;
129290540544Sjmatthew 	uint8_t		reserved2[84];
129390540544Sjmatthew 	uint8_t		channel_plan;
129490540544Sjmatthew 	uint8_t		xtal_k;
129590540544Sjmatthew 	uint8_t		thermal_meter;
129690540544Sjmatthew 	uint8_t		iqk_lck;
129790540544Sjmatthew 	uint8_t		pa_type;
129890540544Sjmatthew 	uint8_t		lna_type_2g;
129990540544Sjmatthew 	uint8_t		reserved3;
130090540544Sjmatthew 	uint8_t		lna_type_5g;
130190540544Sjmatthew 	uint8_t		reserved4;
130290540544Sjmatthew 	uint8_t		rf_board_opt;
130390540544Sjmatthew 	uint8_t		rf_feature_opt;
130490540544Sjmatthew 	uint8_t		rf_bt_opt;
130590540544Sjmatthew 	uint8_t		eeprom_version;
130690540544Sjmatthew 	uint8_t		eeprom_customer_id;
130790540544Sjmatthew 	uint8_t		reserved5[3];
130890540544Sjmatthew 	uint8_t		rf_antenna_option;
130990540544Sjmatthew 	uint8_t		reserved6[6];
131090540544Sjmatthew 	uint16_t	vid;
131190540544Sjmatthew 	uint16_t	pid;
131290540544Sjmatthew 	uint8_t		usb_optional_function;
131390540544Sjmatthew 	uint8_t		reserved9[2];
131490540544Sjmatthew 	uint8_t		macaddr[IEEE80211_ADDR_LEN];
131590540544Sjmatthew 	uint8_t		reserved10[2];
131690540544Sjmatthew 	uint8_t		vendor[7];
131790540544Sjmatthew 	uint8_t		reserved11[2];
131890540544Sjmatthew 	uint8_t		device_name[11];
131990540544Sjmatthew 	uint8_t		reserved12[2];
132090540544Sjmatthew 	uint8_t		serial[11];
132190540544Sjmatthew 	uint8_t		reserved13[48];
132290540544Sjmatthew 	uint8_t		unknown[13];
132390540544Sjmatthew 	uint8_t		reserved14[195];
132490540544Sjmatthew } __packed;
132590540544Sjmatthew 
132634a2cadeSkevlo struct r88e_tx_pwr {
132734a2cadeSkevlo 	uint8_t		cck_tx_pwr[6];
132834a2cadeSkevlo 	uint8_t		ht40_tx_pwr[5];
132934a2cadeSkevlo 	uint8_t		ht20_ofdm_tx_pwr_diff;
133034a2cadeSkevlo #define R88E_ROM_TXPWR_HT20_DIFF_M	0xf0
133134a2cadeSkevlo #define R88E_ROM_TXPWR_HT20_DIFF_S	4
133234a2cadeSkevlo #define R88E_ROM_TXPWR_OFDM_DIFF_M	0x0f
133334a2cadeSkevlo #define R88E_ROM_TXPWR_OFDM_DIFF_S	0
133434a2cadeSkevlo 
133534a2cadeSkevlo } __packed;
133634a2cadeSkevlo 
133734a2cadeSkevlo /*
1338d8e41173Sjmatthew  * RTL8188E ROM images.
133934a2cadeSkevlo  */
134034a2cadeSkevlo struct r88e_rom {
13415cc093eeSkevlo 	uint16_t		id;
13425cc093eeSkevlo 	uint8_t			reserved1[14];
134334a2cadeSkevlo 	struct r88e_tx_pwr	txpwr;
134434a2cadeSkevlo 	uint8_t			reserved2[156];
134534a2cadeSkevlo 	uint8_t			channel_plan;
134634a2cadeSkevlo 	uint8_t			xtal;
134734a2cadeSkevlo 	uint8_t			thermal_meter;
134834a2cadeSkevlo 	uint8_t			reserved3[6];
134934a2cadeSkevlo 	uint8_t			rf_board_opt;
135034a2cadeSkevlo 	uint8_t			rf_feature_opt;
135134a2cadeSkevlo 	uint8_t			rf_bt_opt;
135234a2cadeSkevlo 	uint8_t			version;
135334a2cadeSkevlo 	uint8_t			customer_id;
135434a2cadeSkevlo 	uint8_t			reserved4[3];
135534a2cadeSkevlo 	uint8_t			rf_ant_opt;
135634a2cadeSkevlo 	uint8_t			reserved5[6];
1357626433d9Skevlo 	union {
1358626433d9Skevlo #define r88ee_rom	u.r88ee
1359626433d9Skevlo 		struct {
1360d8e41173Sjmatthew 			uint8_t		macaddr[IEEE80211_ADDR_LEN];
1361d8e41173Sjmatthew 			uint16_t	vid;
1362d8e41173Sjmatthew 			uint16_t	did;
1363d8e41173Sjmatthew 			uint16_t	svid;
1364d8e41173Sjmatthew 			uint16_t	smid;
1365626433d9Skevlo 			uint8_t		reserved6[290];
1366626433d9Skevlo 		} __packed r88ee;
1367d8e41173Sjmatthew 
1368626433d9Skevlo #define r88eu_rom	u.r88eu
1369626433d9Skevlo 		struct {
137034a2cadeSkevlo 			uint16_t	vid;
137134a2cadeSkevlo 			uint16_t	pid;
137234a2cadeSkevlo 			uint8_t		usb_opt;
137334a2cadeSkevlo 			uint8_t		reserved6[2];
137434a2cadeSkevlo 			uint8_t		macaddr[IEEE80211_ADDR_LEN];
137534a2cadeSkevlo 			uint8_t		reserved7[2];
137634a2cadeSkevlo 			uint8_t		string[33];	/* "Realtek" */
137734a2cadeSkevlo 			uint8_t		reserved8[256];
1378626433d9Skevlo 		} __packed r88eu;
1379626433d9Skevlo 	} u;
138034a2cadeSkevlo } __packed;
138134a2cadeSkevlo 
1382600882e8Sjmatthew /*
1383067851b1Skevlo  * RTL8188FTV ROM image.
1384067851b1Skevlo  */
1385067851b1Skevlo struct r88f_rom {
1386067851b1Skevlo 	uint16_t		id;
1387067851b1Skevlo 	uint8_t			reserved1[14];
1388067851b1Skevlo 	struct r88e_tx_pwr	txpwr;
1389067851b1Skevlo 	uint8_t			reserved2[156];
1390067851b1Skevlo 	uint8_t			channel_plan;
1391067851b1Skevlo 	uint8_t			xtal;
1392067851b1Skevlo 	uint8_t			thermal_meter;
1393067851b1Skevlo 	uint8_t			iqk_lck;
1394067851b1Skevlo 	uint8_t			pa_type;
1395067851b1Skevlo 	uint8_t			lna_type_2g;
1396067851b1Skevlo 	uint8_t			reserved3[3];
1397067851b1Skevlo 	uint8_t			rf_board_opt;
1398067851b1Skevlo 	uint8_t			rf_feature_opt;
1399067851b1Skevlo 	uint8_t			rf_bt_opt;
1400067851b1Skevlo 	uint8_t			eeprom_version;
1401067851b1Skevlo 	uint8_t			eeprom_customer_id;
1402067851b1Skevlo 	uint8_t			reserved4[10];
1403067851b1Skevlo 	uint16_t		vid;
1404067851b1Skevlo 	uint16_t		pid;
1405067851b1Skevlo 	uint8_t			usb_optional_function;
1406067851b1Skevlo 	uint8_t			reserved5[2];
1407067851b1Skevlo 	uint8_t			macaddr[IEEE80211_ADDR_LEN];
1408067851b1Skevlo 	uint8_t			reserved6[291];
1409067851b1Skevlo } __packed;
1410067851b1Skevlo 
1411067851b1Skevlo /*
1412600882e8Sjmatthew  * RTL8723A ROM images.
1413600882e8Sjmatthew  */
1414600882e8Sjmatthew struct r23a_rom {
1415600882e8Sjmatthew 	uint16_t		id;		/* 0x8129 */	/* 0x00 */
1416600882e8Sjmatthew 	uint8_t			reserved[14];			/* 0x02 */
1417600882e8Sjmatthew 
1418600882e8Sjmatthew 	uint8_t			tx_pwr_cck_a[3];		/* 0x10 */
1419600882e8Sjmatthew 	uint8_t			tx_pwr_cck_b[3];		/* 0x13 */
1420600882e8Sjmatthew 	uint8_t			tx_pwr_ht40_1s_a[3];		/* 0x16 */
1421600882e8Sjmatthew 	uint8_t			tx_pwr_ht40_1s_b[3];		/* 0x19 */
1422600882e8Sjmatthew 	uint8_t			tx_pwr_ht20_diff[3];		/* 0x1c */
1423600882e8Sjmatthew 	uint8_t			tx_pwr_ofdm_diff[3];		/* 0x1f */
1424600882e8Sjmatthew 
1425600882e8Sjmatthew 	uint8_t			ht40_max_pwr_offset[3];		/* 0x22 */
1426600882e8Sjmatthew 	uint8_t			ht20_max_pwr_offset[3];		/* 0x25 */
1427600882e8Sjmatthew 	uint8_t			channel_plan;			/* 0x28 */
1428600882e8Sjmatthew 	uint8_t			tssi_a;				/* 0x29 */
1429600882e8Sjmatthew 	uint8_t			thermal_meter;			/* 0x2a */
1430600882e8Sjmatthew 	uint8_t			reserved2[5];			/* 0x2b */
1431600882e8Sjmatthew 
1432600882e8Sjmatthew 	uint8_t			version;			/* 0x30 */
1433600882e8Sjmatthew 	uint8_t			customer_id;			/* 0x31 */
1434600882e8Sjmatthew 	uint8_t			customer_id_min;		/* 0x32 */
1435600882e8Sjmatthew 	uint8_t			reserved3[22];			/* 0x33 */
1436600882e8Sjmatthew 
1437600882e8Sjmatthew 	uint16_t		vid;				/* 0x49 */
1438600882e8Sjmatthew 	uint16_t		did;				/* 0x4b */
1439600882e8Sjmatthew 	uint16_t		svid;				/* 0x4d */
1440600882e8Sjmatthew 	uint16_t		smid;				/* 0x4f */
1441600882e8Sjmatthew 
1442600882e8Sjmatthew 	uint8_t			reserved4[3];			/* 0x51 */
1443600882e8Sjmatthew 	uint8_t			pwr_diff;			/* 0x54 */
1444600882e8Sjmatthew 	uint8_t			reserved5[5];			/* 0x55 */
1445600882e8Sjmatthew 	uint8_t			cck_tx_pwr;			/* 0x5a */
1446600882e8Sjmatthew 	uint8_t			reserved6[5];			/* 0x5b */
1447600882e8Sjmatthew 
1448600882e8Sjmatthew 	uint8_t			ht40_1s_tx_pwr;			/* 0x60 */
1449600882e8Sjmatthew 	uint8_t			reserved7[5];
1450600882e8Sjmatthew 	uint8_t			ht40_2s_tx_pwr_diff;		/* 0x66 */
1451600882e8Sjmatthew 	uint8_t			macaddr[IEEE80211_ADDR_LEN];	/* 0x67 */
1452600882e8Sjmatthew 	uint8_t			reserved8[10];			/* 0x6d */
1453600882e8Sjmatthew 
1454600882e8Sjmatthew 	uint8_t			tssi_b;				/* 0x77 */
1455600882e8Sjmatthew 	uint8_t			xtal_k;				/* 0x78 */
1456600882e8Sjmatthew 	uint8_t			rf_opt1;			/* 0x79 */
1457600882e8Sjmatthew 	uint8_t			rf_opt2;			/* 0x7a */
1458600882e8Sjmatthew 	uint8_t			rf_opt3;			/* 0x7b */
1459600882e8Sjmatthew 	uint8_t			rf_opt4;			/* 0x7c */
1460600882e8Sjmatthew 	uint8_t			reserved9[131];			/* 0x7d */
1461600882e8Sjmatthew } __packed;
1462600882e8Sjmatthew 
146353c3c4d0Sstsp /* Rx PHY descriptor. */
146453c3c4d0Sstsp struct r92c_rx_phystat {
146553c3c4d0Sstsp 	uint32_t	phydw0;
146653c3c4d0Sstsp 	uint32_t	phydw1;
146753c3c4d0Sstsp 	uint32_t	phydw2;
146853c3c4d0Sstsp 	uint32_t	phydw3;
146953c3c4d0Sstsp 	uint32_t	phydw4;
147053c3c4d0Sstsp 	uint32_t	phydw5;
147153c3c4d0Sstsp 	uint32_t	phydw6;
147253c3c4d0Sstsp 	uint32_t	phydw7;
147353c3c4d0Sstsp } __packed __attribute__((aligned(4)));
147453c3c4d0Sstsp 
147553c3c4d0Sstsp /* Rx PHY CCK descriptor. */
147653c3c4d0Sstsp struct r92c_rx_cck {
147753c3c4d0Sstsp 	uint8_t		adc_pwdb[4];
147853c3c4d0Sstsp 	uint8_t		sq_rpt;
147953c3c4d0Sstsp 	uint8_t		agc_rpt;
148053c3c4d0Sstsp } __packed;
148153c3c4d0Sstsp 
1482a087613eSstsp /* Tx report (type 1). */
1483a087613eSstsp struct r88e_tx_rpt_ccx {
1484a087613eSstsp 	uint8_t		rptb0;
1485a087613eSstsp #define R88E_RPTB6_PKT_NUM_M	0x0e
1486a087613eSstsp #define R88E_RPTB6_PKT_NUM_S	1
1487a087613eSstsp #define R88E_RPTB0_INT_CCX	0x80
1488a087613eSstsp 
1489a087613eSstsp 	uint8_t		rptb1;
1490a087613eSstsp #define R88E_RPTB1_MACID_M	0x3f
1491a087613eSstsp #define R88E_RPTB1_MACID_S	0
1492a087613eSstsp #define R88E_RPTB1_PKT_OK	0x40
1493a087613eSstsp #define R88E_RPTB1_BMC		0x80
1494a087613eSstsp 
1495a087613eSstsp 	uint8_t		rptb2;
1496a087613eSstsp #define R88E_RPTB2_RETRY_CNT_M	0x3f
1497a087613eSstsp #define R88E_RPTB2_RETRY_CNT_S	0
1498a087613eSstsp #define R88E_RPTB2_LIFE_EXPIRE	0x40
1499a087613eSstsp #define R88E_RPTB2_RETRY_OVER	0x80
1500a087613eSstsp 
1501a087613eSstsp 	uint8_t		queue_time_low;
1502a087613eSstsp 	uint8_t		queue_time_high;
1503a087613eSstsp 	uint8_t		final_rate;
1504a087613eSstsp 	uint8_t		rptb6;
1505a087613eSstsp #define R88E_RPTB6_QSEL_M	0xf0
1506a087613eSstsp #define R88E_RPTB6_QSEL_S	4
1507a087613eSstsp 
1508a087613eSstsp 	uint8_t		rptb7;
1509a087613eSstsp } __packed;
1510a087613eSstsp 
1511fdfa064bSkevlo struct r88e_rx_phystat {
151253c3c4d0Sstsp 	uint8_t		path_agc[2];
1513fdfa064bSkevlo 	uint8_t		ch_corr[2];
1514fdfa064bSkevlo 	uint8_t		sq_rpt;
151553c3c4d0Sstsp 	uint8_t		agc_rpt;
151653c3c4d0Sstsp 	uint8_t		rpt_b;
151753c3c4d0Sstsp 	uint8_t		reserved1;
151853c3c4d0Sstsp 	uint8_t		noise_power;
1519fdfa064bSkevlo 	int8_t		path_cfotail[2];
152053c3c4d0Sstsp 	uint8_t		pcts_mask[2];
1521fdfa064bSkevlo 	int8_t		stream_rxevm[2];
152253c3c4d0Sstsp 	uint8_t		path_rxsnr[2];
152353c3c4d0Sstsp 	uint8_t		noise_power_db_lsb;
152453c3c4d0Sstsp 	uint8_t		reserved2[3];
152553c3c4d0Sstsp 	uint8_t		stream_csi[2];
152653c3c4d0Sstsp 	uint8_t		stream_target_csi[2];
1527fdfa064bSkevlo 	int8_t		sig_evm;
152853c3c4d0Sstsp 	uint8_t		reserved3;
152953c3c4d0Sstsp 	uint8_t		reserved4;
153053c3c4d0Sstsp } __packed;
153153c3c4d0Sstsp 
15328caabc14Sstsp /* Rx MAC descriptor. */
15338caabc14Sstsp 
15348caabc14Sstsp struct r92c_rx_desc_pci {
15358caabc14Sstsp 	uint32_t	rxdw0;
15368caabc14Sstsp 	uint32_t	rxdw1;
15378caabc14Sstsp 	uint32_t	rxdw2;
15388caabc14Sstsp 	uint32_t	rxdw3;
15398caabc14Sstsp 	uint32_t	rxdw4;
15408caabc14Sstsp 	uint32_t	rxdw5;
15418caabc14Sstsp 	uint32_t	rxbufaddr;
15428caabc14Sstsp 	uint32_t	rxbufaddr64;
15438caabc14Sstsp } __packed __attribute__((aligned(4)));
15448caabc14Sstsp 
15458caabc14Sstsp struct r92c_rx_desc_usb {
15468caabc14Sstsp 	uint32_t	rxdw0;
15478caabc14Sstsp 	uint32_t	rxdw1;
15488caabc14Sstsp 	uint32_t	rxdw2;
15498caabc14Sstsp 	uint32_t	rxdw3;
15508caabc14Sstsp 	uint32_t	rxdw4;
15518caabc14Sstsp 	uint32_t	rxdw5;
15528caabc14Sstsp } __packed __attribute__((aligned(4)));
15538caabc14Sstsp 
15548caabc14Sstsp #define R92C_RXDW0_PKTLEN_M	0x00003fff
15558caabc14Sstsp #define R92C_RXDW0_PKTLEN_S	0
15568caabc14Sstsp #define R92C_RXDW0_CRCERR	0x00004000
15578caabc14Sstsp #define R92C_RXDW0_ICVERR	0x00008000
15588caabc14Sstsp #define R92C_RXDW0_INFOSZ_M	0x000f0000
15598caabc14Sstsp #define R92C_RXDW0_INFOSZ_S	16
15608caabc14Sstsp #define R92C_RXDW0_QOS		0x00800000
15618caabc14Sstsp #define R92C_RXDW0_SHIFT_M	0x03000000
15628caabc14Sstsp #define R92C_RXDW0_SHIFT_S	24
15638caabc14Sstsp #define R92C_RXDW0_PHYST	0x04000000
15648caabc14Sstsp #define R92C_RXDW0_DECRYPTED	0x08000000
15658caabc14Sstsp #define R92C_RXDW0_LS		0x10000000
15668caabc14Sstsp #define R92C_RXDW0_FS		0x20000000
15678caabc14Sstsp #define R92C_RXDW0_EOR		0x40000000
15688caabc14Sstsp #define R92C_RXDW0_OWN		0x80000000
15698caabc14Sstsp 
15708caabc14Sstsp #define R92C_RXDW2_PKTCNT_M	0x00ff0000
15718caabc14Sstsp #define R92C_RXDW2_PKTCNT_S	16
157290540544Sjmatthew #define R92E_RXDW2_RPT_C2H	0x10000000
15738caabc14Sstsp 
15748caabc14Sstsp #define R92C_RXDW3_RATE_M	0x0000003f
15758caabc14Sstsp #define R92C_RXDW3_RATE_S	0
1576969fab7dSkevlo #define R92E_RXDW3_RATE_M	0x0000007f
1577969fab7dSkevlo #define R92E_RXDW3_RATE_S	0
15788caabc14Sstsp #define R92C_RXDW3_HT		0x00000040
15798caabc14Sstsp #define R92C_RXDW3_HTC		0x00000400
1580fdfa064bSkevlo #define R88E_RXDW3_RPT_M	0x0000c000
1581fdfa064bSkevlo #define R88E_RXDW3_RPT_S	14
1582fdfa064bSkevlo #define R88E_RXDW3_RPT_RX	0
1583fdfa064bSkevlo #define R88E_RXDW3_RPT_TX1	1
1584fdfa064bSkevlo #define R88E_RXDW3_RPT_TX2	2
1585fdfa064bSkevlo #define R88E_RXDW3_RPT_HIS	3
15868caabc14Sstsp 
15878caabc14Sstsp /* Tx MAC descriptor. */
15888caabc14Sstsp 
15898caabc14Sstsp struct r92c_tx_desc_pci {
15908caabc14Sstsp 	uint32_t	txdw0;
15918caabc14Sstsp 	uint32_t	txdw1;
15928caabc14Sstsp 	uint32_t	txdw2;
15938caabc14Sstsp 	uint16_t	txdw3;
15948caabc14Sstsp 	uint16_t	txdseq;
15958caabc14Sstsp 	uint32_t	txdw4;
15968caabc14Sstsp 	uint32_t	txdw5;
15978caabc14Sstsp 	uint32_t	txdw6;
15988caabc14Sstsp 	uint16_t	txbufsize;
15998caabc14Sstsp 	uint16_t	pad;
16008caabc14Sstsp 	uint32_t	txbufaddr;
16018caabc14Sstsp 	uint32_t	txbufaddr64;
16028caabc14Sstsp 	uint32_t	nextdescaddr;
16038caabc14Sstsp 	uint32_t	nextdescaddr64;
16048caabc14Sstsp 	uint32_t	reserved[4];
16058caabc14Sstsp } __packed __attribute__((aligned(4)));
16068caabc14Sstsp 
16078caabc14Sstsp struct r92c_tx_desc_usb {
16088caabc14Sstsp 	uint32_t	txdw0;
16098caabc14Sstsp 	uint32_t	txdw1;
16108caabc14Sstsp 	uint32_t	txdw2;
16118caabc14Sstsp 	uint16_t	txdw3;
16128caabc14Sstsp 	uint16_t	txdseq;
16138caabc14Sstsp 	uint32_t	txdw4;
16148caabc14Sstsp 	uint32_t	txdw5;
16158caabc14Sstsp 	uint32_t	txdw6;
16168caabc14Sstsp 	uint16_t	txdsum;
16178caabc14Sstsp 	uint16_t	pad;
16188caabc14Sstsp } __packed __attribute__((aligned(4)));
16198caabc14Sstsp 
162090540544Sjmatthew struct r92e_tx_desc_usb {
162190540544Sjmatthew 	uint32_t	txdw0;
162290540544Sjmatthew 	uint32_t	txdw1;
162390540544Sjmatthew 	uint32_t	txdw2;
162490540544Sjmatthew 	uint32_t	txdw3;
162590540544Sjmatthew 	uint32_t	txdw4;
162690540544Sjmatthew 	uint32_t	txdw5;
162790540544Sjmatthew 	uint32_t	txdw6;
162890540544Sjmatthew 	uint16_t	txdsum;
162990540544Sjmatthew 	uint16_t	pad;
163090540544Sjmatthew 	uint32_t	txdw7;
163190540544Sjmatthew 	uint16_t	txdseq2;
163290540544Sjmatthew 	uint16_t	txdw8;
163390540544Sjmatthew } __packed __attribute__((aligned(4)));
163490540544Sjmatthew 
16358caabc14Sstsp #define R92C_TXDW0_PKTLEN_M	0x0000ffff
16368caabc14Sstsp #define R92C_TXDW0_PKTLEN_S	0
16378caabc14Sstsp #define R92C_TXDW0_OFFSET_M	0x00ff0000
16388caabc14Sstsp #define R92C_TXDW0_OFFSET_S	16
16398caabc14Sstsp #define R92C_TXDW0_BMCAST	0x01000000
16408caabc14Sstsp #define R92C_TXDW0_LSG		0x04000000
16418caabc14Sstsp #define R92C_TXDW0_FSG		0x08000000
16428caabc14Sstsp #define R92C_TXDW0_OWN		0x80000000
16438caabc14Sstsp 
16448caabc14Sstsp #define R92C_TXDW1_MACID_M	0x0000001f
16458caabc14Sstsp #define R92C_TXDW1_MACID_S	0
16468caabc14Sstsp #define R88E_TXDW1_MACID_M	0x0000003f
16478caabc14Sstsp #define R88E_TXDW1_MACID_S	0
164890540544Sjmatthew #define R92E_TXDW1_MACID_M	0x0000007f
164990540544Sjmatthew #define R92E_TXDW1_MACID_S	0
16508caabc14Sstsp #define R92C_TXDW1_AGGEN	0x00000020
16518caabc14Sstsp #define R92C_TXDW1_AGGBK	0x00000040
16528caabc14Sstsp #define R92C_TXDW1_QSEL_M	0x00001f00
16538caabc14Sstsp #define R92C_TXDW1_QSEL_S	8
16548caabc14Sstsp #define R92C_TXDW1_QSEL_BE	0x00
16558caabc14Sstsp #define R92C_TXDW1_QSEL_BK	0x02
16568caabc14Sstsp #define R92C_TXDW1_QSEL_VI	0x05
16578caabc14Sstsp #define R92C_TXDW1_QSEL_VO	0x07
16588caabc14Sstsp #define R92C_TXDW1_QSEL_BEACON	0x10
16598caabc14Sstsp #define R92C_TXDW1_QSEL_HIGH	0x11
16608caabc14Sstsp #define R92C_TXDW1_QSEL_MGNT	0x12
16618caabc14Sstsp #define R92C_TXDW1_QSEL_CMD	0x13
16628caabc14Sstsp #define R92C_TXDW1_RAID_M	0x000f0000
16638caabc14Sstsp #define R92C_TXDW1_RAID_S	16
16648caabc14Sstsp #define R92C_TXDW1_CIPHER_M	0x00c00000
16658caabc14Sstsp #define R92C_TXDW1_CIPHER_S	22
16668caabc14Sstsp #define R92C_TXDW1_CIPHER_NONE	0
16678caabc14Sstsp #define R92C_TXDW1_CIPHER_RC4	1
16688caabc14Sstsp #define R92C_TXDW1_CIPHER_AES	3
16698caabc14Sstsp #define R92C_TXDW1_PKTOFF_M	0x7c000000
16708caabc14Sstsp #define R92C_TXDW1_PKTOFF_S	26
16718caabc14Sstsp 
16728caabc14Sstsp #define R88E_TXDW2_AGGBK	0x00010000
1673a087613eSstsp #define R92C_TXDW2_CCX_RPT	0x00080000
1674a087613eSstsp 
1675b5162d81Sstsp #define R92E_TXDW3_DRVRATE	0x0100
1676600882e8Sjmatthew #define R23A_TXDW3_TXRPTEN	0x4000
16779befa0edSjmatthew #define R92C_TXDW3_HWSEQEN	0x8000
16789befa0edSjmatthew 
1679c72e1306Sstsp #define R92C_TXDW4_RTSRATE_M	0x0000001f
16808caabc14Sstsp #define R92C_TXDW4_RTSRATE_S	0
16818caabc14Sstsp #define R92C_TXDW4_QOS		0x00000040
16828caabc14Sstsp #define R92C_TXDW4_HWSEQ	0x00000080
16838caabc14Sstsp #define R92C_TXDW4_DRVRATE	0x00000100
16848caabc14Sstsp #define R92C_TXDW4_CTS2SELF	0x00000800
16858caabc14Sstsp #define R92C_TXDW4_RTSEN	0x00001000
16868caabc14Sstsp #define R92C_TXDW4_HWRTSEN	0x00002000
16878caabc14Sstsp #define R92C_TXDW4_SCO_M	0x003f0000
16888caabc14Sstsp #define R92C_TXDW4_SCO_S	20
16898caabc14Sstsp #define R92C_TXDW4_SCO_SCA	1
16908caabc14Sstsp #define R92C_TXDW4_SCO_SCB	2
169156fbb35bSkevlo #define R92C_TXDW4_SHORTPRE	0x01000000
16928caabc14Sstsp #define R92C_TXDW4_40MHZ	0x02000000
1693a087613eSstsp #define R92C_TXDW4_RTS_SHORT	0x04000000
16948caabc14Sstsp 
169590540544Sjmatthew #define R92E_TXDW4_DATARATE_M	0x0000007f
169690540544Sjmatthew #define R92E_TXDW4_DATARATE_S	0
169790540544Sjmatthew #define R92E_TXDW4_DATARATEFB_M 0x00001f00
169890540544Sjmatthew #define R92E_TXDW4_DATARATEFB_S 8
169990540544Sjmatthew #define R92E_TXDW4_RTSRATEFB_M  0x0001e000
170090540544Sjmatthew #define R92E_TXDW4_RTSRATEFB_S  13
170190540544Sjmatthew #define R92E_TXDW4_RETRYLMT_ENA 0x00020000
170290540544Sjmatthew #define R92E_TXDW4_RETRYLMT_M   0x00fc0000
170390540544Sjmatthew #define R92E_TXDW4_RETRYLMT_S   18
170490540544Sjmatthew #define R92E_TXDW4_RTSRATE_M	0x1f000000
170590540544Sjmatthew #define R92E_TXDW4_RTSRATE_S	24
170690540544Sjmatthew 
17078caabc14Sstsp #define R92C_TXDW5_DATARATE_M		0x0000003f
17088caabc14Sstsp #define R92C_TXDW5_DATARATE_S		0
17098caabc14Sstsp #define R92C_TXDW5_SGI			0x00000040
17108caabc14Sstsp #define R92C_TXDW5_DATARATE_FBLIMIT_M	0x00001f00
17118caabc14Sstsp #define R92C_TXDW5_DATARATE_FBLIMIT_S	8
17128caabc14Sstsp #define R92C_TXDW5_RTSRATE_FBLIMIT_M	0x0001e000
17138caabc14Sstsp #define R92C_TXDW5_RTSRATE_FBLIMIT_S	13
17148caabc14Sstsp #define R92C_TXDW5_RETRY_LIMIT_ENABLE	0x00020000
17158caabc14Sstsp #define R92C_TXDW5_DATA_RETRY_LIMIT_M	0x00fc0000
17168caabc14Sstsp #define R92C_TXDW5_DATA_RETRY_LIMIT_S	18
17178caabc14Sstsp #define R92C_TXDW5_AGGNUM_M		0xff000000
17188caabc14Sstsp #define R92C_TXDW5_AGGNUM_S		24
17198caabc14Sstsp 
172090540544Sjmatthew #define R92E_TXDSEQ2_HWSEQ_S		11
172190540544Sjmatthew #define R92E_TXDSEQ2_HWSEQ_M		0x0000ffff
172290540544Sjmatthew 
172353c3c4d0Sstsp /*
17241f929dc7Sstsp  * C2H event structure.
17251f929dc7Sstsp  */
17261f929dc7Sstsp #define R92C_C2H_MSG_MAX_LEN		16
17271f929dc7Sstsp 
17281f929dc7Sstsp struct r92c_c2h_evt {
17291f929dc7Sstsp 	uint8_t		evtb0;
17301f929dc7Sstsp #define R92C_C2H_EVTB0_ID_M		0x0f
17311f929dc7Sstsp #define R92C_C2H_EVTB0_ID_S		0
17321f929dc7Sstsp #define R92C_C2H_EVTB0_LEN_M		0xf0
17331f929dc7Sstsp #define R92C_C2H_EVTB0_LEN_S		4
17341f929dc7Sstsp 
17351f929dc7Sstsp 	uint8_t		seq;
17361f929dc7Sstsp 
17371f929dc7Sstsp 	/* Followed by payload (see below). */
17381f929dc7Sstsp } __packed;
17391f929dc7Sstsp 
17401f929dc7Sstsp /* Bits for R92C_C2HEVT_CLEAR. */
17411f929dc7Sstsp #define R92C_C2HEVT_HOST_CLOSE		0x00
17421f929dc7Sstsp #define R92C_C2HEVT_FW_CLOSE		0xff
17431f929dc7Sstsp 
17441f929dc7Sstsp /*
17451f929dc7Sstsp  * C2H event types.
17461f929dc7Sstsp  */
17471f929dc7Sstsp #define R92C_C2HEVT_DEBUG		0
17481f929dc7Sstsp #define R92C_C2HEVT_TX_REPORT		3
17491f929dc7Sstsp #define R92C_C2HEVT_EXT_RA_RPT		6
17501f929dc7Sstsp 
17511f929dc7Sstsp /* Structure for R92C_C2H_EVT_TX_REPORT event. */
17521f929dc7Sstsp struct r92c_c2h_tx_rpt {
17531f929dc7Sstsp 	uint8_t		rptb0;
17541f929dc7Sstsp #define R92C_RPTB0_RETRY_CNT_M		0x3f
17551f929dc7Sstsp #define R92C_RPTB0_RETRY_CNT_S		0
17561f929dc7Sstsp 
17571f929dc7Sstsp 	uint8_t		rptb1;		/* XXX junk */
17581f929dc7Sstsp #define R92C_RPTB1_RTS_RETRY_CNT_M	0x3f
17591f929dc7Sstsp #define R92C_RPTB1_RTS_RETRY_CNT_S	0
17601f929dc7Sstsp 
17611f929dc7Sstsp 	uint8_t		queue_time_low;
17621f929dc7Sstsp 	uint8_t		queue_time_high;
17631f929dc7Sstsp 	uint8_t		rptb4;
17641f929dc7Sstsp #define R92C_RPTB4_MISSED_PKT_NUM_M	0x1f
17651f929dc7Sstsp #define R92C_RPTB4_MISSED_PKT_NUM_S	0
17661f929dc7Sstsp 
17671f929dc7Sstsp 	uint8_t		rptb5;
17681f929dc7Sstsp #define R92C_RPTB5_MACID_M		0x1f
17691f929dc7Sstsp #define R92C_RPTB5_MACID_S		0
17701f929dc7Sstsp #define R92C_RPTB5_DES1_FRAGSSN_M	0xe0
17711f929dc7Sstsp #define R92C_RPTB5_DES1_FRAGSSN_S	5
17721f929dc7Sstsp 
17731f929dc7Sstsp 	uint8_t		rptb6;
17741f929dc7Sstsp #define R92C_RPTB6_RPT_PKT_NUM_M	0x1f
17751f929dc7Sstsp #define R92C_RPTB6_RPT_PKT_NUM_S	0
17761f929dc7Sstsp #define R92C_RPTB6_PKT_DROP		0x20
17771f929dc7Sstsp #define R92C_RPTB6_LIFE_EXPIRE		0x40
17781f929dc7Sstsp #define R92C_RPTB6_RETRY_OVER		0x80
17791f929dc7Sstsp 
17801f929dc7Sstsp 	uint8_t		rptb7;
17811f929dc7Sstsp #define R92C_RPTB7_EDCA_M		0x0f
17821f929dc7Sstsp #define R92C_RPTB7_EDCA_S		0
17831f929dc7Sstsp #define R92C_RPTB7_BMC			0x20
17841f929dc7Sstsp #define R92C_RPTB7_PKT_OK		0x40
17851f929dc7Sstsp #define R92C_RPTB7_INT_CCX		0x80
17861f929dc7Sstsp } __packed;
17871f929dc7Sstsp 
178890540544Sjmatthew struct r92e_c2h_tx_rpt {
178990540544Sjmatthew 	uint8_t		rptb0;
179090540544Sjmatthew #define R92E_RPTB0_QSEL_M		0x1f
179190540544Sjmatthew #define R92E_RPTB0_QSEL_S		0
179290540544Sjmatthew #define R92E_RPTB0_BC			0x20
179390540544Sjmatthew #define R92E_RPTB0_LIFE_EXPIRE		0x40
179490540544Sjmatthew #define R92E_RPTB0_RETRY_OVER		0x80
179590540544Sjmatthew 
179690540544Sjmatthew 	uint8_t		macid;
179790540544Sjmatthew 
179890540544Sjmatthew 	uint8_t		rptb2;
179990540544Sjmatthew #define R92E_RPTB2_RETRY_CNT_M		0x3f
180090540544Sjmatthew #define R92E_RPTB2_RETRY_CNT_S		0
180190540544Sjmatthew 
180290540544Sjmatthew 	uint8_t		queue_time_low;
180390540544Sjmatthew 	uint8_t		queue_time_high;
180490540544Sjmatthew 	uint8_t		final_rate;
180590540544Sjmatthew 	uint16_t	reserved;
180690540544Sjmatthew } __packed;
180790540544Sjmatthew 
18081f929dc7Sstsp /*
180953c3c4d0Sstsp  * MAC initialization values.
181053c3c4d0Sstsp  */
181153c3c4d0Sstsp static const struct {
181253c3c4d0Sstsp 	uint16_t	reg;
181353c3c4d0Sstsp 	uint8_t		val;
181453c3c4d0Sstsp } rtl8192ce_mac[] = {
181553c3c4d0Sstsp 	{ 0x420, 0x80 }, { 0x423, 0x00 }, { 0x430, 0x00 }, { 0x431, 0x00 },
181653c3c4d0Sstsp 	{ 0x432, 0x00 }, { 0x433, 0x01 }, { 0x434, 0x04 }, { 0x435, 0x05 },
181753c3c4d0Sstsp 	{ 0x436, 0x06 }, { 0x437, 0x07 }, { 0x438, 0x00 }, { 0x439, 0x00 },
181853c3c4d0Sstsp 	{ 0x43a, 0x00 }, { 0x43b, 0x01 }, { 0x43c, 0x04 }, { 0x43d, 0x05 },
181953c3c4d0Sstsp 	{ 0x43e, 0x06 }, { 0x43f, 0x07 }, { 0x440, 0x5d }, { 0x441, 0x01 },
182053c3c4d0Sstsp 	{ 0x442, 0x00 }, { 0x444, 0x15 }, { 0x445, 0xf0 }, { 0x446, 0x0f },
182153c3c4d0Sstsp 	{ 0x447, 0x00 }, { 0x458, 0x41 }, { 0x459, 0xa8 }, { 0x45a, 0x72 },
182253c3c4d0Sstsp 	{ 0x45b, 0xb9 }, { 0x460, 0x88 }, { 0x461, 0x88 }, { 0x462, 0x06 },
182353c3c4d0Sstsp 	{ 0x463, 0x03 }, { 0x4c8, 0x04 }, { 0x4c9, 0x08 }, { 0x4cc, 0x02 },
182453c3c4d0Sstsp 	{ 0x4cd, 0x28 }, { 0x4ce, 0x01 }, { 0x500, 0x26 }, { 0x501, 0xa2 },
182553c3c4d0Sstsp 	{ 0x502, 0x2f }, { 0x503, 0x00 }, { 0x504, 0x28 }, { 0x505, 0xa3 },
182653c3c4d0Sstsp 	{ 0x506, 0x5e }, { 0x507, 0x00 }, { 0x508, 0x2b }, { 0x509, 0xa4 },
182753c3c4d0Sstsp 	{ 0x50a, 0x5e }, { 0x50b, 0x00 }, { 0x50c, 0x4f }, { 0x50d, 0xa4 },
182853c3c4d0Sstsp 	{ 0x50e, 0x00 }, { 0x50f, 0x00 }, { 0x512, 0x1c }, { 0x514, 0x0a },
182953c3c4d0Sstsp 	{ 0x515, 0x10 }, { 0x516, 0x0a }, { 0x517, 0x10 }, { 0x51a, 0x16 },
183053c3c4d0Sstsp 	{ 0x524, 0x0f }, { 0x525, 0x4f }, { 0x546, 0x20 }, { 0x547, 0x00 },
183153c3c4d0Sstsp 	{ 0x559, 0x02 }, { 0x55a, 0x02 }, { 0x55d, 0xff }, { 0x605, 0x30 },
183253c3c4d0Sstsp 	{ 0x608, 0x0e }, { 0x609, 0x2a }, { 0x652, 0x20 }, { 0x63c, 0x0a },
183353c3c4d0Sstsp 	{ 0x63d, 0x0e }, { 0x700, 0x21 }, { 0x701, 0x43 }, { 0x702, 0x65 },
183453c3c4d0Sstsp 	{ 0x703, 0x87 }, { 0x708, 0x21 }, { 0x709, 0x43 }, { 0x70a, 0x65 },
183553c3c4d0Sstsp 	{ 0x70b, 0x87 }
183653c3c4d0Sstsp }, rtl8188eu_mac[] = {
183753c3c4d0Sstsp 	{ 0x026, 0x41 }, { 0x027, 0x35 }, { 0x040, 0x00 }, { 0x428, 0x0a },
183853c3c4d0Sstsp 	{ 0x429, 0x10 }, { 0x430, 0x00 }, { 0x431, 0x01 }, { 0x432, 0x02 },
183953c3c4d0Sstsp 	{ 0x433, 0x04 }, { 0x434, 0x05 }, { 0x435, 0x06 }, { 0x436, 0x07 },
184053c3c4d0Sstsp 	{ 0x437, 0x08 }, { 0x438, 0x00 }, { 0x439, 0x00 }, { 0x43a, 0x01 },
184153c3c4d0Sstsp 	{ 0x43b, 0x02 }, { 0x43c, 0x04 }, { 0x43d, 0x05 }, { 0x43e, 0x06 },
184253c3c4d0Sstsp 	{ 0x43f, 0x07 }, { 0x440, 0x5d }, { 0x441, 0x01 }, { 0x442, 0x00 },
184353c3c4d0Sstsp 	{ 0x444, 0x15 }, { 0x445, 0xf0 }, { 0x446, 0x0f }, { 0x447, 0x00 },
184453c3c4d0Sstsp 	{ 0x458, 0x41 }, { 0x459, 0xa8 }, { 0x45a, 0x72 }, { 0x45b, 0xb9 },
184553c3c4d0Sstsp 	{ 0x460, 0x66 }, { 0x461, 0x66 }, { 0x480, 0x08 }, { 0x4c8, 0xff },
184653c3c4d0Sstsp 	{ 0x4c9, 0x08 }, { 0x4cc, 0xff }, { 0x4cd, 0xff }, { 0x4ce, 0x01 },
184753c3c4d0Sstsp 	{ 0x4d3, 0x01 }, { 0x500, 0x26 }, { 0x501, 0xa2 }, { 0x502, 0x2f },
184853c3c4d0Sstsp 	{ 0x503, 0x00 }, { 0x504, 0x28 }, { 0x505, 0xa3 }, { 0x506, 0x5e },
184953c3c4d0Sstsp 	{ 0x507, 0x00 }, { 0x508, 0x2b }, { 0x509, 0xa4 }, { 0x50a, 0x5e },
185053c3c4d0Sstsp 	{ 0x50b, 0x00 }, { 0x50c, 0x4f }, { 0x50d, 0xa4 }, { 0x50e, 0x00 },
185153c3c4d0Sstsp 	{ 0x50f, 0x00 }, { 0x512, 0x1c }, { 0x514, 0x0a }, { 0x516, 0x0a },
185253c3c4d0Sstsp 	{ 0x525, 0x4f }, { 0x550, 0x10 }, { 0x551, 0x10 }, { 0x559, 0x02 },
185353c3c4d0Sstsp 	{ 0x55d, 0xff }, { 0x605, 0x30 }, { 0x608, 0x0e }, { 0x609, 0x2a },
185453c3c4d0Sstsp 	{ 0x620, 0xff }, { 0x621, 0xff }, { 0x622, 0xff }, { 0x623, 0xff },
185553c3c4d0Sstsp 	{ 0x624, 0xff }, { 0x625, 0xff }, { 0x626, 0xff }, { 0x627, 0xff },
185653c3c4d0Sstsp 	{ 0x652, 0x20 }, { 0x63c, 0x0a }, { 0x63d, 0x0a }, { 0x63e, 0x0e },
185753c3c4d0Sstsp 	{ 0x63f, 0x0e }, { 0x640, 0x40 }, { 0x66e, 0x05 }, { 0x700, 0x21 },
185853c3c4d0Sstsp 	{ 0x701, 0x43 }, { 0x702, 0x65 }, { 0x703, 0x87 }, { 0x708, 0x21 },
185953c3c4d0Sstsp 	{ 0x709, 0x43 }, { 0x70a, 0x65 }, { 0x70b, 0x87 }
1860067851b1Skevlo }, rtl8188ftv_mac[] = {
1861067851b1Skevlo 	{ 0x024, 0xdf }, { 0x025, 0x07 }, { 0x02b, 0x1c }, { 0x283, 0x20 },
1862067851b1Skevlo 	{ 0x421, 0x0f }, { 0x428, 0x0a }, { 0x429, 0x10 }, { 0x430, 0x00 },
1863067851b1Skevlo 	{ 0x431, 0x00 }, { 0x432, 0x00 }, { 0x433, 0x01 }, { 0x434, 0x04 },
1864067851b1Skevlo 	{ 0x435, 0x05 }, { 0x436, 0x07 }, { 0x437, 0x08 }, { 0x43c, 0x04 },
1865067851b1Skevlo 	{ 0x43d, 0x05 }, { 0x43e, 0x07 }, { 0x43f, 0x08 }, { 0x440, 0x5d },
1866067851b1Skevlo 	{ 0x441, 0x01 }, { 0x442, 0x00 }, { 0x444, 0x10 }, { 0x445, 0x00 },
1867067851b1Skevlo 	{ 0x446, 0x00 }, { 0x447, 0x00 }, { 0x448, 0x00 }, { 0x449, 0xf0 },
1868067851b1Skevlo 	{ 0x44a, 0x0f }, { 0x44b, 0x3e }, { 0x44c, 0x10 }, { 0x44d, 0x00 },
1869067851b1Skevlo 	{ 0x44e, 0x00 }, { 0x44f, 0x00 }, { 0x450, 0x00 }, { 0x451, 0xf0 },
1870067851b1Skevlo 	{ 0x452, 0x0f }, { 0x453, 0x00 }, { 0x456, 0x5e }, { 0x460, 0x44 },
1871067851b1Skevlo 	{ 0x461, 0x44 }, { 0x4bc, 0xc0 }, { 0x4c8, 0xff }, { 0x4c9, 0x08 },
1872067851b1Skevlo 	{ 0x4cc, 0xff }, { 0x4cd, 0xff }, { 0x4ce, 0x01 }, { 0x500, 0x26 },
1873067851b1Skevlo 	{ 0x501, 0xa2 }, { 0x502, 0x2f }, { 0x503, 0x00 }, { 0x504, 0x28 },
1874067851b1Skevlo 	{ 0x505, 0xa3 }, { 0x506, 0x5e }, { 0x507, 0x00 }, { 0x508, 0x2b },
1875067851b1Skevlo 	{ 0x509, 0xa4 }, { 0x50a, 0x5e }, { 0x50b, 0x00 }, { 0x50c, 0x4f },
1876067851b1Skevlo 	{ 0x50d, 0xa4 }, { 0x50e, 0x00 }, { 0x50f, 0x00 }, { 0x512, 0x1c },
1877067851b1Skevlo 	{ 0x514, 0x0a }, { 0x516, 0x0a }, { 0x525, 0x4f }, { 0x550, 0x10 },
1878067851b1Skevlo 	{ 0x551, 0x10 }, { 0x559, 0x02 }, { 0x55c, 0x28 }, { 0x55d, 0xff },
1879067851b1Skevlo 	{ 0x605, 0x30 }, { 0x608, 0x0e }, { 0x609, 0x2a }, { 0x620, 0xff },
1880067851b1Skevlo 	{ 0x621, 0xff }, { 0x622, 0xff }, { 0x623, 0xff }, { 0x624, 0xff },
1881067851b1Skevlo 	{ 0x625, 0xff }, { 0x626, 0xff }, { 0x627, 0xff }, { 0x638, 0x28 },
1882067851b1Skevlo 	{ 0x63c, 0x0a }, { 0x63d, 0x0a }, { 0x63e, 0x0e }, { 0x63f, 0x0e },
1883067851b1Skevlo 	{ 0x640, 0x40 }, { 0x642, 0x40 }, { 0x643, 0x00 }, { 0x652, 0xc8 },
1884067851b1Skevlo 	{ 0x66e, 0x05 }, { 0x700, 0x21 }, { 0x701, 0x43 }, { 0x702, 0x65 },
1885067851b1Skevlo 	{ 0x703, 0x87 }, { 0x708, 0x21 }, { 0x709, 0x43 }, { 0x70a, 0x65 },
1886067851b1Skevlo 	{ 0x70b, 0x87 }
188753c3c4d0Sstsp }, rtl8192cu_mac[] = {
188853c3c4d0Sstsp 	{ 0x420, 0x80 }, { 0x423, 0x00 }, { 0x430, 0x00 }, { 0x431, 0x00 },
188953c3c4d0Sstsp 	{ 0x432, 0x00 }, { 0x433, 0x01 }, { 0x434, 0x04 }, { 0x435, 0x05 },
189053c3c4d0Sstsp 	{ 0x436, 0x06 }, { 0x437, 0x07 }, { 0x438, 0x00 }, { 0x439, 0x00 },
189153c3c4d0Sstsp 	{ 0x43a, 0x00 }, { 0x43b, 0x01 }, { 0x43c, 0x04 }, { 0x43d, 0x05 },
189253c3c4d0Sstsp 	{ 0x43e, 0x06 }, { 0x43f, 0x07 }, { 0x440, 0x5d }, { 0x441, 0x01 },
189353c3c4d0Sstsp 	{ 0x442, 0x00 }, { 0x444, 0x15 }, { 0x445, 0xf0 }, { 0x446, 0x0f },
189453c3c4d0Sstsp 	{ 0x447, 0x00 }, { 0x458, 0x41 }, { 0x459, 0xa8 }, { 0x45a, 0x72 },
189553c3c4d0Sstsp 	{ 0x45b, 0xb9 }, { 0x460, 0x66 }, { 0x461, 0x66 }, { 0x462, 0x08 },
189653c3c4d0Sstsp 	{ 0x463, 0x03 }, { 0x4c8, 0xff }, { 0x4c9, 0x08 }, { 0x4cc, 0xff },
189753c3c4d0Sstsp 	{ 0x4cd, 0xff }, { 0x4ce, 0x01 }, { 0x500, 0x26 }, { 0x501, 0xa2 },
189853c3c4d0Sstsp 	{ 0x502, 0x2f }, { 0x503, 0x00 }, { 0x504, 0x28 }, { 0x505, 0xa3 },
189953c3c4d0Sstsp 	{ 0x506, 0x5e }, { 0x507, 0x00 }, { 0x508, 0x2b }, { 0x509, 0xa4 },
190053c3c4d0Sstsp 	{ 0x50a, 0x5e }, { 0x50b, 0x00 }, { 0x50c, 0x4f }, { 0x50d, 0xa4 },
190153c3c4d0Sstsp 	{ 0x50e, 0x00 }, { 0x50f, 0x00 }, { 0x512, 0x1c }, { 0x514, 0x0a },
190253c3c4d0Sstsp 	{ 0x515, 0x10 }, { 0x516, 0x0a }, { 0x517, 0x10 }, { 0x51a, 0x16 },
190353c3c4d0Sstsp 	{ 0x524, 0x0f }, { 0x525, 0x4f }, { 0x546, 0x40 }, { 0x547, 0x00 },
190453c3c4d0Sstsp 	{ 0x550, 0x10 }, { 0x551, 0x10 }, { 0x559, 0x02 }, { 0x55a, 0x02 },
190553c3c4d0Sstsp 	{ 0x55d, 0xff }, { 0x605, 0x30 }, { 0x608, 0x0e }, { 0x609, 0x2a },
190653c3c4d0Sstsp 	{ 0x652, 0x20 }, { 0x63c, 0x0a }, { 0x63d, 0x0e }, { 0x63e, 0x0a },
190753c3c4d0Sstsp 	{ 0x63f, 0x0e }, { 0x66e, 0x05 }, { 0x700, 0x21 }, { 0x701, 0x43 },
190853c3c4d0Sstsp 	{ 0x702, 0x65 }, { 0x703, 0x87 }, { 0x708, 0x21 }, { 0x709, 0x43 },
190953c3c4d0Sstsp 	{ 0x70a, 0x65 }, { 0x70b, 0x87 }
191090540544Sjmatthew }, rtl8192eu_mac[]={
191190540544Sjmatthew 	{ 0x011, 0xeb }, { 0x012, 0x07 }, { 0x014, 0x75 }, { 0x303, 0xa7 },
191290540544Sjmatthew 	{ 0x421, 0x0f }, { 0x428, 0x0a }, { 0x429, 0x10 }, { 0x430, 0x00 },
191390540544Sjmatthew 	{ 0x431, 0x00 }, { 0x432, 0x00 }, { 0x433, 0x01 }, { 0x434, 0x04 },
191490540544Sjmatthew 	{ 0x435, 0x05 }, { 0x436, 0x07 }, { 0x437, 0x08 }, { 0x43c, 0x04 },
191590540544Sjmatthew 	{ 0x43d, 0x05 }, { 0x43e, 0x07 }, { 0x43f, 0x08 }, { 0x440, 0x5d },
191690540544Sjmatthew 	{ 0x441, 0x01 }, { 0x442, 0x00 }, { 0x444, 0x10 }, { 0x445, 0x00 },
191790540544Sjmatthew 	{ 0x446, 0x00 }, { 0x447, 0x00 }, { 0x448, 0x00 }, { 0x449, 0xf0 },
191890540544Sjmatthew 	{ 0x44a, 0x0f }, { 0x44b, 0x3e }, { 0x44c, 0x10 }, { 0x44d, 0x00 },
191990540544Sjmatthew 	{ 0x44e, 0x00 }, { 0x44f, 0x00 }, { 0x450, 0x00 }, { 0x451, 0xf0 },
192090540544Sjmatthew 	{ 0x452, 0x0f }, { 0x453, 0x00 }, { 0x456, 0x5e }, { 0x460, 0x66 },
192190540544Sjmatthew 	{ 0x461, 0x66 }, { 0x4c8, 0xff }, { 0x4c9, 0x08 }, { 0x4cc, 0xff },
192290540544Sjmatthew 	{ 0x4cd, 0xff }, { 0x4ce, 0x01 }, { 0x500, 0x26 }, { 0x501, 0xa2 },
192390540544Sjmatthew 	{ 0x502, 0x2f }, { 0x503, 0x00 }, { 0x504, 0x28 }, { 0x505, 0xa3 },
192490540544Sjmatthew 	{ 0x506, 0x5e }, { 0x507, 0x00 }, { 0x508, 0x2b }, { 0x509, 0xa4 },
192590540544Sjmatthew 	{ 0x50a, 0x5e }, { 0x50b, 0x00 }, { 0x50c, 0x4f }, { 0x50d, 0xa4 },
192690540544Sjmatthew 	{ 0x50e, 0x00 }, { 0x50f, 0x00 }, { 0x512, 0x1c }, { 0x514, 0x0a },
192790540544Sjmatthew 	{ 0x516, 0x0a }, { 0x525, 0x4f }, { 0x540, 0x12 }, { 0x541, 0x64 },
192890540544Sjmatthew 	{ 0x550, 0x10 }, { 0x551, 0x10 }, { 0x559, 0x02 }, { 0x55c, 0x50 },
192990540544Sjmatthew 	{ 0x55d, 0xff }, { 0x605, 0x30 }, { 0x608, 0x0e }, { 0x609, 0x2a },
193090540544Sjmatthew 	{ 0x620, 0xff }, { 0x621, 0xff }, { 0x622, 0xff }, { 0x623, 0xff },
193190540544Sjmatthew 	{ 0x624, 0xff }, { 0x625, 0xff }, { 0x626, 0xff }, { 0x627, 0xff },
193290540544Sjmatthew 	{ 0x638, 0x50 }, { 0x63c, 0x0a }, { 0x63d, 0x0a }, { 0x63e, 0x0e },
193390540544Sjmatthew 	{ 0x63f, 0x0e }, { 0x640, 0x40 }, { 0x642, 0x40 }, { 0x643, 0x00 },
193490540544Sjmatthew 	{ 0x652, 0x2b }, { 0x66e, 0x05 }, { 0x700, 0x21 }, { 0x701, 0x43 },
193590540544Sjmatthew 	{ 0x702, 0x65 }, { 0x703, 0x87 }, { 0x708, 0x21 }, { 0x709, 0x43 },
193690540544Sjmatthew 	{ 0x70a, 0x65 }, { 0x70b, 0x87 }
193753c3c4d0Sstsp };
193853c3c4d0Sstsp 
193953c3c4d0Sstsp /*
194053c3c4d0Sstsp  * Baseband initialization values.
194153c3c4d0Sstsp  */
194253c3c4d0Sstsp struct r92c_bb_prog {
194353c3c4d0Sstsp 	int		count;
194453c3c4d0Sstsp 	const uint16_t	*regs;
194553c3c4d0Sstsp 	const uint32_t	*vals;
194653c3c4d0Sstsp 	int		agccount;
194753c3c4d0Sstsp 	const uint32_t	*agcvals;
194853c3c4d0Sstsp };
194953c3c4d0Sstsp 
195053c3c4d0Sstsp /*
195153c3c4d0Sstsp  * RTL8192CU and RTL8192CE-VAU.
195253c3c4d0Sstsp  */
195353c3c4d0Sstsp static const uint32_t rtl8192ce_bb_vals_1t[] = {
195453c3c4d0Sstsp 	0x0011800f, 0x00ffdb83, 0x80040000, 0x00000001, 0x0000fc00,
195553c3c4d0Sstsp 	0x0000000a, 0x10005388, 0x020c3d10, 0x02200385, 0x00000000,
195653c3c4d0Sstsp 	0x01000100, 0x00390004, 0x00000000, 0x00000000, 0x00000000,
195753c3c4d0Sstsp 	0x00000000, 0x00000000, 0x00000000, 0x00010000, 0x00000000,
195853c3c4d0Sstsp 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x569a569a,
195953c3c4d0Sstsp 	0x001b25a4, 0x66e60230, 0x061f0130, 0x00000000, 0x32323200,
196053c3c4d0Sstsp 	0x07000700, 0x22004000, 0x00000808, 0x00000000, 0xc0083070,
196153c3c4d0Sstsp 	0x000004d5, 0x00000000, 0xccc000c0, 0x00000800, 0xfffffffe,
196253c3c4d0Sstsp 	0x40302010, 0x00706050, 0x00000000, 0x00000023, 0x00000000,
196353c3c4d0Sstsp 	0x81121111, 0x00d047c8, 0x80ff000c, 0x8c838300, 0x2e68120f,
196453c3c4d0Sstsp 	0x9500bb78, 0x11144028, 0x00881117, 0x89140f00, 0x1a1b0000,
196553c3c4d0Sstsp 	0x090e1317, 0x00000204, 0x00d30000, 0x101fbf00, 0x00000007,
196653c3c4d0Sstsp 	0x48071d40, 0x03a05611, 0x000000e4, 0x6c6c6c6c, 0x08800000,
196753c3c4d0Sstsp 	0x40000100, 0x08800000, 0x40000100, 0x00000000, 0x00000000,
196853c3c4d0Sstsp 	0x00000000, 0x00000000, 0x69e9ac44, 0x469652cf, 0x49795994,
196953c3c4d0Sstsp 	0x0a97971c, 0x1f7c403f, 0x000100b7, 0xec020107, 0x007f037f,
197053c3c4d0Sstsp 	0x69543420, 0x43bc0094, 0x69543420, 0x433c0094, 0x00000000,
197153c3c4d0Sstsp 	0x5116848b, 0x47c00bff, 0x00000036, 0x2c7f000d, 0x018610db,
197253c3c4d0Sstsp 	0x0000001f, 0x00b91612, 0x40000100, 0x20f60000, 0x40000100,
197353c3c4d0Sstsp 	0x20200000, 0x00121820, 0x00000000, 0x00121820, 0x00007f7f,
197453c3c4d0Sstsp 	0x00000000, 0x00000080, 0x00000000, 0x00000000, 0x00000000,
197553c3c4d0Sstsp 	0x00000000, 0x00000000, 0x28000000, 0x00000000, 0x00000000,
197653c3c4d0Sstsp 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x64b22427,
197753c3c4d0Sstsp 	0x00766932, 0x00222222, 0x00000000, 0x37644302, 0x2f97d40c,
197853c3c4d0Sstsp 	0x00080740, 0x00020401, 0x0000907f, 0x20010201, 0xa0633333,
197953c3c4d0Sstsp 	0x3333bc43, 0x7a8f5b6b, 0xcc979975, 0x00000000, 0x80608000,
198053c3c4d0Sstsp 	0x00000000, 0x00027293, 0x00000000, 0x00000000, 0x00000000,
198153c3c4d0Sstsp 	0x00000000, 0x6437140a, 0x00000000, 0x00000000, 0x30032064,
198253c3c4d0Sstsp 	0x4653de68, 0x04518a3c, 0x00002101, 0x2a201c16, 0x1812362e,
198353c3c4d0Sstsp 	0x322c2220, 0x000e3c24, 0x2a2a2a2a, 0x2a2a2a2a, 0x03902a2a,
198453c3c4d0Sstsp 	0x2a2a2a2a, 0x2a2a2a2a, 0x2a2a2a2a, 0x2a2a2a2a, 0x00000000,
198553c3c4d0Sstsp 	0x1000dc1f, 0x10008c1f, 0x02140102, 0x681604c2, 0x01007c00,
198653c3c4d0Sstsp 	0x01004800, 0xfb000000, 0x000028d1, 0x1000dc1f, 0x10008c1f,
198753c3c4d0Sstsp 	0x02140102, 0x28160d05, 0x00000010, 0x001b25a4, 0x631b25a0,
198853c3c4d0Sstsp 	0x631b25a0, 0x081b25a0, 0x081b25a0, 0x081b25a0, 0x081b25a0,
198953c3c4d0Sstsp 	0x631b25a0, 0x081b25a0, 0x631b25a0, 0x631b25a0, 0x631b25a0,
199053c3c4d0Sstsp 	0x631b25a0, 0x001b25a0, 0x001b25a0, 0x6b1b25a0, 0x00000003,
199153c3c4d0Sstsp 	0x00000000, 0x00000300,
199253c3c4d0Sstsp };
199353c3c4d0Sstsp 
199453c3c4d0Sstsp static const uint16_t rtl8192ce_bb_regs[] = {
199553c3c4d0Sstsp 	0x024, 0x028, 0x800, 0x804, 0x808, 0x80c, 0x810, 0x814, 0x818,
199653c3c4d0Sstsp 	0x81c, 0x820, 0x824, 0x828, 0x82c, 0x830, 0x834, 0x838, 0x83c,
199753c3c4d0Sstsp 	0x840, 0x844, 0x848, 0x84c, 0x850, 0x854, 0x858, 0x85c, 0x860,
199853c3c4d0Sstsp 	0x864, 0x868, 0x86c, 0x870, 0x874, 0x878, 0x87c, 0x880, 0x884,
199953c3c4d0Sstsp 	0x888, 0x88c, 0x890, 0x894, 0x898, 0x89c, 0x900, 0x904, 0x908,
200053c3c4d0Sstsp 	0x90c, 0xa00, 0xa04, 0xa08, 0xa0c, 0xa10, 0xa14, 0xa18, 0xa1c,
200153c3c4d0Sstsp 	0xa20, 0xa24, 0xa28, 0xa2c, 0xa70, 0xa74, 0xc00, 0xc04, 0xc08,
200253c3c4d0Sstsp 	0xc0c, 0xc10, 0xc14, 0xc18, 0xc1c, 0xc20, 0xc24, 0xc28, 0xc2c,
200353c3c4d0Sstsp 	0xc30, 0xc34, 0xc38, 0xc3c, 0xc40, 0xc44, 0xc48, 0xc4c, 0xc50,
200453c3c4d0Sstsp 	0xc54, 0xc58, 0xc5c, 0xc60, 0xc64, 0xc68, 0xc6c, 0xc70, 0xc74,
200553c3c4d0Sstsp 	0xc78, 0xc7c, 0xc80, 0xc84, 0xc88, 0xc8c, 0xc90, 0xc94, 0xc98,
200653c3c4d0Sstsp 	0xc9c, 0xca0, 0xca4, 0xca8, 0xcac, 0xcb0, 0xcb4, 0xcb8, 0xcbc,
200753c3c4d0Sstsp 	0xcc0, 0xcc4, 0xcc8, 0xccc, 0xcd0, 0xcd4, 0xcd8, 0xcdc, 0xce0,
200853c3c4d0Sstsp 	0xce4, 0xce8, 0xcec, 0xd00, 0xd04, 0xd08, 0xd0c, 0xd10, 0xd14,
200953c3c4d0Sstsp 	0xd18, 0xd2c, 0xd30, 0xd34, 0xd38, 0xd3c, 0xd40, 0xd44, 0xd48,
201053c3c4d0Sstsp 	0xd4c, 0xd50, 0xd54, 0xd58, 0xd5c, 0xd60, 0xd64, 0xd68, 0xd6c,
201153c3c4d0Sstsp 	0xd70, 0xd74, 0xd78, 0xe00, 0xe04, 0xe08, 0xe10, 0xe14, 0xe18,
201253c3c4d0Sstsp 	0xe1c, 0xe28, 0xe30, 0xe34, 0xe38, 0xe3c, 0xe40, 0xe44, 0xe48,
201353c3c4d0Sstsp 	0xe4c, 0xe50, 0xe54, 0xe58, 0xe5c, 0xe60, 0xe68, 0xe6c, 0xe70,
201453c3c4d0Sstsp 	0xe74, 0xe78, 0xe7c, 0xe80, 0xe84, 0xe88, 0xe8c, 0xed0, 0xed4,
201553c3c4d0Sstsp 	0xed8, 0xedc, 0xee0, 0xeec, 0xf14, 0xf4c, 0xf00
201653c3c4d0Sstsp };
201753c3c4d0Sstsp 
201853c3c4d0Sstsp static const uint32_t rtl8192ce_bb_vals[] = {
201953c3c4d0Sstsp 	0x0011800d, 0x00ffdb83, 0x80040002, 0x00000003, 0x0000fc00,
202053c3c4d0Sstsp 	0x0000000a, 0x10005388, 0x020c3d10, 0x02200385, 0x00000000,
202153c3c4d0Sstsp 	0x01000100, 0x00390004, 0x01000100, 0x00390004, 0x27272727,
202253c3c4d0Sstsp 	0x27272727, 0x27272727, 0x27272727, 0x00010000, 0x00010000,
202353c3c4d0Sstsp 	0x27272727, 0x27272727, 0x00000000, 0x00000000, 0x569a569a,
202453c3c4d0Sstsp 	0x0c1b25a4, 0x66e60230, 0x061f0130, 0x27272727, 0x2b2b2b27,
202553c3c4d0Sstsp 	0x07000700, 0x22184000, 0x08080808, 0x00000000, 0xc0083070,
202653c3c4d0Sstsp 	0x000004d5, 0x00000000, 0xcc0000c0, 0x00000800, 0xfffffffe,
202753c3c4d0Sstsp 	0x40302010, 0x00706050, 0x00000000, 0x00000023, 0x00000000,
202853c3c4d0Sstsp 	0x81121313, 0x00d047c8, 0x80ff000c, 0x8c838300, 0x2e68120f,
202953c3c4d0Sstsp 	0x9500bb78, 0x11144028, 0x00881117, 0x89140f00, 0x1a1b0000,
203053c3c4d0Sstsp 	0x090e1317, 0x00000204, 0x00d30000, 0x101fbf00, 0x00000007,
203153c3c4d0Sstsp 	0x48071d40, 0x03a05633, 0x000000e4, 0x6c6c6c6c, 0x08800000,
203253c3c4d0Sstsp 	0x40000100, 0x08800000, 0x40000100, 0x00000000, 0x00000000,
203353c3c4d0Sstsp 	0x00000000, 0x00000000, 0x69e9ac44, 0x469652cf, 0x49795994,
203453c3c4d0Sstsp 	0x0a97971c, 0x1f7c403f, 0x000100b7, 0xec020107, 0x007f037f,
203553c3c4d0Sstsp 	0x6954341e, 0x43bc0094, 0x6954341e, 0x433c0094, 0x00000000,
203653c3c4d0Sstsp 	0x5116848b, 0x47c00bff, 0x00000036, 0x2c7f000d, 0x018610db,
203753c3c4d0Sstsp 	0x0000001f, 0x00b91612, 0x40000100, 0x20f60000, 0x40000100,
203853c3c4d0Sstsp 	0x20200000, 0x00121820, 0x00000000, 0x00121820, 0x00007f7f,
203953c3c4d0Sstsp 	0x00000000, 0x00000080, 0x00000000, 0x00000000, 0x00000000,
204053c3c4d0Sstsp 	0x00000000, 0x00000000, 0x28000000, 0x00000000, 0x00000000,
204153c3c4d0Sstsp 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x64b22427,
204253c3c4d0Sstsp 	0x00766932, 0x00222222, 0x00000000, 0x37644302, 0x2f97d40c,
204353c3c4d0Sstsp 	0x00080740, 0x00020403, 0x0000907f, 0x20010201, 0xa0633333,
204453c3c4d0Sstsp 	0x3333bc43, 0x7a8f5b6b, 0xcc979975, 0x00000000, 0x80608000,
204553c3c4d0Sstsp 	0x00000000, 0x00027293, 0x00000000, 0x00000000, 0x00000000,
204653c3c4d0Sstsp 	0x00000000, 0x6437140a, 0x00000000, 0x00000000, 0x30032064,
204753c3c4d0Sstsp 	0x4653de68, 0x04518a3c, 0x00002101, 0x2a201c16, 0x1812362e,
204853c3c4d0Sstsp 	0x322c2220, 0x000e3c24, 0x2a2a2a2a, 0x2a2a2a2a, 0x03902a2a,
204953c3c4d0Sstsp 	0x2a2a2a2a, 0x2a2a2a2a, 0x2a2a2a2a, 0x2a2a2a2a, 0x00000000,
205053c3c4d0Sstsp 	0x1000dc1f, 0x10008c1f, 0x02140102, 0x681604c2, 0x01007c00,
205153c3c4d0Sstsp 	0x01004800, 0xfb000000, 0x000028d1, 0x1000dc1f, 0x10008c1f,
205253c3c4d0Sstsp 	0x02140102, 0x28160d05, 0x00000010, 0x001b25a4, 0x63db25a4,
205353c3c4d0Sstsp 	0x63db25a4, 0x0c1b25a4, 0x0c1b25a4, 0x0c1b25a4, 0x0c1b25a4,
205453c3c4d0Sstsp 	0x63db25a4, 0x0c1b25a4, 0x63db25a4, 0x63db25a4, 0x63db25a4,
205553c3c4d0Sstsp 	0x63db25a4, 0x001b25a4, 0x001b25a4, 0x6fdb25a4, 0x00000003,
205653c3c4d0Sstsp 	0x00000000, 0x00000300
205753c3c4d0Sstsp };
205853c3c4d0Sstsp 
205953c3c4d0Sstsp static const uint32_t rtl8192ce_bb_vals_2t[] = {
206053c3c4d0Sstsp 	0x0011800f, 0x00ffdb83, 0x80040002, 0x00000003, 0x0000fc00,
206153c3c4d0Sstsp 	0x0000000a, 0x10005388, 0x020c3d10, 0x02200385, 0x00000000,
206253c3c4d0Sstsp 	0x01000100, 0x00390004, 0x01000100, 0x00390004, 0x27272727,
206353c3c4d0Sstsp 	0x27272727, 0x27272727, 0x27272727, 0x00010000, 0x00010000,
206453c3c4d0Sstsp 	0x27272727, 0x27272727, 0x00000000, 0x00000000, 0x569a569a,
206553c3c4d0Sstsp 	0x0c1b25a4, 0x66e60230, 0x061f0130, 0x27272727, 0x2b2b2b27,
206653c3c4d0Sstsp 	0x07000700, 0x22184000, 0x08080808, 0x00000000, 0xc0083070,
206753c3c4d0Sstsp 	0x000004d5, 0x00000000, 0xcc0000c0, 0x00000800, 0xfffffffe,
206853c3c4d0Sstsp 	0x40302010, 0x00706050, 0x00000000, 0x00000023, 0x00000000,
206953c3c4d0Sstsp 	0x81121313, 0x00d047c8, 0x80ff000c, 0x8c838300, 0x2e68120f,
207053c3c4d0Sstsp 	0x9500bb78, 0x11144028, 0x00881117, 0x89140f00, 0x1a1b0000,
207153c3c4d0Sstsp 	0x090e1317, 0x00000204, 0x00d30000, 0x101fbf00, 0x00000007,
207253c3c4d0Sstsp 	0x48071d40, 0x03a05633, 0x000000e4, 0x6c6c6c6c, 0x08800000,
207353c3c4d0Sstsp 	0x40000100, 0x08800000, 0x40000100, 0x00000000, 0x00000000,
207453c3c4d0Sstsp 	0x00000000, 0x00000000, 0x69e9ac44, 0x469652cf, 0x49795994,
207553c3c4d0Sstsp 	0x0a97971c, 0x1f7c403f, 0x000100b7, 0xec020107, 0x007f037f,
207653c3c4d0Sstsp 	0x69543420, 0x43bc0094, 0x69543420, 0x433c0094, 0x00000000,
207753c3c4d0Sstsp 	0x5116848b, 0x47c00bff, 0x00000036, 0x2c7f000d, 0x018610db,
207853c3c4d0Sstsp 	0x0000001f, 0x00b91612, 0x40000100, 0x20f60000, 0x40000100,
207953c3c4d0Sstsp 	0x20200000, 0x00121820, 0x00000000, 0x00121820, 0x00007f7f,
208053c3c4d0Sstsp 	0x00000000, 0x00000080, 0x00000000, 0x00000000, 0x00000000,
208153c3c4d0Sstsp 	0x00000000, 0x00000000, 0x28000000, 0x00000000, 0x00000000,
208253c3c4d0Sstsp 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x64b22427,
208353c3c4d0Sstsp 	0x00766932, 0x00222222, 0x00000000, 0x37644302, 0x2f97d40c,
208453c3c4d0Sstsp 	0x00080740, 0x00020403, 0x0000907f, 0x20010201, 0xa0633333,
208553c3c4d0Sstsp 	0x3333bc43, 0x7a8f5b6b, 0xcc979975, 0x00000000, 0x80608000,
208653c3c4d0Sstsp 	0x00000000, 0x00027293, 0x00000000, 0x00000000, 0x00000000,
208753c3c4d0Sstsp 	0x00000000, 0x6437140a, 0x00000000, 0x00000000, 0x30032064,
208853c3c4d0Sstsp 	0x4653de68, 0x04518a3c, 0x00002101, 0x2a201c16, 0x1812362e,
208953c3c4d0Sstsp 	0x322c2220, 0x000e3c24, 0x2a2a2a2a, 0x2a2a2a2a, 0x03902a2a,
209053c3c4d0Sstsp 	0x2a2a2a2a, 0x2a2a2a2a, 0x2a2a2a2a, 0x2a2a2a2a, 0x00000000,
209153c3c4d0Sstsp 	0x1000dc1f, 0x10008c1f, 0x02140102, 0x681604c2, 0x01007c00,
209253c3c4d0Sstsp 	0x01004800, 0xfb000000, 0x000028d1, 0x1000dc1f, 0x10008c1f,
209353c3c4d0Sstsp 	0x02140102, 0x28160d05, 0x00000010, 0x001b25a4, 0x63db25a4,
209453c3c4d0Sstsp 	0x63db25a4, 0x0c1b25a4, 0x0c1b25a4, 0x0c1b25a4, 0x0c1b25a4,
209553c3c4d0Sstsp 	0x63db25a4, 0x0c1b25a4, 0x63db25a4, 0x63db25a4, 0x63db25a4,
209653c3c4d0Sstsp 	0x63db25a4, 0x001b25a4, 0x001b25a4, 0x6fdb25a4, 0x00000003,
209753c3c4d0Sstsp 	0x00000000, 0x00000300
209853c3c4d0Sstsp };
209953c3c4d0Sstsp static const uint32_t rtl8192ce_agc_vals[] = {
210053c3c4d0Sstsp 	0x7b000001, 0x7b010001, 0x7b020001, 0x7b030001, 0x7b040001,
210153c3c4d0Sstsp 	0x7b050001, 0x7a060001, 0x79070001, 0x78080001, 0x77090001,
210253c3c4d0Sstsp 	0x760a0001, 0x750b0001, 0x740c0001, 0x730d0001, 0x720e0001,
210353c3c4d0Sstsp 	0x710f0001, 0x70100001, 0x6f110001, 0x6e120001, 0x6d130001,
210453c3c4d0Sstsp 	0x6c140001, 0x6b150001, 0x6a160001, 0x69170001, 0x68180001,
210553c3c4d0Sstsp 	0x67190001, 0x661a0001, 0x651b0001, 0x641c0001, 0x631d0001,
210653c3c4d0Sstsp 	0x621e0001, 0x611f0001, 0x60200001, 0x49210001, 0x48220001,
210753c3c4d0Sstsp 	0x47230001, 0x46240001, 0x45250001, 0x44260001, 0x43270001,
210853c3c4d0Sstsp 	0x42280001, 0x41290001, 0x402a0001, 0x262b0001, 0x252c0001,
210953c3c4d0Sstsp 	0x242d0001, 0x232e0001, 0x222f0001, 0x21300001, 0x20310001,
211053c3c4d0Sstsp 	0x06320001, 0x05330001, 0x04340001, 0x03350001, 0x02360001,
211153c3c4d0Sstsp 	0x01370001, 0x00380001, 0x00390001, 0x003a0001, 0x003b0001,
211253c3c4d0Sstsp 	0x003c0001, 0x003d0001, 0x003e0001, 0x003f0001, 0x7b400001,
211353c3c4d0Sstsp 	0x7b410001, 0x7b420001, 0x7b430001, 0x7b440001, 0x7b450001,
211453c3c4d0Sstsp 	0x7a460001, 0x79470001, 0x78480001, 0x77490001, 0x764a0001,
211553c3c4d0Sstsp 	0x754b0001, 0x744c0001, 0x734d0001, 0x724e0001, 0x714f0001,
211653c3c4d0Sstsp 	0x70500001, 0x6f510001, 0x6e520001, 0x6d530001, 0x6c540001,
211753c3c4d0Sstsp 	0x6b550001, 0x6a560001, 0x69570001, 0x68580001, 0x67590001,
211853c3c4d0Sstsp 	0x665a0001, 0x655b0001, 0x645c0001, 0x635d0001, 0x625e0001,
211953c3c4d0Sstsp 	0x615f0001, 0x60600001, 0x49610001, 0x48620001, 0x47630001,
212053c3c4d0Sstsp 	0x46640001, 0x45650001, 0x44660001, 0x43670001, 0x42680001,
212153c3c4d0Sstsp 	0x41690001, 0x406a0001, 0x266b0001, 0x256c0001, 0x246d0001,
212253c3c4d0Sstsp 	0x236e0001, 0x226f0001, 0x21700001, 0x20710001, 0x06720001,
212353c3c4d0Sstsp 	0x05730001, 0x04740001, 0x03750001, 0x02760001, 0x01770001,
212453c3c4d0Sstsp 	0x00780001, 0x00790001, 0x007a0001, 0x007b0001, 0x007c0001,
212553c3c4d0Sstsp 	0x007d0001, 0x007e0001, 0x007f0001, 0x3800001e, 0x3801001e,
212653c3c4d0Sstsp 	0x3802001e, 0x3803001e, 0x3804001e, 0x3805001e, 0x3806001e,
212753c3c4d0Sstsp 	0x3807001e, 0x3808001e, 0x3c09001e, 0x3e0a001e, 0x400b001e,
212853c3c4d0Sstsp 	0x440c001e, 0x480d001e, 0x4c0e001e, 0x500f001e, 0x5210001e,
212953c3c4d0Sstsp 	0x5611001e, 0x5a12001e, 0x5e13001e, 0x6014001e, 0x6015001e,
213053c3c4d0Sstsp 	0x6016001e, 0x6217001e, 0x6218001e, 0x6219001e, 0x621a001e,
213153c3c4d0Sstsp 	0x621b001e, 0x621c001e, 0x621d001e, 0x621e001e, 0x621f001e
213253c3c4d0Sstsp };
213353c3c4d0Sstsp 
213453c3c4d0Sstsp static const struct r92c_bb_prog rtl8192ce_bb_prog = {
213553c3c4d0Sstsp 	nitems(rtl8192ce_bb_regs),
213653c3c4d0Sstsp 	rtl8192ce_bb_regs,
213753c3c4d0Sstsp 	rtl8192ce_bb_vals,
213853c3c4d0Sstsp 	nitems(rtl8192ce_agc_vals),
213953c3c4d0Sstsp 	rtl8192ce_agc_vals
214053c3c4d0Sstsp };
214153c3c4d0Sstsp 
214253c3c4d0Sstsp static const struct r92c_bb_prog rtl8192ce_bb_prog_2t = {
214353c3c4d0Sstsp 	nitems(rtl8192ce_bb_regs),
214453c3c4d0Sstsp 	rtl8192ce_bb_regs,
214553c3c4d0Sstsp 	rtl8192ce_bb_vals_2t,
214653c3c4d0Sstsp 	nitems(rtl8192ce_agc_vals),
214753c3c4d0Sstsp 	rtl8192ce_agc_vals
214853c3c4d0Sstsp };
214953c3c4d0Sstsp 
215053c3c4d0Sstsp static const struct r92c_bb_prog rtl8192ce_bb_prog_1t = {
215153c3c4d0Sstsp 	nitems(rtl8192ce_bb_regs),
215253c3c4d0Sstsp 	rtl8192ce_bb_regs,
215353c3c4d0Sstsp 	rtl8192ce_bb_vals_1t,
215453c3c4d0Sstsp 	nitems(rtl8192ce_agc_vals),
215553c3c4d0Sstsp 	rtl8192ce_agc_vals
215653c3c4d0Sstsp };
215753c3c4d0Sstsp 
215853c3c4d0Sstsp /*
215953c3c4d0Sstsp  * RTL8188CU.
216053c3c4d0Sstsp  */
216153c3c4d0Sstsp static const uint32_t rtl8192cu_bb_vals[] = {
216253c3c4d0Sstsp 	0x0011800d, 0x00ffdb83, 0x80040002, 0x00000003, 0x0000fc00,
216353c3c4d0Sstsp 	0x0000000a, 0x10005388, 0x020c3d10, 0x02200385, 0x00000000,
216453c3c4d0Sstsp 	0x01000100, 0x00390004, 0x01000100, 0x00390004, 0x27272727,
216553c3c4d0Sstsp 	0x27272727, 0x27272727, 0x27272727, 0x00010000, 0x00010000,
216653c3c4d0Sstsp 	0x27272727, 0x27272727, 0x00000000, 0x00000000, 0x569a569a,
216753c3c4d0Sstsp 	0x0c1b25a4, 0x66e60230, 0x061f0130, 0x27272727, 0x2b2b2b27,
216853c3c4d0Sstsp 	0x07000700, 0x22184000, 0x08080808, 0x00000000, 0xc0083070,
216953c3c4d0Sstsp 	0x000004d5, 0x00000000, 0xcc0000c0, 0x00000800, 0xfffffffe,
217053c3c4d0Sstsp 	0x40302010, 0x00706050, 0x00000000, 0x00000023, 0x00000000,
217153c3c4d0Sstsp 	0x81121313, 0x00d047c8, 0x80ff000c, 0x8c838300, 0x2e68120f,
217253c3c4d0Sstsp 	0x9500bb78, 0x11144028, 0x00881117, 0x89140f00, 0x1a1b0000,
217353c3c4d0Sstsp 	0x090e1317, 0x00000204, 0x00d30000, 0x101fbf00, 0x00000007,
217453c3c4d0Sstsp 	0x48071d40, 0x03a05633, 0x000000e4, 0x6c6c6c6c, 0x08800000,
217553c3c4d0Sstsp 	0x40000100, 0x08800000, 0x40000100, 0x00000000, 0x00000000,
217653c3c4d0Sstsp 	0x00000000, 0x00000000, 0x69e9ac44, 0x469652cf, 0x49795994,
217753c3c4d0Sstsp 	0x0a97971c, 0x1f7c403f, 0x000100b7, 0xec020107, 0x007f037f,
217853c3c4d0Sstsp 	0x6954341e, 0x43bc0094, 0x6954341e, 0x433c0094, 0x00000000,
217953c3c4d0Sstsp 	0x5116848b, 0x47c00bff, 0x00000036, 0x2c7f000d, 0x0186115b,
218053c3c4d0Sstsp 	0x0000001f, 0x00b99612, 0x40000100, 0x20f60000, 0x40000100,
218153c3c4d0Sstsp 	0x20200000, 0x00121820, 0x00000000, 0x00121820, 0x00007f7f,
218253c3c4d0Sstsp 	0x00000000, 0x00000080, 0x00000000, 0x00000000, 0x00000000,
218353c3c4d0Sstsp 	0x00000000, 0x00000000, 0x28000000, 0x00000000, 0x00000000,
218453c3c4d0Sstsp 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x64b22427,
218553c3c4d0Sstsp 	0x00766932, 0x00222222, 0x00000000, 0x37644302, 0x2f97d40c,
218653c3c4d0Sstsp 	0x00080740, 0x00020403, 0x0000907f, 0x20010201, 0xa0633333,
218753c3c4d0Sstsp 	0x3333bc43, 0x7a8f5b6b, 0xcc979975, 0x00000000, 0x80608000,
218853c3c4d0Sstsp 	0x00000000, 0x00027293, 0x00000000, 0x00000000, 0x00000000,
218953c3c4d0Sstsp 	0x00000000, 0x6437140a, 0x00000000, 0x00000000, 0x30032064,
219053c3c4d0Sstsp 	0x4653de68, 0x04518a3c, 0x00002101, 0x2a201c16, 0x1812362e,
219153c3c4d0Sstsp 	0x322c2220, 0x000e3c24, 0x2a2a2a2a, 0x2a2a2a2a, 0x03902a2a,
219253c3c4d0Sstsp 	0x2a2a2a2a, 0x2a2a2a2a, 0x2a2a2a2a, 0x2a2a2a2a, 0x00000000,
219353c3c4d0Sstsp 	0x1000dc1f, 0x10008c1f, 0x02140102, 0x681604c2, 0x01007c00,
219453c3c4d0Sstsp 	0x01004800, 0xfb000000, 0x000028d1, 0x1000dc1f, 0x10008c1f,
219553c3c4d0Sstsp 	0x02140102, 0x28160d05, 0x00000010, 0x001b25a4, 0x63db25a4,
219653c3c4d0Sstsp 	0x63db25a4, 0x0c1b25a4, 0x0c1b25a4, 0x0c1b25a4, 0x0c1b25a4,
219753c3c4d0Sstsp 	0x63db25a4, 0x0c1b25a4, 0x63db25a4, 0x63db25a4, 0x63db25a4,
219853c3c4d0Sstsp 	0x63db25a4, 0x001b25a4, 0x001b25a4, 0x6fdb25a4, 0x00000003,
219953c3c4d0Sstsp 	0x00000000, 0x00000300
220053c3c4d0Sstsp };
220153c3c4d0Sstsp 
220253c3c4d0Sstsp static const struct r92c_bb_prog rtl8192cu_bb_prog = {
220353c3c4d0Sstsp 	nitems(rtl8192ce_bb_regs),
220453c3c4d0Sstsp 	rtl8192ce_bb_regs,
220553c3c4d0Sstsp 	rtl8192cu_bb_vals,
220653c3c4d0Sstsp 	nitems(rtl8192ce_agc_vals),
220753c3c4d0Sstsp 	rtl8192ce_agc_vals
220853c3c4d0Sstsp };
220953c3c4d0Sstsp 
221053c3c4d0Sstsp /*
221153c3c4d0Sstsp  * RTL8188CE-VAU.
221253c3c4d0Sstsp  */
221353c3c4d0Sstsp static const uint32_t rtl8188ce_bb_vals[] = {
221453c3c4d0Sstsp 	0x0011800d, 0x00ffdb83, 0x80040000, 0x00000001, 0x0000fc00,
221553c3c4d0Sstsp 	0x0000000a, 0x10005388, 0x020c3d10, 0x02200385, 0x00000000,
221653c3c4d0Sstsp 	0x01000100, 0x00390004, 0x00000000, 0x00000000, 0x00000000,
221753c3c4d0Sstsp 	0x00000000, 0x00000000, 0x00000000, 0x00010000, 0x00000000,
221853c3c4d0Sstsp 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x569a569a,
221953c3c4d0Sstsp 	0x001b25a4, 0x66e60230, 0x061f0130, 0x00000000, 0x32323200,
222053c3c4d0Sstsp 	0x07000700, 0x22004000, 0x00000808, 0x00000000, 0xc0083070,
222153c3c4d0Sstsp 	0x000004d5, 0x00000000, 0xccc000c0, 0x00000800, 0xfffffffe,
222253c3c4d0Sstsp 	0x40302010, 0x00706050, 0x00000000, 0x00000023, 0x00000000,
222353c3c4d0Sstsp 	0x81121111, 0x00d047c8, 0x80ff000c, 0x8c838300, 0x2e68120f,
222453c3c4d0Sstsp 	0x9500bb78, 0x11144028, 0x00881117, 0x89140f00, 0x1a1b0000,
222553c3c4d0Sstsp 	0x090e1317, 0x00000204, 0x00d30000, 0x101fbf00, 0x00000007,
222653c3c4d0Sstsp 	0x48071d40, 0x03a05611, 0x000000e4, 0x6c6c6c6c, 0x08800000,
222753c3c4d0Sstsp 	0x40000100, 0x08800000, 0x40000100, 0x00000000, 0x00000000,
222853c3c4d0Sstsp 	0x00000000, 0x00000000, 0x69e9ac44, 0x469652cf, 0x49795994,
222953c3c4d0Sstsp 	0x0a97971c, 0x1f7c403f, 0x000100b7, 0xec020107, 0x007f037f,
223053c3c4d0Sstsp 	0x6954341e, 0x43bc0094, 0x6954341e, 0x433c0094, 0x00000000,
223153c3c4d0Sstsp 	0x5116848b, 0x47c00bff, 0x00000036, 0x2c7f000d, 0x018610db,
223253c3c4d0Sstsp 	0x0000001f, 0x00b91612, 0x40000100, 0x20f60000, 0x40000100,
223353c3c4d0Sstsp 	0x20200000, 0x00121820, 0x00000000, 0x00121820, 0x00007f7f,
223453c3c4d0Sstsp 	0x00000000, 0x00000080, 0x00000000, 0x00000000, 0x00000000,
223553c3c4d0Sstsp 	0x00000000, 0x00000000, 0x28000000, 0x00000000, 0x00000000,
223653c3c4d0Sstsp 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x64b22427,
223753c3c4d0Sstsp 	0x00766932, 0x00222222, 0x00000000, 0x37644302, 0x2f97d40c,
223853c3c4d0Sstsp 	0x00080740, 0x00020401, 0x0000907f, 0x20010201, 0xa0633333,
223953c3c4d0Sstsp 	0x3333bc43, 0x7a8f5b6b, 0xcc979975, 0x00000000, 0x80608000,
224053c3c4d0Sstsp 	0x00000000, 0x00027293, 0x00000000, 0x00000000, 0x00000000,
224153c3c4d0Sstsp 	0x00000000, 0x6437140a, 0x00000000, 0x00000000, 0x30032064,
224253c3c4d0Sstsp 	0x4653de68, 0x04518a3c, 0x00002101, 0x2a201c16, 0x1812362e,
224353c3c4d0Sstsp 	0x322c2220, 0x000e3c24, 0x2a2a2a2a, 0x2a2a2a2a, 0x03902a2a,
224453c3c4d0Sstsp 	0x2a2a2a2a, 0x2a2a2a2a, 0x2a2a2a2a, 0x2a2a2a2a, 0x00000000,
224553c3c4d0Sstsp 	0x1000dc1f, 0x10008c1f, 0x02140102, 0x681604c2, 0x01007c00,
224653c3c4d0Sstsp 	0x01004800, 0xfb000000, 0x000028d1, 0x1000dc1f, 0x10008c1f,
224753c3c4d0Sstsp 	0x02140102, 0x28160d05, 0x00000008, 0x001b25a4, 0x631b25a0,
224853c3c4d0Sstsp 	0x631b25a0, 0x081b25a0, 0x081b25a0, 0x081b25a0, 0x081b25a0,
224953c3c4d0Sstsp 	0x631b25a0, 0x081b25a0, 0x631b25a0, 0x631b25a0, 0x631b25a0,
225053c3c4d0Sstsp 	0x631b25a0, 0x001b25a0, 0x001b25a0, 0x6b1b25a0, 0x00000003,
225153c3c4d0Sstsp 	0x00000000, 0x00000300
225253c3c4d0Sstsp };
225353c3c4d0Sstsp 
225453c3c4d0Sstsp static const uint32_t rtl8188ce_agc_vals[] = {
225553c3c4d0Sstsp 	0x7b000001, 0x7b010001, 0x7b020001, 0x7b030001, 0x7b040001,
225653c3c4d0Sstsp 	0x7b050001, 0x7a060001, 0x79070001, 0x78080001, 0x77090001,
225753c3c4d0Sstsp 	0x760a0001, 0x750b0001, 0x740c0001, 0x730d0001, 0x720e0001,
225853c3c4d0Sstsp 	0x710f0001, 0x70100001, 0x6f110001, 0x6e120001, 0x6d130001,
225953c3c4d0Sstsp 	0x6c140001, 0x6b150001, 0x6a160001, 0x69170001, 0x68180001,
226053c3c4d0Sstsp 	0x67190001, 0x661a0001, 0x651b0001, 0x641c0001, 0x631d0001,
226153c3c4d0Sstsp 	0x621e0001, 0x611f0001, 0x60200001, 0x49210001, 0x48220001,
226253c3c4d0Sstsp 	0x47230001, 0x46240001, 0x45250001, 0x44260001, 0x43270001,
226353c3c4d0Sstsp 	0x42280001, 0x41290001, 0x402a0001, 0x262b0001, 0x252c0001,
226453c3c4d0Sstsp 	0x242d0001, 0x232e0001, 0x222f0001, 0x21300001, 0x20310001,
226553c3c4d0Sstsp 	0x06320001, 0x05330001, 0x04340001, 0x03350001, 0x02360001,
226653c3c4d0Sstsp 	0x01370001, 0x00380001, 0x00390001, 0x003a0001, 0x003b0001,
226753c3c4d0Sstsp 	0x003c0001, 0x003d0001, 0x003e0001, 0x003f0001, 0x7b400001,
226853c3c4d0Sstsp 	0x7b410001, 0x7b420001, 0x7b430001, 0x7b440001, 0x7b450001,
226953c3c4d0Sstsp 	0x7a460001, 0x79470001, 0x78480001, 0x77490001, 0x764a0001,
227053c3c4d0Sstsp 	0x754b0001, 0x744c0001, 0x734d0001, 0x724e0001, 0x714f0001,
227153c3c4d0Sstsp 	0x70500001, 0x6f510001, 0x6e520001, 0x6d530001, 0x6c540001,
227253c3c4d0Sstsp 	0x6b550001, 0x6a560001, 0x69570001, 0x68580001, 0x67590001,
227353c3c4d0Sstsp 	0x665a0001, 0x655b0001, 0x645c0001, 0x635d0001, 0x625e0001,
227453c3c4d0Sstsp 	0x615f0001, 0x60600001, 0x49610001, 0x48620001, 0x47630001,
227553c3c4d0Sstsp 	0x46640001, 0x45650001, 0x44660001, 0x43670001, 0x42680001,
227653c3c4d0Sstsp 	0x41690001, 0x406a0001, 0x266b0001, 0x256c0001, 0x246d0001,
227753c3c4d0Sstsp 	0x236e0001, 0x226f0001, 0x21700001, 0x20710001, 0x06720001,
227853c3c4d0Sstsp 	0x05730001, 0x04740001, 0x03750001, 0x02760001, 0x01770001,
227953c3c4d0Sstsp 	0x00780001, 0x00790001, 0x007a0001, 0x007b0001, 0x007c0001,
228053c3c4d0Sstsp 	0x007d0001, 0x007e0001, 0x007f0001, 0x3800001e, 0x3801001e,
228153c3c4d0Sstsp 	0x3802001e, 0x3803001e, 0x3804001e, 0x3805001e, 0x3806001e,
228253c3c4d0Sstsp 	0x3807001e, 0x3808001e, 0x3c09001e, 0x3e0a001e, 0x400b001e,
228353c3c4d0Sstsp 	0x440c001e, 0x480d001e, 0x4c0e001e, 0x500f001e, 0x5210001e,
228453c3c4d0Sstsp 	0x5611001e, 0x5a12001e, 0x5e13001e, 0x6014001e, 0x6015001e,
228553c3c4d0Sstsp 	0x6016001e, 0x6217001e, 0x6218001e, 0x6219001e, 0x621a001e,
228653c3c4d0Sstsp 	0x621b001e, 0x621c001e, 0x621d001e, 0x621e001e, 0x621f001e
228753c3c4d0Sstsp };
228853c3c4d0Sstsp 
228953c3c4d0Sstsp static const struct r92c_bb_prog rtl8188ce_bb_prog = {
229053c3c4d0Sstsp 	nitems(rtl8192ce_bb_regs),
229153c3c4d0Sstsp 	rtl8192ce_bb_regs,
229253c3c4d0Sstsp 	rtl8188ce_bb_vals,
229353c3c4d0Sstsp 	nitems(rtl8188ce_agc_vals),
229453c3c4d0Sstsp 	rtl8188ce_agc_vals
229553c3c4d0Sstsp };
229653c3c4d0Sstsp 
229753c3c4d0Sstsp static const uint32_t rtl8188cu_bb_vals[] = {
229853c3c4d0Sstsp 	0x0011800d, 0x00ffdb83, 0x80040000, 0x00000001, 0x0000fc00,
229953c3c4d0Sstsp 	0x0000000a, 0x10005388, 0x020c3d10, 0x02200385, 0x00000000,
230053c3c4d0Sstsp 	0x01000100, 0x00390004, 0x00000000, 0x00000000, 0x00000000,
230153c3c4d0Sstsp 	0x00000000, 0x00000000, 0x00000000, 0x00010000, 0x00000000,
230253c3c4d0Sstsp 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x569a569a,
230353c3c4d0Sstsp 	0x001b25a4, 0x66e60230, 0x061f0130, 0x00000000, 0x32323200,
230453c3c4d0Sstsp 	0x07000700, 0x22004000, 0x00000808, 0x00000000, 0xc0083070,
230553c3c4d0Sstsp 	0x000004d5, 0x00000000, 0xccc000c0, 0x00000800, 0xfffffffe,
230653c3c4d0Sstsp 	0x40302010, 0x00706050, 0x00000000, 0x00000023, 0x00000000,
230753c3c4d0Sstsp 	0x81121111, 0x00d047c8, 0x80ff000c, 0x8c838300, 0x2e68120f,
230853c3c4d0Sstsp 	0x9500bb78, 0x11144028, 0x00881117, 0x89140f00, 0x1a1b0000,
230953c3c4d0Sstsp 	0x090e1317, 0x00000204, 0x00d30000, 0x101fbf00, 0x00000007,
231053c3c4d0Sstsp 	0x48071d40, 0x03a05611, 0x000000e4, 0x6c6c6c6c, 0x08800000,
231153c3c4d0Sstsp 	0x40000100, 0x08800000, 0x40000100, 0x00000000, 0x00000000,
231253c3c4d0Sstsp 	0x00000000, 0x00000000, 0x69e9ac44, 0x469652cf, 0x49795994,
231353c3c4d0Sstsp 	0x0a97971c, 0x1f7c403f, 0x000100b7, 0xec020107, 0x007f037f,
231453c3c4d0Sstsp 	0x6954341e, 0x43bc0094, 0x6954341e, 0x433c0094, 0x00000000,
231553c3c4d0Sstsp 	0x5116848b, 0x47c00bff, 0x00000036, 0x2c7f000d, 0x018610db,
231653c3c4d0Sstsp 	0x0000001f, 0x00b91612, 0x40000100, 0x20f60000, 0x40000100,
231753c3c4d0Sstsp 	0x20200000, 0x00121820, 0x00000000, 0x00121820, 0x00007f7f,
231853c3c4d0Sstsp 	0x00000000, 0x00000080, 0x00000000, 0x00000000, 0x00000000,
231953c3c4d0Sstsp 	0x00000000, 0x00000000, 0x28000000, 0x00000000, 0x00000000,
232053c3c4d0Sstsp 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x64b22427,
232153c3c4d0Sstsp 	0x00766932, 0x00222222, 0x00000000, 0x37644302, 0x2f97d40c,
232253c3c4d0Sstsp 	0x00080740, 0x00020401, 0x0000907f, 0x20010201, 0xa0633333,
232353c3c4d0Sstsp 	0x3333bc43, 0x7a8f5b6b, 0xcc979975, 0x00000000, 0x80608000,
232453c3c4d0Sstsp 	0x00000000, 0x00027293, 0x00000000, 0x00000000, 0x00000000,
232553c3c4d0Sstsp 	0x00000000, 0x6437140a, 0x00000000, 0x00000000, 0x30032064,
232653c3c4d0Sstsp 	0x4653de68, 0x04518a3c, 0x00002101, 0x2a201c16, 0x1812362e,
232753c3c4d0Sstsp 	0x322c2220, 0x000e3c24, 0x2a2a2a2a, 0x2a2a2a2a, 0x03902a2a,
232853c3c4d0Sstsp 	0x2a2a2a2a, 0x2a2a2a2a, 0x2a2a2a2a, 0x2a2a2a2a, 0x00000000,
232953c3c4d0Sstsp 	0x1000dc1f, 0x10008c1f, 0x02140102, 0x681604c2, 0x01007c00,
233053c3c4d0Sstsp 	0x01004800, 0xfb000000, 0x000028d1, 0x1000dc1f, 0x10008c1f,
233153c3c4d0Sstsp 	0x02140102, 0x28160d05, 0x00000008, 0x001b25a4, 0x631b25a0,
233253c3c4d0Sstsp 	0x631b25a0, 0x081b25a0, 0x081b25a0, 0x081b25a0, 0x081b25a0,
233353c3c4d0Sstsp 	0x631b25a0, 0x081b25a0, 0x631b25a0, 0x631b25a0, 0x631b25a0,
233453c3c4d0Sstsp 	0x631b25a0, 0x001b25a0, 0x001b25a0, 0x6b1b25a0, 0x00000003,
233553c3c4d0Sstsp 	0x00000000, 0x00000300
233653c3c4d0Sstsp };
233753c3c4d0Sstsp 
233853c3c4d0Sstsp static const struct r92c_bb_prog rtl8188cu_bb_prog = {
233953c3c4d0Sstsp 	nitems(rtl8192ce_bb_regs),
234053c3c4d0Sstsp 	rtl8192ce_bb_regs,
234153c3c4d0Sstsp 	rtl8188cu_bb_vals,
234253c3c4d0Sstsp 	nitems(rtl8188ce_agc_vals),
234353c3c4d0Sstsp 	rtl8188ce_agc_vals
234453c3c4d0Sstsp };
234553c3c4d0Sstsp 
234653c3c4d0Sstsp /*
234753c3c4d0Sstsp  * RTL8188EU.
234853c3c4d0Sstsp  */
234953c3c4d0Sstsp static const uint16_t rtl8188eu_bb_regs[] = {
23502f5d27e0Skevlo 	0x800, 0x804, 0x808, 0x80c, 0x810, 0x814, 0x818, 0x81c, 0x820,
23512f5d27e0Skevlo 	0x824, 0x828, 0x82c, 0x830, 0x834, 0x838, 0x83c, 0x840, 0x844,
23522f5d27e0Skevlo 	0x848, 0x84c, 0x850, 0x854, 0x858, 0x85c, 0x860, 0x864, 0x868,
23532f5d27e0Skevlo 	0x86c, 0x870, 0x874, 0x878, 0x87c, 0x880, 0x884, 0x888, 0x88c,
23542f5d27e0Skevlo 	0x890, 0x894, 0x898, 0x89c, 0x900, 0x904, 0x908, 0x90c, 0x910,
23552f5d27e0Skevlo 	0x914, 0xa00, 0xa04, 0xa08, 0xa0c, 0xa10, 0xa14, 0xa18, 0xa1c,
23562f5d27e0Skevlo 	0xa20, 0xa24, 0xa28, 0xa2c, 0xa70, 0xa74, 0xa78, 0xa7c, 0xa80,
23572f5d27e0Skevlo 	0xb2c, 0xc00, 0xc04, 0xc08, 0xc0c, 0xc10, 0xc14, 0xc18, 0xc1c,
23582f5d27e0Skevlo 	0xc20, 0xc24, 0xc28, 0xc2c, 0xc30, 0xc34, 0xc38, 0xc3c, 0xc40,
23592f5d27e0Skevlo 	0xc44, 0xc48, 0xc4c, 0xc50, 0xc54, 0xc58, 0xc5c, 0xc60, 0xc64,
23602f5d27e0Skevlo 	0xc68, 0xc6c, 0xc70, 0xc74, 0xc78, 0xc7c, 0xc80, 0xc84, 0xc88,
23612f5d27e0Skevlo 	0xc8c, 0xc90, 0xc94, 0xc98, 0xc9c, 0xca0, 0xca4, 0xca8, 0xcac,
23622f5d27e0Skevlo 	0xcb0, 0xcb4, 0xcb8, 0xcbc, 0xcc0, 0xcc4, 0xcc8, 0xccc, 0xcd0,
23632f5d27e0Skevlo 	0xcd4, 0xcd8, 0xcdc, 0xce0, 0xce4, 0xce8, 0xcec, 0xd00, 0xd04,
23642f5d27e0Skevlo 	0xd08, 0xd0c, 0xd10, 0xd14, 0xd18, 0xd2c, 0xd30, 0xd34, 0xd38,
23652f5d27e0Skevlo 	0xd3c, 0xd40, 0xd44, 0xd48, 0xd4c, 0xd50, 0xd54, 0xd58, 0xd5c,
23662f5d27e0Skevlo 	0xd60, 0xd64, 0xd68, 0xd6c, 0xd70, 0xd74, 0xd78, 0xe00, 0xe04,
23672f5d27e0Skevlo 	0xe08, 0xe10, 0xe14, 0xe18, 0xe1c, 0xe28, 0xe30, 0xe34, 0xe38,
23682f5d27e0Skevlo 	0xe3c, 0xe40, 0xe44, 0xe48, 0xe4c, 0xe50, 0xe54, 0xe58, 0xe5c,
23692f5d27e0Skevlo 	0xe60, 0xe68, 0xe6c, 0xe70, 0xe74, 0xe78, 0xe7c, 0xe80, 0xe84,
23702f5d27e0Skevlo 	0xe88, 0xe8c, 0xed0, 0xed4, 0xed8, 0xedc, 0xee0, 0xee8, 0xeec,
23712f5d27e0Skevlo 	0xf14, 0xf4c, 0xf00
237253c3c4d0Sstsp };
237353c3c4d0Sstsp 
237453c3c4d0Sstsp static const uint32_t rtl8188eu_bb_vals[] = {
237553c3c4d0Sstsp 	0x80040000, 0x00000003, 0x0000fc00, 0x0000000a, 0x10001331,
237653c3c4d0Sstsp 	0x020c3d10, 0x02200385, 0x00000000, 0x01000100, 0x00390204,
237753c3c4d0Sstsp 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
237853c3c4d0Sstsp 	0x00000000, 0x00010000, 0x00000000, 0x00000000, 0x00000000,
237953c3c4d0Sstsp 	0x00000000, 0x00000000, 0x569a11a9, 0x01000014, 0x66f60110,
238053c3c4d0Sstsp 	0x061f0649, 0x00000000, 0x27272700, 0x07000760, 0x25004000,
238153c3c4d0Sstsp 	0x00000808, 0x00000000, 0xb0000c1c, 0x00000001, 0x00000000,
238253c3c4d0Sstsp 	0xccc000c0, 0x00000800, 0xfffffffe, 0x40302010, 0x00706050,
238353c3c4d0Sstsp 	0x00000000, 0x00000023, 0x00000000, 0x81121111, 0x00000002,
238453c3c4d0Sstsp 	0x00000201, 0x00d047c8, 0x80ff000c, 0x8c838300, 0x2e7f120f,
238553c3c4d0Sstsp 	0x9500bb78, 0x1114d028, 0x00881117, 0x89140f00, 0x1a1b0000,
238653c3c4d0Sstsp 	0x090e1317, 0x00000204, 0x00d30000, 0x101fbf00, 0x00000007,
238753c3c4d0Sstsp 	0x00000900, 0x225b0606, 0x218075b1, 0x80000000, 0x48071d40,
238853c3c4d0Sstsp 	0x03a05611, 0x000000e4, 0x6c6c6c6c, 0x08800000, 0x40000100,
238953c3c4d0Sstsp 	0x08800000, 0x40000100, 0x00000000, 0x00000000, 0x00000000,
239053c3c4d0Sstsp 	0x00000000, 0x69e9ac47, 0x469652af, 0x49795994, 0x0a97971c,
239153c3c4d0Sstsp 	0x1f7c403f, 0x000100b7, 0xec020107, 0x007f037f, 0x69553420,
239253c3c4d0Sstsp 	0x43bc0094, 0x00013169, 0x00250492, 0x00000000, 0x7112848b,
239353c3c4d0Sstsp 	0x47c00bff, 0x00000036, 0x2c7f000d, 0x020610db, 0x0000001f,
239453c3c4d0Sstsp 	0x00b91612, 0x390000e4, 0x20f60000, 0x40000100, 0x20200000,
239553c3c4d0Sstsp 	0x00091521, 0x00000000, 0x00121820, 0x00007f7f, 0x00000000,
239653c3c4d0Sstsp 	0x000300a0, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
239753c3c4d0Sstsp 	0x00000000, 0x28000000, 0x00000000, 0x00000000, 0x00000000,
239853c3c4d0Sstsp 	0x00000000, 0x00000000, 0x00000000, 0x64b22427, 0x00766932,
239953c3c4d0Sstsp 	0x00222222, 0x00000000, 0x37644302, 0x2f97d40c, 0x00000740,
240053c3c4d0Sstsp 	0x00020401, 0x0000907f, 0x20010201, 0xa0633333, 0x3333bc43,
240153c3c4d0Sstsp 	0x7a8f5b6f, 0xcc979975, 0x00000000, 0x80608000, 0x00000000,
240253c3c4d0Sstsp 	0x00127353, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
240353c3c4d0Sstsp 	0x6437140a, 0x00000000, 0x00000282, 0x30032064, 0x4653de68,
240453c3c4d0Sstsp 	0x04518a3c, 0x00002101, 0x2a201c16, 0x1812362e, 0x322c2220,
240553c3c4d0Sstsp 	0x000e3c24, 0x2d2d2d2d, 0x2d2d2d2d, 0x0390272d, 0x2d2d2d2d,
240653c3c4d0Sstsp 	0x2d2d2d2d, 0x2d2d2d2d, 0x2d2d2d2d, 0x00000000, 0x1000dc1f,
240753c3c4d0Sstsp 	0x10008c1f, 0x02140102, 0x681604c2, 0x01007c00, 0x01004800,
240853c3c4d0Sstsp 	0xfb000000, 0x000028d1, 0x1000dc1f, 0x10008c1f, 0x02140102,
240953c3c4d0Sstsp 	0x28160d05, 0x00000008, 0x001b25a4, 0x00c00014, 0x00c00014,
241053c3c4d0Sstsp 	0x01000014, 0x01000014, 0x01000014, 0x01000014, 0x00c00014,
241153c3c4d0Sstsp 	0x01000014, 0x00c00014, 0x00c00014, 0x00c00014, 0x00c00014,
241253c3c4d0Sstsp 	0x00000014, 0x00000014, 0x21555448, 0x01c00014, 0x00000003,
241353c3c4d0Sstsp 	0x00000000, 0x00000300
241453c3c4d0Sstsp };
241553c3c4d0Sstsp 
241653c3c4d0Sstsp static const uint32_t rtl8188eu_agc_vals[] = {
241753c3c4d0Sstsp 	0xfb000001, 0xfb010001, 0xfb020001, 0xfb030001, 0xfb040001,
241853c3c4d0Sstsp 	0xfb050001, 0xfa060001, 0xf9070001, 0xf8080001, 0xf7090001,
241953c3c4d0Sstsp 	0xf60a0001, 0xf50b0001, 0xf40c0001, 0xf30d0001, 0xf20e0001,
242053c3c4d0Sstsp 	0xf10f0001, 0xf0100001, 0xef110001, 0xee120001, 0xed130001,
242153c3c4d0Sstsp 	0xec140001, 0xeb150001, 0xea160001, 0xe9170001, 0xe8180001,
242253c3c4d0Sstsp 	0xe7190001, 0xe61a0001, 0xe51b0001, 0xe41c0001, 0xe31d0001,
242353c3c4d0Sstsp 	0xe21e0001, 0xe11f0001, 0x8a200001, 0x89210001, 0x88220001,
242453c3c4d0Sstsp 	0x87230001, 0x86240001, 0x85250001, 0x84260001, 0x83270001,
242553c3c4d0Sstsp 	0x82280001, 0x6b290001, 0x6a2a0001, 0x692b0001, 0x682c0001,
242653c3c4d0Sstsp 	0x672d0001, 0x662e0001, 0x652f0001, 0x64300001, 0x63310001,
242753c3c4d0Sstsp 	0x62320001, 0x61330001, 0x46340001, 0x45350001, 0x44360001,
242853c3c4d0Sstsp 	0x43370001, 0x42380001, 0x41390001, 0x403a0001, 0x403b0001,
242953c3c4d0Sstsp 	0x403c0001, 0x403d0001, 0x403e0001, 0x403f0001, 0xfb400001,
243053c3c4d0Sstsp 	0xfb410001, 0xfb420001, 0xfb430001, 0xfb440001, 0xfb450001,
243153c3c4d0Sstsp 	0xfb460001, 0xfb470001, 0xfb480001, 0xfa490001, 0xf94a0001,
24325cc093eeSkevlo 	0xf84b0001, 0xf74c0001, 0xf64d0001, 0xf54e0001, 0xf44f0001,
243353c3c4d0Sstsp 	0xf3500001, 0xf2510001, 0xf1520001, 0xf0530001, 0xef540001,
243453c3c4d0Sstsp 	0xee550001, 0xed560001, 0xec570001, 0xeb580001, 0xea590001,
243553c3c4d0Sstsp 	0xe95a0001, 0xe85b0001, 0xe75c0001, 0xe65d0001, 0xe55e0001,
243653c3c4d0Sstsp 	0xe45f0001, 0xe3600001, 0xe2610001, 0xc3620001, 0xc2630001,
243753c3c4d0Sstsp 	0xc1640001, 0x8b650001, 0x8a660001, 0x89670001, 0x88680001,
243853c3c4d0Sstsp 	0x87690001, 0x866a0001, 0x856b0001, 0x846c0001, 0x676d0001,
243953c3c4d0Sstsp 	0x666e0001, 0x656f0001, 0x64700001, 0x63710001, 0x62720001,
244053c3c4d0Sstsp 	0x61730001, 0x60740001, 0x46750001, 0x45760001, 0x44770001,
244153c3c4d0Sstsp 	0x43780001, 0x42790001, 0x417a0001, 0x407b0001, 0x407c0001,
244253c3c4d0Sstsp 	0x407d0001, 0x407e0001, 0x407f0001
244353c3c4d0Sstsp };
244453c3c4d0Sstsp 
244553c3c4d0Sstsp static const struct r92c_bb_prog rtl8188eu_bb_prog = {
244653c3c4d0Sstsp 	nitems(rtl8188eu_bb_regs),
244753c3c4d0Sstsp 	rtl8188eu_bb_regs,
244853c3c4d0Sstsp 	rtl8188eu_bb_vals,
244953c3c4d0Sstsp 	nitems(rtl8188eu_agc_vals),
245053c3c4d0Sstsp 	rtl8188eu_agc_vals
245153c3c4d0Sstsp };
245253c3c4d0Sstsp 
245353c3c4d0Sstsp /*
2454067851b1Skevlo  * RTL8188FTV.
2455067851b1Skevlo  */
2456067851b1Skevlo static const uint16_t rtl8188ftv_bb_regs[] = {
2457067851b1Skevlo 	0x800, 0x804, 0x808, 0x80c, 0x810, 0x814, 0x818, 0x81c, 0x820,
2458067851b1Skevlo 	0x824, 0x828, 0x82c, 0x830, 0x834, 0x838, 0x83c, 0x840, 0x844,
2459067851b1Skevlo 	0x848, 0x84c, 0x850, 0x854, 0x858, 0x85c, 0x860, 0x864, 0x868,
2460067851b1Skevlo 	0x86c, 0x870, 0x874, 0x878, 0x87c, 0x880, 0x884, 0x888, 0x88c,
2461067851b1Skevlo 	0x890, 0x894, 0x898, 0x89c, 0x900, 0x904, 0x908, 0x90c, 0x910,
2462067851b1Skevlo 	0x914, 0x948, 0x94c, 0x950, 0x954, 0x958, 0x95c, 0x96c, 0xa00,
2463067851b1Skevlo 	0xa04, 0xa08, 0xa0c, 0xa10, 0xa14, 0xa18, 0xa1c, 0xa20, 0xa24,
2464067851b1Skevlo 	0xa28, 0xa2c, 0xa70, 0xa74, 0xa78, 0xa7c, 0xa80, 0xa84, 0xa88,
2465067851b1Skevlo 	0xa8c, 0xa90, 0xa94, 0xa98, 0xa9c, 0xaa0, 0xb2c, 0xc00, 0xc04,
2466067851b1Skevlo 	0xc08, 0xc0c, 0xc10, 0xc14, 0xc18, 0xc1c, 0xc20, 0xc24, 0xc28,
2467067851b1Skevlo 	0xc2c, 0xc30, 0xc34, 0xc38, 0xc3c, 0xc40, 0xc44, 0xc48, 0xc4c,
2468067851b1Skevlo 	0xc50, 0xc54, 0xc58, 0xc5c, 0xc60, 0xc64, 0xc68, 0xc6c, 0xc70,
2469067851b1Skevlo 	0xc74, 0xc78, 0xc7c, 0xc80, 0xc84, 0xc88, 0xc8c, 0xc90, 0xc94,
2470067851b1Skevlo 	0xc98, 0xc9c, 0xca0, 0xca4, 0xca8, 0xcac, 0xcb0, 0xcb4, 0xcb8,
2471067851b1Skevlo 	0xcbc, 0xcc0, 0xcc4, 0xcc8, 0xccc, 0xcd0, 0xcd4, 0xcd8, 0xcdc,
2472067851b1Skevlo 	0xce0, 0xce4, 0xce8, 0xcec, 0xd00, 0xd04, 0xd08, 0xd0c, 0xd10,
2473067851b1Skevlo 	0xd14, 0xd18, 0xd2c, 0xd30, 0xd34, 0xd38, 0xd3c, 0xd40, 0xd44,
2474067851b1Skevlo 	0xd48, 0xd4c, 0xd50, 0xd54, 0xd58, 0xd5c, 0xd60, 0xd64, 0xd68,
2475067851b1Skevlo 	0xd6c, 0xd70, 0xd74, 0xd78, 0xe00, 0xe04, 0xe08, 0xe10, 0xe14,
2476067851b1Skevlo 	0xe18, 0xe1c, 0xe28, 0xe30, 0xe34, 0xe38, 0xe3c, 0xe40, 0xe44,
2477067851b1Skevlo 	0xe48, 0xe4c, 0xe50, 0xe54, 0xe58, 0xe5c, 0xe60, 0xe60, 0xe64,
2478067851b1Skevlo 	0xe6c, 0xe70, 0xe74, 0xe78, 0xe7c, 0xe80, 0xe84, 0xe88, 0xe8c,
2479067851b1Skevlo 	0xed0, 0xed4, 0xed8, 0xedc, 0xee0, 0xeec, 0xf14, 0xf4c, 0xf00
2480067851b1Skevlo };
2481067851b1Skevlo 
2482067851b1Skevlo static const uint32_t rtl8188ftv_bb_vals[] = {
2483067851b1Skevlo 	0x80045700, 0x00000001, 0x0000fc00, 0x0000000a, 0x10001331,
2484067851b1Skevlo 	0x020c3d10, 0x00200385, 0x00000000, 0x01000100, 0x00390204,
2485067851b1Skevlo 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2486067851b1Skevlo 	0x00000000, 0x00010000, 0x00000000, 0x00000000, 0x00000000,
2487067851b1Skevlo 	0x00030000, 0x00000000, 0x569a569a, 0x569a569a, 0x00000130,
2488067851b1Skevlo 	0x00000000, 0x00000000, 0x27272700, 0x00000000, 0x25004000,
2489067851b1Skevlo 	0x00000808, 0x004f0201, 0xb0000b1e, 0x00000007, 0x00000000,
2490067851b1Skevlo 	0xccc000c0, 0x00000800, 0xfffffffe, 0x40302010, 0x00706050,
2491067851b1Skevlo 	0x00000000, 0x00000023, 0x00000000, 0x81121111, 0x00000002,
2492067851b1Skevlo 	0x00000201, 0x99000000, 0x00000010, 0x20003000, 0x4a880000,
2493067851b1Skevlo 	0x4bc5d87a, 0x04eb9b79, 0x00000003, 0x00d047c8, 0x80ff800c,
2494067851b1Skevlo 	0x8c898300, 0x2e7f120f, 0x9500bb78, 0x1114d028, 0x00881117,
2495067851b1Skevlo 	0x89140f00, 0xd1d80000, 0x5a7da0bd, 0x0000223b, 0x00d30000,
2496067851b1Skevlo 	0x101fbf00, 0x00000007, 0x00000900, 0x225b0606, 0x218075b1,
2497067851b1Skevlo 	0x00120000, 0x040c0000, 0x12345678, 0xabcdef00, 0x001b1b89,
2498067851b1Skevlo 	0x05100000, 0x3f000000, 0x00000000, 0x00000000, 0x48071d40,
2499067851b1Skevlo 	0x03a05611, 0x000000e4, 0x6c6c6c6c, 0x18800000, 0x40000100,
2500067851b1Skevlo 	0x08800000, 0x40000100, 0x00000000, 0x00000000, 0x00000000,
2501067851b1Skevlo 	0x00000000, 0x69e9cc4a, 0x31000040, 0x21688080, 0x00001714,
2502067851b1Skevlo 	0x1f78403f, 0x00010036, 0xec020107, 0x007f037f, 0x69553420,
2503067851b1Skevlo 	0x43bc0094, 0x00013169, 0x00250492, 0x00000000, 0x7112848b,
2504067851b1Skevlo 	0x47c07bff, 0x00000036, 0x2c7f000d, 0x020600db, 0x0000001f,
2505067851b1Skevlo 	0x00b91612, 0x390000e4, 0x11f60000, 0x40000100, 0x20200000,
2506067851b1Skevlo 	0x00091521, 0x00000000, 0x00121820, 0x00007f7f, 0x00000000,
2507067851b1Skevlo 	0x000300a0, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2508067851b1Skevlo 	0x00000000, 0x28000000, 0x00000000, 0x00000000, 0x00000000,
2509067851b1Skevlo 	0x00000000, 0x00000000, 0x00000000, 0x64b22427, 0x00766932,
2510067851b1Skevlo 	0x00222222, 0x10000000, 0x37644302, 0x2f97d40c, 0x04030740,
2511067851b1Skevlo 	0x40020401, 0x0000907f, 0x20010201, 0xa0633333, 0x3333bc53,
2512067851b1Skevlo 	0x7a8f5b6f, 0xcb979975, 0x00000000, 0x80608000, 0x98000000,
2513067851b1Skevlo 	0x40127353, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2514067851b1Skevlo 	0x6437140a, 0x00000000, 0x00000282, 0x30032064, 0x4653de68,
2515067851b1Skevlo 	0x04518a3c, 0x00002101, 0x2a201c16, 0x1812362e, 0x322c2220,
2516067851b1Skevlo 	0x000e3c24, 0x2d2d2d2d, 0x2d2d2d2d, 0x0390272d, 0x2d2d2d2d,
2517067851b1Skevlo 	0x2d2d2d2d, 0x2d2d2d2d, 0x2d2d2d2d, 0x00000000, 0x1000dc1f,
2518067851b1Skevlo 	0x10008c1f, 0x02140102, 0x681604c2, 0x01007c00, 0x01004800,
2519067851b1Skevlo 	0xfb000000, 0x000028d1, 0x1000dc1f, 0x10008c1f, 0x02140102,
2520067851b1Skevlo 	0x28160d05, 0x00000008, 0x021400a0, 0x281600a0, 0x01c00010,
2521067851b1Skevlo 	0x01c00010, 0x02000010, 0x02000010, 0x02000010, 0x02000010,
2522067851b1Skevlo 	0x01c00010, 0x02000010, 0x01c00010, 0x01c00010, 0x01c00010,
2523067851b1Skevlo 	0x01c00010, 0x00000010, 0x00000010, 0x03c00010, 0x00000003,
2524067851b1Skevlo 	0x00000000, 0x00000300
2525067851b1Skevlo };
2526067851b1Skevlo 
2527067851b1Skevlo static const uint32_t rtl8188ftv_agc_vals[] = {
2528067851b1Skevlo 	0xfc000001, 0xfb010001, 0xfa020001, 0xf9030001, 0xf8040001,
2529067851b1Skevlo 	0xf7050001, 0xf6060001, 0xf5070001, 0xf4080001, 0xf3090001,
2530067851b1Skevlo 	0xf20a0001, 0xf10b0001, 0xf00c0001, 0xef0d0001, 0xee0e0001,
2531067851b1Skevlo 	0xed0f0001, 0xec100001, 0xeb110001, 0xea120001, 0xe9130001,
2532067851b1Skevlo 	0xe8140001, 0xe7150001, 0xe6160001, 0xe5170001, 0xe4180001,
2533067851b1Skevlo 	0xe3190001, 0xe21a0001, 0xe11b0001, 0xe01c0001, 0xc21d0001,
2534067851b1Skevlo 	0xc11e0001, 0xc01f0001, 0xa5200001, 0xa4210001, 0xa3220001,
2535067851b1Skevlo 	0xa2230001, 0xa1240001, 0xa0250001, 0x65260001, 0x64270001,
2536067851b1Skevlo 	0x63280001, 0x62290001, 0x612a0001, 0x442b0001, 0x432c0001,
2537067851b1Skevlo 	0x422d0001, 0x412e0001, 0x402f0001, 0x21300001, 0x20310001,
2538067851b1Skevlo 	0x05320001, 0x04330001, 0x03340001, 0x02350001, 0x01360001,
2539067851b1Skevlo 	0x00370001, 0x00380001, 0x00390001, 0x003a0001, 0x003b0001,
2540067851b1Skevlo 	0x003c0001, 0x003d0001, 0x003e0001, 0x003f0001
2541067851b1Skevlo };
2542067851b1Skevlo 
2543067851b1Skevlo static const struct r92c_bb_prog rtl8188ftv_bb_prog = {
2544067851b1Skevlo 	nitems(rtl8188ftv_bb_regs),
2545067851b1Skevlo 	rtl8188ftv_bb_regs,
2546067851b1Skevlo 	rtl8188ftv_bb_vals,
2547067851b1Skevlo 	nitems(rtl8188ftv_agc_vals),
2548067851b1Skevlo 	rtl8188ftv_agc_vals
2549067851b1Skevlo };
2550067851b1Skevlo 
2551067851b1Skevlo /*
255253c3c4d0Sstsp  * RTL8188RU.
255353c3c4d0Sstsp  */
255453c3c4d0Sstsp static const uint16_t rtl8188ru_bb_regs[] = {
255553c3c4d0Sstsp 	0x024, 0x028, 0x040, 0x800, 0x804, 0x808, 0x80c, 0x810, 0x814,
255653c3c4d0Sstsp 	0x818, 0x81c, 0x820, 0x824, 0x828, 0x82c, 0x830, 0x834, 0x838,
255753c3c4d0Sstsp 	0x83c, 0x840, 0x844, 0x848, 0x84c, 0x850, 0x854, 0x858, 0x85c,
255853c3c4d0Sstsp 	0x860, 0x864, 0x868, 0x86c, 0x870, 0x874, 0x878, 0x87c, 0x880,
255953c3c4d0Sstsp 	0x884, 0x888, 0x88c, 0x890, 0x894, 0x898, 0x89c, 0x900, 0x904,
256053c3c4d0Sstsp 	0x908, 0x90c, 0xa00, 0xa04, 0xa08, 0xa0c, 0xa10, 0xa14, 0xa18,
256153c3c4d0Sstsp 	0xa1c, 0xa20, 0xa24, 0xa28, 0xa2c, 0xa70, 0xa74, 0xc00, 0xc04,
256253c3c4d0Sstsp 	0xc08, 0xc0c, 0xc10, 0xc14, 0xc18, 0xc1c, 0xc20, 0xc24, 0xc28,
256353c3c4d0Sstsp 	0xc2c, 0xc30, 0xc34, 0xc38, 0xc3c, 0xc40, 0xc44, 0xc48, 0xc4c,
256453c3c4d0Sstsp 	0xc50, 0xc54, 0xc58, 0xc5c, 0xc60, 0xc64, 0xc68, 0xc6c, 0xc70,
256553c3c4d0Sstsp 	0xc74, 0xc78, 0xc7c, 0xc80, 0xc84, 0xc88, 0xc8c, 0xc90, 0xc94,
256653c3c4d0Sstsp 	0xc98, 0xc9c, 0xca0, 0xca4, 0xca8, 0xcac, 0xcb0, 0xcb4, 0xcb8,
256753c3c4d0Sstsp 	0xcbc, 0xcc0, 0xcc4, 0xcc8, 0xccc, 0xcd0, 0xcd4, 0xcd8, 0xcdc,
256853c3c4d0Sstsp 	0xce0, 0xce4, 0xce8, 0xcec, 0xd00, 0xd04, 0xd08, 0xd0c, 0xd10,
256953c3c4d0Sstsp 	0xd14, 0xd18, 0xd2c, 0xd30, 0xd34, 0xd38, 0xd3c, 0xd40, 0xd44,
257053c3c4d0Sstsp 	0xd48, 0xd4c, 0xd50, 0xd54, 0xd58, 0xd5c, 0xd60, 0xd64, 0xd68,
257153c3c4d0Sstsp 	0xd6c, 0xd70, 0xd74, 0xd78, 0xe00, 0xe04, 0xe08, 0xe10, 0xe14,
257253c3c4d0Sstsp 	0xe18, 0xe1c, 0xe28, 0xe30, 0xe34, 0xe38, 0xe3c, 0xe40, 0xe44,
257353c3c4d0Sstsp 	0xe48, 0xe4c, 0xe50, 0xe54, 0xe58, 0xe5c, 0xe60, 0xe68, 0xe6c,
257453c3c4d0Sstsp 	0xe70, 0xe74, 0xe78, 0xe7c, 0xe80, 0xe84, 0xe88, 0xe8c, 0xed0,
257553c3c4d0Sstsp 	0xed4, 0xed8, 0xedc, 0xee0, 0xeec, 0xee8, 0xf14, 0xf4c, 0xf00
257653c3c4d0Sstsp };
257753c3c4d0Sstsp 
257853c3c4d0Sstsp static const uint32_t rtl8188ru_bb_vals[] = {
257953c3c4d0Sstsp 	0x0011800d, 0x00ffdb83, 0x000c0004, 0x80040000, 0x00000001,
258053c3c4d0Sstsp 	0x0000fc00, 0x0000000a, 0x10005388, 0x020c3d10, 0x02200385,
258153c3c4d0Sstsp 	0x00000000, 0x01000100, 0x00390204, 0x00000000, 0x00000000,
258253c3c4d0Sstsp 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00010000,
258353c3c4d0Sstsp 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
258453c3c4d0Sstsp 	0x569a569a, 0x001b25a4, 0x66e60230, 0x061f0130, 0x00000000,
258553c3c4d0Sstsp 	0x32323200, 0x03000300, 0x22004000, 0x00000808, 0x00ffc3f1,
258653c3c4d0Sstsp 	0xc0083070, 0x000004d5, 0x00000000, 0xccc000c0, 0x00000800,
258753c3c4d0Sstsp 	0xfffffffe, 0x40302010, 0x00706050, 0x00000000, 0x00000023,
258853c3c4d0Sstsp 	0x00000000, 0x81121111, 0x00d047c8, 0x80ff000c, 0x8c838300,
258953c3c4d0Sstsp 	0x2e68120f, 0x9500bb78, 0x11144028, 0x00881117, 0x89140f00,
259053c3c4d0Sstsp 	0x15160000, 0x070b0f12, 0x00000104, 0x00d30000, 0x101fbf00,
259153c3c4d0Sstsp 	0x00000007, 0x48071d40, 0x03a05611, 0x000000e4, 0x6c6c6c6c,
259253c3c4d0Sstsp 	0x08800000, 0x40000100, 0x08800000, 0x40000100, 0x00000000,
259353c3c4d0Sstsp 	0x00000000, 0x00000000, 0x00000000, 0x69e9ac44, 0x469652cf,
259453c3c4d0Sstsp 	0x49795994, 0x0a97971c, 0x1f7c403f, 0x000100b7, 0xec020107,
259553c3c4d0Sstsp 	0x007f037f, 0x6954342e, 0x43bc0094, 0x6954342f, 0x433c0094,
259653c3c4d0Sstsp 	0x00000000, 0x5116848b, 0x47c00bff, 0x00000036, 0x2c56000d,
259753c3c4d0Sstsp 	0x018610db, 0x0000001f, 0x00b91612, 0x24000090, 0x20f60000,
259853c3c4d0Sstsp 	0x24000090, 0x20200000, 0x00121820, 0x00000000, 0x00121820,
259953c3c4d0Sstsp 	0x00007f7f, 0x00000000, 0x00000080, 0x00000000, 0x00000000,
260053c3c4d0Sstsp 	0x00000000, 0x00000000, 0x00000000, 0x28000000, 0x00000000,
260153c3c4d0Sstsp 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
260253c3c4d0Sstsp 	0x64b22427, 0x00766932, 0x00222222, 0x00000000, 0x37644302,
260353c3c4d0Sstsp 	0x2f97d40c, 0x00080740, 0x00020401, 0x0000907f, 0x20010201,
260453c3c4d0Sstsp 	0xa0633333, 0x3333bc43, 0x7a8f5b6b, 0xcc979975, 0x00000000,
260553c3c4d0Sstsp 	0x80608000, 0x00000000, 0x00027293, 0x00000000, 0x00000000,
260653c3c4d0Sstsp 	0x00000000, 0x00000000, 0x6437140a, 0x00000000, 0x00000000,
260753c3c4d0Sstsp 	0x30032064, 0x4653de68, 0x04518a3c, 0x00002101, 0x2a201c16,
260853c3c4d0Sstsp 	0x1812362e, 0x322c2220, 0x000e3c24, 0x2a2a2a2a, 0x2a2a2a2a,
260953c3c4d0Sstsp 	0x03902a2a, 0x2a2a2a2a, 0x2a2a2a2a, 0x2a2a2a2a, 0x2a2a2a2a,
261053c3c4d0Sstsp 	0x00000000, 0x1000dc1f, 0x10008c1f, 0x02140102, 0x681604c2,
261153c3c4d0Sstsp 	0x01007c00, 0x01004800, 0xfb000000, 0x000028d1, 0x1000dc1f,
261253c3c4d0Sstsp 	0x10008c1f, 0x02140102, 0x28160d05, 0x00000010, 0x001b25a4,
261353c3c4d0Sstsp 	0x631b25a0, 0x631b25a0, 0x081b25a0, 0x081b25a0, 0x081b25a0,
261453c3c4d0Sstsp 	0x081b25a0, 0x631b25a0, 0x081b25a0, 0x631b25a0, 0x631b25a0,
261553c3c4d0Sstsp 	0x631b25a0, 0x631b25a0, 0x001b25a0, 0x001b25a0, 0x6b1b25a0,
261653c3c4d0Sstsp 	0x31555448, 0x00000003, 0x00000000, 0x00000300
261753c3c4d0Sstsp };
261853c3c4d0Sstsp 
261953c3c4d0Sstsp static const uint32_t rtl8188ru_agc_vals[] = {
262053c3c4d0Sstsp 	0x7b000001, 0x7b010001, 0x7b020001, 0x7b030001, 0x7b040001,
262153c3c4d0Sstsp 	0x7b050001, 0x7b060001, 0x7b070001, 0x7b080001, 0x7a090001,
262253c3c4d0Sstsp 	0x790a0001, 0x780b0001, 0x770c0001, 0x760d0001, 0x750e0001,
262353c3c4d0Sstsp 	0x740f0001, 0x73100001, 0x72110001, 0x71120001, 0x70130001,
262453c3c4d0Sstsp 	0x6f140001, 0x6e150001, 0x6d160001, 0x6c170001, 0x6b180001,
262553c3c4d0Sstsp 	0x6a190001, 0x691a0001, 0x681b0001, 0x671c0001, 0x661d0001,
262653c3c4d0Sstsp 	0x651e0001, 0x641f0001, 0x63200001, 0x62210001, 0x61220001,
262753c3c4d0Sstsp 	0x60230001, 0x46240001, 0x45250001, 0x44260001, 0x43270001,
262853c3c4d0Sstsp 	0x42280001, 0x41290001, 0x402a0001, 0x262b0001, 0x252c0001,
262953c3c4d0Sstsp 	0x242d0001, 0x232e0001, 0x222f0001, 0x21300001, 0x20310001,
263053c3c4d0Sstsp 	0x06320001, 0x05330001, 0x04340001, 0x03350001, 0x02360001,
263153c3c4d0Sstsp 	0x01370001, 0x00380001, 0x00390001, 0x003a0001, 0x003b0001,
263253c3c4d0Sstsp 	0x003c0001, 0x003d0001, 0x003e0001, 0x003f0001, 0x7b400001,
263353c3c4d0Sstsp 	0x7b410001, 0x7b420001, 0x7b430001, 0x7b440001, 0x7b450001,
263453c3c4d0Sstsp 	0x7b460001, 0x7b470001, 0x7b480001, 0x7a490001, 0x794a0001,
263553c3c4d0Sstsp 	0x784b0001, 0x774c0001, 0x764d0001, 0x754e0001, 0x744f0001,
263653c3c4d0Sstsp 	0x73500001, 0x72510001, 0x71520001, 0x70530001, 0x6f540001,
263753c3c4d0Sstsp 	0x6e550001, 0x6d560001, 0x6c570001, 0x6b580001, 0x6a590001,
263853c3c4d0Sstsp 	0x695a0001, 0x685b0001, 0x675c0001, 0x665d0001, 0x655e0001,
263953c3c4d0Sstsp 	0x645f0001, 0x63600001, 0x62610001, 0x61620001, 0x60630001,
264053c3c4d0Sstsp 	0x46640001, 0x45650001, 0x44660001, 0x43670001, 0x42680001,
264153c3c4d0Sstsp 	0x41690001, 0x406a0001, 0x266b0001, 0x256c0001, 0x246d0001,
264253c3c4d0Sstsp 	0x236e0001, 0x226f0001, 0x21700001, 0x20710001, 0x06720001,
264353c3c4d0Sstsp 	0x05730001, 0x04740001, 0x03750001, 0x02760001, 0x01770001,
264453c3c4d0Sstsp 	0x00780001, 0x00790001, 0x007a0001, 0x007b0001, 0x007c0001,
264553c3c4d0Sstsp 	0x007d0001, 0x007e0001, 0x007f0001, 0x3800001e, 0x3801001e,
264653c3c4d0Sstsp 	0x3802001e, 0x3803001e, 0x3804001e, 0x3805001e, 0x3806001e,
264753c3c4d0Sstsp 	0x3807001e, 0x3808001e, 0x3c09001e, 0x3e0a001e, 0x400b001e,
264853c3c4d0Sstsp 	0x440c001e, 0x480d001e, 0x4c0e001e, 0x500f001e, 0x5210001e,
264953c3c4d0Sstsp 	0x5611001e, 0x5a12001e, 0x5e13001e, 0x6014001e, 0x6015001e,
265053c3c4d0Sstsp 	0x6016001e, 0x6217001e, 0x6218001e, 0x6219001e, 0x621a001e,
265153c3c4d0Sstsp 	0x621b001e, 0x621c001e, 0x621d001e, 0x621e001e, 0x621f001e
265253c3c4d0Sstsp };
265353c3c4d0Sstsp 
265453c3c4d0Sstsp static const struct r92c_bb_prog rtl8188ru_bb_prog = {
265553c3c4d0Sstsp 	nitems(rtl8188ru_bb_regs),
265653c3c4d0Sstsp 	rtl8188ru_bb_regs,
265753c3c4d0Sstsp 	rtl8188ru_bb_vals,
265853c3c4d0Sstsp 	nitems(rtl8188ru_agc_vals),
265953c3c4d0Sstsp 	rtl8188ru_agc_vals
266053c3c4d0Sstsp };
266153c3c4d0Sstsp 
266253c3c4d0Sstsp /*
2663600882e8Sjmatthew  * RTL8723AE and RTL8723AU.
2664600882e8Sjmatthew  */
2665600882e8Sjmatthew 
2666600882e8Sjmatthew static const uint16_t rtl8723a_bb_regs[] = {
2667600882e8Sjmatthew 	0x800, 0x804, 0x808, 0x80c, 0x810, 0x814, 0x818, 0x81c, 0x820,
2668600882e8Sjmatthew 	0x824, 0x828, 0x82c, 0x830, 0x834, 0x838, 0x83c, 0x840, 0x844,
2669600882e8Sjmatthew 	0x848, 0x84c, 0x850, 0x854, 0x858, 0x85c, 0x860, 0x864, 0x868,
2670600882e8Sjmatthew 	0x86c, 0x870, 0x874, 0x878, 0x87c, 0x880, 0x884, 0x888, 0x88c,
2671600882e8Sjmatthew 	0x890, 0x894, 0x898, 0x89c, 0x900, 0x904, 0x908, 0x90c, 0xa00,
2672600882e8Sjmatthew 	0xa04, 0xa08, 0xa0c, 0xa10, 0xa14, 0xa18, 0xa1c, 0xa20, 0xa24,
2673600882e8Sjmatthew 	0xa28, 0xa2c, 0xa70, 0xa74, 0xa78, 0xc00, 0xc04, 0xc08, 0xc0c,
2674600882e8Sjmatthew 	0xc10, 0xc14, 0xc18, 0xc1c, 0xc20, 0xc24, 0xc28, 0xc2c, 0xc30,
2675600882e8Sjmatthew 	0xc34, 0xc38, 0xc3c, 0xc40, 0xc44, 0xc48, 0xc4c, 0xc50, 0xc54,
2676600882e8Sjmatthew 	0xc58, 0xc5c, 0xc60, 0xc64, 0xc68, 0xc6c, 0xc70, 0xc74, 0xc78,
2677600882e8Sjmatthew 	0xc7c, 0xc80, 0xc84, 0xc88, 0xc8c, 0xc90, 0xc94, 0xc98, 0xc9c,
2678600882e8Sjmatthew 	0xca0, 0xca4, 0xca8, 0xcac, 0xcb0, 0xcb4, 0xcb8, 0xcbc, 0xcc0,
2679600882e8Sjmatthew 	0xcc4, 0xcc8, 0xccc, 0xcd0, 0xcd4, 0xcd8, 0xcdc, 0xce0, 0xce4,
2680600882e8Sjmatthew 	0xce8, 0xcec, 0xd00, 0xd04, 0xd08, 0xd0c, 0xd10, 0xd14, 0xd18,
2681600882e8Sjmatthew 	0xd2c, 0xd30, 0xd34, 0xd38, 0xd3c, 0xd40, 0xd44, 0xd48, 0xd4c,
2682600882e8Sjmatthew 	0xd50, 0xd54, 0xd58, 0xd5c, 0xd60, 0xd64, 0xd68, 0xd6c, 0xd70,
2683600882e8Sjmatthew 	0xd74, 0xd78, 0xe00, 0xe04, 0xe08, 0xe10, 0xe14, 0xe18, 0xe1c,
2684600882e8Sjmatthew 	0xe28, 0xe30, 0xe34, 0xe38, 0xe3c, 0xe40, 0xe44, 0xe48, 0xe4c,
2685600882e8Sjmatthew 	0xe50, 0xe54, 0xe58, 0xe5c, 0xe60, 0xe68, 0xe6c, 0xe70, 0xe74,
2686600882e8Sjmatthew 	0xe78, 0xe7c, 0xe80, 0xe84, 0xe88, 0xe8c, 0xed0, 0xed4, 0xed8,
2687600882e8Sjmatthew 	0xedc, 0xee0, 0xeec, 0xf14, 0xf4c, 0xf00
2688600882e8Sjmatthew };
2689600882e8Sjmatthew 
2690600882e8Sjmatthew static const uint32_t rtl8723a_bb_vals[] = {
2691600882e8Sjmatthew 	0x80040000, 0x00000003, 0x0000fc00, 0x0000000a, 0x10005388,
2692600882e8Sjmatthew 	0x020c3d10, 0x02200385, 0x00000000, 0x01000100, 0x00390004,
2693600882e8Sjmatthew 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2694600882e8Sjmatthew 	0x00000000, 0x00010000, 0x00000000, 0x00000000, 0x00000000,
2695600882e8Sjmatthew 	0x00000000, 0x00000000, 0x569a569a, 0x001b25a4, 0x66f60110,
2696600882e8Sjmatthew 	0x061f0130, 0x00000000, 0x32323200, 0x07000760, 0x22004000,
2697600882e8Sjmatthew 	0x00000808, 0x00000000, 0xc0083070, 0x000004d5, 0x00000000,
2698600882e8Sjmatthew 	0xccc000c0, 0x00000800, 0xfffffffe, 0x40302010, 0x00706050,
2699600882e8Sjmatthew 	0x00000000, 0x00000023, 0x00000000, 0x81121111, 0x00d047c8,
2700600882e8Sjmatthew 	0x80ff000c, 0x8c838300, 0x2e68120f, 0x9500bb78, 0x11144028,
2701600882e8Sjmatthew 	0x00881117, 0x89140f00, 0x1a1b0000, 0x090e1317, 0x00000204,
2702600882e8Sjmatthew 	0x00d30000, 0x101fbf00, 0x00000007, 0x00000900, 0x48071d40,
2703600882e8Sjmatthew 	0x03a05611, 0x000000e4, 0x6c6c6c6c, 0x08800000, 0x40000100,
2704600882e8Sjmatthew 	0x08800000, 0x40000100, 0x00000000, 0x00000000, 0x00000000,
2705600882e8Sjmatthew 	0x00000000, 0x69e9ac44, 0x469652cf, 0x49795994, 0x0a97971c,
2706600882e8Sjmatthew 	0x1f7c403f, 0x000100b7, 0xec020107, 0x007f037f, 0x69543420,
2707600882e8Sjmatthew 	0x43bc0094, 0x69543420, 0x433c0094, 0x00000000, 0x7116848b,
2708600882e8Sjmatthew 	0x47c00bff, 0x00000036, 0x2c7f000d, 0x018610db, 0x0000001f,
2709600882e8Sjmatthew 	0x00b91612, 0x40000100, 0x20f60000, 0x40000100, 0x20200000,
2710600882e8Sjmatthew 	0x00121820, 0x00000000, 0x00121820, 0x00007f7f, 0x00000000,
2711600882e8Sjmatthew 	0x00000080, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2712600882e8Sjmatthew 	0x00000000, 0x28000000, 0x00000000, 0x00000000, 0x00000000,
2713600882e8Sjmatthew 	0x00000000, 0x00000000, 0x00000000, 0x64b22427, 0x00766932,
2714600882e8Sjmatthew 	0x00222222, 0x00000000, 0x37644302, 0x2f97d40c, 0x00080740,
2715600882e8Sjmatthew 	0x00020401, 0x0000907f, 0x20010201, 0xa0633333, 0x3333bc43,
2716600882e8Sjmatthew 	0x7a8f5b6b, 0xcc979975, 0x00000000, 0x80608000, 0x00000000,
2717600882e8Sjmatthew 	0x00027293, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2718600882e8Sjmatthew 	0x6437140a, 0x00000000, 0x00000000, 0x30032064, 0x4653de68,
2719600882e8Sjmatthew 	0x04518a3c, 0x00002101, 0x2a201c16, 0x1812362e, 0x322c2220,
2720600882e8Sjmatthew 	0x000e3c24, 0x2a2a2a2a, 0x2a2a2a2a, 0x03902a2a, 0x2a2a2a2a,
2721600882e8Sjmatthew 	0x2a2a2a2a, 0x2a2a2a2a, 0x2a2a2a2a, 0x00000000, 0x1000dc1f,
2722600882e8Sjmatthew 	0x10008c1f, 0x02140102, 0x681604c2, 0x01007c00, 0x01004800,
2723600882e8Sjmatthew 	0xfb000000, 0x000028d1, 0x1000dc1f, 0x10008c1f, 0x02140102,
2724600882e8Sjmatthew 	0x28160d05, 0x00000008, 0x001b25a4, 0x631b25a0, 0x631b25a0,
2725600882e8Sjmatthew 	0x081b25a0, 0x081b25a0, 0x081b25a0, 0x081b25a0, 0x631b25a0,
2726600882e8Sjmatthew 	0x081b25a0, 0x631b25a0, 0x631b25a0, 0x631b25a0, 0x631b25a0,
2727600882e8Sjmatthew 	0x001b25a0, 0x001b25a0, 0x6b1b25a0, 0x00000003, 0x00000000,
2728600882e8Sjmatthew 	0x00000300
2729600882e8Sjmatthew };
2730600882e8Sjmatthew 
2731600882e8Sjmatthew static const struct r92c_bb_prog rtl8723a_bb_prog = {
2732600882e8Sjmatthew 	nitems(rtl8723a_bb_regs),
2733600882e8Sjmatthew 	rtl8723a_bb_regs,
2734600882e8Sjmatthew 	rtl8723a_bb_vals,
2735600882e8Sjmatthew 	nitems(rtl8192ce_agc_vals),
2736600882e8Sjmatthew 	rtl8192ce_agc_vals
2737600882e8Sjmatthew };
2738600882e8Sjmatthew 
2739600882e8Sjmatthew /*
274053c3c4d0Sstsp  * RF initialization values.
274153c3c4d0Sstsp  */
274253c3c4d0Sstsp struct r92c_rf_prog {
274353c3c4d0Sstsp 	int		count;
2744067851b1Skevlo 	const uint16_t	*regs;
274553c3c4d0Sstsp 	const uint32_t	*vals;
274653c3c4d0Sstsp };
274753c3c4d0Sstsp 
274853c3c4d0Sstsp /*
274953c3c4d0Sstsp  * RTL8192CU and RTL8192CE-VAU.
275053c3c4d0Sstsp  */
2751067851b1Skevlo static const uint16_t rtl8192ce_rf1_regs[] = {
275253c3c4d0Sstsp 	0x00, 0x01, 0x02, 0x03, 0x04, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e,
275353c3c4d0Sstsp 	0x0f, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22,
275453c3c4d0Sstsp 	0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2a, 0x2b,
275553c3c4d0Sstsp 	0x2a, 0x2b, 0x2b, 0x2c, 0x2a, 0x2b, 0x2b, 0x2c, 0x2a, 0x2b, 0x2b,
275653c3c4d0Sstsp 	0x2c, 0x2a, 0x2b, 0x2b, 0x2c, 0x2a, 0x2b, 0x2b, 0x2c, 0x2a, 0x2b,
275753c3c4d0Sstsp 	0x2b, 0x2c, 0x2a, 0x2b, 0x2b, 0x2c, 0x2a, 0x2b, 0x2b, 0x2c, 0x2a,
275853c3c4d0Sstsp 	0x2b, 0x2b, 0x2c, 0x2a, 0x2b, 0x2b, 0x2c, 0x2a, 0x2b, 0x2b, 0x2c,
275953c3c4d0Sstsp 	0x2a, 0x2b, 0x2b, 0x2c, 0x2a, 0x2b, 0x2b, 0x2c, 0x2a, 0x2b, 0x2b,
276053c3c4d0Sstsp 	0x2c, 0x2a, 0x10, 0x11, 0x10, 0x11, 0x10, 0x11, 0x10, 0x11, 0x10,
276153c3c4d0Sstsp 	0x11, 0x10, 0x11, 0x10, 0x11, 0x12, 0x12, 0x12, 0x12, 0x13, 0x13,
276253c3c4d0Sstsp 	0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x14, 0x14,
276353c3c4d0Sstsp 	0x14, 0x14, 0x15, 0x15, 0x15, 0x15, 0x16, 0x16, 0x16, 0x16, 0x00,
276453c3c4d0Sstsp 	0x18, 0xfe, 0xfe, 0x1f, 0xfe, 0xfe, 0x1e, 0x1f, 0x00
276553c3c4d0Sstsp };
276653c3c4d0Sstsp 
276753c3c4d0Sstsp static const uint32_t rtl8192ce_rf1_vals[] = {
276853c3c4d0Sstsp 	0x30159, 0x31284, 0x98000, 0x18c63, 0x210e7, 0x2044f, 0x1adb1,
276953c3c4d0Sstsp 	0x54867, 0x8992e, 0x0e52c, 0x39ce7, 0x00451, 0x00000, 0x10255,
277053c3c4d0Sstsp 	0x60a00, 0xfc378, 0xa1250, 0x4445f, 0x80001, 0x0b614, 0x6c000,
277153c3c4d0Sstsp 	0x00000, 0x01558, 0x00060, 0x00483, 0x4f000, 0xec7d9, 0x577c0,
277253c3c4d0Sstsp 	0x04783, 0x00001, 0x21334, 0x00000, 0x00054, 0x00001, 0x00808,
277353c3c4d0Sstsp 	0x53333, 0x0000c, 0x00002, 0x00808, 0x5b333, 0x0000d, 0x00003,
277453c3c4d0Sstsp 	0x00808, 0x63333, 0x0000d, 0x00004, 0x00808, 0x6b333, 0x0000d,
277553c3c4d0Sstsp 	0x00005, 0x00808, 0x73333, 0x0000d, 0x00006, 0x00709, 0x5b333,
277653c3c4d0Sstsp 	0x0000d, 0x00007, 0x00709, 0x63333, 0x0000d, 0x00008, 0x0060a,
277753c3c4d0Sstsp 	0x4b333, 0x0000d, 0x00009, 0x0060a, 0x53333, 0x0000d, 0x0000a,
277853c3c4d0Sstsp 	0x0060a, 0x5b333, 0x0000d, 0x0000b, 0x0060a, 0x63333, 0x0000d,
277953c3c4d0Sstsp 	0x0000c, 0x0060a, 0x6b333, 0x0000d, 0x0000d, 0x0060a, 0x73333,
278053c3c4d0Sstsp 	0x0000d, 0x0000e, 0x0050b, 0x66666, 0x0001a, 0xe0000, 0x4000f,
278153c3c4d0Sstsp 	0xe31fc, 0x6000f, 0xff9f8, 0x2000f, 0x203f9, 0x3000f, 0xff500,
278253c3c4d0Sstsp 	0x00000, 0x00000, 0x8000f, 0x3f100, 0x9000f, 0x23100, 0x32000,
278353c3c4d0Sstsp 	0x71000, 0xb0000, 0xfc000, 0x287af, 0x244b7, 0x204ab, 0x1c49f,
278453c3c4d0Sstsp 	0x18493, 0x14297, 0x10295, 0x0c298, 0x0819c, 0x040a8, 0x0001c,
278553c3c4d0Sstsp 	0x1944c, 0x59444, 0x9944c, 0xd9444, 0x0f424, 0x4f424, 0x8f424,
278653c3c4d0Sstsp 	0xcf424, 0xe0330, 0xa0330, 0x60330, 0x20330, 0x10159, 0x0f401,
278753c3c4d0Sstsp 	0x00000, 0x00000, 0x80003, 0x00000, 0x00000, 0x44457, 0x80000,
278853c3c4d0Sstsp 	0x30159
278953c3c4d0Sstsp };
279053c3c4d0Sstsp 
2791067851b1Skevlo static const uint16_t rtl8192ce_rf2_regs[] = {
279253c3c4d0Sstsp 	0x00, 0x01, 0x02, 0x03, 0x04, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e,
279353c3c4d0Sstsp 	0x0f, 0x12, 0x12, 0x12, 0x12, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13,
279453c3c4d0Sstsp 	0x13, 0x13, 0x13, 0x13, 0x13, 0x14, 0x14, 0x14, 0x14, 0x15, 0x15,
279553c3c4d0Sstsp 	0x15, 0x15, 0x16, 0x16, 0x16, 0x16
279653c3c4d0Sstsp };
279753c3c4d0Sstsp 
279853c3c4d0Sstsp static const uint32_t rtl8192ce_rf2_vals[] = {
279953c3c4d0Sstsp 	0x30159, 0x31284, 0x98000, 0x18c63, 0x210e7, 0x2044f, 0x1adb1,
280053c3c4d0Sstsp 	0x54867, 0x8992e, 0x0e52c, 0x39ce7, 0x00451, 0x32000, 0x71000,
280153c3c4d0Sstsp 	0xb0000, 0xfc000, 0x287af, 0x244b7, 0x204ab, 0x1c49f, 0x18493,
280253c3c4d0Sstsp 	0x14297, 0x10295, 0x0c298, 0x0819c, 0x040a8, 0x0001c, 0x1944c,
280353c3c4d0Sstsp 	0x59444, 0x9944c, 0xd9444, 0x0f424, 0x4f424, 0x8f424, 0xcf424,
280453c3c4d0Sstsp 	0xe0330, 0xa0330, 0x60330, 0x20330
280553c3c4d0Sstsp };
280653c3c4d0Sstsp 
280753c3c4d0Sstsp static const struct r92c_rf_prog rtl8192ce_rf_prog[] = {
280853c3c4d0Sstsp 	{
280953c3c4d0Sstsp 		nitems(rtl8192ce_rf1_regs),
281053c3c4d0Sstsp 		rtl8192ce_rf1_regs,
281153c3c4d0Sstsp 		rtl8192ce_rf1_vals
281253c3c4d0Sstsp 	},
281353c3c4d0Sstsp 	{
281453c3c4d0Sstsp 		nitems(rtl8192ce_rf2_regs),
281553c3c4d0Sstsp 		rtl8192ce_rf2_regs,
281653c3c4d0Sstsp 		rtl8192ce_rf2_vals
281753c3c4d0Sstsp 	}
281853c3c4d0Sstsp };
281953c3c4d0Sstsp 
282053c3c4d0Sstsp /*
282153c3c4d0Sstsp  * RTL8188CE-VAU.
282253c3c4d0Sstsp  */
282353c3c4d0Sstsp static const uint32_t rtl8188ce_rf_vals[] = {
282453c3c4d0Sstsp 	0x30159, 0x31284, 0x98000, 0x18c63, 0x210e7, 0x2044f, 0x1adb1,
282553c3c4d0Sstsp 	0x54867, 0x8992e, 0x0e52c, 0x39ce7, 0x00451, 0x00000, 0x10255,
282653c3c4d0Sstsp 	0x60a00, 0xfc378, 0xa1250, 0x4445f, 0x80001, 0x0b614, 0x6c000,
282753c3c4d0Sstsp 	0x00000, 0x01558, 0x00060, 0x00483, 0x4f200, 0xec7d9, 0x577c0,
282853c3c4d0Sstsp 	0x04783, 0x00001, 0x21334, 0x00000, 0x00054, 0x00001, 0x00808,
282953c3c4d0Sstsp 	0x53333, 0x0000c, 0x00002, 0x00808, 0x5b333, 0x0000d, 0x00003,
283053c3c4d0Sstsp 	0x00808, 0x63333, 0x0000d, 0x00004, 0x00808, 0x6b333, 0x0000d,
283153c3c4d0Sstsp 	0x00005, 0x00808, 0x73333, 0x0000d, 0x00006, 0x00709, 0x5b333,
283253c3c4d0Sstsp 	0x0000d, 0x00007, 0x00709, 0x63333, 0x0000d, 0x00008, 0x0060a,
283353c3c4d0Sstsp 	0x4b333, 0x0000d, 0x00009, 0x0060a, 0x53333, 0x0000d, 0x0000a,
283453c3c4d0Sstsp 	0x0060a, 0x5b333, 0x0000d, 0x0000b, 0x0060a, 0x63333, 0x0000d,
283553c3c4d0Sstsp 	0x0000c, 0x0060a, 0x6b333, 0x0000d, 0x0000d, 0x0060a, 0x73333,
283653c3c4d0Sstsp 	0x0000d, 0x0000e, 0x0050b, 0x66666, 0x0001a, 0xe0000, 0x4000f,
283753c3c4d0Sstsp 	0xe31fc, 0x6000f, 0xff9f8, 0x2000f, 0x203f9, 0x3000f, 0xff500,
283853c3c4d0Sstsp 	0x00000, 0x00000, 0x8000f, 0x3f100, 0x9000f, 0x23100, 0x32000,
283953c3c4d0Sstsp 	0x71000, 0xb0000, 0xfc000, 0x287b3, 0x244b7, 0x204ab, 0x1c49f,
284053c3c4d0Sstsp 	0x18493, 0x1429b, 0x10299, 0x0c29c, 0x081a0, 0x040ac, 0x00020,
284153c3c4d0Sstsp 	0x1944c, 0x59444, 0x9944c, 0xd9444, 0x0f424, 0x4f424, 0x8f424,
284253c3c4d0Sstsp 	0xcf424, 0xe0330, 0xa0330, 0x60330, 0x20330, 0x10159, 0x0f401,
284353c3c4d0Sstsp 	0x00000, 0x00000, 0x80003, 0x00000, 0x00000, 0x44457, 0x80000,
284453c3c4d0Sstsp 	0x30159
284553c3c4d0Sstsp };
284653c3c4d0Sstsp 
284753c3c4d0Sstsp static const struct r92c_rf_prog rtl8188ce_rf_prog[] = {
284853c3c4d0Sstsp 	{
284953c3c4d0Sstsp 		nitems(rtl8192ce_rf1_regs),
285053c3c4d0Sstsp 		rtl8192ce_rf1_regs,
285153c3c4d0Sstsp 		rtl8188ce_rf_vals
285253c3c4d0Sstsp 	}
285353c3c4d0Sstsp };
285453c3c4d0Sstsp 
285553c3c4d0Sstsp 
285653c3c4d0Sstsp /*
285753c3c4d0Sstsp  * RTL8188CU.
285853c3c4d0Sstsp  */
285953c3c4d0Sstsp static const uint32_t rtl8188cu_rf_vals[] = {
286053c3c4d0Sstsp 	0x30159, 0x31284, 0x98000, 0x18c63, 0x210e7, 0x2044f, 0x1adb1,
286153c3c4d0Sstsp 	0x54867, 0x8992e, 0x0e52c, 0x39ce7, 0x00451, 0x00000, 0x10255,
286253c3c4d0Sstsp 	0x60a00, 0xfc378, 0xa1250, 0x4445f, 0x80001, 0x0b614, 0x6c000,
286353c3c4d0Sstsp 	0x00000, 0x01558, 0x00060, 0x00483, 0x4f000, 0xec7d9, 0x577c0,
286453c3c4d0Sstsp 	0x04783, 0x00001, 0x21334, 0x00000, 0x00054, 0x00001, 0x00808,
286553c3c4d0Sstsp 	0x53333, 0x0000c, 0x00002, 0x00808, 0x5b333, 0x0000d, 0x00003,
286653c3c4d0Sstsp 	0x00808, 0x63333, 0x0000d, 0x00004, 0x00808, 0x6b333, 0x0000d,
286753c3c4d0Sstsp 	0x00005, 0x00808, 0x73333, 0x0000d, 0x00006, 0x00709, 0x5b333,
286853c3c4d0Sstsp 	0x0000d, 0x00007, 0x00709, 0x63333, 0x0000d, 0x00008, 0x0060a,
286953c3c4d0Sstsp 	0x4b333, 0x0000d, 0x00009, 0x0060a, 0x53333, 0x0000d, 0x0000a,
287053c3c4d0Sstsp 	0x0060a, 0x5b333, 0x0000d, 0x0000b, 0x0060a, 0x63333, 0x0000d,
287153c3c4d0Sstsp 	0x0000c, 0x0060a, 0x6b333, 0x0000d, 0x0000d, 0x0060a, 0x73333,
287253c3c4d0Sstsp 	0x0000d, 0x0000e, 0x0050b, 0x66666, 0x0001a, 0xe0000, 0x4000f,
287353c3c4d0Sstsp 	0xe31fc, 0x6000f, 0xff9f8, 0x2000f, 0x203f9, 0x3000f, 0xff500,
287453c3c4d0Sstsp 	0x00000, 0x00000, 0x8000f, 0x3f100, 0x9000f, 0x23100, 0x32000,
287553c3c4d0Sstsp 	0x71000, 0xb0000, 0xfc000, 0x287b3, 0x244b7, 0x204ab, 0x1c49f,
287653c3c4d0Sstsp 	0x18493, 0x1429b, 0x10299, 0x0c29c, 0x081a0, 0x040ac, 0x00020,
287753c3c4d0Sstsp 	0x1944c, 0x59444, 0x9944c, 0xd9444, 0x0f405, 0x4f405, 0x8f405,
287853c3c4d0Sstsp 	0xcf405, 0xe0330, 0xa0330, 0x60330, 0x20330, 0x10159, 0x0f401,
287953c3c4d0Sstsp 	0x00000, 0x00000, 0x80003, 0x00000, 0x00000, 0x44457, 0x80000,
288053c3c4d0Sstsp 	0x30159
288153c3c4d0Sstsp };
288253c3c4d0Sstsp 
288353c3c4d0Sstsp static const struct r92c_rf_prog rtl8188cu_rf_prog[] = {
288453c3c4d0Sstsp 	{
288553c3c4d0Sstsp 		nitems(rtl8192ce_rf1_regs),
288653c3c4d0Sstsp 		rtl8192ce_rf1_regs,
288753c3c4d0Sstsp 		rtl8188cu_rf_vals
288853c3c4d0Sstsp 	}
288953c3c4d0Sstsp };
289053c3c4d0Sstsp 
289153c3c4d0Sstsp /*
289290540544Sjmatthew  * RTL8192EE and RTL8192EU.
289390540544Sjmatthew  */
2894067851b1Skevlo static const uint16_t rtl8192e_rf_regs[] = {
289590540544Sjmatthew 	0x7f, 0x81, 0x00, 0x08, 0x18, 0x19, 0x1b, 0x1e, 0x1f, 0x2f, 0x3f,
289690540544Sjmatthew 	0x42, 0x57, 0x58, 0x67, 0x83, 0xb0, 0xb1, 0xb2, 0xb4, 0xb5, 0xb6,
289790540544Sjmatthew 	0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1,
289890540544Sjmatthew 	0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0x1c, 0xdf,
289990540544Sjmatthew 	0xef, 0x51, 0x52, 0x53, 0x56, 0x35, 0x35, 0x35, 0x36, 0x36, 0x36,
290090540544Sjmatthew 	0x36, 0x18, 0x5a, 0x19, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34,
290190540544Sjmatthew 	0x34, 0x34, 0x34, 0x34, 0x00, 0x84, 0x86, 0x87, 0x8e, 0x8f, 0xef,
290290540544Sjmatthew 	0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b,
290390540544Sjmatthew 	0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0xef, 0xfe, 0x18, 0xfe, 0xfe, 0xfe,
290490540544Sjmatthew 	0xfe, 0x1e, 0x1f, 0x00
290590540544Sjmatthew };
290690540544Sjmatthew 
290790540544Sjmatthew static const uint32_t rtl8192e_rf_vals[] = {
290890540544Sjmatthew 	0x00082, 0x3fc00, 0x30000, 0x08400, 0x00407, 0x00012, 0x0394c,
290990540544Sjmatthew 	0x80009, 0x00880, 0x1a060, 0x00000, 0x060c0, 0xd0000, 0xbe180,
291090540544Sjmatthew 	0x01552, 0x00000, 0xff9f1, 0x55418, 0x8cc00, 0x43083, 0x08166,
291190540544Sjmatthew 	0x0803e, 0x1c69f, 0x0407f, 0x90001, 0x40001, 0x00400, 0x00078,
291290540544Sjmatthew 	0xb3333, 0x33340, 0x00000, 0x05999, 0x09999, 0x02400, 0x00009,
291390540544Sjmatthew 	0x40c91, 0x99999, 0x000a3, 0x88820, 0x76c06, 0x00000, 0x80000,
291490540544Sjmatthew 	0x00000, 0x00180, 0x001a0, 0x69545, 0x7e45e, 0x00071, 0x51ff3,
291590540544Sjmatthew 	0x000a8, 0x001e2, 0x002a8, 0x01c24, 0x09c24, 0x11c24, 0x19c24,
291690540544Sjmatthew 	0x00c07, 0x48000, 0x739d0, 0x0add7, 0x09dd4, 0x08dd1, 0x07dce,
291790540544Sjmatthew 	0x06dcb, 0x05dc8, 0x04dc5, 0x034cc, 0x0244f, 0x0144c, 0x00014,
291890540544Sjmatthew 	0x30159, 0x68180, 0x0014e, 0x49f80, 0x65540, 0x88000, 0x020a0,
291990540544Sjmatthew 	0xf02b0, 0xef7b0, 0xd4fb0, 0xcf060, 0xb0090, 0xa0080, 0x90080,
292090540544Sjmatthew 	0x8f780, 0x78730, 0x60fb0, 0x5ffa0, 0x40620, 0x37090, 0x20080,
292190540544Sjmatthew 	0x1f060, 0x0ffb0, 0x000a0, 0x00000, 0x0fc07, 0x00000, 0x00000,
292290540544Sjmatthew 	0x00000, 0x00000, 0x00001, 0x80000, 0x33e70
292390540544Sjmatthew };
292490540544Sjmatthew 
2925067851b1Skevlo static const uint16_t rtl8192e_rf2_regs[] = {
292690540544Sjmatthew 	0x7f, 0x81, 0x00, 0x08, 0x18, 0x19, 0x1b, 0x1e, 0x1f, 0x2f, 0x3f,
292790540544Sjmatthew 	0x42, 0x57, 0x58, 0x67, 0x7f, 0x81, 0x83, 0x1c, 0xdf, 0xef, 0x51,
292890540544Sjmatthew 	0x52, 0x53, 0x56, 0x35, 0x35, 0x35, 0x36, 0x36, 0x36, 0x36, 0x18,
292990540544Sjmatthew 	0x5a, 0x19, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34,
293090540544Sjmatthew 	0x34, 0x34, 0x00, 0x84, 0x86, 0x87, 0x8e, 0x8f, 0xef, 0x3b, 0x3b,
293190540544Sjmatthew 	0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b,
293290540544Sjmatthew 	0x3b, 0x3b, 0x3b, 0xef, 0x00, 0xfe, 0xfe, 0xfe, 0xfe, 0x1e, 0x1f,
293390540544Sjmatthew 	0x00
293490540544Sjmatthew };
293590540544Sjmatthew 
293690540544Sjmatthew static const uint32_t rtl8192e_rf2_vals[] = {
293790540544Sjmatthew 	0x00082, 0x3fc00, 0x30000, 0x08400, 0x00407, 0x00012, 0x0394c,
293890540544Sjmatthew 	0x80009, 0x00880, 0x1a060, 0x00000, 0x060c0, 0xd0000, 0xbe180,
293990540544Sjmatthew 	0x01552, 0x00082, 0x3f000, 0x00000, 0x00000, 0x00180, 0x001a0,
294090540544Sjmatthew 	0x69545, 0x7e42e, 0x00071, 0x51ff3, 0x000a8, 0x001e0, 0x002a8,
294190540544Sjmatthew 	0x01ca8, 0x09c24, 0x11c24, 0x19c24, 0x00c07, 0x48000, 0x739d0,
294290540544Sjmatthew 	0x0add7, 0x09dd4, 0x08dd1, 0x07dce, 0x06dcb, 0x05dc8, 0x04dc5,
294390540544Sjmatthew 	0x034cc, 0x0244f, 0x0144c, 0x00014, 0x30159, 0x68180, 0x000ce,
294490540544Sjmatthew 	0x49f80, 0x65540, 0x88000, 0x020a0, 0xf02b0, 0xef7b0, 0xd4fb0,
294590540544Sjmatthew 	0xcf060, 0xb0090, 0xa0080, 0x90080, 0x8f780, 0x78730, 0x60fb0,
294690540544Sjmatthew 	0x5ffa0, 0x40620, 0x37090, 0x20080, 0x1f060, 0x0ffb0, 0x000a0,
294790540544Sjmatthew 	0x10159, 0x00000, 0x00000, 0x00000, 0x00000, 0x00001, 0x80000,
294890540544Sjmatthew 	0x33e70
294990540544Sjmatthew };
295090540544Sjmatthew 
295190540544Sjmatthew static const struct r92c_rf_prog rtl8192e_rf_prog[] = {
295290540544Sjmatthew 	{
295390540544Sjmatthew 		nitems(rtl8192e_rf_regs),
295490540544Sjmatthew 		rtl8192e_rf_regs,
295590540544Sjmatthew 		rtl8192e_rf_vals
295690540544Sjmatthew 	},
295790540544Sjmatthew 	{
295890540544Sjmatthew 		nitems(rtl8192e_rf2_regs),
295990540544Sjmatthew 		rtl8192e_rf2_regs,
296090540544Sjmatthew 		rtl8192e_rf2_vals
296190540544Sjmatthew 	}
296290540544Sjmatthew };
296390540544Sjmatthew 
296490540544Sjmatthew /*
296553c3c4d0Sstsp  * RTL8188EU.
296653c3c4d0Sstsp  */
2967067851b1Skevlo static const uint16_t rtl8188eu_rf_regs[] = {
29682f5d27e0Skevlo 	0x00, 0x08, 0x18, 0x19, 0x1e, 0x1f, 0x2f, 0x3f, 0x42, 0x57, 0x58,
29692f5d27e0Skevlo 	0x67, 0x83, 0xb0, 0xb1, 0xb2, 0xb4, 0xb6, 0xb7, 0xb8, 0xb9, 0xba,
29702f5d27e0Skevlo 	0xbb, 0xbf, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca,
29712f5d27e0Skevlo 	0xdf, 0xef, 0x51, 0x52, 0x53, 0x56, 0x35, 0x35, 0x35, 0x36, 0x36,
29722f5d27e0Skevlo 	0x36, 0x36, 0xb6, 0x18, 0x5a, 0x19, 0x34, 0x34, 0x34, 0x34, 0x34,
29732f5d27e0Skevlo 	0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x00, 0x84, 0x86, 0x87, 0x8e,
29742f5d27e0Skevlo 	0x8f, 0xef, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b,
29752f5d27e0Skevlo 	0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0xef, 0x00, 0x18, 0xfe,
29762f5d27e0Skevlo 	0xfe, 0x1f, 0xfe, 0xfe, 0x1e, 0x1f, 0x00
297753c3c4d0Sstsp };
297853c3c4d0Sstsp 
297953c3c4d0Sstsp static const uint32_t rtl8188eu_rf_vals[] = {
298053c3c4d0Sstsp 	0x30000, 0x84000, 0x00407, 0x00012, 0x80009, 0x00880, 0x1a060,
298153c3c4d0Sstsp 	0x00000, 0x060c0, 0xd0000, 0xbe180, 0x01552, 0x00000, 0xff8fc,
298253c3c4d0Sstsp 	0x54400, 0xccc19, 0x43003, 0x4953e, 0x1c718, 0x060ff, 0x80001,
298353c3c4d0Sstsp 	0x40000, 0x00400, 0xc0000, 0x02400, 0x00009, 0x40c91, 0x99999,
298453c3c4d0Sstsp 	0x000a3, 0x88820, 0x76c06, 0x00000, 0x80000, 0x00180, 0x001a0,
29852f5d27e0Skevlo 	0x6b27d, 0x7e49d, 0x00073, 0x51ff3, 0x00086, 0x00186, 0x00286,
29862f5d27e0Skevlo 	0x01c25, 0x09c25, 0x11c25, 0x19c25, 0x48538, 0x00c07, 0x4bd00,
29872f5d27e0Skevlo 	0x739d0, 0x0adf3, 0x09df0, 0x08ded, 0x07dea, 0x06de7, 0x054ee,
29882f5d27e0Skevlo 	0x044eb, 0x034e8, 0x0246b, 0x01468, 0x0006d, 0x30159, 0x68200,
29892f5d27e0Skevlo 	0x000ce, 0x48a00, 0x65540, 0x88000, 0x020a0, 0xf02b0, 0xef7b0,
29902f5d27e0Skevlo 	0xd4fb0, 0xcf060, 0xb0090, 0xa0080, 0x90080, 0x8f780, 0x722b0,
29912f5d27e0Skevlo 	0x6f7b0, 0x54fb0, 0x4f060, 0x30090, 0x20080, 0x10080, 0x0f780,
29922f5d27e0Skevlo 	0x000a0, 0x10159, 0x0f407, 0x00000, 0x00000, 0x80003, 0x00000,
29932f5d27e0Skevlo 	0x00000, 0x00001, 0x80000, 0x33e60
299453c3c4d0Sstsp };
299553c3c4d0Sstsp 
299653c3c4d0Sstsp static const struct r92c_rf_prog rtl8188eu_rf_prog[] = {
299753c3c4d0Sstsp 	{
299853c3c4d0Sstsp 		nitems(rtl8188eu_rf_regs),
299953c3c4d0Sstsp 		rtl8188eu_rf_regs,
300053c3c4d0Sstsp 		rtl8188eu_rf_vals
300153c3c4d0Sstsp 	}
300253c3c4d0Sstsp };
300353c3c4d0Sstsp 
300453c3c4d0Sstsp /*
3005067851b1Skevlo  * RTL8188FTV.
3006067851b1Skevlo  */
3007067851b1Skevlo static const uint16_t rtl8188ftv_rf_regs[] = {
3008067851b1Skevlo 	0x000, 0x008, 0x018, 0x019, 0x01b, 0x01e, 0x01f, 0x02f, 0x03f, 0x042,
3009067851b1Skevlo 	0x057, 0x058, 0x067, 0x083, 0x0b0, 0x0b1, 0x0b2, 0x0b4, 0x0b5, 0x0b6,
3010067851b1Skevlo 	0x0b7, 0x0b8, 0x0b9, 0x0ba, 0x0bb, 0x0bf, 0x0c2, 0x0c3, 0x0c4, 0x0c5,
3011067851b1Skevlo 	0x0c6, 0x0c7, 0x0c8, 0x0c9, 0x0ca, 0x0df, 0x0ef, 0x051, 0x052, 0x053,
3012067851b1Skevlo 	0x056, 0x035, 0x035, 0x035, 0x036, 0x036, 0x036, 0x036, 0x018, 0x05a,
3013067851b1Skevlo 	0x019, 0x034, 0x034, 0x034, 0x034, 0x034, 0x034, 0x034, 0x034, 0x034,
3014067851b1Skevlo 	0x034, 0x034, 0x000, 0x084, 0x086, 0x087, 0x08e, 0x08f, 0x0ef, 0x03b,
3015067851b1Skevlo 	0x03b, 0x03b, 0x03b, 0x03b, 0x03b, 0x03b, 0x03b, 0x03b, 0x03b, 0x03b,
3016067851b1Skevlo 	0x03b, 0x03b, 0x03b, 0x03b, 0x03b, 0x0ef, 0x0ef, 0x03b, 0x03b, 0x0ef,
3017067851b1Skevlo 	0x0ef, 0x030, 0x031, 0x032, 0x0ef, 0x000, 0x018, 0xffe, 0xffe, 0x01f,
3018067851b1Skevlo 	0xffe, 0xffe, 0x01e, 0x01f, 0x000
3019067851b1Skevlo };
3020067851b1Skevlo 
3021067851b1Skevlo static const uint32_t rtl8188ftv_rf_vals[] = {
3022067851b1Skevlo 	0x30000, 0x08400, 0x00407, 0x00012, 0x01c6c, 0x80009, 0x00880,
3023067851b1Skevlo 	0x1a060, 0x28000, 0x060c0, 0xd0000, 0xc0160, 0x01552, 0x00000,
3024067851b1Skevlo 	0xff9f0, 0x22218, 0x34c00, 0x4484b, 0x0112a, 0x0053e, 0x10408,
3025067851b1Skevlo 	0x10200, 0x80001, 0x40001, 0x00400, 0xc0000, 0x02400, 0x00009,
3026067851b1Skevlo 	0x40c91, 0x99999, 0x000a3, 0x8f820, 0x76c06, 0x00000, 0x80000,
3027067851b1Skevlo 	0x00180, 0x001a0, 0xe8231, 0xfac2c, 0x00141, 0x517f0, 0x00090,
3028067851b1Skevlo 	0x00190, 0x00290, 0x01064, 0x09064, 0x11064, 0x19064, 0x00c07,
3029067851b1Skevlo 	0x48000, 0x739d0, 0x0add2, 0x09dd0, 0x08cf3, 0x07cf0, 0x06ced,
3030067851b1Skevlo 	0x05cd2, 0x04ccf, 0x03ccc, 0x02cc9, 0x01c4c, 0x00c49, 0x30159,
3031067851b1Skevlo 	0x48000, 0x0002a, 0x00025, 0x65540, 0x88000, 0x020a0, 0xf0f00,
3032067851b1Skevlo 	0xe0b00, 0xd0900, 0xc0700, 0xb0600, 0xa0400, 0x90200, 0x80000,
3033067851b1Skevlo 	0x7bf00, 0x60b00, 0x5c900, 0x40700, 0x30600, 0x2d500, 0x10200,
3034067851b1Skevlo 	0x0e000, 0x000a0, 0x00010, 0x0c0a8, 0x10400, 0x00000, 0x80000,
3035067851b1Skevlo 	0x10000, 0x0000f, 0x07efe, 0x00000, 0x10159, 0x0fc07, 0x00000,
3036067851b1Skevlo 	0x00000, 0x80003, 0x00000, 0x00000, 0x00001, 0x80000, 0x33d95
3037067851b1Skevlo };
3038067851b1Skevlo 
3039067851b1Skevlo static const struct r92c_rf_prog rtl8188ftv_rf_prog[] = {
3040067851b1Skevlo 	{
3041067851b1Skevlo 		nitems(rtl8188ftv_rf_regs),
3042067851b1Skevlo 		rtl8188ftv_rf_regs,
3043067851b1Skevlo 		rtl8188ftv_rf_vals
3044067851b1Skevlo 	}
3045067851b1Skevlo };
3046067851b1Skevlo 
3047067851b1Skevlo /*
304890540544Sjmatthew  * RTL8192EE and RTL8192EU.
304990540544Sjmatthew  */
305090540544Sjmatthew static const uint16_t rtl8192e_bb_regs[] = {
305190540544Sjmatthew 	0x800, 0x804, 0x808, 0x80c, 0x810, 0x814, 0x818, 0x81c, 0x820,
305290540544Sjmatthew 	0x824, 0x828, 0x82c, 0x830, 0x834, 0x838, 0x83c, 0x840, 0x844,
305390540544Sjmatthew 	0x848, 0x84c, 0x850, 0x854, 0x858, 0x85c, 0x860, 0x864, 0x868,
305490540544Sjmatthew 	0x86c, 0x870, 0x874, 0x878, 0x87c, 0x880, 0x884, 0x888, 0x88c,
305590540544Sjmatthew 	0x890, 0x894, 0x898, 0x900, 0x904, 0x908, 0x90c, 0x910, 0x914,
305690540544Sjmatthew 	0x918, 0x91c, 0x924, 0x928, 0x92c, 0x930, 0x934, 0x938, 0x93c,
305790540544Sjmatthew 	0x940, 0x944, 0x94c, 0xa00, 0xa04, 0xa08, 0xa0c, 0xa10, 0xa14,
305890540544Sjmatthew 	0xa18, 0xa1c, 0xa20, 0xa24, 0xa28, 0xa2c, 0xa70, 0xa74, 0xa78,
305990540544Sjmatthew 	0xa7c, 0xa80, 0xb38, 0xc00, 0xc04, 0xc08, 0xc0c, 0xc10, 0xc14,
306090540544Sjmatthew 	0xc18, 0xc1c, 0xc20, 0xc24, 0xc28, 0xc2c, 0xc30, 0xc34, 0xc38,
306190540544Sjmatthew 	0xc3c, 0xc40, 0xc44, 0xc48, 0xc4c, 0xc50, 0xc54, 0xc58, 0xc5c,
306290540544Sjmatthew 	0xc60, 0xc64, 0xc68, 0xc6c, 0xc70, 0xc74, 0xc78, 0xc7c, 0xc80,
306390540544Sjmatthew 	0xc84, 0xc88, 0xc8c, 0xc90, 0xc94, 0xc98, 0xc9c, 0xca0, 0xca4,
306490540544Sjmatthew 	0xca8, 0xcac, 0xcb0, 0xcb4, 0xcb8, 0xcbc, 0xcc0, 0xcc4, 0xcc8,
306590540544Sjmatthew 	0xccc, 0xcd0, 0xcd4, 0xcd8, 0xcdc, 0xce0, 0xce4, 0xce8, 0xcec,
306690540544Sjmatthew 	0xd00, 0xd04, 0xd08, 0xd0c, 0xd10, 0xd14, 0xd18, 0xd1c, 0xd2c,
306790540544Sjmatthew 	0xd30, 0xd34, 0xd38, 0xd3c, 0xd40, 0xd44, 0xd48, 0xd4c, 0xd50,
306890540544Sjmatthew 	0xd54, 0xd58, 0xd5c, 0xd60, 0xd64, 0xd68, 0xd6c, 0xd70, 0xd74,
306990540544Sjmatthew 	0xd78, 0xd80, 0xd84, 0xd88, 0xe00, 0xe04, 0xe08, 0xe10, 0xe14,
307090540544Sjmatthew 	0xe18, 0xe1c, 0xe28, 0xe30, 0xe34, 0xe38, 0xe3c, 0xe40, 0xe44,
307190540544Sjmatthew 	0xe48, 0xe4c, 0xe50, 0xe54, 0xe58, 0xe5c, 0xe60, 0xe68, 0xe6c,
307290540544Sjmatthew 	0xe70, 0xe74, 0xe78, 0xe7c, 0xe80, 0xe84, 0xe88, 0xe8c, 0xed0,
307390540544Sjmatthew 	0xed4, 0xed8, 0xedc, 0xee0, 0xeec, 0xee4, 0xee8, 0xf14, 0xf4c,
307490540544Sjmatthew 	0xf00
307590540544Sjmatthew };
307690540544Sjmatthew 
307790540544Sjmatthew static const uint32_t rtl8192e_bb_vals[] = {
307890540544Sjmatthew 	0x80040000, 0x00000003, 0x0000fc00, 0x0000000a, 0x10001331,
307990540544Sjmatthew 	0x020c3d10, 0x02220385, 0x00000000, 0x01000100, 0x00390204,
308090540544Sjmatthew 	0x01000100, 0x00390204, 0x32323232, 0x30303030, 0x30303030,
308190540544Sjmatthew 	0x30303030, 0x00010000, 0x00010000, 0x28282828, 0x28282828,
308290540544Sjmatthew 	0x00000000, 0x00000000, 0x009a009a, 0x01000014, 0x66f60000,
308390540544Sjmatthew 	0x061f0000, 0x30303030, 0x30303030, 0x00000000, 0x55004200,
308490540544Sjmatthew 	0x08080808, 0x00000000, 0xb0000c1c, 0x00000001, 0x00000000,
308590540544Sjmatthew 	0xcc0000c0, 0x00000800, 0xfffffffe, 0x40302010, 0x00000000,
308690540544Sjmatthew 	0x00000023, 0x00000000, 0x81121313, 0x806c0001, 0x00000001,
308790540544Sjmatthew 	0x00000000, 0x00010000, 0x00000001, 0x00000000, 0x00000000,
308890540544Sjmatthew 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
308990540544Sjmatthew 	0x00000000, 0x00000008, 0x00d0c7c8, 0x81ff800c, 0x8c838300,
309090540544Sjmatthew 	0x2e68120f, 0x95009b78, 0x1114d028, 0x00881117, 0x89140f00,
309190540544Sjmatthew 	0x1a1b0000, 0x090e1317, 0x00000204, 0x00d30000, 0x101fff80,
309290540544Sjmatthew 	0x00000007, 0x00000900, 0x225b0606, 0x218075b1, 0x00000000,
309390540544Sjmatthew 	0x48071d40, 0x03a05633, 0x000000e4, 0x6c6c6c6c, 0x08800000,
309490540544Sjmatthew 	0x40000100, 0x08800000, 0x40000100, 0x00000000, 0x00000000,
309590540544Sjmatthew 	0x00000000, 0x00000000, 0x69e9ac47, 0x469652af, 0x49795994,
309690540544Sjmatthew 	0x0a97971c, 0x1f7c403f, 0x000100b7, 0xec020107, 0x007f037f,
309790540544Sjmatthew 	0x00340020, 0x0080801f, 0x00000020, 0x00248492, 0x00000000,
309890540544Sjmatthew 	0x7112848b, 0x47c00bff, 0x00000036, 0x00000600, 0x02013169,
309990540544Sjmatthew 	0x0000001f, 0x00b91612, 0x40000100, 0x21f60000, 0x40000100,
310090540544Sjmatthew 	0xa0e40000, 0x00121820, 0x00000000, 0x00121820, 0x00007f7f,
310190540544Sjmatthew 	0x00000000, 0x000300a0, 0x00000000, 0x00000000, 0x00000000,
310290540544Sjmatthew 	0x00000000, 0x00000000, 0x28000000, 0x00000000, 0x00000000,
310390540544Sjmatthew 	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x64b22427,
310490540544Sjmatthew 	0x00766932, 0x00222222, 0x00040000, 0x77644302, 0x2f97d40c,
310590540544Sjmatthew 	0x00080740, 0x00020403, 0x0000907f, 0x20010201, 0xa0633333,
310690540544Sjmatthew 	0x3333bc43, 0x7a8f5b6b, 0x0000007f, 0xcc979975, 0x00000000,
310790540544Sjmatthew 	0x80608000, 0x00000000, 0x00127353, 0x00000000, 0x00000000,
310890540544Sjmatthew 	0x00000000, 0x00000000, 0x6437140a, 0x00000000, 0x00000282,
310990540544Sjmatthew 	0x30032064, 0x4653de68, 0x04518a3c, 0x00002101, 0x2a201c16,
311090540544Sjmatthew 	0x1812362e, 0x322c2220, 0x000e3c24, 0x01081008, 0x00000800,
311190540544Sjmatthew 	0xf0b50000, 0x30303030, 0x30303030, 0x03903030, 0x30303030,
311290540544Sjmatthew 	0x30303030, 0x30303030, 0x30303030, 0x00000000, 0x1000dc1f,
311390540544Sjmatthew 	0x10008c1f, 0x02140102, 0x681604c2, 0x01007c00, 0x01004800,
311490540544Sjmatthew 	0xfb000000, 0x000028d1, 0x1000dc1f, 0x10008c1f, 0x02140102,
311590540544Sjmatthew 	0x28160d05, 0x00000008, 0x0fc05656, 0x03c09696, 0x03c09696,
311690540544Sjmatthew 	0x0c005656, 0x0c005656, 0x0c005656, 0x0c005656, 0x03c09696,
311790540544Sjmatthew 	0x0c005656, 0x03c09696, 0x03c09696, 0x03c09696, 0x03c09696,
311890540544Sjmatthew 	0x0000d6d6, 0x0000d6d6, 0x0fc01616, 0xb0000c1c, 0x00000001,
311990540544Sjmatthew 	0x00000003, 0x00000000, 0x00000300
312090540544Sjmatthew };
312190540544Sjmatthew 
312290540544Sjmatthew static const uint32_t rtl8192eu_agc_vals[] = {
312390540544Sjmatthew 	0xfb000001, 0xfb010001, 0xfb020001, 0xfb030001, 0xfb040001,
312490540544Sjmatthew 	0xfb050001, 0xfb060001, 0xfa070001, 0xf9080001, 0xf8090001,
312590540544Sjmatthew 	0xf70a0001, 0xf60b0001, 0xf50c0001, 0xf40d0001, 0xf30e0001,
312690540544Sjmatthew 	0xf20f0001, 0xf1100001, 0xf0110001, 0xef120001, 0xee130001,
312790540544Sjmatthew 	0xed140001, 0xec150001, 0xeb160001, 0xea170001, 0xcd180001,
312890540544Sjmatthew 	0xcc190001, 0xcb1a0001, 0xca1b0001, 0xc91c0001, 0xc81d0001,
312990540544Sjmatthew 	0x071e0001, 0x061f0001, 0x05200001, 0x04210001, 0x03220001,
313090540544Sjmatthew 	0xaa230001, 0xa9240001, 0xa8250001, 0xa7260001, 0xa6270001,
313190540544Sjmatthew 	0x85280001, 0x84290001, 0x832a0001, 0x252b0001, 0x242c0001,
313290540544Sjmatthew 	0x232d0001, 0x222e0001, 0x672f0001, 0x66300001, 0x65310001,
313390540544Sjmatthew 	0x64320001, 0x63330001, 0x62340001, 0x61350001, 0x45360001,
313490540544Sjmatthew 	0x44370001, 0x43380001, 0x42390001, 0x413a0001, 0x403b0001,
313590540544Sjmatthew 	0x403c0001, 0x403d0001, 0x403e0001, 0x403f0001, 0xfb400001,
313690540544Sjmatthew 	0xfb410001, 0xfb420001, 0xfb430001, 0xfb440001, 0xfb450001,
313790540544Sjmatthew 	0xfb460001, 0xfa470001, 0xf9480001, 0xf8490001, 0xf74a0001,
313890540544Sjmatthew 	0xf64b0001, 0xf54c0001, 0xf44d0001, 0xf34e0001, 0xf24f0001,
313990540544Sjmatthew 	0xf1500001, 0xf0510001, 0xef520001, 0xee530001, 0xed540001,
314090540544Sjmatthew 	0xec550001, 0xeb560001, 0xea570001, 0xe9580001, 0xe8590001,
314190540544Sjmatthew 	0xe75a0001, 0xe65b0001, 0xe55c0001, 0xe45d0001, 0xe35e0001,
314290540544Sjmatthew 	0xe25f0001, 0xe1600001, 0x8a610001, 0x89620001, 0x88630001,
314390540544Sjmatthew 	0x87640001, 0x86650001, 0x85660001, 0x84670001, 0x83680001,
314490540544Sjmatthew 	0x82690001, 0x6b6a0001, 0x6a6b0001, 0x696c0001, 0x686d0001,
314590540544Sjmatthew 	0x676e0001, 0x666f0001, 0x65700001, 0x64710001, 0x63720001,
314690540544Sjmatthew 	0x62730001, 0x61740001, 0x49750001, 0x48760001, 0x47770001,
314790540544Sjmatthew 	0x46780001, 0x45790001, 0x447a0001, 0x437b0001, 0x427c0001,
314890540544Sjmatthew 	0x417d0001, 0x407e0001, 0x407f0001
314990540544Sjmatthew };
315090540544Sjmatthew 
315190540544Sjmatthew static const struct r92c_bb_prog rtl8192eu_bb_prog = {
315290540544Sjmatthew 	nitems(rtl8192e_bb_regs),
315390540544Sjmatthew 	rtl8192e_bb_regs,
315490540544Sjmatthew 	rtl8192e_bb_vals,
315590540544Sjmatthew 	nitems(rtl8192eu_agc_vals),
315690540544Sjmatthew 	rtl8192eu_agc_vals
315790540544Sjmatthew };
315890540544Sjmatthew 
315990540544Sjmatthew 
316090540544Sjmatthew /*
316153c3c4d0Sstsp  * RTL8188RU.
316253c3c4d0Sstsp  */
316353c3c4d0Sstsp static const uint32_t rtl8188ru_rf_vals[] = {
316453c3c4d0Sstsp 	0x30159, 0x31284, 0x98000, 0x18c63, 0x210e7, 0x2044f, 0x1adb0,
316553c3c4d0Sstsp 	0x54867, 0x8992e, 0x0e529, 0x39ce7, 0x00451, 0x00000, 0x00255,
316653c3c4d0Sstsp 	0x60a00, 0xfc378, 0xa1250, 0x4445f, 0x80001, 0x0b614, 0x6c000,
316753c3c4d0Sstsp 	0x0083c, 0x01558, 0x00060, 0x00483, 0x4f000, 0xec7d9, 0x977c0,
316853c3c4d0Sstsp 	0x04783, 0x00001, 0x21334, 0x00000, 0x00054, 0x00001, 0x00808,
316953c3c4d0Sstsp 	0x53333, 0x0000c, 0x00002, 0x00808, 0x5b333, 0x0000d, 0x00003,
317053c3c4d0Sstsp 	0x00808, 0x63333, 0x0000d, 0x00004, 0x00808, 0x6b333, 0x0000d,
317153c3c4d0Sstsp 	0x00005, 0x00808, 0x73333, 0x0000d, 0x00006, 0x00709, 0x5b333,
317253c3c4d0Sstsp 	0x0000d, 0x00007, 0x00709, 0x63333, 0x0000d, 0x00008, 0x0060a,
317353c3c4d0Sstsp 	0x4b333, 0x0000d, 0x00009, 0x0060a, 0x53333, 0x0000d, 0x0000a,
317453c3c4d0Sstsp 	0x0060a, 0x5b333, 0x0000d, 0x0000b, 0x0060a, 0x63333, 0x0000d,
317553c3c4d0Sstsp 	0x0000c, 0x0060a, 0x6b333, 0x0000d, 0x0000d, 0x0060a, 0x73333,
317653c3c4d0Sstsp 	0x0000d, 0x0000e, 0x0050b, 0x66666, 0x0001a, 0xe0000, 0x4000f,
317753c3c4d0Sstsp 	0xe31fc, 0x6000f, 0xff9f8, 0x2000f, 0x203f9, 0x3000f, 0xff500,
317853c3c4d0Sstsp 	0x00000, 0x00000, 0x8000f, 0x3f100, 0x9000f, 0x23100, 0xd8000,
317953c3c4d0Sstsp 	0x90000, 0x51000, 0x12000, 0x28fb4, 0x24fa8, 0x207a4, 0x1c798,
318053c3c4d0Sstsp 	0x183a4, 0x14398, 0x101a4, 0x0c198, 0x080a4, 0x04098, 0x00014,
318153c3c4d0Sstsp 	0x1944c, 0x59444, 0x9944c, 0xd9444, 0x0f405, 0x4f405, 0x8f405,
318253c3c4d0Sstsp 	0xcf405, 0xe0330, 0xa0330, 0x60330, 0x20330, 0x10159, 0x0f401,
318353c3c4d0Sstsp 	0x00000, 0x00000, 0x80003, 0x00000, 0x00000, 0x44457, 0x80000,
318453c3c4d0Sstsp 	0x30159
318553c3c4d0Sstsp };
318653c3c4d0Sstsp 
318753c3c4d0Sstsp static const struct r92c_rf_prog rtl8188ru_rf_prog[] = {
318853c3c4d0Sstsp 	{
318953c3c4d0Sstsp 		nitems(rtl8192ce_rf1_regs),
319053c3c4d0Sstsp 		rtl8192ce_rf1_regs,
319153c3c4d0Sstsp 		rtl8188ru_rf_vals
319253c3c4d0Sstsp 	}
319353c3c4d0Sstsp };
319453c3c4d0Sstsp 
3195600882e8Sjmatthew /*
3196600882e8Sjmatthew  * RTL8723AE and RTL8723AU.
3197600882e8Sjmatthew  */
3198600882e8Sjmatthew 
3199067851b1Skevlo static const uint16_t rtl8723a_rf_regs[] = {
3200600882e8Sjmatthew 	0x00, 0x01, 0x02, 0x03, 0x04, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e,
3201600882e8Sjmatthew 	0x0f, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22,
3202600882e8Sjmatthew 	0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2a, 0x2b,
3203600882e8Sjmatthew 	0x2a, 0x2b, 0x2b, 0x2c, 0x2a, 0x2b, 0x2b, 0x2c, 0x2a, 0x2b, 0x2b,
3204600882e8Sjmatthew 	0x2c, 0x2a, 0x2b, 0x2b, 0x2c, 0x2a, 0x2b, 0x2b, 0x2c, 0x2a, 0x2b,
3205600882e8Sjmatthew 	0x2b, 0x2c, 0x2a, 0x2b, 0x2b, 0x2c, 0x2a, 0x2b, 0x2b, 0x2c, 0x2a,
3206600882e8Sjmatthew 	0x2b, 0x2b, 0x2c, 0x2a, 0x2b, 0x2b, 0x2c, 0x2a, 0x2b, 0x2b, 0x2c,
3207600882e8Sjmatthew 	0x2a, 0x2b, 0x2b, 0x2c, 0x2a, 0x2b, 0x2b, 0x2c, 0x2a, 0x2b, 0x2b,
3208600882e8Sjmatthew 	0x2c, 0x2a, 0x10, 0x11, 0x10, 0x11, 0x10, 0x11, 0x10, 0x11, 0x10,
3209600882e8Sjmatthew 	0x11, 0x10, 0x11, 0x10, 0x11, 0x12, 0x12, 0x12, 0x12, 0x13, 0x13,
3210600882e8Sjmatthew 	0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x14, 0x14,
3211600882e8Sjmatthew 	0x14, 0x14, 0x15, 0x15, 0x15, 0x15, 0x16, 0x16, 0x16, 0x16, 0x00,
3212600882e8Sjmatthew 	0x18, 0xfe, 0xfe, 0x1f, 0xfe, 0xfe, 0x1e, 0x1f, 0x00
3213600882e8Sjmatthew };
3214600882e8Sjmatthew 
3215600882e8Sjmatthew static const uint32_t rtl8723a_rf_vals[] = {
3216600882e8Sjmatthew 	0x30159, 0x31284, 0x98000, 0x18c63, 0x210e7, 0x2044f, 0x1a3f1,
3217600882e8Sjmatthew 	0x14787, 0x896fe, 0x0e02c, 0x39ce7, 0x00451, 0x00000, 0x30355,
3218600882e8Sjmatthew 	0x60a00, 0xfc378, 0xa1250, 0x4445f, 0x80001, 0x0b614, 0x6c000,
3219600882e8Sjmatthew 	0x00000, 0x01558, 0x00060, 0x00483, 0x4f000, 0xec7d9, 0x57730,
3220600882e8Sjmatthew 	0x04783, 0x00001, 0x21334, 0x00000, 0x00054, 0x00001, 0x00808,
3221600882e8Sjmatthew 	0x53333, 0x0000c, 0x00002, 0x00808, 0x5b333, 0x0000d, 0x00003,
3222600882e8Sjmatthew 	0x00808, 0x63333, 0x0000d, 0x00004, 0x00808, 0x6b333, 0x0000d,
3223600882e8Sjmatthew 	0x00005, 0x00808, 0x73333, 0x0000d, 0x00006, 0x00709, 0x5b333,
3224600882e8Sjmatthew 	0x0000d, 0x00007, 0x00709, 0x63333, 0x0000d, 0x00008, 0x0060a,
3225600882e8Sjmatthew 	0x4b333, 0x0000d, 0x00009, 0x0060a, 0x53333, 0x0000d, 0x0000a,
3226600882e8Sjmatthew 	0x0060a, 0x5b333, 0x0000d, 0x0000b, 0x0060a, 0x63333, 0x0000d,
3227600882e8Sjmatthew 	0x0000c, 0x0060a, 0x6b333, 0x0000d, 0x0000d, 0x0060a, 0x73333,
3228600882e8Sjmatthew 	0x0000d, 0x0000e, 0x0050b, 0x66666, 0x0001a, 0xe0000, 0x4000f,
3229600882e8Sjmatthew 	0xe31fc, 0x6000f, 0xff9f8, 0x2000f, 0x203f9, 0x3000f, 0xff500,
3230600882e8Sjmatthew 	0x00000, 0x00000, 0x8000f, 0x3f100, 0x9000f, 0x23100, 0x32000,
3231600882e8Sjmatthew 	0x71000, 0xb0000, 0xfc000, 0x287b3, 0x244b7, 0x204ab, 0x1c49f,
3232600882e8Sjmatthew 	0x18493, 0x1429b, 0x10299, 0x0c29c, 0x081a0, 0x040ac, 0x00020,
3233600882e8Sjmatthew 	0x1944c, 0x59444, 0x9944c, 0xd9444, 0x0f424, 0x4f407, 0x8f424,
3234600882e8Sjmatthew 	0xcf424, 0x00339, 0x40339, 0x80339, 0xc0336, 0x10159, 0x0f401,
3235600882e8Sjmatthew 	0x00000, 0x00000, 0x80003, 0x00000, 0x00000, 0x44457, 0x80000,
3236600882e8Sjmatthew 	0x30159
3237600882e8Sjmatthew };
3238600882e8Sjmatthew 
3239600882e8Sjmatthew static const struct r92c_rf_prog rtl8723a_rf_prog[] = {
3240600882e8Sjmatthew 	{
3241600882e8Sjmatthew 		nitems(rtl8723a_rf_regs),
3242600882e8Sjmatthew 		rtl8723a_rf_regs,
3243600882e8Sjmatthew 		rtl8723a_rf_vals
3244600882e8Sjmatthew 	}
3245600882e8Sjmatthew };
3246600882e8Sjmatthew 
324753c3c4d0Sstsp struct r92c_txpwr {
324853c3c4d0Sstsp 	uint8_t	pwr[3][28];
324953c3c4d0Sstsp };
325053c3c4d0Sstsp 
325153c3c4d0Sstsp /*
325253c3c4d0Sstsp  * Per RF chain/group/rate Tx gain values.
325353c3c4d0Sstsp  */
325453c3c4d0Sstsp static const struct r92c_txpwr rtl8192cu_txagc[] = {
325553c3c4d0Sstsp 	{ {	/* Chain 0. */
325653c3c4d0Sstsp 	{	/* Group 0. */
325753c3c4d0Sstsp 	0x00, 0x00, 0x00, 0x00,				/* CCK1~11. */
325853c3c4d0Sstsp 	0x0c, 0x0c, 0x0c, 0x0a, 0x08, 0x06, 0x04, 0x02,	/* OFDM6~54. */
325953c3c4d0Sstsp 	0x0e, 0x0d, 0x0c, 0x0a, 0x08, 0x06, 0x04, 0x02,	/* MCS0~7. */
326053c3c4d0Sstsp 	0x0e, 0x0d, 0x0c, 0x0a, 0x08, 0x06, 0x04, 0x02	/* MCS8~15. */
326153c3c4d0Sstsp 	},
326253c3c4d0Sstsp 	{	/* Group 1. */
326353c3c4d0Sstsp 	0x00, 0x00, 0x00, 0x00,				/* CCK1~11. */
326453c3c4d0Sstsp 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/* OFDM6~54. */
326553c3c4d0Sstsp 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/* MCS0~7. */
326653c3c4d0Sstsp 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00	/* MCS8~15. */
326753c3c4d0Sstsp 	},
326853c3c4d0Sstsp 	{	/* Group 2. */
326953c3c4d0Sstsp 	0x00, 0x00, 0x00, 0x00,				/* CCK1~11. */
327053c3c4d0Sstsp 	0x04, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x00,	/* OFDM6~54. */
327153c3c4d0Sstsp 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/* MCS0~7. */
327253c3c4d0Sstsp 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00	/* MCS8~15. */
327353c3c4d0Sstsp 	}
327453c3c4d0Sstsp 	} },
327553c3c4d0Sstsp 	{ {	/* Chain 1. */
327653c3c4d0Sstsp 	{	/* Group 0. */
327753c3c4d0Sstsp 	0x00, 0x00, 0x00, 0x00,				/* CCK1~11. */
327853c3c4d0Sstsp 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/* OFDM6~54. */
327953c3c4d0Sstsp 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/* MCS0~7. */
328053c3c4d0Sstsp 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00	/* MCS8~15. */
328153c3c4d0Sstsp 	},
328253c3c4d0Sstsp 	{	/* Group 1. */
328353c3c4d0Sstsp 	0x00, 0x00, 0x00, 0x00,				/* CCK1~11. */
328453c3c4d0Sstsp 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/* OFDM6~54. */
328553c3c4d0Sstsp 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/* MCS0~7. */
328653c3c4d0Sstsp 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00	/* MCS8~15. */
328753c3c4d0Sstsp 	},
328853c3c4d0Sstsp 	{	/* Group 2. */
328953c3c4d0Sstsp 	0x00, 0x00, 0x00, 0x00,				/* CCK1~11. */
329053c3c4d0Sstsp 	0x04, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x00,	/* OFDM6~54. */
329153c3c4d0Sstsp 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/* MCS0~7. */
329253c3c4d0Sstsp 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00	/* MCS8~15. */
329353c3c4d0Sstsp 	}
329453c3c4d0Sstsp 	} }
329553c3c4d0Sstsp };
329653c3c4d0Sstsp 
329753c3c4d0Sstsp static const struct r92c_txpwr rtl8188ru_txagc[] = {
329853c3c4d0Sstsp 	{ {	/* Chain 0. */
329953c3c4d0Sstsp 	{	/* Group 0. */
330053c3c4d0Sstsp 	0x00, 0x00, 0x00, 0x00,				/* CCK1~11. */
330153c3c4d0Sstsp 	0x08, 0x08, 0x08, 0x06, 0x06, 0x04, 0x04, 0x00,	/* OFDM6~54. */
330253c3c4d0Sstsp 	0x08, 0x06, 0x06, 0x04, 0x04, 0x02, 0x02, 0x00,	/* MCS0~7. */
330353c3c4d0Sstsp 	0x08, 0x06, 0x06, 0x04, 0x04, 0x02, 0x02, 0x00	/* MCS8~15. */
330453c3c4d0Sstsp 	},
330553c3c4d0Sstsp 	{	/* Group 1. */
330653c3c4d0Sstsp 	0x00, 0x00, 0x00, 0x00,				/* CCK1~11. */
330753c3c4d0Sstsp 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/* OFDM6~54. */
330853c3c4d0Sstsp 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/* MCS0~7. */
330953c3c4d0Sstsp 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00	/* MCS8~15. */
331053c3c4d0Sstsp 	},
331153c3c4d0Sstsp 	{	/* Group 2. */
331253c3c4d0Sstsp 	0x00, 0x00, 0x00, 0x00,				/* CCK1~11. */
331353c3c4d0Sstsp 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/* OFDM6~54. */
331453c3c4d0Sstsp 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/* MCS0~7. */
331553c3c4d0Sstsp 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00	/* MCS8~15. */
331653c3c4d0Sstsp 	}
331753c3c4d0Sstsp 	} }
331853c3c4d0Sstsp };
3319