1 /* $NetBSD: arn9280reg.h,v 1.1 2013/03/30 02:53:01 christos Exp $ */ 2 /* $OpenBSD: ar9280reg.h,v 1.6 2012/10/20 09:54:20 stsp Exp $ */ 3 4 /*- 5 * Copyright (c) 2009 Damien Bergamini <damien.bergamini@free.fr> 6 * Copyright (c) 2008-2009 Atheros Communications Inc. 7 * 8 * Permission to use, copy, modify, and/or distribute this software for any 9 * purpose with or without fee is hereby granted, provided that the above 10 * copyright notice and this permission notice appear in all copies. 11 * 12 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 13 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 14 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 15 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 16 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 17 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 18 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 19 */ 20 21 #ifndef _ARN9280REG_H_ 22 #define _ARN9280REG_H_ 23 24 #define AR9280_MAX_CHAINS 2 25 26 #define AR9280_PD_GAIN_BOUNDARY_DEFAULT 56 27 #define AR9280_PHY_CCA_MAX_GOOD_VALUE (-112) 28 29 #define AR9280_PHY_SYNTH_CONTROL 0x9874 30 31 /* Bits for AR9280_PHY_SYNTH_CONTROL. */ 32 #define AR9280_BMODE 0x20000000 33 #define AR9280_FRACMODE 0x10000000 34 #define AR9280_AMODE_REFSEL_M 0x0c000000 35 #define AR9280_AMODE_REFSEL_S 26 36 37 /* 38 * NB: The AR9280 uses the same ROM layout than the AR5416. 39 */ 40 41 /* Macro to "pack" registers to 16-bit to save some .rodata space. */ 42 #define P(x) (x) 43 44 /* 45 * AR9280 2.0 initialization values. 46 */ 47 static const uint16_t ar9280_2_0_regs[] = { 48 P(0x01030), P(0x01070), P(0x010b0), P(0x010f0), P(0x08014), 49 P(0x0801c), P(0x08120), P(0x081d0), P(0x08318), P(0x09804), 50 P(0x09820), P(0x09824), P(0x09828), P(0x09834), P(0x09838), 51 P(0x09840), P(0x09844), P(0x09850), P(0x09858), P(0x0985c), 52 P(0x09860), P(0x09864), P(0x09868), P(0x0986c), P(0x09914), 53 P(0x09918), P(0x09924), P(0x09944), P(0x09960), P(0x0a960), 54 P(0x09964), P(0x0c968), P(0x099b8), P(0x099bc), P(0x099c0), 55 P(0x0a204), P(0x0a20c), P(0x0b20c), P(0x0a21c), P(0x0a230), 56 P(0x0a23c), P(0x0a250), P(0x0a358), P(0x0a388), P(0x0a3d8), 57 P(0x07894) 58 }; 59 60 static const uint32_t ar9280_2_0_vals_5g20[] = { 61 0x00000230, 0x00000168, 0x00000e60, 0x00000000, 0x03e803e8, 62 0x128d8027, 0x08f04800, 0x00003210, 0x00003e80, 0x00000300, 63 0x02020200, 0x01000e0e, 0x0a020001, 0x00000e0e, 0x00000007, 64 0x206a022e, 0x0372161e, 0x6c4000e2, 0x7ec88d2e, 0x31395d5e, 65 0x00048d18, 0x0001ce00, 0x5ac640d0, 0x06903081, 0x000007d0, 66 0x0000000a, 0xd00a8a0b, 0xffbc1010, 0x00000010, 0x00000010, 67 0x00000210, 0x000003b5, 0x0000001c, 0x00000a00, 0x05eea6d4, 68 0x00000444, 0x00000014, 0x00000014, 0x1883800a, 0x00000000, 69 0x13c88000, 0x001ff000, 0x7999aa02, 0x0c000000, 0x00000000, 70 0x5a508000 71 }; 72 73 #ifndef IEEE80211_NO_HT 74 static const uint32_t ar9280_2_0_vals_5g40[] = { 75 0x00000460, 0x000002d0, 0x00001cc0, 0x00000000, 0x07d007d0, 76 0x128d804f, 0x08f04800, 0x00003210, 0x00007d00, 0x000003c4, 77 0x02020200, 0x01000e0e, 0x0a020001, 0x00000e0e, 0x00000007, 78 0x206a022e, 0x0372161e, 0x6d4000e2, 0x7ec88d2e, 0x3139605e, 79 0x00048d18, 0x0001ce00, 0x5ac640d0, 0x06903081, 0x00000fa0, 80 0x00000014, 0xd00a8a0b, 0xffbc1010, 0x00000010, 0x00000010, 81 0x00000210, 0x000003b5, 0x0000001c, 0x00000a00, 0x05eea6d4, 82 0x00000444, 0x00000014, 0x00000014, 0x1883800a, 0x00000000, 83 0x13c88000, 0x001ff000, 0x7999aa02, 0x0c000000, 0x00000000, 84 0x5a508000 85 }; 86 87 static const uint32_t ar9280_2_0_vals_2g40[] = { 88 0x000002c0, 0x00000318, 0x00007c70, 0x00000000, 0x10801600, 89 0x12e00057, 0x08f04810, 0x0000320a, 0x00006880, 0x000003c4, 90 0x02020200, 0x01000e0e, 0x0a020001, 0x00000e0e, 0x00000007, 91 0x206a012e, 0x037216a0, 0x6d4000e2, 0x7ec84d2e, 0x3139605e, 92 0x00048d20, 0x0001ce00, 0x5ac640d0, 0x06903881, 0x00001130, 93 0x00000268, 0xd00a8a0d, 0xffbc1010, 0x00000010, 0x00000010, 94 0x00000210, 0x000003ce, 0x0000001c, 0x00000c00, 0x05eea6d4, 95 0x00000444, 0x0001f019, 0x0001f019, 0x1883800a, 0x00000210, 96 0x13c88001, 0x0004a000, 0x7999aa0e, 0x08000000, 0x00000000, 97 0x5a508000 98 }; 99 #endif 100 101 static const uint32_t ar9280_2_0_vals_2g20[] = { 102 0x00000160, 0x0000018c, 0x00003e38, 0x00000000, 0x08400b00, 103 0x12e0002b, 0x08f04810, 0x0000320a, 0x00003440, 0x00000300, 104 0x02020200, 0x01000e0e, 0x0a020001, 0x00000e0e, 0x00000007, 105 0x206a012e, 0x037216a0, 0x6c4000e2, 0x7ec84d2e, 0x31395d5e, 106 0x00048d20, 0x0001ce00, 0x5ac640d0, 0x06903881, 0x00000898, 107 0x0000000b, 0xd00a8a0d, 0xffbc1010, 0x00000010, 0x00000010, 108 0x00000210, 0x000003ce, 0x0000001c, 0x00000c00, 0x05eea6d4, 109 0x00000444, 0x0001f019, 0x0001f019, 0x1883800a, 0x00000108, 110 0x13c88000, 0x0004a000, 0x7999aa0e, 0x0c000000, 0x00000000, 111 0x5a508000 112 }; 113 114 static const uint16_t ar9280_2_0_cm_regs[] = { 115 P(0x0000c), P(0x00030), P(0x00034), P(0x00040), P(0x00044), 116 P(0x00048), P(0x0004c), P(0x00050), P(0x00054), P(0x00800), 117 P(0x00804), P(0x00808), P(0x0080c), P(0x00810), P(0x00814), 118 P(0x00818), P(0x0081c), P(0x00820), P(0x00824), P(0x01040), 119 P(0x01044), P(0x01048), P(0x0104c), P(0x01050), P(0x01054), 120 P(0x01058), P(0x0105c), P(0x01060), P(0x01064), P(0x01230), 121 P(0x01270), P(0x01038), P(0x01078), P(0x010b8), P(0x010f8), 122 P(0x01138), P(0x01178), P(0x011b8), P(0x011f8), P(0x01238), 123 P(0x01278), P(0x012b8), P(0x012f8), P(0x01338), P(0x01378), 124 P(0x013b8), P(0x013f8), P(0x01438), P(0x01478), P(0x014b8), 125 P(0x014f8), P(0x01538), P(0x01578), P(0x015b8), P(0x015f8), 126 P(0x01638), P(0x01678), P(0x016b8), P(0x016f8), P(0x01738), 127 P(0x01778), P(0x017b8), P(0x017f8), P(0x0103c), P(0x0107c), 128 P(0x010bc), P(0x010fc), P(0x0113c), P(0x0117c), P(0x011bc), 129 P(0x011fc), P(0x0123c), P(0x0127c), P(0x012bc), P(0x012fc), 130 P(0x0133c), P(0x0137c), P(0x013bc), P(0x013fc), P(0x0143c), 131 P(0x0147c), P(0x04030), P(0x0403c), P(0x04024), P(0x04060), 132 P(0x04064), P(0x07010), P(0x07034), P(0x07038), P(0x08004), 133 P(0x08008), P(0x0800c), P(0x08018), P(0x08020), P(0x08038), 134 P(0x0803c), P(0x08048), P(0x08054), P(0x08058), P(0x0805c), 135 P(0x08060), P(0x08064), P(0x08070), P(0x080c0), P(0x080c4), 136 P(0x080c8), P(0x080cc), P(0x080d0), P(0x080d4), P(0x080d8), 137 P(0x080e0), P(0x080e4), P(0x080e8), P(0x080ec), P(0x080f0), 138 P(0x080f4), P(0x080f8), P(0x080fc), P(0x08100), P(0x08104), 139 P(0x08108), P(0x0810c), P(0x08110), P(0x08118), P(0x0811c), 140 P(0x08124), P(0x08128), P(0x0812c), P(0x08130), P(0x08134), 141 P(0x08138), P(0x0813c), P(0x08144), P(0x08168), P(0x0816c), 142 P(0x08170), P(0x08174), P(0x08178), P(0x0817c), P(0x081c0), 143 P(0x081ec), P(0x081f0), P(0x081f4), P(0x081f8), P(0x081fc), 144 P(0x08200), P(0x08204), P(0x08208), P(0x0820c), P(0x08210), 145 P(0x08214), P(0x08218), P(0x0821c), P(0x08220), P(0x08224), 146 P(0x08228), P(0x0822c), P(0x08230), P(0x08234), P(0x08238), 147 P(0x0823c), P(0x08240), P(0x08244), P(0x08248), P(0x0824c), 148 P(0x08250), P(0x08254), P(0x08258), P(0x0825c), P(0x08260), 149 P(0x08264), P(0x08270), P(0x08274), P(0x08278), P(0x0827c), 150 P(0x08284), P(0x08288), P(0x0828c), P(0x08294), P(0x08298), 151 P(0x0829c), P(0x08300), P(0x08314), P(0x08328), P(0x0832c), 152 P(0x08330), P(0x08334), P(0x08338), P(0x0833c), P(0x08340), 153 P(0x08344), P(0x09808), P(0x0980c), P(0x09810), P(0x09814), 154 P(0x0981c), P(0x0982c), P(0x09830), P(0x0983c), P(0x0984c), 155 P(0x0a84c), P(0x09854), P(0x09900), P(0x09904), P(0x09908), 156 P(0x0990c), P(0x09910), P(0x0991c), P(0x09920), P(0x0a920), 157 P(0x09928), P(0x0992c), P(0x09934), P(0x09938), P(0x0993c), 158 P(0x09948), P(0x0994c), P(0x09954), P(0x09958), P(0x09940), 159 P(0x0c95c), P(0x09970), P(0x09974), P(0x09978), P(0x0997c), 160 P(0x09980), P(0x09984), P(0x09988), P(0x0998c), P(0x09990), 161 P(0x09994), P(0x09998), P(0x0999c), P(0x099a0), P(0x099a4), 162 P(0x099a8), P(0x099ac), P(0x099b0), P(0x099b4), P(0x099c4), 163 P(0x099c8), P(0x099cc), P(0x099d0), P(0x099d4), P(0x099d8), 164 P(0x099dc), P(0x099e0), P(0x099e4), P(0x099e8), P(0x099ec), 165 P(0x099f0), P(0x099fc), P(0x0a208), P(0x0a210), P(0x0a214), 166 P(0x0a218), P(0x0a220), P(0x0a224), P(0x0a228), P(0x0a22c), 167 P(0x0a234), P(0x0a238), P(0x0a240), P(0x0a244), P(0x0a248), 168 P(0x0a24c), P(0x0a254), P(0x0a258), P(0x0a25c), P(0x0a260), 169 P(0x0a268), P(0x0a26c), P(0x0b26c), P(0x0d270), P(0x0a278), 170 P(0x0d35c), P(0x0d360), P(0x0d364), P(0x0d368), P(0x0d36c), 171 P(0x0d370), P(0x0d374), P(0x0d378), P(0x0d37c), P(0x0d380), 172 P(0x0d384), P(0x0a38c), P(0x0a390), P(0x0a394), P(0x0a398), 173 P(0x0a39c), P(0x0a3a0), P(0x0a3a4), P(0x0a3a8), P(0x0a3ac), 174 P(0x0a3b0), P(0x0a3b4), P(0x0a3b8), P(0x0a3bc), P(0x0a3c0), 175 P(0x0a3c4), P(0x0a3c8), P(0x0a3cc), P(0x0a3d0), P(0x0a3d4), 176 P(0x0a3dc), P(0x0a3e0), P(0x0a3e4), P(0x0a3e8), P(0x07800), 177 P(0x07804), P(0x07808), P(0x0780c), P(0x07810), P(0x07818), 178 P(0x07824), P(0x07828), P(0x0782c), P(0x07830), P(0x07834), 179 P(0x0783c), P(0x07848), P(0x0784c), P(0x07850), P(0x07854), 180 P(0x07858), P(0x07860), P(0x07864), P(0x07868), P(0x0786c), 181 P(0x07870), P(0x07874), P(0x07878), P(0x0787c), P(0x07880), 182 P(0x07884), P(0x07888), P(0x0788c), P(0x07890), P(0x07898) 183 }; 184 185 static const uint32_t ar9280_2_0_cm_vals[] = { 186 0x00000000, 0x00020015, 0x00000005, 0x00000000, 0x00000008, 187 0x00000008, 0x00000010, 0x00000000, 0x0000001f, 0x00000000, 188 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 189 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x002ffc0f, 190 0x002ffc0f, 0x002ffc0f, 0x002ffc0f, 0x002ffc0f, 0x002ffc0f, 191 0x002ffc0f, 0x002ffc0f, 0x002ffc0f, 0x002ffc0f, 0x00000000, 192 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 193 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 194 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 195 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 196 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 197 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 198 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 199 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 200 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 201 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 202 0x00000000, 0x00000002, 0x00000002, 0x0000001f, 0x00000000, 203 0x00000000, 0x00000033, 0x00000002, 0x000004c2, 0x00000000, 204 0x00000000, 0x00000000, 0x00000700, 0x00000000, 0x00000000, 205 0x00000000, 0x40000000, 0x00000000, 0x00000000, 0x000fc78f, 206 0x0000000f, 0x00000000, 0x00000000, 0x2a80001a, 0x05dc01e0, 207 0x1f402710, 0x01f40000, 0x00001e00, 0x00000000, 0x00400000, 208 0xffffffff, 0x0000ffff, 0x003f3f3f, 0x00000000, 0x00000000, 209 0x00000000, 0x00000000, 0x00020000, 0x00020000, 0x00000001, 210 0x00000052, 0x00000000, 0x00000168, 0x000100aa, 0x00003210, 211 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 212 0x00000000, 0x00000000, 0xffffffff, 0x00000000, 0x00000000, 213 0x32143320, 0xfaa4fa50, 0x00000100, 0x00000000, 0x00000000, 214 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 215 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 216 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 217 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 218 0x00000000, 0x00100000, 0x0010f400, 0x00000100, 0x0001e800, 219 0x00000000, 0x00000000, 0x00000000, 0x400000ff, 0x00080922, 220 0x88a00010, 0x00000000, 0x40000000, 0x003e4180, 0x00000000, 221 0x0000002c, 0x0000002c, 0x00000000, 0x00000000, 0x00000000, 222 0x00000000, 0x00000040, 0x00000000, 0x00000000, 0x00000007, 223 0x00000302, 0x00000e00, 0x00ff0000, 0x00000000, 0x000107ff, 224 0x00481043, 0x00000000, 0xafa68e30, 0xfd14e000, 0x9c0a9f6b, 225 0x00000000, 0x0000a000, 0x00000000, 0x00200400, 0x0040233c, 226 0x0040233c, 0x00000044, 0x00000000, 0x00000000, 0x00000000, 227 0x00000000, 0x01002310, 0x10000fff, 0x04900000, 0x04900000, 228 0x00000001, 0x00000004, 0x1e1f2022, 0x0a0b0c0d, 0x00000000, 229 0x9280c00a, 0x00020028, 0x5f3ca3de, 0x2108ecff, 0x14750604, 230 0x004b6a8e, 0x190fb514, 0x00000000, 0x00000001, 0x00000000, 231 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 232 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 233 0x201fff00, 0x006f0000, 0x03051000, 0x00000820, 0x06336f77, 234 0x6af6532f, 0x08f186c8, 0x00046384, 0x00000000, 0x00000000, 235 0x00000000, 0x00000000, 0xaaaaaaaa, 0x3c466478, 0x0cc80caa, 236 0x00000000, 0x00001042, 0x803e4788, 0x4080a333, 0x40206c10, 237 0x009c4060, 0x01834061, 0x00000400, 0x000003b5, 0x233f7180, 238 0x20202020, 0x20202020, 0x38490a20, 0x00007bb6, 0x0fff3ffc, 239 0x00000000, 0x00000000, 0x0cdbd380, 0x0f0f0f01, 0xdfa91f01, 240 0x00000000, 0x0e79e5c6, 0x0e79e5c6, 0x00820820, 0x1ce739ce, 241 0x07ffffef, 0x0fffffe7, 0x17ffffe5, 0x1fffffe4, 0x37ffffe3, 242 0x3fffffe3, 0x57ffffe3, 0x5fffffe2, 0x7fffffe2, 0x7f3c7bba, 243 0xf3307ff0, 0x20202020, 0x20202020, 0x1ce739ce, 0x000001ce, 244 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 245 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 246 0x00000000, 0x00000246, 0x20202020, 0x20202020, 0x20202020, 247 0x1ce739ce, 0x000001ce, 0x00000000, 0x18c43433, 0x00040000, 248 0xdb005012, 0x04924914, 0x21084210, 0x6d801300, 0x07e41000, 249 0x00040000, 0xdb005012, 0x04924914, 0x21084210, 0x6d801300, 250 0x07e40000, 0x00100000, 0x773f0567, 0x54214514, 0x12035828, 251 0x9259269a, 0x52802000, 0x0a8e370e, 0xc0102850, 0x812d4000, 252 0x807ec400, 0x001b6db0, 0x00376b63, 0x06db6db6, 0x006d8000, 253 0xffeffffe, 0xffeffffe, 0x00010000, 0x02060aeb, 0x2a850160 254 }; 255 256 static const uint16_t ar9280_2_0_fast_clock_regs[] = { 257 P(0x01030), P(0x01070), P(0x010b0), P(0x08014), P(0x0801c), 258 P(0x08318), P(0x09820), P(0x09824), P(0x09828), P(0x09834), 259 P(0x09844), P(0x09914), P(0x09918) 260 }; 261 262 static const uint32_t ar9280_2_0_fast_clock_vals_5g20[] = { 263 0x00000268, 0x0000018c, 0x00000fd0, 0x044c044c, 0x148ec02b, 264 0x000044c0, 0x02020200, 0x01000f0f, 0x0b020001, 0x00000f0f, 265 0x03721821, 0x00000898, 0x0000000b 266 }; 267 268 #ifndef IEEE80211_NO_HT 269 static const uint32_t ar9280_2_0_fast_clock_vals_5g40[] = { 270 0x000004d0, 0x00000318, 0x00001fa0, 0x08980898, 0x148ec057, 271 0x00008980, 0x02020200, 0x01000f0f, 0x0b020001, 0x00000f0f, 272 0x03721821, 0x00001130, 0x00000016 273 }; 274 #endif 275 276 static const struct athn_ini ar9280_2_0_ini = { 277 __arraycount(ar9280_2_0_regs), 278 ar9280_2_0_regs, 279 ar9280_2_0_vals_5g20, 280 #ifndef IEEE80211_NO_HT 281 ar9280_2_0_vals_5g40, 282 ar9280_2_0_vals_2g40, 283 #endif 284 ar9280_2_0_vals_2g20, 285 __arraycount(ar9280_2_0_cm_regs), 286 ar9280_2_0_cm_regs, 287 ar9280_2_0_cm_vals, 288 __arraycount(ar9280_2_0_fast_clock_regs), 289 ar9280_2_0_fast_clock_regs, 290 ar9280_2_0_fast_clock_vals_5g20, 291 #ifndef IEEE80211_NO_HT 292 ar9280_2_0_fast_clock_vals_5g40 293 #endif 294 }; 295 296 /* 297 * AR9280 2.0 Tx gains. 298 */ 299 static const uint16_t ar9280_2_0_tx_gain_regs[] = { 300 P(0x0a274), P(0x0a27c), P(0x0a300), P(0x0a304), P(0x0a308), 301 P(0x0a30c), P(0x0a310), P(0x0a314), P(0x0a318), P(0x0a31c), 302 P(0x0a320), P(0x0a324), P(0x0a328), P(0x0a32c), P(0x0a330), 303 P(0x0a334), P(0x0a338), P(0x0a33c), P(0x0a340), P(0x0a344), 304 P(0x0a348), P(0x0a34c), P(0x0a350), P(0x0a354), P(0x0a3ec), 305 P(0x07814), P(0x07838), P(0x0781c), P(0x07840), P(0x07820), 306 P(0x07844) 307 }; 308 309 static const uint32_t ar9280_2_0_tx_gain_vals_5g[] = { 310 0x0a19c652, 0x050701ce, 0x00000000, 0x00003002, 0x00006004, 311 0x0000a006, 0x0000e012, 0x00011014, 0x0001504a, 0x0001904c, 312 0x0001c04e, 0x00020092, 0x0002410a, 0x0002710c, 0x0002b18b, 313 0x0002e1cc, 0x000321ec, 0x000321ec, 0x000321ec, 0x000321ec, 314 0x000321ec, 0x000321ec, 0x000321ec, 0x000321ec, 0x00f70081, 315 0x0019beff, 0x0019beff, 0x00392000, 0x00392000, 0x92592480, 316 0x92592480 317 }; 318 319 static const uint32_t ar9280_2_0_tx_gain_vals_2g[] = { 320 0x0a1aa652, 0x050701ce, 0x00000000, 0x00003002, 0x00008009, 321 0x0000b00b, 0x0000e012, 0x00012048, 0x0001604a, 0x0001a211, 322 0x0001e213, 0x0002121b, 0x00024412, 0x00028414, 0x0002b44a, 323 0x00030649, 0x0003364b, 0x00038a49, 0x0003be48, 0x0003ee4a, 324 0x00042e88, 0x00046e8a, 0x00049ec9, 0x0004bf42, 0x00f70081, 325 0x0019beff, 0x0019beff, 0x00392000, 0x00392000, 0x92592480, 326 0x92592480 327 }; 328 329 static const struct athn_gain ar9280_2_0_tx_gain = { 330 __arraycount(ar9280_2_0_tx_gain_regs), 331 ar9280_2_0_tx_gain_regs, 332 ar9280_2_0_tx_gain_vals_5g, 333 ar9280_2_0_tx_gain_vals_2g 334 }; 335 336 static const uint32_t ar9280_2_0_tx_gain_high_power_vals_5g[] = { 337 0x0a19e652, 0x050739ce, 0x00000000, 0x00003002, 0x00006004, 338 0x0000a006, 0x0000e012, 0x00011014, 0x0001504a, 0x0001904c, 339 0x0001c04e, 0x00021092, 0x0002510a, 0x0002910c, 0x0002c18b, 340 0x0002f1cc, 0x000321eb, 0x000341ec, 0x000341ec, 0x000341ec, 341 0x000341ec, 0x000341ec, 0x000341ec, 0x000341ec, 0x00f70081, 342 0x00198eff, 0x00198eff, 0x00172000, 0x00172000, 0xf258a480, 343 0xf258a480 344 }; 345 346 static const uint32_t ar9280_2_0_tx_gain_high_power_vals_2g[] = { 347 0x0a1aa652, 0x050739ce, 0x00000000, 0x00004002, 0x00007008, 348 0x0000c010, 0x00010012, 0x00013014, 0x0001820a, 0x0001b211, 349 0x0001e213, 0x00022411, 0x00025413, 0x00029811, 0x0002c813, 350 0x00030a14, 0x00035a50, 0x00039c4c, 0x0003de8a, 0x00042e92, 351 0x00046ed2, 0x0004bed5, 0x0004ff54, 0x00055fd5, 0x00f70081, 352 0x00198eff, 0x00198eff, 0x00172000, 0x00172000, 0xf258a480, 353 0xf258a480 354 }; 355 356 static const struct athn_gain ar9280_2_0_tx_gain_high_power = { 357 __arraycount(ar9280_2_0_tx_gain_regs), 358 ar9280_2_0_tx_gain_regs, 359 ar9280_2_0_tx_gain_high_power_vals_5g, 360 ar9280_2_0_tx_gain_high_power_vals_2g 361 }; 362 363 /* 364 * AR9280 2.0 Rx gains. 365 */ 366 static const uint16_t ar9280_2_0_rx_gain_regs[] = { 367 P(0x09a00), P(0x09a04), P(0x09a08), P(0x09a0c), P(0x09a10), 368 P(0x09a14), P(0x09a18), P(0x09a1c), P(0x09a20), P(0x09a24), 369 P(0x09a28), P(0x09a2c), P(0x09a30), P(0x09a34), P(0x09a38), 370 P(0x09a3c), P(0x09a40), P(0x09a44), P(0x09a48), P(0x09a4c), 371 P(0x09a50), P(0x09a54), P(0x09a58), P(0x09a5c), P(0x09a60), 372 P(0x09a64), P(0x09a68), P(0x09a6c), P(0x09a70), P(0x09a74), 373 P(0x09a78), P(0x09a7c), P(0x09a80), P(0x09a84), P(0x09a88), 374 P(0x09a8c), P(0x09a90), P(0x09a94), P(0x09a98), P(0x09a9c), 375 P(0x09aa0), P(0x09aa4), P(0x09aa8), P(0x09aac), P(0x09ab0), 376 P(0x09ab4), P(0x09ab8), P(0x09abc), P(0x09ac0), P(0x09ac4), 377 P(0x09ac8), P(0x09acc), P(0x09ad0), P(0x09ad4), P(0x09ad8), 378 P(0x09adc), P(0x09ae0), P(0x09ae4), P(0x09ae8), P(0x09aec), 379 P(0x09af0), P(0x09af4), P(0x09af8), P(0x09afc), P(0x09b00), 380 P(0x09b04), P(0x09b08), P(0x09b0c), P(0x09b10), P(0x09b14), 381 P(0x09b18), P(0x09b1c), P(0x09b20), P(0x09b24), P(0x09b28), 382 P(0x09b2c), P(0x09b30), P(0x09b34), P(0x09b38), P(0x09b3c), 383 P(0x09b40), P(0x09b44), P(0x09b48), P(0x09b4c), P(0x09b50), 384 P(0x09b54), P(0x09b58), P(0x09b5c), P(0x09b60), P(0x09b64), 385 P(0x09b68), P(0x09b6c), P(0x09b70), P(0x09b74), P(0x09b78), 386 P(0x09b7c), P(0x09b80), P(0x09b84), P(0x09b88), P(0x09b8c), 387 P(0x09b90), P(0x09b94), P(0x09b98), P(0x09b9c), P(0x09ba0), 388 P(0x09ba4), P(0x09ba8), P(0x09bac), P(0x09bb0), P(0x09bb4), 389 P(0x09bb8), P(0x09bbc), P(0x09bc0), P(0x09bc4), P(0x09bc8), 390 P(0x09bcc), P(0x09bd0), P(0x09bd4), P(0x09bd8), P(0x09bdc), 391 P(0x09be0), P(0x09be4), P(0x09be8), P(0x09bec), P(0x09bf0), 392 P(0x09bf4), P(0x09bf8), P(0x09bfc), P(0x09848), P(0x0a848) 393 }; 394 395 static const uint32_t ar9280_2_0_rx_gain_vals_5g[] = { 396 0x00008184, 0x00008188, 0x0000818c, 0x00008190, 0x00008194, 397 0x00008200, 0x00008204, 0x00008208, 0x0000820c, 0x00008210, 398 0x00008214, 0x00008280, 0x00008284, 0x00008288, 0x0000828c, 399 0x00008290, 0x00008300, 0x00008304, 0x00008308, 0x0000830c, 400 0x00008310, 0x00008314, 0x00008380, 0x00008384, 0x00008388, 401 0x0000838c, 0x00008390, 0x00008394, 0x0000a380, 0x0000a384, 402 0x0000a388, 0x0000a38c, 0x0000a390, 0x0000a394, 0x0000a780, 403 0x0000a784, 0x0000a788, 0x0000a78c, 0x0000a790, 0x0000a794, 404 0x0000ab84, 0x0000ab88, 0x0000ab8c, 0x0000ab90, 0x0000ab94, 405 0x0000af80, 0x0000af84, 0x0000af88, 0x0000af8c, 0x0000af90, 406 0x0000af94, 0x0000b380, 0x0000b384, 0x0000b388, 0x0000b38c, 407 0x0000b390, 0x0000b394, 0x0000b398, 0x0000b780, 0x0000b784, 408 0x0000b788, 0x0000b78c, 0x0000b790, 0x0000b794, 0x0000b798, 409 0x0000d784, 0x0000d788, 0x0000d78c, 0x0000d790, 0x0000f780, 410 0x0000f784, 0x0000f788, 0x0000f78c, 0x0000f790, 0x0000f794, 411 0x0000f7a4, 0x0000f7a8, 0x0000f7ac, 0x0000f7b0, 0x0000f7b4, 412 0x0000f7a1, 0x0000f7a5, 0x0000f7a9, 0x0000f7ad, 0x0000f7b1, 413 0x0000f7b5, 0x0000f7c5, 0x0000f7c9, 0x0000f7cd, 0x0000f7d1, 414 0x0000f7d5, 0x0000f7c2, 0x0000f7c6, 0x0000f7ca, 0x0000f7ce, 415 0x0000f7d2, 0x0000f7d6, 0x0000f7c3, 0x0000f7c7, 0x0000f7cb, 416 0x0000f7d3, 0x0000f7d7, 0x0000f7db, 0x0000f7db, 0x0000f7db, 417 0x0000f7db, 0x0000f7db, 0x0000f7db, 0x0000f7db, 0x0000f7db, 418 0x0000f7db, 0x0000f7db, 0x0000f7db, 0x0000f7db, 0x0000f7db, 419 0x0000f7db, 0x0000f7db, 0x0000f7db, 0x0000f7db, 0x0000f7db, 420 0x0000f7db, 0x0000f7db, 0x0000f7db, 0x0000f7db, 0x0000f7db, 421 0x0000f7db, 0x0000f7db, 0x0000f7db, 0x00001066, 0x00001066 422 }; 423 424 static const uint32_t ar9280_2_0_rx_gain_vals_2g[] = { 425 0x00008000, 0x00008000, 0x00008000, 0x00008000, 0x00008000, 426 0x00008000, 0x00008004, 0x00008008, 0x0000800c, 0x00008080, 427 0x00008084, 0x00008088, 0x0000808c, 0x00008100, 0x00008104, 428 0x00008108, 0x0000810c, 0x00008110, 0x00008114, 0x00008180, 429 0x00008184, 0x00008188, 0x0000818c, 0x00008190, 0x00008194, 430 0x000081a0, 0x0000820c, 0x000081a8, 0x00008284, 0x00008288, 431 0x00008224, 0x00008290, 0x00008300, 0x00008304, 0x00008308, 432 0x0000830c, 0x00008380, 0x00008384, 0x00008700, 0x00008704, 433 0x00008708, 0x0000870c, 0x00008780, 0x00008784, 0x00008b00, 434 0x00008b04, 0x00008b08, 0x00008b0c, 0x00008b80, 0x00008b84, 435 0x00008b88, 0x00008b8c, 0x00008b90, 0x00008f80, 0x00008f84, 436 0x00008f88, 0x00008f8c, 0x00008f90, 0x0000930c, 0x00009310, 437 0x00009384, 0x00009388, 0x00009324, 0x00009704, 0x000096a4, 438 0x000096a8, 0x00009710, 0x00009714, 0x00009720, 0x00009724, 439 0x00009728, 0x0000972c, 0x000097a0, 0x000097a4, 0x000097a8, 440 0x000097b0, 0x000097b4, 0x000097b8, 0x000097a5, 0x000097a9, 441 0x000097ad, 0x000097b1, 0x000097b5, 0x000097b9, 0x000097c5, 442 0x000097c9, 0x000097d1, 0x000097d5, 0x000097d9, 0x000097c6, 443 0x000097ca, 0x000097ce, 0x000097d2, 0x000097d6, 0x000097c3, 444 0x000097c7, 0x000097cb, 0x000097cf, 0x000097d7, 0x000097db, 445 0x000097db, 0x000097db, 0x000097db, 0x000097db, 0x000097db, 446 0x000097db, 0x000097db, 0x000097db, 0x000097db, 0x000097db, 447 0x000097db, 0x000097db, 0x000097db, 0x000097db, 0x000097db, 448 0x000097db, 0x000097db, 0x000097db, 0x000097db, 0x000097db, 449 0x000097db, 0x000097db, 0x000097db, 0x000097db, 0x000097db, 450 0x000097db, 0x000097db, 0x000097db, 0x00001063, 0x00001063 451 }; 452 453 static const struct athn_gain ar9280_2_0_rx_gain = { 454 __arraycount(ar9280_2_0_rx_gain_regs), 455 ar9280_2_0_rx_gain_regs, 456 ar9280_2_0_rx_gain_vals_5g, 457 ar9280_2_0_rx_gain_vals_2g 458 }; 459 460 static const uint32_t ar9280_2_0_rx_gain_13db_backoff_vals_5g[] = { 461 0x00008184, 0x00008188, 0x0000818c, 0x00008190, 0x00008194, 462 0x00008200, 0x00008204, 0x00008208, 0x0000820c, 0x00008210, 463 0x00008214, 0x00008280, 0x00008284, 0x00008288, 0x0000828c, 464 0x00008290, 0x00008300, 0x00008304, 0x00008308, 0x0000830c, 465 0x00008310, 0x00008314, 0x00008380, 0x00008384, 0x00008388, 466 0x0000838c, 0x00008390, 0x00008394, 0x0000a380, 0x0000a384, 467 0x0000a388, 0x0000a38c, 0x0000a390, 0x0000a394, 0x0000a780, 468 0x0000a784, 0x0000a788, 0x0000a78c, 0x0000a790, 0x0000a794, 469 0x0000ab84, 0x0000ab88, 0x0000ab8c, 0x0000ab90, 0x0000ab94, 470 0x0000af80, 0x0000af84, 0x0000af88, 0x0000af8c, 0x0000af90, 471 0x0000af94, 0x0000b380, 0x0000b384, 0x0000b388, 0x0000b38c, 472 0x0000b390, 0x0000b394, 0x0000b398, 0x0000b780, 0x0000b784, 473 0x0000b788, 0x0000b78c, 0x0000b790, 0x0000b794, 0x0000b798, 474 0x0000d784, 0x0000d788, 0x0000d78c, 0x0000d790, 0x0000f780, 475 0x0000f784, 0x0000f788, 0x0000f78c, 0x0000f790, 0x0000f794, 476 0x0000f7a4, 0x0000f7a8, 0x0000f7ac, 0x0000f7b0, 0x0000f7b4, 477 0x0000f7a1, 0x0000f7a5, 0x0000f7a9, 0x0000f7ad, 0x0000f7b1, 478 0x0000f7b5, 0x0000f7c5, 0x0000f7c9, 0x0000f7cd, 0x0000f7d1, 479 0x0000f7d5, 0x0000f7c2, 0x0000f7c6, 0x0000f7ca, 0x0000f7ce, 480 0x0000f7d2, 0x0000f7d6, 0x0000f7c3, 0x0000f7c7, 0x0000f7cb, 481 0x0000f7d3, 0x0000f7d7, 0x0000f7db, 0x0000f7db, 0x0000f7db, 482 0x0000f7db, 0x0000f7db, 0x0000f7db, 0x0000f7db, 0x0000f7db, 483 0x0000f7db, 0x0000f7db, 0x0000f7db, 0x0000f7db, 0x0000f7db, 484 0x0000f7db, 0x0000f7db, 0x0000f7db, 0x0000f7db, 0x0000f7db, 485 0x0000f7db, 0x0000f7db, 0x0000f7db, 0x0000f7db, 0x0000f7db, 486 0x0000f7db, 0x0000f7db, 0x0000f7db, 0x00001066, 0x00001066 487 }; 488 489 static const uint32_t ar9280_2_0_rx_gain_13db_backoff_vals_2g[] = { 490 0x00000290, 0x00000300, 0x00000304, 0x00000308, 0x0000030c, 491 0x00008000, 0x00008004, 0x00008008, 0x0000800c, 0x00008080, 492 0x00008084, 0x00008088, 0x0000808c, 0x00008100, 0x00008104, 493 0x00008108, 0x0000810c, 0x00008110, 0x00008114, 0x00008180, 494 0x00008184, 0x00008188, 0x0000818c, 0x00008190, 0x00008194, 495 0x000081a0, 0x0000820c, 0x000081a8, 0x00008284, 0x00008288, 496 0x00008224, 0x00008290, 0x00008300, 0x00008304, 0x00008308, 497 0x0000830c, 0x00008380, 0x00008384, 0x00008700, 0x00008704, 498 0x00008708, 0x0000870c, 0x00008780, 0x00008784, 0x00008b00, 499 0x00008b04, 0x00008b08, 0x00008b0c, 0x00008b80, 0x00008b84, 500 0x00008b88, 0x00008b8c, 0x00008b90, 0x00008f80, 0x00008f84, 501 0x00008f88, 0x00008f8c, 0x00008f90, 0x00009310, 0x00009314, 502 0x00009320, 0x00009324, 0x00009328, 0x0000932c, 0x00009330, 503 0x00009334, 0x00009321, 0x00009325, 0x00009329, 0x0000932d, 504 0x00009331, 0x00009335, 0x00009322, 0x00009326, 0x0000932a, 505 0x0000932e, 0x00009332, 0x00009336, 0x00009323, 0x00009327, 506 0x0000932b, 0x0000932f, 0x00009333, 0x00009337, 0x00009343, 507 0x00009347, 0x0000934b, 0x0000934f, 0x00009353, 0x00009357, 508 0x0000935b, 0x0000935b, 0x0000935b, 0x0000935b, 0x0000935b, 509 0x0000935b, 0x0000935b, 0x0000935b, 0x0000935b, 0x0000935b, 510 0x0000935b, 0x0000935b, 0x0000935b, 0x0000935b, 0x0000935b, 511 0x0000935b, 0x0000935b, 0x0000935b, 0x0000935b, 0x0000935b, 512 0x0000935b, 0x0000935b, 0x0000935b, 0x0000935b, 0x0000935b, 513 0x0000935b, 0x0000935b, 0x0000935b, 0x0000935b, 0x0000935b, 514 0x0000935b, 0x0000935b, 0x0000935b, 0x0000935b, 0x0000935b, 515 0x0000935b, 0x0000935b, 0x0000935b, 0x0000105a, 0x0000105a 516 }; 517 518 static const struct athn_gain ar9280_2_0_rx_gain_13db_backoff = { 519 __arraycount(ar9280_2_0_rx_gain_regs), 520 ar9280_2_0_rx_gain_regs, 521 ar9280_2_0_rx_gain_13db_backoff_vals_5g, 522 ar9280_2_0_rx_gain_13db_backoff_vals_2g 523 }; 524 525 static const uint32_t ar9280_2_0_rx_gain_23db_backoff_vals_5g[] = { 526 0x00008184, 0x00008188, 0x0000818c, 0x00008190, 0x00008194, 527 0x00008200, 0x00008204, 0x00008208, 0x0000820c, 0x00008210, 528 0x00008214, 0x00008280, 0x00008284, 0x00008288, 0x0000828c, 529 0x00008290, 0x00008300, 0x00008304, 0x00008308, 0x0000830c, 530 0x00008310, 0x00008314, 0x00008380, 0x00008384, 0x00008388, 531 0x0000838c, 0x00008390, 0x00008394, 0x0000a380, 0x0000a384, 532 0x0000a388, 0x0000a38c, 0x0000a390, 0x0000a394, 0x0000a780, 533 0x0000a784, 0x0000a788, 0x0000a78c, 0x0000a790, 0x0000a794, 534 0x0000ab84, 0x0000ab88, 0x0000ab8c, 0x0000ab90, 0x0000ab94, 535 0x0000af80, 0x0000af84, 0x0000af88, 0x0000af8c, 0x0000af90, 536 0x0000af94, 0x0000b380, 0x0000b384, 0x0000b388, 0x0000b38c, 537 0x0000b390, 0x0000b394, 0x0000b398, 0x0000b780, 0x0000b784, 538 0x0000b788, 0x0000b78c, 0x0000b790, 0x0000b794, 0x0000b798, 539 0x0000d784, 0x0000d788, 0x0000d78c, 0x0000d790, 0x0000f780, 540 0x0000f784, 0x0000f788, 0x0000f78c, 0x0000f790, 0x0000f794, 541 0x0000f7a4, 0x0000f7a8, 0x0000f7ac, 0x0000f7b0, 0x0000f7b4, 542 0x0000f7a1, 0x0000f7a5, 0x0000f7a9, 0x0000f7ad, 0x0000f7b1, 543 0x0000f7b5, 0x0000f7c5, 0x0000f7c9, 0x0000f7cd, 0x0000f7d1, 544 0x0000f7d5, 0x0000f7c2, 0x0000f7c6, 0x0000f7ca, 0x0000f7ce, 545 0x0000f7d2, 0x0000f7d6, 0x0000f7c3, 0x0000f7c7, 0x0000f7cb, 546 0x0000f7d3, 0x0000f7d7, 0x0000f7db, 0x0000f7db, 0x0000f7db, 547 0x0000f7db, 0x0000f7db, 0x0000f7db, 0x0000f7db, 0x0000f7db, 548 0x0000f7db, 0x0000f7db, 0x0000f7db, 0x0000f7db, 0x0000f7db, 549 0x0000f7db, 0x0000f7db, 0x0000f7db, 0x0000f7db, 0x0000f7db, 550 0x0000f7db, 0x0000f7db, 0x0000f7db, 0x0000f7db, 0x0000f7db, 551 0x0000f7db, 0x0000f7db, 0x0000f7db, 0x00001066, 0x00001066 552 }; 553 554 static const uint32_t ar9280_2_0_rx_gain_23db_backoff_vals_2g[] = { 555 0x00000290, 0x00000300, 0x00000304, 0x00000308, 0x0000030c, 556 0x00008000, 0x00008004, 0x00008008, 0x0000800c, 0x00008080, 557 0x00008084, 0x00008088, 0x0000808c, 0x00008100, 0x00008104, 558 0x00008108, 0x0000810c, 0x00008110, 0x00008114, 0x00008180, 559 0x00008184, 0x00008188, 0x0000818c, 0x00008190, 0x00008194, 560 0x000081a0, 0x0000820c, 0x000081a8, 0x00008284, 0x00008288, 561 0x00008224, 0x00008290, 0x00008300, 0x00008304, 0x00008308, 562 0x0000830c, 0x00008380, 0x00008384, 0x00008700, 0x00008704, 563 0x00008708, 0x0000870c, 0x00008780, 0x00008784, 0x00008b00, 564 0x00008b04, 0x00008b08, 0x00008b0c, 0x00008b10, 0x00008b80, 565 0x00008b84, 0x00008b88, 0x00008b8c, 0x00008b90, 0x00008b94, 566 0x00008b98, 0x00008ba4, 0x00008ba8, 0x00008bac, 0x00008bb0, 567 0x00008bb4, 0x00008ba1, 0x00008ba5, 0x00008ba9, 0x00008bad, 568 0x00008bb1, 0x00008bb5, 0x00008ba2, 0x00008ba6, 0x00008baa, 569 0x00008bae, 0x00008bb2, 0x00008bb6, 0x00008ba3, 0x00008ba7, 570 0x00008bab, 0x00008baf, 0x00008bb3, 0x00008bb7, 0x00008bc3, 571 0x00008bc7, 0x00008bcb, 0x00008bcf, 0x00008bd3, 0x00008bd7, 572 0x00008bdb, 0x00008bdb, 0x00008bdb, 0x00008bdb, 0x00008bdb, 573 0x00008bdb, 0x00008bdb, 0x00008bdb, 0x00008bdb, 0x00008bdb, 574 0x00008bdb, 0x00008bdb, 0x00008bdb, 0x00008bdb, 0x00008bdb, 575 0x00008bdb, 0x00008bdb, 0x00008bdb, 0x00008bdb, 0x00008bdb, 576 0x00008bdb, 0x00008bdb, 0x00008bdb, 0x00008bdb, 0x00008bdb, 577 0x00008bdb, 0x00008bdb, 0x00008bdb, 0x00008bdb, 0x00008bdb, 578 0x00008bdb, 0x00008bdb, 0x00008bdb, 0x00008bdb, 0x00008bdb, 579 0x00008bdb, 0x00008bdb, 0x00008bdb, 0x00008bdb, 0x00008bdb, 580 0x00008bdb, 0x00008bdb, 0x00008bdb, 0x00001055, 0x00001055 581 }; 582 583 static const struct athn_gain ar9280_2_0_rx_gain_23db_backoff = { 584 __arraycount(ar9280_2_0_rx_gain_regs), 585 ar9280_2_0_rx_gain_regs, 586 ar9280_2_0_rx_gain_23db_backoff_vals_5g, 587 ar9280_2_0_rx_gain_23db_backoff_vals_2g 588 }; 589 590 /* 591 * Serializer/Deserializer programming. 592 */ 593 594 static const uint32_t ar9280_2_0_serdes_regs[] = { 595 AR_PCIE_SERDES, 596 AR_PCIE_SERDES, 597 AR_PCIE_SERDES, 598 AR_PCIE_SERDES, 599 AR_PCIE_SERDES, 600 AR_PCIE_SERDES, 601 AR_PCIE_SERDES, 602 AR_PCIE_SERDES, 603 AR_PCIE_SERDES, 604 AR_PCIE_SERDES2, 605 }; 606 607 static const uint32_t ar9280_2_0_serdes_vals[] = { 608 0x9248fd00, 609 0x24924924, 610 0xa8000019, 611 0x13160820, 612 0xe5980560, 613 #ifdef ATHN_PCIE_CLKREQ 614 0xc01dcffc, 615 #else 616 0xc01dcffd, 617 #endif 618 0x1aaabe41, 619 0xbe105554, 620 0x00043007, 621 0x00000000 622 }; 623 624 static const struct athn_serdes ar9280_2_0_serdes = { 625 __arraycount(ar9280_2_0_serdes_vals), 626 ar9280_2_0_serdes_regs, 627 ar9280_2_0_serdes_vals 628 }; 629 630 #endif /* _ARN9280REG_H_ */ 631