1/* $NetBSD: rtwn_data.h,v 1.2 2022/09/26 19:04:49 martin Exp $ */ 2/* $OpenBSD: r92creg.h,v 1.16 2017/09/22 13:41:56 kevlo Exp $ */ 3 4/*- 5 * Copyright (c) 2010 Damien Bergamini <damien.bergamini@free.fr> 6 * Copyright (c) 2015 Stefan Sperling <stsp@openbsd.org> 7 * Copyright (c) 2016 Nathanial Sloss <nathanialsloss@yahoo.com.au> 8 * 9 * Permission to use, copy, modify, and distribute this software for any 10 * purpose with or without fee is hereby granted, provided that the above 11 * copyright notice and this permission notice appear in all copies. 12 * 13 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 14 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 15 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 16 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 17 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 18 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 19 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 20 */ 21 22#ifndef _DEV_IC_RTWN_DATA_H_ 23#define _DEV_IC_RTWN_DATA_H_ 24 25/* 26 * MAC initialization values. 27 */ 28static const struct { 29 uint16_t reg; 30 uint8_t val; 31} rtl8192ce_mac[] = { 32 { 0x420, 0x80 }, { 0x423, 0x00 }, { 0x430, 0x00 }, { 0x431, 0x00 }, 33 { 0x432, 0x00 }, { 0x433, 0x01 }, { 0x434, 0x04 }, { 0x435, 0x05 }, 34 { 0x436, 0x06 }, { 0x437, 0x07 }, { 0x438, 0x00 }, { 0x439, 0x00 }, 35 { 0x43a, 0x00 }, { 0x43b, 0x01 }, { 0x43c, 0x04 }, { 0x43d, 0x05 }, 36 { 0x43e, 0x06 }, { 0x43f, 0x07 }, { 0x440, 0x5d }, { 0x441, 0x01 }, 37 { 0x442, 0x00 }, { 0x444, 0x15 }, { 0x445, 0xf0 }, { 0x446, 0x0f }, 38 { 0x447, 0x00 }, { 0x458, 0x41 }, { 0x459, 0xa8 }, { 0x45a, 0x72 }, 39 { 0x45b, 0xb9 }, { 0x460, 0x88 }, { 0x461, 0x88 }, { 0x462, 0x06 }, 40 { 0x463, 0x03 }, { 0x4c8, 0x04 }, { 0x4c9, 0x08 }, { 0x4cc, 0x02 }, 41 { 0x4cd, 0x28 }, { 0x4ce, 0x01 }, { 0x500, 0x26 }, { 0x501, 0xa2 }, 42 { 0x502, 0x2f }, { 0x503, 0x00 }, { 0x504, 0x28 }, { 0x505, 0xa3 }, 43 { 0x506, 0x5e }, { 0x507, 0x00 }, { 0x508, 0x2b }, { 0x509, 0xa4 }, 44 { 0x50a, 0x5e }, { 0x50b, 0x00 }, { 0x50c, 0x4f }, { 0x50d, 0xa4 }, 45 { 0x50e, 0x00 }, { 0x50f, 0x00 }, { 0x512, 0x1c }, { 0x514, 0x0a }, 46 { 0x515, 0x10 }, { 0x516, 0x0a }, { 0x517, 0x10 }, { 0x51a, 0x16 }, 47 { 0x524, 0x0f }, { 0x525, 0x4f }, { 0x546, 0x20 }, { 0x547, 0x00 }, 48 { 0x559, 0x02 }, { 0x55a, 0x02 }, { 0x55d, 0xff }, { 0x605, 0x30 }, 49 { 0x608, 0x0e }, { 0x609, 0x2a }, { 0x652, 0x20 }, { 0x63c, 0x0a }, 50 { 0x63d, 0x0e }, { 0x700, 0x21 }, { 0x701, 0x43 }, { 0x702, 0x65 }, 51 { 0x703, 0x87 }, { 0x708, 0x21 }, { 0x709, 0x43 }, { 0x70a, 0x65 }, 52 { 0x70b, 0x87 } 53}, rtl8192eu_mac[] = { 54 { 0x011, 0xeb }, { 0x012, 0x07 }, { 0x014, 0x75 }, { 0x303, 0xa7 }, 55 { 0x428, 0x0a }, { 0x429, 0x10 }, { 0x430, 0x00 }, { 0x431, 0x00 }, 56 { 0x432, 0x00 }, { 0x433, 0x01 }, { 0x434, 0x04 }, { 0x435, 0x05 }, 57 { 0x436, 0x07 }, { 0x437, 0x08 }, { 0x43c, 0x04 }, { 0x43d, 0x05 }, 58 { 0x43e, 0x07 }, { 0x43f, 0x08 }, { 0x440, 0x5d }, { 0x441, 0x01 }, 59 { 0x442, 0x00 }, { 0x444, 0x10 }, { 0x445, 0x00 }, { 0x446, 0x00 }, 60 { 0x447, 0x00 }, { 0x448, 0x00 }, { 0x449, 0xf0 }, { 0x44a, 0x0f }, 61 { 0x44b, 0x3e }, { 0x44c, 0x10 }, { 0x44d, 0x00 }, { 0x44e, 0x00 }, 62 { 0x44f, 0x00 }, { 0x450, 0x00 }, { 0x451, 0xf0 }, { 0x452, 0x0f }, 63 { 0x453, 0x00 }, { 0x456, 0x5e }, { 0x460, 0x66 }, { 0x461, 0x66 }, 64 { 0x4c8, 0xff }, { 0x4c9, 0x08 }, { 0x4cc, 0xff }, { 0x4cd, 0xff }, 65 { 0x4ce, 0x01 }, { 0x500, 0x26 }, { 0x501, 0xa2 }, { 0x502, 0x2f }, 66 { 0x503, 0x00 }, { 0x504, 0x28 }, { 0x505, 0xa3 }, { 0x506, 0x5e }, 67 { 0x507, 0x00 }, { 0x508, 0x2b }, { 0x509, 0xa4 }, { 0x50a, 0x5e }, 68 { 0x50b, 0x00 }, { 0x50c, 0x4f }, { 0x50d, 0xa4 }, { 0x50e, 0x00 }, 69 { 0x50f, 0x00 }, { 0x512, 0x1c }, { 0x514, 0x0a }, { 0x516, 0x0a }, 70 { 0x525, 0x4f }, { 0x540, 0x12 }, { 0x541, 0x64 }, { 0x550, 0x10 }, 71 { 0x551, 0x10 }, { 0x559, 0x02 }, { 0x55c, 0x50 }, { 0x55d, 0xff }, 72 { 0x605, 0x30 }, { 0x608, 0x0e }, { 0x609, 0x2a }, { 0x620, 0xff }, 73 { 0x621, 0xff }, { 0x622, 0xff }, { 0x623, 0xff }, { 0x624, 0xff }, 74 { 0x625, 0xff }, { 0x626, 0xff }, { 0x627, 0xff }, { 0x638, 0x50 }, 75 { 0x63c, 0x0a }, { 0x63d, 0x0a }, { 0x63e, 0x0e }, { 0x63f, 0x0e }, 76 { 0x640, 0x40 }, { 0x642, 0x40 }, { 0x643, 0x00 }, { 0x652, 0xc8 }, 77 { 0x66e, 0x05 }, { 0x700, 0x21 }, { 0x701, 0x43 }, { 0x702, 0x65 }, 78 { 0x703, 0x87 }, { 0x708, 0x21 }, { 0x709, 0x43 }, { 0x70a, 0x65 }, 79 { 0x70b, 0x87 }, 80}, rtl8188eu_mac[] = { 81 { 0x026, 0x41 }, { 0x027, 0x35 }, { 0x040, 0x00 }, { 0x428, 0x0a }, 82 { 0x429, 0x10 }, { 0x430, 0x00 }, { 0x431, 0x01 }, { 0x432, 0x02 }, 83 { 0x433, 0x04 }, { 0x434, 0x05 }, { 0x435, 0x06 }, { 0x436, 0x07 }, 84 { 0x437, 0x08 }, { 0x438, 0x00 }, { 0x439, 0x00 }, { 0x43a, 0x01 }, 85 { 0x43b, 0x02 }, { 0x43c, 0x04 }, { 0x43d, 0x05 }, { 0x43e, 0x06 }, 86 { 0x43f, 0x07 }, { 0x440, 0x5d }, { 0x441, 0x01 }, { 0x442, 0x00 }, 87 { 0x444, 0x15 }, { 0x445, 0xf0 }, { 0x446, 0x0f }, { 0x447, 0x00 }, 88 { 0x458, 0x41 }, { 0x459, 0xa8 }, { 0x45a, 0x72 }, { 0x45b, 0xb9 }, 89 { 0x460, 0x66 }, { 0x461, 0x66 }, { 0x480, 0x08 }, { 0x4c8, 0xff }, 90 { 0x4c9, 0x08 }, { 0x4cc, 0xff }, { 0x4cd, 0xff }, { 0x4ce, 0x01 }, 91 { 0x4d3, 0x01 }, { 0x500, 0x26 }, { 0x501, 0xa2 }, { 0x502, 0x2f }, 92 { 0x503, 0x00 }, { 0x504, 0x28 }, { 0x505, 0xa3 }, { 0x506, 0x5e }, 93 { 0x507, 0x00 }, { 0x508, 0x2b }, { 0x509, 0xa4 }, { 0x50a, 0x5e }, 94 { 0x50b, 0x00 }, { 0x50c, 0x4f }, { 0x50d, 0xa4 }, { 0x50e, 0x00 }, 95 { 0x50f, 0x00 }, { 0x512, 0x1c }, { 0x514, 0x0a }, { 0x516, 0x0a }, 96 { 0x525, 0x4f }, { 0x550, 0x10 }, { 0x551, 0x10 }, { 0x559, 0x02 }, 97 { 0x55d, 0xff }, { 0x605, 0x30 }, { 0x608, 0x0e }, { 0x609, 0x2a }, 98 { 0x620, 0xff }, { 0x621, 0xff }, { 0x622, 0xff }, { 0x623, 0xff }, 99 { 0x624, 0xff }, { 0x625, 0xff }, { 0x626, 0xff }, { 0x627, 0xff }, 100 { 0x652, 0x20 }, { 0x63c, 0x0a }, { 0x63d, 0x0a }, { 0x63e, 0x0e }, 101 { 0x63f, 0x0e }, { 0x640, 0x40 }, { 0x66e, 0x05 }, { 0x700, 0x21 }, 102 { 0x701, 0x43 }, { 0x702, 0x65 }, { 0x703, 0x87 }, { 0x708, 0x21 }, 103 { 0x709, 0x43 }, { 0x70a, 0x65 }, { 0x70b, 0x87 } 104}, rtl8192cu_mac[] = { 105 { 0x420, 0x80 }, { 0x423, 0x00 }, { 0x430, 0x00 }, { 0x431, 0x00 }, 106 { 0x432, 0x00 }, { 0x433, 0x01 }, { 0x434, 0x04 }, { 0x435, 0x05 }, 107 { 0x436, 0x06 }, { 0x437, 0x07 }, { 0x438, 0x00 }, { 0x439, 0x00 }, 108 { 0x43a, 0x00 }, { 0x43b, 0x01 }, { 0x43c, 0x04 }, { 0x43d, 0x05 }, 109 { 0x43e, 0x06 }, { 0x43f, 0x07 }, { 0x440, 0x5d }, { 0x441, 0x01 }, 110 { 0x442, 0x00 }, { 0x444, 0x15 }, { 0x445, 0xf0 }, { 0x446, 0x0f }, 111 { 0x447, 0x00 }, { 0x458, 0x41 }, { 0x459, 0xa8 }, { 0x45a, 0x72 }, 112 { 0x45b, 0xb9 }, { 0x460, 0x66 }, { 0x461, 0x66 }, { 0x462, 0x08 }, 113 { 0x463, 0x03 }, { 0x4c8, 0xff }, { 0x4c9, 0x08 }, { 0x4cc, 0xff }, 114 { 0x4cd, 0xff }, { 0x4ce, 0x01 }, { 0x500, 0x26 }, { 0x501, 0xa2 }, 115 { 0x502, 0x2f }, { 0x503, 0x00 }, { 0x504, 0x28 }, { 0x505, 0xa3 }, 116 { 0x506, 0x5e }, { 0x507, 0x00 }, { 0x508, 0x2b }, { 0x509, 0xa4 }, 117 { 0x50a, 0x5e }, { 0x50b, 0x00 }, { 0x50c, 0x4f }, { 0x50d, 0xa4 }, 118 { 0x50e, 0x00 }, { 0x50f, 0x00 }, { 0x512, 0x1c }, { 0x514, 0x0a }, 119 { 0x515, 0x10 }, { 0x516, 0x0a }, { 0x517, 0x10 }, { 0x51a, 0x16 }, 120 { 0x524, 0x0f }, { 0x525, 0x4f }, { 0x546, 0x40 }, { 0x547, 0x00 }, 121 { 0x550, 0x10 }, { 0x551, 0x10 }, { 0x559, 0x02 }, { 0x55a, 0x02 }, 122 { 0x55d, 0xff }, { 0x605, 0x30 }, { 0x608, 0x0e }, { 0x609, 0x2a }, 123 { 0x652, 0x20 }, { 0x63c, 0x0a }, { 0x63d, 0x0e }, { 0x63e, 0x0a }, 124 { 0x63f, 0x0e }, { 0x66e, 0x05 }, { 0x700, 0x21 }, { 0x701, 0x43 }, 125 { 0x702, 0x65 }, { 0x703, 0x87 }, { 0x708, 0x21 }, { 0x709, 0x43 }, 126 { 0x70a, 0x65 }, { 0x70b, 0x87 } 127}; 128 129/* 130 * Baseband initialization values. 131 */ 132struct rtwn_bb_prog { 133 int count; 134 const uint16_t *regs; 135 const uint32_t *vals; 136 int agccount; 137 const uint32_t *agcvals; 138}; 139 140/* 141 * RTL8192CU and RTL8192CE-VAU. 142 */ 143static const uint16_t rtl8192ce_bb_regs[] = { 144 0x024, 0x028, 0x800, 0x804, 0x808, 0x80c, 0x810, 0x814, 0x818, 145 0x81c, 0x820, 0x824, 0x828, 0x82c, 0x830, 0x834, 0x838, 0x83c, 146 0x840, 0x844, 0x848, 0x84c, 0x850, 0x854, 0x858, 0x85c, 0x860, 147 0x864, 0x868, 0x86c, 0x870, 0x874, 0x878, 0x87c, 0x880, 0x884, 148 0x888, 0x88c, 0x890, 0x894, 0x898, 0x89c, 0x900, 0x904, 0x908, 149 0x90c, 0xa00, 0xa04, 0xa08, 0xa0c, 0xa10, 0xa14, 0xa18, 0xa1c, 150 0xa20, 0xa24, 0xa28, 0xa2c, 0xa70, 0xa74, 0xc00, 0xc04, 0xc08, 151 0xc0c, 0xc10, 0xc14, 0xc18, 0xc1c, 0xc20, 0xc24, 0xc28, 0xc2c, 152 0xc30, 0xc34, 0xc38, 0xc3c, 0xc40, 0xc44, 0xc48, 0xc4c, 0xc50, 153 0xc54, 0xc58, 0xc5c, 0xc60, 0xc64, 0xc68, 0xc6c, 0xc70, 0xc74, 154 0xc78, 0xc7c, 0xc80, 0xc84, 0xc88, 0xc8c, 0xc90, 0xc94, 0xc98, 155 0xc9c, 0xca0, 0xca4, 0xca8, 0xcac, 0xcb0, 0xcb4, 0xcb8, 0xcbc, 156 0xcc0, 0xcc4, 0xcc8, 0xccc, 0xcd0, 0xcd4, 0xcd8, 0xcdc, 0xce0, 157 0xce4, 0xce8, 0xcec, 0xd00, 0xd04, 0xd08, 0xd0c, 0xd10, 0xd14, 158 0xd18, 0xd2c, 0xd30, 0xd34, 0xd38, 0xd3c, 0xd40, 0xd44, 0xd48, 159 0xd4c, 0xd50, 0xd54, 0xd58, 0xd5c, 0xd60, 0xd64, 0xd68, 0xd6c, 160 0xd70, 0xd74, 0xd78, 0xe00, 0xe04, 0xe08, 0xe10, 0xe14, 0xe18, 161 0xe1c, 0xe28, 0xe30, 0xe34, 0xe38, 0xe3c, 0xe40, 0xe44, 0xe48, 162 0xe4c, 0xe50, 0xe54, 0xe58, 0xe5c, 0xe60, 0xe68, 0xe6c, 0xe70, 163 0xe74, 0xe78, 0xe7c, 0xe80, 0xe84, 0xe88, 0xe8c, 0xed0, 0xed4, 164 0xed8, 0xedc, 0xee0, 0xeec, 0xf14, 0xf4c, 0xf00 165}; 166 167static const uint32_t rtl8192ce_bb_vals[] = { 168 0x0011800d, 0x00ffdb83, 0x80040002, 0x00000003, 0x0000fc00, 169 0x0000000a, 0x10005388, 0x020c3d10, 0x02200385, 0x00000000, 170 0x01000100, 0x00390004, 0x01000100, 0x00390004, 0x27272727, 171 0x27272727, 0x27272727, 0x27272727, 0x00010000, 0x00010000, 172 0x27272727, 0x27272727, 0x00000000, 0x00000000, 0x569a569a, 173 0x0c1b25a4, 0x66e60230, 0x061f0130, 0x27272727, 0x2b2b2b27, 174 0x07000700, 0x22184000, 0x08080808, 0x00000000, 0xc0083070, 175 0x000004d5, 0x00000000, 0xcc0000c0, 0x00000800, 0xfffffffe, 176 0x40302010, 0x00706050, 0x00000000, 0x00000023, 0x00000000, 177 0x81121313, 0x00d047c8, 0x80ff000c, 0x8c838300, 0x2e68120f, 178 0x9500bb78, 0x11144028, 0x00881117, 0x89140f00, 0x1a1b0000, 179 0x090e1317, 0x00000204, 0x00d30000, 0x101fbf00, 0x00000007, 180 0x48071d40, 0x03a05633, 0x000000e4, 0x6c6c6c6c, 0x08800000, 181 0x40000100, 0x08800000, 0x40000100, 0x00000000, 0x00000000, 182 0x00000000, 0x00000000, 0x69e9ac44, 0x469652cf, 0x49795994, 183 0x0a97971c, 0x1f7c403f, 0x000100b7, 0xec020107, 0x007f037f, 184 0x6954341e, 0x43bc0094, 0x6954341e, 0x433c0094, 0x00000000, 185 0x5116848b, 0x47c00bff, 0x00000036, 0x2c7f000d, 0x018610db, 186 0x0000001f, 0x00b91612, 0x40000100, 0x20f60000, 0x40000100, 187 0x20200000, 0x00121820, 0x00000000, 0x00121820, 0x00007f7f, 188 0x00000000, 0x00000080, 0x00000000, 0x00000000, 0x00000000, 189 0x00000000, 0x00000000, 0x28000000, 0x00000000, 0x00000000, 190 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x64b22427, 191 0x00766932, 0x00222222, 0x00000000, 0x37644302, 0x2f97d40c, 192 0x00080740, 0x00020403, 0x0000907f, 0x20010201, 0xa0633333, 193 0x3333bc43, 0x7a8f5b6b, 0xcc979975, 0x00000000, 0x80608000, 194 0x00000000, 0x00027293, 0x00000000, 0x00000000, 0x00000000, 195 0x00000000, 0x6437140a, 0x00000000, 0x00000000, 0x30032064, 196 0x4653de68, 0x04518a3c, 0x00002101, 0x2a201c16, 0x1812362e, 197 0x322c2220, 0x000e3c24, 0x2a2a2a2a, 0x2a2a2a2a, 0x03902a2a, 198 0x2a2a2a2a, 0x2a2a2a2a, 0x2a2a2a2a, 0x2a2a2a2a, 0x00000000, 199 0x1000dc1f, 0x10008c1f, 0x02140102, 0x681604c2, 0x01007c00, 200 0x01004800, 0xfb000000, 0x000028d1, 0x1000dc1f, 0x10008c1f, 201 0x02140102, 0x28160d05, 0x00000010, 0x001b25a4, 0x63db25a4, 202 0x63db25a4, 0x0c1b25a4, 0x0c1b25a4, 0x0c1b25a4, 0x0c1b25a4, 203 0x63db25a4, 0x0c1b25a4, 0x63db25a4, 0x63db25a4, 0x63db25a4, 204 0x63db25a4, 0x001b25a4, 0x001b25a4, 0x6fdb25a4, 0x00000003, 205 0x00000000, 0x00000300 206}; 207 208static const uint32_t rtl8192ce_bb_vals_2t[] = { 209 0x0011800f, 0x00ffdb83, 0x80040002, 0x00000003, 0x0000fc00, 210 0x0000000a, 0x10005388, 0x020c3d10, 0x02200385, 0x00000000, 211 0x01000100, 0x00390004, 0x01000100, 0x00390004, 0x27272727, 212 0x27272727, 0x27272727, 0x27272727, 0x00010000, 0x00010000, 213 0x27272727, 0x27272727, 0x00000000, 0x00000000, 0x569a569a, 214 0x0c1b25a4, 0x66e60230, 0x061f0130, 0x27272727, 0x2b2b2b27, 215 0x07000700, 0x22184000, 0x08080808, 0x00000000, 0xc0083070, 216 0x000004d5, 0x00000000, 0xcc0000c0, 0x00000800, 0xfffffffe, 217 0x40302010, 0x00706050, 0x00000000, 0x00000023, 0x00000000, 218 0x81121313, 0x00d047c8, 0x80ff000c, 0x8c838300, 0x2e68120f, 219 0x9500bb78, 0x11144028, 0x00881117, 0x89140f00, 0x1a1b0000, 220 0x090e1317, 0x00000204, 0x00d30000, 0x101fbf00, 0x00000007, 221 0x48071d40, 0x03a05633, 0x000000e4, 0x6c6c6c6c, 0x08800000, 222 0x40000100, 0x08800000, 0x40000100, 0x00000000, 0x00000000, 223 0x00000000, 0x00000000, 0x69e9ac44, 0x469652cf, 0x49795994, 224 0x0a97971c, 0x1f7c403f, 0x000100b7, 0xec020107, 0x007f037f, 225 0x69543420, 0x43bc0094, 0x69543420, 0x433c0094, 0x00000000, 226 0x5116848b, 0x47c00bff, 0x00000036, 0x2c7f000d, 0x018610db, 227 0x0000001f, 0x00b91612, 0x40000100, 0x20f60000, 0x40000100, 228 0x20200000, 0x00121820, 0x00000000, 0x00121820, 0x00007f7f, 229 0x00000000, 0x00000080, 0x00000000, 0x00000000, 0x00000000, 230 0x00000000, 0x00000000, 0x28000000, 0x00000000, 0x00000000, 231 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x64b22427, 232 0x00766932, 0x00222222, 0x00000000, 0x37644302, 0x2f97d40c, 233 0x00080740, 0x00020403, 0x0000907f, 0x20010201, 0xa0633333, 234 0x3333bc43, 0x7a8f5b6b, 0xcc979975, 0x00000000, 0x80608000, 235 0x00000000, 0x00027293, 0x00000000, 0x00000000, 0x00000000, 236 0x00000000, 0x6437140a, 0x00000000, 0x00000000, 0x30032064, 237 0x4653de68, 0x04518a3c, 0x00002101, 0x2a201c16, 0x1812362e, 238 0x322c2220, 0x000e3c24, 0x2a2a2a2a, 0x2a2a2a2a, 0x03902a2a, 239 0x2a2a2a2a, 0x2a2a2a2a, 0x2a2a2a2a, 0x2a2a2a2a, 0x00000000, 240 0x1000dc1f, 0x10008c1f, 0x02140102, 0x681604c2, 0x01007c00, 241 0x01004800, 0xfb000000, 0x000028d1, 0x1000dc1f, 0x10008c1f, 242 0x02140102, 0x28160d05, 0x00000010, 0x001b25a4, 0x63db25a4, 243 0x63db25a4, 0x0c1b25a4, 0x0c1b25a4, 0x0c1b25a4, 0x0c1b25a4, 244 0x63db25a4, 0x0c1b25a4, 0x63db25a4, 0x63db25a4, 0x63db25a4, 245 0x63db25a4, 0x001b25a4, 0x001b25a4, 0x6fdb25a4, 0x00000003, 246 0x00000000, 0x00000300 247}; 248 249static const uint32_t rtl8192ce_bb_vals_1t[] = { 250 0x0011800f, 0x00ffdb83, 0x80040000, 0x00000001, 0x0000fc00, 251 0x0000000a, 0x10005388, 0x020c3d10, 0x02200385, 0x00000000, 252 0x01000100, 0x00390004, 0x00000000, 0x00000000, 0x00000000, 253 0x00000000, 0x00000000, 0x00000000, 0x00010000, 0x00000000, 254 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x569a569a, 255 0x001b25a4, 0x66e60230, 0x061f0130, 0x00000000, 0x32323200, 256 0x07000700, 0x22004000, 0x00000808, 0x00000000, 0xc0083070, 257 0x000004d5, 0x00000000, 0xccc000c0, 0x00000800, 0xfffffffe, 258 0x40302010, 0x00706050, 0x00000000, 0x00000023, 0x00000000, 259 0x81121111, 0x00d047c8, 0x80ff000c, 0x8c838300, 0x2e68120f, 260 0x9500bb78, 0x11144028, 0x00881117, 0x89140f00, 0x1a1b0000, 261 0x090e1317, 0x00000204, 0x00d30000, 0x101fbf00, 0x00000007, 262 0x48071d40, 0x03a05611, 0x000000e4, 0x6c6c6c6c, 0x08800000, 263 0x40000100, 0x08800000, 0x40000100, 0x00000000, 0x00000000, 264 0x00000000, 0x00000000, 0x69e9ac44, 0x469652cf, 0x49795994, 265 0x0a97971c, 0x1f7c403f, 0x000100b7, 0xec020107, 0x007f037f, 266 0x69543420, 0x43bc0094, 0x69543420, 0x433c0094, 0x00000000, 267 0x5116848b, 0x47c00bff, 0x00000036, 0x2c7f000d, 0x018610db, 268 0x0000001f, 0x00b91612, 0x40000100, 0x20f60000, 0x40000100, 269 0x20200000, 0x00121820, 0x00000000, 0x00121820, 0x00007f7f, 270 0x00000000, 0x00000080, 0x00000000, 0x00000000, 0x00000000, 271 0x00000000, 0x00000000, 0x28000000, 0x00000000, 0x00000000, 272 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x64b22427, 273 0x00766932, 0x00222222, 0x00000000, 0x37644302, 0x2f97d40c, 274 0x00080740, 0x00020401, 0x0000907f, 0x20010201, 0xa0633333, 275 0x3333bc43, 0x7a8f5b6b, 0xcc979975, 0x00000000, 0x80608000, 276 0x00000000, 0x00027293, 0x00000000, 0x00000000, 0x00000000, 277 0x00000000, 0x6437140a, 0x00000000, 0x00000000, 0x30032064, 278 0x4653de68, 0x04518a3c, 0x00002101, 0x2a201c16, 0x1812362e, 279 0x322c2220, 0x000e3c24, 0x2a2a2a2a, 0x2a2a2a2a, 0x03902a2a, 280 0x2a2a2a2a, 0x2a2a2a2a, 0x2a2a2a2a, 0x2a2a2a2a, 0x00000000, 281 0x1000dc1f, 0x10008c1f, 0x02140102, 0x681604c2, 0x01007c00, 282 0x01004800, 0xfb000000, 0x000028d1, 0x1000dc1f, 0x10008c1f, 283 0x02140102, 0x28160d05, 0x00000010, 0x001b25a4, 0x631b25a0, 284 0x631b25a0, 0x081b25a0, 0x081b25a0, 0x081b25a0, 0x081b25a0, 285 0x631b25a0, 0x081b25a0, 0x631b25a0, 0x631b25a0, 0x631b25a0, 286 0x631b25a0, 0x001b25a0, 0x001b25a0, 0x6b1b25a0, 0x00000003, 287 0x00000000, 0x00000300, 288}; 289 290static const uint32_t rtl8192ce_agc_vals[] = { 291 0x7b000001, 0x7b010001, 0x7b020001, 0x7b030001, 0x7b040001, 292 0x7b050001, 0x7a060001, 0x79070001, 0x78080001, 0x77090001, 293 0x760a0001, 0x750b0001, 0x740c0001, 0x730d0001, 0x720e0001, 294 0x710f0001, 0x70100001, 0x6f110001, 0x6e120001, 0x6d130001, 295 0x6c140001, 0x6b150001, 0x6a160001, 0x69170001, 0x68180001, 296 0x67190001, 0x661a0001, 0x651b0001, 0x641c0001, 0x631d0001, 297 0x621e0001, 0x611f0001, 0x60200001, 0x49210001, 0x48220001, 298 0x47230001, 0x46240001, 0x45250001, 0x44260001, 0x43270001, 299 0x42280001, 0x41290001, 0x402a0001, 0x262b0001, 0x252c0001, 300 0x242d0001, 0x232e0001, 0x222f0001, 0x21300001, 0x20310001, 301 0x06320001, 0x05330001, 0x04340001, 0x03350001, 0x02360001, 302 0x01370001, 0x00380001, 0x00390001, 0x003a0001, 0x003b0001, 303 0x003c0001, 0x003d0001, 0x003e0001, 0x003f0001, 0x7b400001, 304 0x7b410001, 0x7b420001, 0x7b430001, 0x7b440001, 0x7b450001, 305 0x7a460001, 0x79470001, 0x78480001, 0x77490001, 0x764a0001, 306 0x754b0001, 0x744c0001, 0x734d0001, 0x724e0001, 0x714f0001, 307 0x70500001, 0x6f510001, 0x6e520001, 0x6d530001, 0x6c540001, 308 0x6b550001, 0x6a560001, 0x69570001, 0x68580001, 0x67590001, 309 0x665a0001, 0x655b0001, 0x645c0001, 0x635d0001, 0x625e0001, 310 0x615f0001, 0x60600001, 0x49610001, 0x48620001, 0x47630001, 311 0x46640001, 0x45650001, 0x44660001, 0x43670001, 0x42680001, 312 0x41690001, 0x406a0001, 0x266b0001, 0x256c0001, 0x246d0001, 313 0x236e0001, 0x226f0001, 0x21700001, 0x20710001, 0x06720001, 314 0x05730001, 0x04740001, 0x03750001, 0x02760001, 0x01770001, 315 0x00780001, 0x00790001, 0x007a0001, 0x007b0001, 0x007c0001, 316 0x007d0001, 0x007e0001, 0x007f0001, 0x3800001e, 0x3801001e, 317 0x3802001e, 0x3803001e, 0x3804001e, 0x3805001e, 0x3806001e, 318 0x3807001e, 0x3808001e, 0x3c09001e, 0x3e0a001e, 0x400b001e, 319 0x440c001e, 0x480d001e, 0x4c0e001e, 0x500f001e, 0x5210001e, 320 0x5611001e, 0x5a12001e, 0x5e13001e, 0x6014001e, 0x6015001e, 321 0x6016001e, 0x6217001e, 0x6218001e, 0x6219001e, 0x621a001e, 322 0x621b001e, 0x621c001e, 0x621d001e, 0x621e001e, 0x621f001e 323}; 324 325static const struct rtwn_bb_prog rtl8192ce_bb_prog = { 326 __arraycount(rtl8192ce_bb_regs), 327 rtl8192ce_bb_regs, 328 rtl8192ce_bb_vals, 329 __arraycount(rtl8192ce_agc_vals), 330 rtl8192ce_agc_vals 331}; 332 333static const struct rtwn_bb_prog rtl8192ce_bb_prog_2t = { 334 __arraycount(rtl8192ce_bb_regs), 335 rtl8192ce_bb_regs, 336 rtl8192ce_bb_vals_2t, 337 __arraycount(rtl8192ce_agc_vals), 338 rtl8192ce_agc_vals 339}; 340 341static const struct rtwn_bb_prog rtl8192ce_bb_prog_1t = { 342 __arraycount(rtl8192ce_bb_regs), 343 rtl8192ce_bb_regs, 344 rtl8192ce_bb_vals_1t, 345 __arraycount(rtl8192ce_agc_vals), 346 rtl8192ce_agc_vals 347}; 348 349/* 350 * RTL8188CU. 351 */ 352static const uint32_t rtl8192cu_bb_vals[] = { 353 0x0011800d, 0x00ffdb83, 0x80040002, 0x00000003, 0x0000fc00, 354 0x0000000a, 0x10005388, 0x020c3d10, 0x02200385, 0x00000000, 355 0x01000100, 0x00390004, 0x01000100, 0x00390004, 0x27272727, 356 0x27272727, 0x27272727, 0x27272727, 0x00010000, 0x00010000, 357 0x27272727, 0x27272727, 0x00000000, 0x00000000, 0x569a569a, 358 0x0c1b25a4, 0x66e60230, 0x061f0130, 0x27272727, 0x2b2b2b27, 359 0x07000700, 0x22184000, 0x08080808, 0x00000000, 0xc0083070, 360 0x000004d5, 0x00000000, 0xcc0000c0, 0x00000800, 0xfffffffe, 361 0x40302010, 0x00706050, 0x00000000, 0x00000023, 0x00000000, 362 0x81121313, 0x00d047c8, 0x80ff000c, 0x8c838300, 0x2e68120f, 363 0x9500bb78, 0x11144028, 0x00881117, 0x89140f00, 0x1a1b0000, 364 0x090e1317, 0x00000204, 0x00d30000, 0x101fbf00, 0x00000007, 365 0x48071d40, 0x03a05633, 0x000000e4, 0x6c6c6c6c, 0x08800000, 366 0x40000100, 0x08800000, 0x40000100, 0x00000000, 0x00000000, 367 0x00000000, 0x00000000, 0x69e9ac44, 0x469652cf, 0x49795994, 368 0x0a97971c, 0x1f7c403f, 0x000100b7, 0xec020107, 0x007f037f, 369 0x6954341e, 0x43bc0094, 0x6954341e, 0x433c0094, 0x00000000, 370 0x5116848b, 0x47c00bff, 0x00000036, 0x2c7f000d, 0x0186115b, 371 0x0000001f, 0x00b99612, 0x40000100, 0x20f60000, 0x40000100, 372 0x20200000, 0x00121820, 0x00000000, 0x00121820, 0x00007f7f, 373 0x00000000, 0x00000080, 0x00000000, 0x00000000, 0x00000000, 374 0x00000000, 0x00000000, 0x28000000, 0x00000000, 0x00000000, 375 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x64b22427, 376 0x00766932, 0x00222222, 0x00000000, 0x37644302, 0x2f97d40c, 377 0x00080740, 0x00020403, 0x0000907f, 0x20010201, 0xa0633333, 378 0x3333bc43, 0x7a8f5b6b, 0xcc979975, 0x00000000, 0x80608000, 379 0x00000000, 0x00027293, 0x00000000, 0x00000000, 0x00000000, 380 0x00000000, 0x6437140a, 0x00000000, 0x00000000, 0x30032064, 381 0x4653de68, 0x04518a3c, 0x00002101, 0x2a201c16, 0x1812362e, 382 0x322c2220, 0x000e3c24, 0x2a2a2a2a, 0x2a2a2a2a, 0x03902a2a, 383 0x2a2a2a2a, 0x2a2a2a2a, 0x2a2a2a2a, 0x2a2a2a2a, 0x00000000, 384 0x1000dc1f, 0x10008c1f, 0x02140102, 0x681604c2, 0x01007c00, 385 0x01004800, 0xfb000000, 0x000028d1, 0x1000dc1f, 0x10008c1f, 386 0x02140102, 0x28160d05, 0x00000010, 0x001b25a4, 0x63db25a4, 387 0x63db25a4, 0x0c1b25a4, 0x0c1b25a4, 0x0c1b25a4, 0x0c1b25a4, 388 0x63db25a4, 0x0c1b25a4, 0x63db25a4, 0x63db25a4, 0x63db25a4, 389 0x63db25a4, 0x001b25a4, 0x001b25a4, 0x6fdb25a4, 0x00000003, 390 0x00000000, 0x00000300 391}; 392 393static const struct rtwn_bb_prog rtl8192cu_bb_prog = { 394 __arraycount(rtl8192ce_bb_regs), 395 rtl8192ce_bb_regs, 396 rtl8192cu_bb_vals, 397 __arraycount(rtl8192ce_agc_vals), 398 rtl8192ce_agc_vals 399}; 400 401/* 402 * RTL8188CE-VAU. 403 */ 404static const uint32_t rtl8188ce_bb_vals[] = { 405 0x0011800d, 0x00ffdb83, 0x80040000, 0x00000001, 0x0000fc00, 406 0x0000000a, 0x10005388, 0x020c3d10, 0x02200385, 0x00000000, 407 0x01000100, 0x00390004, 0x00000000, 0x00000000, 0x00000000, 408 0x00000000, 0x00000000, 0x00000000, 0x00010000, 0x00000000, 409 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x569a569a, 410 0x001b25a4, 0x66e60230, 0x061f0130, 0x00000000, 0x32323200, 411 0x07000700, 0x22004000, 0x00000808, 0x00000000, 0xc0083070, 412 0x000004d5, 0x00000000, 0xccc000c0, 0x00000800, 0xfffffffe, 413 0x40302010, 0x00706050, 0x00000000, 0x00000023, 0x00000000, 414 0x81121111, 0x00d047c8, 0x80ff000c, 0x8c838300, 0x2e68120f, 415 0x9500bb78, 0x11144028, 0x00881117, 0x89140f00, 0x1a1b0000, 416 0x090e1317, 0x00000204, 0x00d30000, 0x101fbf00, 0x00000007, 417 0x48071d40, 0x03a05611, 0x000000e4, 0x6c6c6c6c, 0x08800000, 418 0x40000100, 0x08800000, 0x40000100, 0x00000000, 0x00000000, 419 0x00000000, 0x00000000, 0x69e9ac44, 0x469652cf, 0x49795994, 420 0x0a97971c, 0x1f7c403f, 0x000100b7, 0xec020107, 0x007f037f, 421 0x6954341e, 0x43bc0094, 0x6954341e, 0x433c0094, 0x00000000, 422 0x5116848b, 0x47c00bff, 0x00000036, 0x2c7f000d, 0x018610db, 423 0x0000001f, 0x00b91612, 0x40000100, 0x20f60000, 0x40000100, 424 0x20200000, 0x00121820, 0x00000000, 0x00121820, 0x00007f7f, 425 0x00000000, 0x00000080, 0x00000000, 0x00000000, 0x00000000, 426 0x00000000, 0x00000000, 0x28000000, 0x00000000, 0x00000000, 427 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x64b22427, 428 0x00766932, 0x00222222, 0x00000000, 0x37644302, 0x2f97d40c, 429 0x00080740, 0x00020401, 0x0000907f, 0x20010201, 0xa0633333, 430 0x3333bc43, 0x7a8f5b6b, 0xcc979975, 0x00000000, 0x80608000, 431 0x00000000, 0x00027293, 0x00000000, 0x00000000, 0x00000000, 432 0x00000000, 0x6437140a, 0x00000000, 0x00000000, 0x30032064, 433 0x4653de68, 0x04518a3c, 0x00002101, 0x2a201c16, 0x1812362e, 434 0x322c2220, 0x000e3c24, 0x2a2a2a2a, 0x2a2a2a2a, 0x03902a2a, 435 0x2a2a2a2a, 0x2a2a2a2a, 0x2a2a2a2a, 0x2a2a2a2a, 0x00000000, 436 0x1000dc1f, 0x10008c1f, 0x02140102, 0x681604c2, 0x01007c00, 437 0x01004800, 0xfb000000, 0x000028d1, 0x1000dc1f, 0x10008c1f, 438 0x02140102, 0x28160d05, 0x00000008, 0x001b25a4, 0x631b25a0, 439 0x631b25a0, 0x081b25a0, 0x081b25a0, 0x081b25a0, 0x081b25a0, 440 0x631b25a0, 0x081b25a0, 0x631b25a0, 0x631b25a0, 0x631b25a0, 441 0x631b25a0, 0x001b25a0, 0x001b25a0, 0x6b1b25a0, 0x00000003, 442 0x00000000, 0x00000300 443}; 444 445static const uint32_t rtl8188ce_agc_vals[] = { 446 0x7b000001, 0x7b010001, 0x7b020001, 0x7b030001, 0x7b040001, 447 0x7b050001, 0x7a060001, 0x79070001, 0x78080001, 0x77090001, 448 0x760a0001, 0x750b0001, 0x740c0001, 0x730d0001, 0x720e0001, 449 0x710f0001, 0x70100001, 0x6f110001, 0x6e120001, 0x6d130001, 450 0x6c140001, 0x6b150001, 0x6a160001, 0x69170001, 0x68180001, 451 0x67190001, 0x661a0001, 0x651b0001, 0x641c0001, 0x631d0001, 452 0x621e0001, 0x611f0001, 0x60200001, 0x49210001, 0x48220001, 453 0x47230001, 0x46240001, 0x45250001, 0x44260001, 0x43270001, 454 0x42280001, 0x41290001, 0x402a0001, 0x262b0001, 0x252c0001, 455 0x242d0001, 0x232e0001, 0x222f0001, 0x21300001, 0x20310001, 456 0x06320001, 0x05330001, 0x04340001, 0x03350001, 0x02360001, 457 0x01370001, 0x00380001, 0x00390001, 0x003a0001, 0x003b0001, 458 0x003c0001, 0x003d0001, 0x003e0001, 0x003f0001, 0x7b400001, 459 0x7b410001, 0x7b420001, 0x7b430001, 0x7b440001, 0x7b450001, 460 0x7a460001, 0x79470001, 0x78480001, 0x77490001, 0x764a0001, 461 0x754b0001, 0x744c0001, 0x734d0001, 0x724e0001, 0x714f0001, 462 0x70500001, 0x6f510001, 0x6e520001, 0x6d530001, 0x6c540001, 463 0x6b550001, 0x6a560001, 0x69570001, 0x68580001, 0x67590001, 464 0x665a0001, 0x655b0001, 0x645c0001, 0x635d0001, 0x625e0001, 465 0x615f0001, 0x60600001, 0x49610001, 0x48620001, 0x47630001, 466 0x46640001, 0x45650001, 0x44660001, 0x43670001, 0x42680001, 467 0x41690001, 0x406a0001, 0x266b0001, 0x256c0001, 0x246d0001, 468 0x236e0001, 0x226f0001, 0x21700001, 0x20710001, 0x06720001, 469 0x05730001, 0x04740001, 0x03750001, 0x02760001, 0x01770001, 470 0x00780001, 0x00790001, 0x007a0001, 0x007b0001, 0x007c0001, 471 0x007d0001, 0x007e0001, 0x007f0001, 0x3800001e, 0x3801001e, 472 0x3802001e, 0x3803001e, 0x3804001e, 0x3805001e, 0x3806001e, 473 0x3807001e, 0x3808001e, 0x3c09001e, 0x3e0a001e, 0x400b001e, 474 0x440c001e, 0x480d001e, 0x4c0e001e, 0x500f001e, 0x5210001e, 475 0x5611001e, 0x5a12001e, 0x5e13001e, 0x6014001e, 0x6015001e, 476 0x6016001e, 0x6217001e, 0x6218001e, 0x6219001e, 0x621a001e, 477 0x621b001e, 0x621c001e, 0x621d001e, 0x621e001e, 0x621f001e 478}; 479 480static const struct rtwn_bb_prog rtl8188ce_bb_prog = { 481 __arraycount(rtl8192ce_bb_regs), 482 rtl8192ce_bb_regs, 483 rtl8188ce_bb_vals, 484 __arraycount(rtl8188ce_agc_vals), 485 rtl8188ce_agc_vals 486}; 487 488static const uint32_t rtl8188cu_bb_vals[] = { 489 0x0011800d, 0x00ffdb83, 0x80040000, 0x00000001, 0x0000fc00, 490 0x0000000a, 0x10005388, 0x020c3d10, 0x02200385, 0x00000000, 491 0x01000100, 0x00390004, 0x00000000, 0x00000000, 0x00000000, 492 0x00000000, 0x00000000, 0x00000000, 0x00010000, 0x00000000, 493 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x569a569a, 494 0x001b25a4, 0x66e60230, 0x061f0130, 0x00000000, 0x32323200, 495 0x07000700, 0x22004000, 0x00000808, 0x00000000, 0xc0083070, 496 0x000004d5, 0x00000000, 0xccc000c0, 0x00000800, 0xfffffffe, 497 0x40302010, 0x00706050, 0x00000000, 0x00000023, 0x00000000, 498 0x81121111, 0x00d047c8, 0x80ff000c, 0x8c838300, 0x2e68120f, 499 0x9500bb78, 0x11144028, 0x00881117, 0x89140f00, 0x1a1b0000, 500 0x090e1317, 0x00000204, 0x00d30000, 0x101fbf00, 0x00000007, 501 0x48071d40, 0x03a05611, 0x000000e4, 0x6c6c6c6c, 0x08800000, 502 0x40000100, 0x08800000, 0x40000100, 0x00000000, 0x00000000, 503 0x00000000, 0x00000000, 0x69e9ac44, 0x469652cf, 0x49795994, 504 0x0a97971c, 0x1f7c403f, 0x000100b7, 0xec020107, 0x007f037f, 505 0x6954341e, 0x43bc0094, 0x6954341e, 0x433c0094, 0x00000000, 506 0x5116848b, 0x47c00bff, 0x00000036, 0x2c7f000d, 0x018610db, 507 0x0000001f, 0x00b91612, 0x40000100, 0x20f60000, 0x40000100, 508 0x20200000, 0x00121820, 0x00000000, 0x00121820, 0x00007f7f, 509 0x00000000, 0x00000080, 0x00000000, 0x00000000, 0x00000000, 510 0x00000000, 0x00000000, 0x28000000, 0x00000000, 0x00000000, 511 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x64b22427, 512 0x00766932, 0x00222222, 0x00000000, 0x37644302, 0x2f97d40c, 513 0x00080740, 0x00020401, 0x0000907f, 0x20010201, 0xa0633333, 514 0x3333bc43, 0x7a8f5b6b, 0xcc979975, 0x00000000, 0x80608000, 515 0x00000000, 0x00027293, 0x00000000, 0x00000000, 0x00000000, 516 0x00000000, 0x6437140a, 0x00000000, 0x00000000, 0x30032064, 517 0x4653de68, 0x04518a3c, 0x00002101, 0x2a201c16, 0x1812362e, 518 0x322c2220, 0x000e3c24, 0x2a2a2a2a, 0x2a2a2a2a, 0x03902a2a, 519 0x2a2a2a2a, 0x2a2a2a2a, 0x2a2a2a2a, 0x2a2a2a2a, 0x00000000, 520 0x1000dc1f, 0x10008c1f, 0x02140102, 0x681604c2, 0x01007c00, 521 0x01004800, 0xfb000000, 0x000028d1, 0x1000dc1f, 0x10008c1f, 522 0x02140102, 0x28160d05, 0x00000008, 0x001b25a4, 0x631b25a0, 523 0x631b25a0, 0x081b25a0, 0x081b25a0, 0x081b25a0, 0x081b25a0, 524 0x631b25a0, 0x081b25a0, 0x631b25a0, 0x631b25a0, 0x631b25a0, 525 0x631b25a0, 0x001b25a0, 0x001b25a0, 0x6b1b25a0, 0x00000003, 526 0x00000000, 0x00000300 527}; 528 529static const struct rtwn_bb_prog rtl8188cu_bb_prog = { 530 __arraycount(rtl8192ce_bb_regs), 531 rtl8192ce_bb_regs, 532 rtl8188cu_bb_vals, 533 __arraycount(rtl8188ce_agc_vals), 534 rtl8188ce_agc_vals 535}; 536 537/* 538 * RTL8188EU. 539 */ 540static const uint16_t rtl8188eu_bb_regs[] = { 541 0x800, 0x804, 0x808, 0x80c, 0x810, 0x814, 0x818, 0x81c, 542 0x820, 0x824, 0x828, 0x82c, 0x830, 0x834, 0x838, 0x83c, 543 0x840, 0x844, 0x848, 0x84c, 0x850, 0x854, 0x858, 0x85c, 544 0x860, 0x864, 0x868, 0x86c, 0x870, 0x874, 0x878, 0x87c, 545 0x880, 0x884, 0x888, 0x88c, 0x890, 0x894, 0x898, 0x89c, 546 0x900, 0x904, 0x908, 0x90c, 0x910, 0x914, 0xa00, 0xa04, 547 0xa08, 0xa0c, 0xa10, 0xa14, 0xa18, 0xa1c, 0xa20, 0xa24, 548 0xa28, 0xa2c, 0xa70, 0xa74, 0xa78, 0xa7c, 0xa80, 0xb2c, 549 0xc00, 0xc04, 0xc08, 0xc0c, 0xc10, 0xc14, 0xc18, 0xc1c, 550 0xc20, 0xc24, 0xc28, 0xc2c, 0xc30, 0xc34, 0xc38, 0xc3c, 551 0xc40, 0xc44, 0xc48, 0xc4c, 0xc50, 0xc54, 0xc58, 0xc5c, 552 0xc60, 0xc64, 0xc68, 0xc6c, 0xc70, 0xc74, 0xc78, 0xc7c, 553 0xc80, 0xc84, 0xc88, 0xc8c, 0xc90, 0xc94, 0xc98, 0xc9c, 554 0xca0, 0xca4, 0xca8, 0xcac, 0xcb0, 0xcb4, 0xcb8, 0xcbc, 555 0xcc0, 0xcc4, 0xcc8, 0xccc, 0xcd0, 0xcd4, 0xcd8, 0xcdc, 556 0xce0, 0xce4, 0xce8, 0xcec, 0xd00, 0xd04, 0xd08, 0xd0c, 557 0xd10, 0xd14, 0xd18, 0xd2c, 0xd30, 0xd34, 0xd38, 0xd3c, 558 0xd40, 0xd44, 0xd48, 0xd4c, 0xd50, 0xd54, 0xd58, 0xd5c, 559 0xd60, 0xd64, 0xd68, 0xd6c, 0xd70, 0xd74, 0xd78, 0xe00, 560 0xe04, 0xe08, 0xe10, 0xe14, 0xe18, 0xe1c, 0xe28, 0xe30, 561 0xe34, 0xe38, 0xe3c, 0xe40, 0xe44, 0xe48, 0xe4c, 0xe50, 562 0xe54, 0xe58, 0xe5c, 0xe60, 0xe68, 0xe6c, 0xe70, 0xe74, 563 0xe78, 0xe7c, 0xe80, 0xe84, 0xe88, 0xe8c, 0xed0, 0xed4, 564 0xed8, 0xedc, 0xee0, 0xee8, 0xeec, 0xf14, 0xf4c, 0xf00 565}; 566 567static const uint32_t rtl8188eu_bb_vals[] = { 568 0x80040000, 0x00000003, 0x0000fc00, 0x0000000a, 0x10001331, 569 0x020c3d10, 0x02200385, 0x00000000, 0x01000100, 0x00390204, 570 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 571 0x00000000, 0x00010000, 0x00000000, 0x00000000, 0x00000000, 572 0x00000000, 0x00000000, 0x569a11a9, 0x01000014, 0x66f60110, 573 0x061f0649, 0x00000000, 0x27272700, 0x07000760, 0x25004000, 574 0x00000808, 0x00000000, 0xb0000c1c, 0x00000001, 0x00000000, 575 0xccc000c0, 0x00000800, 0xfffffffe, 0x40302010, 0x00706050, 576 0x00000000, 0x00000023, 0x00000000, 0x81121111, 0x00000002, 577 0x00000201, 0x00d047c8, 0x80ff000c, 0x8c838300, 0x2e7f120f, 578 0x9500bb78, 0x1114d028, 0x00881117, 0x89140f00, 0x1a1b0000, 579 0x090e1317, 0x00000204, 0x00d30000, 0x101fbf00, 0x00000007, 580 0x00000900, 0x225b0606, 0x218075b1, 0x80000000, 0x48071d40, 581 0x03a05611, 0x000000e4, 0x6c6c6c6c, 0x08800000, 0x40000100, 582 0x08800000, 0x40000100, 0x00000000, 0x00000000, 0x00000000, 583 0x00000000, 0x69e9ac47, 0x469652af, 0x49795994, 0x0a97971c, 584 0x1f7c403f, 0x000100b7, 0xec020107, 0x007f037f, 0x69553420, 585 0x43bc0094, 0x00013169, 0x00250492, 0x00000000, 0x7112848b, 586 0x47c00bff, 0x00000036, 0x2c7f000d, 0x020610db, 0x0000001f, 587 0x00b91612, 0x390000e4, 0x20f60000, 0x40000100, 0x20200000, 588 0x00091521, 0x00000000, 0x00121820, 0x00007f7f, 0x00000000, 589 0x000300a0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 590 0x00000000, 0x28000000, 0x00000000, 0x00000000, 0x00000000, 591 0x00000000, 0x00000000, 0x00000000, 0x64b22427, 0x00766932, 592 0x00222222, 0x00000000, 0x37644302, 0x2f97d40c, 0x00000740, 593 0x00020401, 0x0000907f, 0x20010201, 0xa0633333, 0x3333bc43, 594 0x7a8f5b6f, 0xcc979975, 0x00000000, 0x80608000, 0x00000000, 595 0x00127353, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 596 0x6437140a, 0x00000000, 0x00000282, 0x30032064, 0x4653de68, 597 0x04518a3c, 0x00002101, 0x2a201c16, 0x1812362e, 0x322c2220, 598 0x000e3c24, 0x2d2d2d2d, 0x2d2d2d2d, 0x0390272d, 0x2d2d2d2d, 599 0x2d2d2d2d, 0x2d2d2d2d, 0x2d2d2d2d, 0x00000000, 0x1000dc1f, 600 0x10008c1f, 0x02140102, 0x681604c2, 0x01007c00, 0x01004800, 601 0xfb000000, 0x000028d1, 0x1000dc1f, 0x10008c1f, 0x02140102, 602 0x28160d05, 0x00000008, 0x001b25a4, 0x00c00014, 0x00c00014, 603 0x01000014, 0x01000014, 0x01000014, 0x01000014, 0x00c00014, 604 0x01000014, 0x00c00014, 0x00c00014, 0x00c00014, 0x00c00014, 605 0x00000014, 0x00000014, 0x21555448, 0x01c00014, 0x00000003, 606 0x00000000, 0x00000300 607}; 608 609static const uint32_t rtl8188eu_agc_vals[] = { 610 0xfb000001, 0xfb010001, 0xfb020001, 0xfb030001, 0xfb040001, 611 0xfb050001, 0xfa060001, 0xf9070001, 0xf8080001, 0xf7090001, 612 0xf60a0001, 0xf50b0001, 0xf40c0001, 0xf30d0001, 0xf20e0001, 613 0xf10f0001, 0xf0100001, 0xef110001, 0xee120001, 0xed130001, 614 0xec140001, 0xeb150001, 0xea160001, 0xe9170001, 0xe8180001, 615 0xe7190001, 0xe61a0001, 0xe51b0001, 0xe41c0001, 0xe31d0001, 616 0xe21e0001, 0xe11f0001, 0x8a200001, 0x89210001, 0x88220001, 617 0x87230001, 0x86240001, 0x85250001, 0x84260001, 0x83270001, 618 0x82280001, 0x6b290001, 0x6a2a0001, 0x692b0001, 0x682c0001, 619 0x672d0001, 0x662e0001, 0x652f0001, 0x64300001, 0x63310001, 620 0x62320001, 0x61330001, 0x46340001, 0x45350001, 0x44360001, 621 0x43370001, 0x42380001, 0x41390001, 0x403a0001, 0x403b0001, 622 0x403c0001, 0x403d0001, 0x403e0001, 0x403f0001, 0xfb400001, 623 0xfb410001, 0xfb420001, 0xfb430001, 0xfb440001, 0xfb450001, 624 0xfb460001, 0xfb470001, 0xfb480001, 0xfa490001, 0xf94a0001, 625 0xf84B0001, 0xf74c0001, 0xf64d0001, 0xf54e0001, 0xf44f0001, 626 0xf3500001, 0xf2510001, 0xf1520001, 0xf0530001, 0xef540001, 627 0xee550001, 0xed560001, 0xec570001, 0xeb580001, 0xea590001, 628 0xe95a0001, 0xe85b0001, 0xe75c0001, 0xe65d0001, 0xe55e0001, 629 0xe45f0001, 0xe3600001, 0xe2610001, 0xc3620001, 0xc2630001, 630 0xc1640001, 0x8b650001, 0x8a660001, 0x89670001, 0x88680001, 631 0x87690001, 0x866a0001, 0x856b0001, 0x846c0001, 0x676d0001, 632 0x666e0001, 0x656f0001, 0x64700001, 0x63710001, 0x62720001, 633 0x61730001, 0x60740001, 0x46750001, 0x45760001, 0x44770001, 634 0x43780001, 0x42790001, 0x417a0001, 0x407b0001, 0x407c0001, 635 0x407d0001, 0x407e0001, 0x407f0001 636}; 637 638static const struct rtwn_bb_prog rtl8188eu_bb_prog = { 639 __arraycount(rtl8188eu_bb_regs), 640 rtl8188eu_bb_regs, 641 rtl8188eu_bb_vals, 642 __arraycount(rtl8188eu_agc_vals), 643 rtl8188eu_agc_vals 644}; 645 646/* 647 * RTL819E. 648 */ 649static const uint16_t rtl8192eu_bb_regs[] = { 650 0x800, 0x804, 0x808, 0x80c, 0x810, 0x814, 0x818, 0x81c, 651 0x820, 0x824, 0x828, 0x82c, 0x830, 0x834, 0x838, 0x83c, 652 0x840, 0x844, 0x848, 0x84c, 0x850, 0x854, 0x858, 0x85c, 653 0x860, 0x864, 0x868, 0x86c, 0x870, 0x874, 0x878, 0x87c, 654 0x880, 0x884, 0x888, 0x88c, 0x890, 0x894, 0x898, 0x900, 655 0x904, 0x908, 0x90c, 0x910, 0x914, 0x918, 0x91c, 0x924, 656 0x928, 0x92c, 0x930, 0x934, 0x938, 0x93c, 0x940, 0x944, 657 0x94c, 0xa00, 0xa04, 0xa08, 0xa0c, 0xa10, 0xa14, 0xa18, 658 0xa1c, 0xa20, 0xa24, 0xa28, 0xa2c, 0xa70, 0xa74, 0xa78, 659 0xa7c, 0xa80, 0xb38, 0xc00, 0xc04, 0xc08, 0xc0c, 0xc10, 660 0xc14, 0xc18, 0xc1c, 0xc20, 0xc24, 0xc28, 0xc2c, 0xc30, 661 0xc34, 0xc38, 0xc3c, 0xc40, 0xc44, 0xc48, 0xc4c, 0xc50, 662 0xc54, 0xc58, 0xc5c, 0xc60, 0xc64, 0xc68, 0xc6c, 0xc70, 663 0xc74, 0xc78, 0xc7c, 0xc80, 0xc84, 0xc88, 0xc8c, 0xc90, 664 0xc94, 0xc98, 0xc9c, 0xca0, 0xca4, 0xca8, 0xcac, 0xcb0, 665 0xcb4, 0xcb8, 0xcbc, 0xcc0, 0xcc4, 0xcc8, 0xccc, 0xcd0, 666 0xcd4, 0xcd8, 0xcdc, 0xce0, 0xce4, 0xce8, 0xcec, 0xd00, 667 0xd04, 0xd08, 0xd0c, 0xd10, 0xd14, 0xd18, 0xd1c, 0xd2c, 668 0xd30, 0xd34, 0xd38, 0xd3c, 0xd40, 0xd44, 0xd48, 0xd4c, 669 0xd50, 0xd54, 0xd58, 0xd5c, 0xd60, 0xd64, 0xd68, 0xd6c, 670 0xd70, 0xd74, 0xd78, 0xd80, 0xd84, 0xd88, 0xe00, 0xe04, 671 0xe08, 0xe10, 0xe14, 0xe18, 0xe1c, 0xe28, 0xe30, 0xe34, 672 0xe38, 0xe3c, 0xe40, 0xe44, 0xe48, 0xe4c, 0xe50, 0xe54, 673 0xe58, 0xe5c, 0xe60, 0xe68, 0xe6c, 0xe70, 0xe74, 0xe78, 674 0xe7c, 0xe80, 0xe84, 0xe88, 0xe8c, 0xed0, 0xed4, 0xed8, 675 0xedc, 0xee0, 0xeec, 0xee4, 0xee8, 0xf14, 0xf4c, 0xf00, 676}; 677 678static const uint32_t rtl8192eu_bb_vals[] = { 679 0x80040000, 0x00000003, 0x0000fc00, 0x0000000a, 0x10001331, 680 0x020c3d10, 0x02220385, 0x00000000, 0x01000100, 0x00390204, 681 0x01000100, 0x00390204, 0x32323232, 0x30303030, 0x30303030, 682 0x30303030, 0x00010000, 0x00010000, 0x28282828, 0x28282828, 683 0x00000000, 0x00000000, 0x009a009a, 0x01000014, 0x66f60000, 684 0x061f0000, 0x30303030, 0x30303030, 0x00000000, 0x55004200, 685 0x08080808, 0x00000000, 0xb0000c1c, 0x00000001, 0x00000000, 686 0xcc0000c0, 0x00000800, 0xfffffffe, 0x40302010, 0x00000000, 687 0x00000023, 0x00000000, 0x81121313, 0x806c0001, 0x00000001, 688 0x00000000, 0x00010000, 0x00000001, 0x00000000, 0x00000000, 689 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 690 0x00000000, 0x00000008, 0x00d0c7c8, 0x81ff000c, 0x8c838300, 691 0x2e68120f, 0x95009b78, 0x1114d028, 0x00881117, 0x89140f00, 692 0x1a1b0000, 0x090e1317, 0x00000204, 0x00d30000, 0x101fff00, 693 0x00000007, 0x00000900, 0x225b0606, 0x218075b1, 0x00000000, 694 0x48071d40, 0x03a05633, 0x000000e4, 0x6c6c6c6c, 0x08800000, 695 0x40000100, 0x08800000, 0x40000100, 0x00000000, 0x00000000, 696 0x00000000, 0x00000000, 0x69e9ac47, 0x469652af, 0x49795994, 697 0x0a97971c, 0x1f7c403f, 0x000100b7, 0xec020107, 0x007f037f, 698 0x00340020, 0x0080801f, 0x00000020, 0x00248492, 0x00000000, 699 0x7112848b, 0x47c00bff, 0x00000036, 0x00000600, 0x02013169, 700 0x0000001f, 0x00b91612, 0x40000100, 0x21f60000, 0x40000100, 701 0xa0e40000, 0x00121820, 0x00000000, 0x00121820, 0x00007f7f, 702 0x00000000, 0x000300a0, 0x00000000, 0x00000000, 0x00000000, 703 0x00000000, 0x00000000, 0x28000000, 0x00000000, 0x00000000, 704 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x64b22427, 705 0x00766932, 0x00222222, 0x00040000, 0x77644302, 0x2f97d40c, 706 0x00080740, 0x00020403, 0x0000907f, 0x20010201, 0xa0633333, 707 0x3333bc43, 0x7a8f5b6b, 0x0000007f, 0xcc979975, 0x00000000, 708 0x80608000, 0x00000000, 0x00127353, 0x00000000, 0x00000000, 709 0x00000000, 0x00000000, 0x6437140a, 0x00000000, 0x00000282, 710 0x30032064, 0x4653de68, 0x04518a3c, 0x00002101, 0x2a201c16, 711 0x1812362e, 0x322c2220, 0x000e3c24, 0x01081008, 0x00000800, 712 0xf0b50000, 0x30303030, 0x30303030, 0x03903030, 0x30303030, 713 0x30303030, 0x30303030, 0x30303030, 0x00000000, 0x1000dc1f, 714 0x10008c1f, 0x02140102, 0x681604c2, 0x01007c00, 0x01004800, 715 0xfb000000, 0x000028d1, 0x1000dc1f, 0x10008c1f, 0x02140102, 716 0x28160d05, 0x00000008, 0x0fc05656, 0x03c09696, 0x03c09696, 717 0x0c005656, 0x0c005656, 0x0c005656, 0x0c005656, 0x03c09696, 718 0x0c005656, 0x03c09696, 0x03c09696, 0x03c09696, 0x03c09696, 719 0x0000d6d6, 0x0000d6d6, 0x0fc01616, 0xb0000c1c, 0x00000001, 720 0x00000003, 0x00000000, 0x00000300, 721}; 722 723static const uint32_t rtl8192eu_agc_vals[] = { 724 0xfb000001, 0xfb010001, 0xfb020001, 0xfb030001, 0xfb040001, 725 0xfb050001, 0xfa060001, 0xf9070001, 0xf8080001, 0xf7090001, 726 0xf60a0001, 0xf50b0001, 0xf40c0001, 0xf30d0001, 0xf20e0001, 727 0xf10f0001, 0xf0100001, 0xef110001, 0xee120001, 0xed130001, 728 0xec140001, 0xeb150001, 0xea160001, 0xe9170001, 0xe8180001, 729 0xe7190001, 0xc81a0001, 0xc71b0001, 0xc61c0001, 0x071d0001, 730 0x061e0001, 0x051f0001, 0x04200001, 0x03210001, 0xaa220001, 731 0xa9230001, 0xa8240001, 0xa7250001, 0xa6260001, 0x85270001, 732 0x84280001, 0x83290001, 0x252a0001, 0x242b0001, 0x232c0001, 733 0x222d0001, 0x672e0001, 0x662f0001, 0x65300001, 0x64310001, 734 0x63320001, 0x62330001, 0x61340001, 0x45350001, 0x44360001, 735 0x43370001, 0x42380001, 0x41390001, 0x403a0001, 0x403b0001, 736 0x403c0001, 0x403d0001, 0x403e0001, 0x403f0001, 0xfb400001, 737 0xfb410001, 0xfb420001, 0xfb430001, 0xfb440001, 0xfb450001, 738 0xfa460001, 0xf9470001, 0xf8480001, 0xf7490001, 0xf64a0001, 739 0xf54b0001, 0xf44c0001, 0xf34d0001, 0xf24e0001, 0xf14f0001, 740 0xf0500001, 0xef510001, 0xee520001, 0xed530001, 0xec540001, 741 0xeb550001, 0xea560001, 0xe9570001, 0xe8580001, 0xe7590001, 742 0xe65a0001, 0xe55b0001, 0xe45c0001, 0xe35d0001, 0xe25e0001, 743 0xe15f0001, 0x8a600001, 0x89610001, 0x88620001, 0x87630001, 744 0x86640001, 0x85650001, 0x84660001, 0x83670001, 0x82680001, 745 0x6b690001, 0x6a6a0001, 0x696b0001, 0x686c0001, 0x676d0001, 746 0x666e0001, 0x656f0001, 0x64700001, 0x63710001, 0x62720001, 747 0x61730001, 0x49740001, 0x48750001, 0x47760001, 0x46770001, 748 0x45780001, 0x44790001, 0x437a0001, 0x427b0001, 0x417c0001, 749 0x407d0001, 0x407e0001, 0x407f0001, 750}; 751 752static const struct rtwn_bb_prog rtl8192eu_bb_prog = { 753 __arraycount(rtl8192eu_bb_regs), 754 rtl8192eu_bb_regs, 755 rtl8192eu_bb_vals, 756 __arraycount(rtl8192eu_agc_vals), 757 rtl8192eu_agc_vals 758}; 759 760/* 761 * RTL8188RU. 762 */ 763static const uint16_t rtl8188ru_bb_regs[] = { 764 0x024, 0x028, 0x040, 0x800, 0x804, 0x808, 0x80c, 0x810, 0x814, 765 0x818, 0x81c, 0x820, 0x824, 0x828, 0x82c, 0x830, 0x834, 0x838, 766 0x83c, 0x840, 0x844, 0x848, 0x84c, 0x850, 0x854, 0x858, 0x85c, 767 0x860, 0x864, 0x868, 0x86c, 0x870, 0x874, 0x878, 0x87c, 0x880, 768 0x884, 0x888, 0x88c, 0x890, 0x894, 0x898, 0x89c, 0x900, 0x904, 769 0x908, 0x90c, 0xa00, 0xa04, 0xa08, 0xa0c, 0xa10, 0xa14, 0xa18, 770 0xa1c, 0xa20, 0xa24, 0xa28, 0xa2c, 0xa70, 0xa74, 0xc00, 0xc04, 771 0xc08, 0xc0c, 0xc10, 0xc14, 0xc18, 0xc1c, 0xc20, 0xc24, 0xc28, 772 0xc2c, 0xc30, 0xc34, 0xc38, 0xc3c, 0xc40, 0xc44, 0xc48, 0xc4c, 773 0xc50, 0xc54, 0xc58, 0xc5c, 0xc60, 0xc64, 0xc68, 0xc6c, 0xc70, 774 0xc74, 0xc78, 0xc7c, 0xc80, 0xc84, 0xc88, 0xc8c, 0xc90, 0xc94, 775 0xc98, 0xc9c, 0xca0, 0xca4, 0xca8, 0xcac, 0xcb0, 0xcb4, 0xcb8, 776 0xcbc, 0xcc0, 0xcc4, 0xcc8, 0xccc, 0xcd0, 0xcd4, 0xcd8, 0xcdc, 777 0xce0, 0xce4, 0xce8, 0xcec, 0xd00, 0xd04, 0xd08, 0xd0c, 0xd10, 778 0xd14, 0xd18, 0xd2c, 0xd30, 0xd34, 0xd38, 0xd3c, 0xd40, 0xd44, 779 0xd48, 0xd4c, 0xd50, 0xd54, 0xd58, 0xd5c, 0xd60, 0xd64, 0xd68, 780 0xd6c, 0xd70, 0xd74, 0xd78, 0xe00, 0xe04, 0xe08, 0xe10, 0xe14, 781 0xe18, 0xe1c, 0xe28, 0xe30, 0xe34, 0xe38, 0xe3c, 0xe40, 0xe44, 782 0xe48, 0xe4c, 0xe50, 0xe54, 0xe58, 0xe5c, 0xe60, 0xe68, 0xe6c, 783 0xe70, 0xe74, 0xe78, 0xe7c, 0xe80, 0xe84, 0xe88, 0xe8c, 0xed0, 784 0xed4, 0xed8, 0xedc, 0xee0, 0xeec, 0xee8, 0xf14, 0xf4c, 0xf00 785}; 786 787static const uint32_t rtl8188ru_bb_vals[] = { 788 0x0011800d, 0x00ffdb83, 0x000c0004, 0x80040000, 0x00000001, 789 0x0000fc00, 0x0000000a, 0x10005388, 0x020c3d10, 0x02200385, 790 0x00000000, 0x01000100, 0x00390204, 0x00000000, 0x00000000, 791 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00010000, 792 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 793 0x569a569a, 0x001b25a4, 0x66e60230, 0x061f0130, 0x00000000, 794 0x32323200, 0x03000300, 0x22004000, 0x00000808, 0x00ffc3f1, 795 0xc0083070, 0x000004d5, 0x00000000, 0xccc000c0, 0x00000800, 796 0xfffffffe, 0x40302010, 0x00706050, 0x00000000, 0x00000023, 797 0x00000000, 0x81121111, 0x00d047c8, 0x80ff000c, 0x8c838300, 798 0x2e68120f, 0x9500bb78, 0x11144028, 0x00881117, 0x89140f00, 799 0x15160000, 0x070b0f12, 0x00000104, 0x00d30000, 0x101fbf00, 800 0x00000007, 0x48071d40, 0x03a05611, 0x000000e4, 0x6c6c6c6c, 801 0x08800000, 0x40000100, 0x08800000, 0x40000100, 0x00000000, 802 0x00000000, 0x00000000, 0x00000000, 0x69e9ac44, 0x469652cf, 803 0x49795994, 0x0a97971c, 0x1f7c403f, 0x000100b7, 0xec020107, 804 0x007f037f, 0x6954342e, 0x43bc0094, 0x6954342f, 0x433c0094, 805 0x00000000, 0x5116848b, 0x47c00bff, 0x00000036, 0x2c56000d, 806 0x018610db, 0x0000001f, 0x00b91612, 0x24000090, 0x20f60000, 807 0x24000090, 0x20200000, 0x00121820, 0x00000000, 0x00121820, 808 0x00007f7f, 0x00000000, 0x00000080, 0x00000000, 0x00000000, 809 0x00000000, 0x00000000, 0x00000000, 0x28000000, 0x00000000, 810 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 811 0x64b22427, 0x00766932, 0x00222222, 0x00000000, 0x37644302, 812 0x2f97d40c, 0x00080740, 0x00020401, 0x0000907f, 0x20010201, 813 0xa0633333, 0x3333bc43, 0x7a8f5b6b, 0xcc979975, 0x00000000, 814 0x80608000, 0x00000000, 0x00027293, 0x00000000, 0x00000000, 815 0x00000000, 0x00000000, 0x6437140a, 0x00000000, 0x00000000, 816 0x30032064, 0x4653de68, 0x04518a3c, 0x00002101, 0x2a201c16, 817 0x1812362e, 0x322c2220, 0x000e3c24, 0x2a2a2a2a, 0x2a2a2a2a, 818 0x03902a2a, 0x2a2a2a2a, 0x2a2a2a2a, 0x2a2a2a2a, 0x2a2a2a2a, 819 0x00000000, 0x1000dc1f, 0x10008c1f, 0x02140102, 0x681604c2, 820 0x01007c00, 0x01004800, 0xfb000000, 0x000028d1, 0x1000dc1f, 821 0x10008c1f, 0x02140102, 0x28160d05, 0x00000010, 0x001b25a4, 822 0x631b25a0, 0x631b25a0, 0x081b25a0, 0x081b25a0, 0x081b25a0, 823 0x081b25a0, 0x631b25a0, 0x081b25a0, 0x631b25a0, 0x631b25a0, 824 0x631b25a0, 0x631b25a0, 0x001b25a0, 0x001b25a0, 0x6b1b25a0, 825 0x31555448, 0x00000003, 0x00000000, 0x00000300 826}; 827 828static const uint32_t rtl8188ru_agc_vals[] = { 829 0x7b000001, 0x7b010001, 0x7b020001, 0x7b030001, 0x7b040001, 830 0x7b050001, 0x7b060001, 0x7b070001, 0x7b080001, 0x7a090001, 831 0x790a0001, 0x780b0001, 0x770c0001, 0x760d0001, 0x750e0001, 832 0x740f0001, 0x73100001, 0x72110001, 0x71120001, 0x70130001, 833 0x6f140001, 0x6e150001, 0x6d160001, 0x6c170001, 0x6b180001, 834 0x6a190001, 0x691a0001, 0x681b0001, 0x671c0001, 0x661d0001, 835 0x651e0001, 0x641f0001, 0x63200001, 0x62210001, 0x61220001, 836 0x60230001, 0x46240001, 0x45250001, 0x44260001, 0x43270001, 837 0x42280001, 0x41290001, 0x402a0001, 0x262b0001, 0x252c0001, 838 0x242d0001, 0x232e0001, 0x222f0001, 0x21300001, 0x20310001, 839 0x06320001, 0x05330001, 0x04340001, 0x03350001, 0x02360001, 840 0x01370001, 0x00380001, 0x00390001, 0x003a0001, 0x003b0001, 841 0x003c0001, 0x003d0001, 0x003e0001, 0x003f0001, 0x7b400001, 842 0x7b410001, 0x7b420001, 0x7b430001, 0x7b440001, 0x7b450001, 843 0x7b460001, 0x7b470001, 0x7b480001, 0x7a490001, 0x794a0001, 844 0x784b0001, 0x774c0001, 0x764d0001, 0x754e0001, 0x744f0001, 845 0x73500001, 0x72510001, 0x71520001, 0x70530001, 0x6f540001, 846 0x6e550001, 0x6d560001, 0x6c570001, 0x6b580001, 0x6a590001, 847 0x695a0001, 0x685b0001, 0x675c0001, 0x665d0001, 0x655e0001, 848 0x645f0001, 0x63600001, 0x62610001, 0x61620001, 0x60630001, 849 0x46640001, 0x45650001, 0x44660001, 0x43670001, 0x42680001, 850 0x41690001, 0x406a0001, 0x266b0001, 0x256c0001, 0x246d0001, 851 0x236e0001, 0x226f0001, 0x21700001, 0x20710001, 0x06720001, 852 0x05730001, 0x04740001, 0x03750001, 0x02760001, 0x01770001, 853 0x00780001, 0x00790001, 0x007a0001, 0x007b0001, 0x007c0001, 854 0x007d0001, 0x007e0001, 0x007f0001, 0x3800001e, 0x3801001e, 855 0x3802001e, 0x3803001e, 0x3804001e, 0x3805001e, 0x3806001e, 856 0x3807001e, 0x3808001e, 0x3c09001e, 0x3e0a001e, 0x400b001e, 857 0x440c001e, 0x480d001e, 0x4c0e001e, 0x500f001e, 0x5210001e, 858 0x5611001e, 0x5a12001e, 0x5e13001e, 0x6014001e, 0x6015001e, 859 0x6016001e, 0x6217001e, 0x6218001e, 0x6219001e, 0x621a001e, 860 0x621b001e, 0x621c001e, 0x621d001e, 0x621e001e, 0x621f001e 861}; 862 863static const struct rtwn_bb_prog rtl8188ru_bb_prog = { 864 __arraycount(rtl8188ru_bb_regs), 865 rtl8188ru_bb_regs, 866 rtl8188ru_bb_vals, 867 __arraycount(rtl8188ru_agc_vals), 868 rtl8188ru_agc_vals 869}; 870 871/* 872 * RF initialization values. 873 */ 874struct rtwn_rf_prog { 875 int count; 876 const uint8_t *regs; 877 const uint32_t *vals; 878}; 879 880/* 881 * RTL8192CU and RTL8192CE-VAU. 882 */ 883static const uint8_t rtl8192ce_rf1_regs[] = { 884 0x00, 0x01, 0x02, 0x03, 0x04, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 885 0x0f, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 886 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2a, 0x2b, 887 0x2a, 0x2b, 0x2b, 0x2c, 0x2a, 0x2b, 0x2b, 0x2c, 0x2a, 0x2b, 0x2b, 888 0x2c, 0x2a, 0x2b, 0x2b, 0x2c, 0x2a, 0x2b, 0x2b, 0x2c, 0x2a, 0x2b, 889 0x2b, 0x2c, 0x2a, 0x2b, 0x2b, 0x2c, 0x2a, 0x2b, 0x2b, 0x2c, 0x2a, 890 0x2b, 0x2b, 0x2c, 0x2a, 0x2b, 0x2b, 0x2c, 0x2a, 0x2b, 0x2b, 0x2c, 891 0x2a, 0x2b, 0x2b, 0x2c, 0x2a, 0x2b, 0x2b, 0x2c, 0x2a, 0x2b, 0x2b, 892 0x2c, 0x2a, 0x10, 0x11, 0x10, 0x11, 0x10, 0x11, 0x10, 0x11, 0x10, 893 0x11, 0x10, 0x11, 0x10, 0x11, 0x12, 0x12, 0x12, 0x12, 0x13, 0x13, 894 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x14, 0x14, 895 0x14, 0x14, 0x15, 0x15, 0x15, 0x15, 0x16, 0x16, 0x16, 0x16, 0x00, 896 0x18, 0xfe, 0xfe, 0x1f, 0xfe, 0xfe, 0x1e, 0x1f, 0x00 897}; 898 899static const uint32_t rtl8192ce_rf1_vals[] = { 900 0x30159, 0x31284, 0x98000, 0x18c63, 0x210e7, 0x2044f, 0x1adb1, 901 0x54867, 0x8992e, 0x0e52c, 0x39ce7, 0x00451, 0x00000, 0x10255, 902 0x60a00, 0xfc378, 0xa1250, 0x4445f, 0x80001, 0x0b614, 0x6c000, 903 0x00000, 0x01558, 0x00060, 0x00483, 0x4f000, 0xec7d9, 0x577c0, 904 0x04783, 0x00001, 0x21334, 0x00000, 0x00054, 0x00001, 0x00808, 905 0x53333, 0x0000c, 0x00002, 0x00808, 0x5b333, 0x0000d, 0x00003, 906 0x00808, 0x63333, 0x0000d, 0x00004, 0x00808, 0x6b333, 0x0000d, 907 0x00005, 0x00808, 0x73333, 0x0000d, 0x00006, 0x00709, 0x5b333, 908 0x0000d, 0x00007, 0x00709, 0x63333, 0x0000d, 0x00008, 0x0060a, 909 0x4b333, 0x0000d, 0x00009, 0x0060a, 0x53333, 0x0000d, 0x0000a, 910 0x0060a, 0x5b333, 0x0000d, 0x0000b, 0x0060a, 0x63333, 0x0000d, 911 0x0000c, 0x0060a, 0x6b333, 0x0000d, 0x0000d, 0x0060a, 0x73333, 912 0x0000d, 0x0000e, 0x0050b, 0x66666, 0x0001a, 0xe0000, 0x4000f, 913 0xe31fc, 0x6000f, 0xff9f8, 0x2000f, 0x203f9, 0x3000f, 0xff500, 914 0x00000, 0x00000, 0x8000f, 0x3f100, 0x9000f, 0x23100, 0x32000, 915 0x71000, 0xb0000, 0xfc000, 0x287af, 0x244b7, 0x204ab, 0x1c49f, 916 0x18493, 0x14297, 0x10295, 0x0c298, 0x0819c, 0x040a8, 0x0001c, 917 0x1944c, 0x59444, 0x9944c, 0xd9444, 0x0f424, 0x4f424, 0x8f424, 918 0xcf424, 0xe0330, 0xa0330, 0x60330, 0x20330, 0x10159, 0x0f401, 919 0x00000, 0x00000, 0x80003, 0x00000, 0x00000, 0x44457, 0x80000, 920 0x30159 921}; 922 923static const uint8_t rtl8192ce_rf2_regs[] = { 924 0x00, 0x01, 0x02, 0x03, 0x04, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 925 0x0f, 0x12, 0x12, 0x12, 0x12, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 926 0x13, 0x13, 0x13, 0x13, 0x13, 0x14, 0x14, 0x14, 0x14, 0x15, 0x15, 927 0x15, 0x15, 0x16, 0x16, 0x16, 0x16 928}; 929 930static const uint32_t rtl8192ce_rf2_vals[] = { 931 0x30159, 0x31284, 0x98000, 0x18c63, 0x210e7, 0x2044f, 0x1adb1, 932 0x54867, 0x8992e, 0x0e52c, 0x39ce7, 0x00451, 0x32000, 0x71000, 933 0xb0000, 0xfc000, 0x287af, 0x244b7, 0x204ab, 0x1c49f, 0x18493, 934 0x14297, 0x10295, 0x0c298, 0x0819c, 0x040a8, 0x0001c, 0x1944c, 935 0x59444, 0x9944c, 0xd9444, 0x0f424, 0x4f424, 0x8f424, 0xcf424, 936 0xe0330, 0xa0330, 0x60330, 0x20330 937}; 938 939static const struct rtwn_rf_prog rtl8192ce_rf_prog[] = { 940 { 941 __arraycount(rtl8192ce_rf1_regs), 942 rtl8192ce_rf1_regs, 943 rtl8192ce_rf1_vals 944 }, 945 { 946 __arraycount(rtl8192ce_rf2_regs), 947 rtl8192ce_rf2_regs, 948 rtl8192ce_rf2_vals 949 } 950}; 951 952/* 953 * RTL8188CE-VAU. 954 */ 955static const uint32_t rtl8188ce_rf_vals[] = { 956 0x30159, 0x31284, 0x98000, 0x18c63, 0x210e7, 0x2044f, 0x1adb1, 957 0x54867, 0x8992e, 0x0e52c, 0x39ce7, 0x00451, 0x00000, 0x10255, 958 0x60a00, 0xfc378, 0xa1250, 0x4445f, 0x80001, 0x0b614, 0x6c000, 959 0x00000, 0x01558, 0x00060, 0x00483, 0x4f200, 0xec7d9, 0x577c0, 960 0x04783, 0x00001, 0x21334, 0x00000, 0x00054, 0x00001, 0x00808, 961 0x53333, 0x0000c, 0x00002, 0x00808, 0x5b333, 0x0000d, 0x00003, 962 0x00808, 0x63333, 0x0000d, 0x00004, 0x00808, 0x6b333, 0x0000d, 963 0x00005, 0x00808, 0x73333, 0x0000d, 0x00006, 0x00709, 0x5b333, 964 0x0000d, 0x00007, 0x00709, 0x63333, 0x0000d, 0x00008, 0x0060a, 965 0x4b333, 0x0000d, 0x00009, 0x0060a, 0x53333, 0x0000d, 0x0000a, 966 0x0060a, 0x5b333, 0x0000d, 0x0000b, 0x0060a, 0x63333, 0x0000d, 967 0x0000c, 0x0060a, 0x6b333, 0x0000d, 0x0000d, 0x0060a, 0x73333, 968 0x0000d, 0x0000e, 0x0050b, 0x66666, 0x0001a, 0xe0000, 0x4000f, 969 0xe31fc, 0x6000f, 0xff9f8, 0x2000f, 0x203f9, 0x3000f, 0xff500, 970 0x00000, 0x00000, 0x8000f, 0x3f100, 0x9000f, 0x23100, 0x32000, 971 0x71000, 0xb0000, 0xfc000, 0x287b3, 0x244b7, 0x204ab, 0x1c49f, 972 0x18493, 0x1429b, 0x10299, 0x0c29c, 0x081a0, 0x040ac, 0x00020, 973 0x1944c, 0x59444, 0x9944c, 0xd9444, 0x0f424, 0x4f424, 0x8f424, 974 0xcf424, 0xe0330, 0xa0330, 0x60330, 0x20330, 0x10159, 0x0f401, 975 0x00000, 0x00000, 0x80003, 0x00000, 0x00000, 0x44457, 0x80000, 976 0x30159 977}; 978 979static const struct rtwn_rf_prog rtl8188ce_rf_prog[] = { 980 { 981 __arraycount(rtl8192ce_rf1_regs), 982 rtl8192ce_rf1_regs, 983 rtl8188ce_rf_vals 984 } 985}; 986 987 988/* 989 * RTL8188CU. 990 */ 991static const uint32_t rtl8188cu_rf_vals[] = { 992 0x30159, 0x31284, 0x98000, 0x18c63, 0x210e7, 0x2044f, 0x1adb1, 993 0x54867, 0x8992e, 0x0e52c, 0x39ce7, 0x00451, 0x00000, 0x10255, 994 0x60a00, 0xfc378, 0xa1250, 0x4445f, 0x80001, 0x0b614, 0x6c000, 995 0x00000, 0x01558, 0x00060, 0x00483, 0x4f000, 0xec7d9, 0x577c0, 996 0x04783, 0x00001, 0x21334, 0x00000, 0x00054, 0x00001, 0x00808, 997 0x53333, 0x0000c, 0x00002, 0x00808, 0x5b333, 0x0000d, 0x00003, 998 0x00808, 0x63333, 0x0000d, 0x00004, 0x00808, 0x6b333, 0x0000d, 999 0x00005, 0x00808, 0x73333, 0x0000d, 0x00006, 0x00709, 0x5b333, 1000 0x0000d, 0x00007, 0x00709, 0x63333, 0x0000d, 0x00008, 0x0060a, 1001 0x4b333, 0x0000d, 0x00009, 0x0060a, 0x53333, 0x0000d, 0x0000a, 1002 0x0060a, 0x5b333, 0x0000d, 0x0000b, 0x0060a, 0x63333, 0x0000d, 1003 0x0000c, 0x0060a, 0x6b333, 0x0000d, 0x0000d, 0x0060a, 0x73333, 1004 0x0000d, 0x0000e, 0x0050b, 0x66666, 0x0001a, 0xe0000, 0x4000f, 1005 0xe31fc, 0x6000f, 0xff9f8, 0x2000f, 0x203f9, 0x3000f, 0xff500, 1006 0x00000, 0x00000, 0x8000f, 0x3f100, 0x9000f, 0x23100, 0x32000, 1007 0x71000, 0xb0000, 0xfc000, 0x287b3, 0x244b7, 0x204ab, 0x1c49f, 1008 0x18493, 0x1429b, 0x10299, 0x0c29c, 0x081a0, 0x040ac, 0x00020, 1009 0x1944c, 0x59444, 0x9944c, 0xd9444, 0x0f405, 0x4f405, 0x8f405, 1010 0xcf405, 0xe0330, 0xa0330, 0x60330, 0x20330, 0x10159, 0x0f401, 1011 0x00000, 0x00000, 0x80003, 0x00000, 0x00000, 0x44457, 0x80000, 1012 0x30159 1013}; 1014 1015static const struct rtwn_rf_prog rtl8188cu_rf_prog[] = { 1016 { 1017 __arraycount(rtl8192ce_rf1_regs), 1018 rtl8192ce_rf1_regs, 1019 rtl8188cu_rf_vals 1020 } 1021}; 1022 1023/* 1024 * RTL8192EU. 1025 */ 1026static const uint8_t rtl8192eu_rf_regs[] = { 1027 0x7f, 0x81, 0x00, 0x08, 0x18, 0x19, 0x1b, 0x1e, 0x1f, 0x2f, 1028 0x3f, 0x42, 0x57, 0x58, 0x67, 0x83, 0xb0, 0xb1, 0xb2, 0xb4, 1029 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbf, 0xc2, 0xc3, 1030 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xdf, 0xef, 0x51, 1031 0x52, 0x53, 0x56, 0x35, 0x35, 0x35, 0x36, 0x36, 0x36, 0x36, 1032 0x18, 0x5a, 0x19, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 1033 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 1034 0x34, 0x34, 0x34, 0x34, 0x34, 0x00, 0x84, 0x86, 0x87, 0x8e, 1035 0x8f, 0xef, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 1036 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 1037 0xef, 0xfe, 0x18, 0xfe, 0xfe, 0xfe, 0xfe, 0x1e, 0x1f, 0x00, 1038}; 1039 1040static const uint32_t rtl8192eu_rf_vals[] = { 1041 0x00082, 0x3fc00, 0x30000, 0x08400, 0x00407, 0x00012, 0x00064, 1042 0x80009, 0x00880, 0x1a060, 0x00000, 0x060c0, 0xd0000, 0xbe180, 1043 0x01552, 0x00000, 0xff9f1, 0x55418, 0x8cc00, 0x43083, 0x08166, 1044 0x0803e, 0x1c69f, 0x0407f, 0x80001, 0x40001, 0x00400, 0xc0000, 1045 0x02400, 0x00009, 0x40c91, 0x99999, 0x000a3, 0x88820, 0x76c06, 1046 0x00000, 0x80000, 0x00180, 0x001a0, 0x69545, 0x7e45e, 0x00071, 1047 0x51ff3, 0x000a8, 0x001e2, 0x002a8, 0x01c24, 0x09c24, 0x11c24, 1048 0x19c24, 0x00c07, 0x48000, 0x739d0, 0x0a093, 0x0908f, 0x0808c, 1049 0x0704d, 0x0604a, 0x05047, 0x0400a, 0x03007, 0x02004, 0x01001, 1050 0x00000, 0x0add7, 0x09dd4, 0x08dd1, 0x07dce, 0x06dcb, 0x05dc8, 1051 0x04dc5, 0x034cc, 0x0244f, 0x0144c, 0x00014, 0x30159, 0x68180, 1052 0x0014e, 0x48e00, 0x65540, 0x88000, 0x020a0, 0xf07b0, 0xf02b0, 1053 0xef7b0, 0xd4fb0, 0xcf060, 0xb0090, 0xa0080, 0x90080, 0x8f780, 1054 0x787b0, 0x78730, 0x60fb0, 0x5ffa0, 0x40620, 0x37090, 0x20080, 1055 0x1f060, 0x0ffb0, 0x000a0, 0x00000, 0x0fc07, 0x00000, 0x00000, 1056 0x00000, 0x00000, 0x00001, 0x80000, 0x33e70, 1057}; 1058 1059static const uint8_t rtl8192eu_rf2_regs[] = { 1060 0x7f, 0x81, 0x00, 0x08, 0x18, 0x19, 0x1b, 0x1e, 0x1f, 0x2f, 1061 0x3f, 0x42, 0x57, 0x58, 0x67, 0x7f, 0x81, 0x83, 0xdf, 0xef, 1062 0x51, 0x52, 0x53, 0x56, 0x35, 0x35, 0x35, 0x36, 0x36, 0x36, 1063 0x36, 0x18, 0x5a, 0x19, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 1064 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 1065 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x00, 0x84, 0x86, 0x87, 1066 0x8e, 0x8f, 0xef, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 1067 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 1068 0x3b, 0xef, 0x00, 0xfe, 0xfe, 0xfe, 0xfe, 0x1e, 0x1f, 0x00, 1069}; 1070 1071static const uint32_t rtl8192eu_rf2_vals[] = { 1072 0x00082, 0x3fc00, 0x30000, 0x08400, 0x00407, 0x00012, 0x00064, 1073 0x80009, 0x00880, 0x1a060, 0x00000, 0x060c0, 0xd0000, 0xbe180, 1074 0x01552, 0x00082, 0x3f000, 0x00000, 0x00180, 0x001a0, 0x69545, 1075 0x7e42e, 0x00071, 0x51ff3, 0x000a8, 0x001e0, 0x002a8, 0x01ca8, 1076 0x09c24, 0x11c24, 0x19c24, 0x00c07, 0x48000, 0x739d0, 0x0a093, 1077 0x0908f, 0x0808c, 0x0704d, 0x0604a, 0x05047, 0x0400a, 0x03007, 1078 0x02004, 0x01001, 0x00000, 0x0add7, 0x09dd4, 0x08dd1, 0x07dce, 1079 0x06dcb, 0x05dc8, 0x04dc5, 0x034cc, 0x0244f, 0x0144c, 0x00014, 1080 0x30159, 0x68180, 0x000ce, 0x48a00, 0x65540, 0x88000, 0x020a0, 1081 0xf07b0, 0xf02b0, 0xef7b0, 0xd4fb0, 0xcf060, 0xb0090, 0xa0080, 1082 0x90080, 0x8f780, 0x787b0, 0x78730, 0x60fb0, 0x5ffa0, 0x40620, 1083 0x37090, 0x20080, 0x1f060, 0x0ffb0, 0x000a0, 0x10159, 0x00000, 1084 0x00000, 0x00000, 0x00000, 0x00001, 0x80000, 0x33e70, 1085}; 1086 1087static const struct rtwn_rf_prog rtl8192eu_rf_prog[] = { 1088 { 1089 __arraycount(rtl8192eu_rf_regs), 1090 rtl8192eu_rf_regs, 1091 rtl8192eu_rf_vals 1092 }, 1093 { 1094 __arraycount(rtl8192eu_rf2_regs), 1095 rtl8192eu_rf2_regs, 1096 rtl8192eu_rf2_vals 1097 } 1098}; 1099 1100/* 1101 * RTL8188EU. 1102 */ 1103static const uint8_t rtl8188eu_rf_regs[] = { 1104 0x00, 0x08, 0x18, 0x19, 0x1e, 0x1f, 0x2f, 0x3f, 0x42, 0x57, 1105 0x58, 0x67, 0x83, 0xb0, 0xb1, 0xb2, 0xb4, 0xb6, 0xb7, 0xb8, 1106 0xb9, 0xba, 0xbb, 0xbf, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 1107 0xc8, 0xc9, 0xca, 0xdf, 0xef, 0x51, 0x52, 0x53, 0x56, 1108 0x35, 0x35, 0x35, 0x36, 0x36, 0x36, 0x36, 0xb6, 0x18, 0x5a, 1109 0x19, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 1110 0x34, 0x34, 0x00, 0x84, 0x86, 0x87, 0x8e, 0x8f, 0xef, 0x3b, 1111 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 1112 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0xef, 0x00, 0x18, 0xfe, 0xfe, 1113 0x1f, 0xfe, 0xfe, 0x1e, 0x1f, 0x00 1114}; 1115 1116static const uint32_t rtl8188eu_rf_vals[] = { 1117 0x30000, 0x84000, 0x00407, 0x00012, 0x80009, 0x00880, 0x1a060, 1118 0x00000, 0x060c0, 0xd0000, 0xbe180, 0x01552, 0x00000, 0xff8fc, 1119 0x54400, 0xccc19, 0x43003, 0x4953e, 0x1c718, 0x060ff, 0x80001, 1120 0x40000, 0x00400, 0xc0000, 0x02400, 0x00009, 0x40c91, 0x99999, 1121 0x000a3, 0x88820, 0x76c06, 0x00000, 0x80000, 0x00180, 0x001a0, 1122 0x6b27d, 0x7e49d, 0x00073, 0x51ff3, 0x00086, 0x00186, 1123 0x00286, 0x01c25, 0x09c25, 0x11c25, 0x19c25, 0x48538, 0x00c07, 1124 0x4bd00, 0x739d0, 0x0adf3, 0x09df0, 0x08ded, 0x07dea, 0x06de7, 1125 0x054ee, 0x044eb, 0x034e8, 0x0246b, 0x01468, 0x0006d, 0x30159, 1126 0x68200, 0x000ce, 0x48a00, 0x65540, 0x88000, 0x020a0, 0xf02b0, 1127 0xef7b0, 0xd4fb0, 0xcf060, 0xb0090, 0xa0080, 0x90080, 0x8f780, 1128 0x722b0, 0x6f7b0, 0x54fb0, 0x4f060, 0x30090, 0x20080, 0x10080, 1129 0x0f780, 0x000a0, 0x10159, 0x0f407, 0x00000, 0x00000, 0x80003, 1130 0x00000, 0x00000, 0x00001, 0x80000, 0x33e60 1131}; 1132 1133static const struct rtwn_rf_prog rtl8188eu_rf_prog[] = { 1134 { 1135 __arraycount(rtl8188eu_rf_regs), 1136 rtl8188eu_rf_regs, 1137 rtl8188eu_rf_vals 1138 } 1139}; 1140 1141/* 1142 * RTL8188RU. 1143 */ 1144static const uint32_t rtl8188ru_rf_vals[] = { 1145 0x30159, 0x31284, 0x98000, 0x18c63, 0x210e7, 0x2044f, 0x1adb0, 1146 0x54867, 0x8992e, 0x0e529, 0x39ce7, 0x00451, 0x00000, 0x00255, 1147 0x60a00, 0xfc378, 0xa1250, 0x4445f, 0x80001, 0x0b614, 0x6c000, 1148 0x0083c, 0x01558, 0x00060, 0x00483, 0x4f000, 0xec7d9, 0x977c0, 1149 0x04783, 0x00001, 0x21334, 0x00000, 0x00054, 0x00001, 0x00808, 1150 0x53333, 0x0000c, 0x00002, 0x00808, 0x5b333, 0x0000d, 0x00003, 1151 0x00808, 0x63333, 0x0000d, 0x00004, 0x00808, 0x6b333, 0x0000d, 1152 0x00005, 0x00808, 0x73333, 0x0000d, 0x00006, 0x00709, 0x5b333, 1153 0x0000d, 0x00007, 0x00709, 0x63333, 0x0000d, 0x00008, 0x0060a, 1154 0x4b333, 0x0000d, 0x00009, 0x0060a, 0x53333, 0x0000d, 0x0000a, 1155 0x0060a, 0x5b333, 0x0000d, 0x0000b, 0x0060a, 0x63333, 0x0000d, 1156 0x0000c, 0x0060a, 0x6b333, 0x0000d, 0x0000d, 0x0060a, 0x73333, 1157 0x0000d, 0x0000e, 0x0050b, 0x66666, 0x0001a, 0xe0000, 0x4000f, 1158 0xe31fc, 0x6000f, 0xff9f8, 0x2000f, 0x203f9, 0x3000f, 0xff500, 1159 0x00000, 0x00000, 0x8000f, 0x3f100, 0x9000f, 0x23100, 0xd8000, 1160 0x90000, 0x51000, 0x12000, 0x28fb4, 0x24fa8, 0x207a4, 0x1c798, 1161 0x183a4, 0x14398, 0x101a4, 0x0c198, 0x080a4, 0x04098, 0x00014, 1162 0x1944c, 0x59444, 0x9944c, 0xd9444, 0x0f405, 0x4f405, 0x8f405, 1163 0xcf405, 0xe0330, 0xa0330, 0x60330, 0x20330, 0x10159, 0x0f401, 1164 0x00000, 0x00000, 0x80003, 0x00000, 0x00000, 0x44457, 0x80000, 1165 0x30159 1166}; 1167 1168static const struct rtwn_rf_prog rtl8188ru_rf_prog[] = { 1169 { 1170 __arraycount(rtl8192ce_rf1_regs), 1171 rtl8192ce_rf1_regs, 1172 rtl8188ru_rf_vals 1173 } 1174}; 1175 1176struct rtwn_txpwr { 1177 uint8_t pwr[3][28]; 1178}; 1179 1180struct rtwn_r88e_txpwr { 1181 uint8_t pwr[6][28]; 1182}; 1183 1184/* 1185 * Per RF chain/group/rate Tx gain values. 1186 */ 1187static const struct rtwn_txpwr rtl8192cu_txagc[] = { 1188 { { /* Chain 0. */ 1189 { /* Group 0. */ 1190 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */ 1191 0x0c, 0x0c, 0x0c, 0x0a, 0x08, 0x06, 0x04, 0x02, /* OFDM6~54. */ 1192 0x0e, 0x0d, 0x0c, 0x0a, 0x08, 0x06, 0x04, 0x02, /* MCS0~7. */ 1193 0x0e, 0x0d, 0x0c, 0x0a, 0x08, 0x06, 0x04, 0x02 /* MCS8~15. */ 1194 }, 1195 { /* Group 1. */ 1196 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */ 1197 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* OFDM6~54. */ 1198 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* MCS0~7. */ 1199 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /* MCS8~15. */ 1200 }, 1201 { /* Group 2. */ 1202 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */ 1203 0x04, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x00, /* OFDM6~54. */ 1204 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* MCS0~7. */ 1205 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /* MCS8~15. */ 1206 } 1207 } }, 1208 { { /* Chain 1. */ 1209 { /* Group 0. */ 1210 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */ 1211 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* OFDM6~54. */ 1212 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* MCS0~7. */ 1213 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /* MCS8~15. */ 1214 }, 1215 { /* Group 1. */ 1216 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */ 1217 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* OFDM6~54. */ 1218 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* MCS0~7. */ 1219 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /* MCS8~15. */ 1220 }, 1221 { /* Group 2. */ 1222 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */ 1223 0x04, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x00, /* OFDM6~54. */ 1224 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* MCS0~7. */ 1225 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /* MCS8~15. */ 1226 } 1227 } } 1228}; 1229 1230static const struct rtwn_txpwr rtl8188ru_txagc[] = { 1231 { { /* Chain 0. */ 1232 { /* Group 0. */ 1233 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */ 1234 0x08, 0x08, 0x08, 0x06, 0x06, 0x04, 0x04, 0x00, /* OFDM6~54. */ 1235 0x08, 0x06, 0x06, 0x04, 0x04, 0x02, 0x02, 0x00, /* MCS0~7. */ 1236 0x08, 0x06, 0x06, 0x04, 0x04, 0x02, 0x02, 0x00 /* MCS8~15. */ 1237 }, 1238 { /* Group 1. */ 1239 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */ 1240 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* OFDM6~54. */ 1241 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* MCS0~7. */ 1242 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /* MCS8~15. */ 1243 }, 1244 { /* Group 2. */ 1245 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */ 1246 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* OFDM6~54. */ 1247 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* MCS0~7. */ 1248 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /* MCS8~15. */ 1249 } 1250 } } 1251}; 1252 1253static const struct rtwn_r88e_txpwr rtl8188eu_txagc[] = { 1254 { { /* Chain 0. */ 1255 { /* Group 0. */ 1256 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */ 1257 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* OFDM6~54. */ 1258 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* MCS0~7. */ 1259 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /* MCS8~15. */ 1260 }, 1261 { /* Group 1. */ 1262 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */ 1263 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* OFDM6~54. */ 1264 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* MCS0~7. */ 1265 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /* MCS8~15. */ 1266 }, 1267 { /* Group 2. */ 1268 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */ 1269 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* OFDM6~54. */ 1270 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* MCS0~7. */ 1271 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /* MCS8~15. */ 1272 }, 1273 { /* Group 3. */ 1274 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */ 1275 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* OFDM6~54. */ 1276 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* MCS0~7. */ 1277 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /* MCS8~15. */ 1278 }, 1279 { /* Group 4. */ 1280 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */ 1281 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* OFDM6~54. */ 1282 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* MCS0~7. */ 1283 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /* MCS8~15. */ 1284 }, 1285 { /* Group 5. */ 1286 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */ 1287 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* OFDM6~54. */ 1288 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* MCS0~7. */ 1289 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /* MCS8~15. */ 1290 } 1291 } }, 1292 { { /* Chain 1. */ 1293 { /* Group 0. */ 1294 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */ 1295 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* OFDM6~54. */ 1296 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* MCS0~7. */ 1297 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /* MCS8~15. */ 1298 }, 1299 { /* Group 1. */ 1300 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */ 1301 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* OFDM6~54. */ 1302 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* MCS0~7. */ 1303 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /* MCS8~15. */ 1304 }, 1305 { /* Group 2. */ 1306 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */ 1307 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* OFDM6~54. */ 1308 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* MCS0~7. */ 1309 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /* MCS8~15. */ 1310 }, 1311 { /* Group 3. */ 1312 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */ 1313 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* OFDM6~54. */ 1314 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* MCS0~7. */ 1315 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /* MCS8~15. */ 1316 }, 1317 { /* Group 4. */ 1318 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */ 1319 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* OFDM6~54. */ 1320 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* MCS0~7. */ 1321 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /* MCS8~15. */ 1322 }, 1323 { /* Group 5. */ 1324 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */ 1325 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* OFDM6~54. */ 1326 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* MCS0~7. */ 1327 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /* MCS8~15. */ 1328 } 1329 } } 1330}; 1331 1332#endif /* _DEV_IC_RTWN_DATA_H_ */ 1333