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