| Nick Kossifidis | 33a3182 | 2009-02-09 06:00:34 +0200 | [diff] [blame] | 1 | /* | 
|  | 2 | * RF Gain optimization | 
|  | 3 | * | 
|  | 4 | * Copyright (c) 2004-2009 Reyk Floeter <reyk@openbsd.org> | 
|  | 5 | * Copyright (c) 2006-2009 Nick Kossifidis <mickflemm@gmail.com> | 
|  | 6 | * | 
|  | 7 | * Permission to use, copy, modify, and distribute this software for any | 
|  | 8 | * purpose with or without fee is hereby granted, provided that the above | 
|  | 9 | * copyright notice and this permission notice appear in all copies. | 
|  | 10 | * | 
|  | 11 | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | 
|  | 12 | * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | 
|  | 13 | * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | 
|  | 14 | * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | 
|  | 15 | * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | 
|  | 16 | * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | 
|  | 17 | * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | 
|  | 18 | * | 
|  | 19 | */ | 
|  | 20 |  | 
|  | 21 | /* | 
|  | 22 | * Mode-specific RF Gain table (64bytes) for RF5111/5112 | 
|  | 23 | * (RF5110 only comes with AR5210 and only supports a/turbo a mode so initial | 
|  | 24 | * RF Gain values are included in AR5K_AR5210_INI) | 
|  | 25 | */ | 
|  | 26 | struct ath5k_ini_rfgain { | 
|  | 27 | u16	rfg_register;	/* RF Gain register address */ | 
|  | 28 | u32	rfg_value[2];	/* [freq (see below)] */ | 
|  | 29 | }; | 
|  | 30 |  | 
|  | 31 | /* Initial RF Gain settings for RF5111 */ | 
|  | 32 | static const struct ath5k_ini_rfgain rfgain_5111[] = { | 
|  | 33 | /*			      5Ghz	2Ghz	*/ | 
|  | 34 | { AR5K_RF_GAIN(0),	{ 0x000001a9, 0x00000000 } }, | 
|  | 35 | { AR5K_RF_GAIN(1),	{ 0x000001e9, 0x00000040 } }, | 
|  | 36 | { AR5K_RF_GAIN(2),	{ 0x00000029, 0x00000080 } }, | 
|  | 37 | { AR5K_RF_GAIN(3),	{ 0x00000069, 0x00000150 } }, | 
|  | 38 | { AR5K_RF_GAIN(4),	{ 0x00000199, 0x00000190 } }, | 
|  | 39 | { AR5K_RF_GAIN(5),	{ 0x000001d9, 0x000001d0 } }, | 
|  | 40 | { AR5K_RF_GAIN(6),	{ 0x00000019, 0x00000010 } }, | 
|  | 41 | { AR5K_RF_GAIN(7),	{ 0x00000059, 0x00000044 } }, | 
|  | 42 | { AR5K_RF_GAIN(8),	{ 0x00000099, 0x00000084 } }, | 
|  | 43 | { AR5K_RF_GAIN(9),	{ 0x000001a5, 0x00000148 } }, | 
|  | 44 | { AR5K_RF_GAIN(10),	{ 0x000001e5, 0x00000188 } }, | 
|  | 45 | { AR5K_RF_GAIN(11),	{ 0x00000025, 0x000001c8 } }, | 
|  | 46 | { AR5K_RF_GAIN(12),	{ 0x000001c8, 0x00000014 } }, | 
|  | 47 | { AR5K_RF_GAIN(13),	{ 0x00000008, 0x00000042 } }, | 
|  | 48 | { AR5K_RF_GAIN(14),	{ 0x00000048, 0x00000082 } }, | 
|  | 49 | { AR5K_RF_GAIN(15),	{ 0x00000088, 0x00000178 } }, | 
|  | 50 | { AR5K_RF_GAIN(16),	{ 0x00000198, 0x000001b8 } }, | 
|  | 51 | { AR5K_RF_GAIN(17),	{ 0x000001d8, 0x000001f8 } }, | 
|  | 52 | { AR5K_RF_GAIN(18),	{ 0x00000018, 0x00000012 } }, | 
|  | 53 | { AR5K_RF_GAIN(19),	{ 0x00000058, 0x00000052 } }, | 
|  | 54 | { AR5K_RF_GAIN(20),	{ 0x00000098, 0x00000092 } }, | 
|  | 55 | { AR5K_RF_GAIN(21),	{ 0x000001a4, 0x0000017c } }, | 
|  | 56 | { AR5K_RF_GAIN(22),	{ 0x000001e4, 0x000001bc } }, | 
|  | 57 | { AR5K_RF_GAIN(23),	{ 0x00000024, 0x000001fc } }, | 
|  | 58 | { AR5K_RF_GAIN(24),	{ 0x00000064, 0x0000000a } }, | 
|  | 59 | { AR5K_RF_GAIN(25),	{ 0x000000a4, 0x0000004a } }, | 
|  | 60 | { AR5K_RF_GAIN(26),	{ 0x000000e4, 0x0000008a } }, | 
|  | 61 | { AR5K_RF_GAIN(27),	{ 0x0000010a, 0x0000015a } }, | 
|  | 62 | { AR5K_RF_GAIN(28),	{ 0x0000014a, 0x0000019a } }, | 
|  | 63 | { AR5K_RF_GAIN(29),	{ 0x0000018a, 0x000001da } }, | 
|  | 64 | { AR5K_RF_GAIN(30),	{ 0x000001ca, 0x0000000e } }, | 
|  | 65 | { AR5K_RF_GAIN(31),	{ 0x0000000a, 0x0000004e } }, | 
|  | 66 | { AR5K_RF_GAIN(32),	{ 0x0000004a, 0x0000008e } }, | 
|  | 67 | { AR5K_RF_GAIN(33),	{ 0x0000008a, 0x0000015e } }, | 
|  | 68 | { AR5K_RF_GAIN(34),	{ 0x000001ba, 0x0000019e } }, | 
|  | 69 | { AR5K_RF_GAIN(35),	{ 0x000001fa, 0x000001de } }, | 
|  | 70 | { AR5K_RF_GAIN(36),	{ 0x0000003a, 0x00000009 } }, | 
|  | 71 | { AR5K_RF_GAIN(37),	{ 0x0000007a, 0x00000049 } }, | 
|  | 72 | { AR5K_RF_GAIN(38),	{ 0x00000186, 0x00000089 } }, | 
|  | 73 | { AR5K_RF_GAIN(39),	{ 0x000001c6, 0x00000179 } }, | 
|  | 74 | { AR5K_RF_GAIN(40),	{ 0x00000006, 0x000001b9 } }, | 
|  | 75 | { AR5K_RF_GAIN(41),	{ 0x00000046, 0x000001f9 } }, | 
|  | 76 | { AR5K_RF_GAIN(42),	{ 0x00000086, 0x00000039 } }, | 
|  | 77 | { AR5K_RF_GAIN(43),	{ 0x000000c6, 0x00000079 } }, | 
|  | 78 | { AR5K_RF_GAIN(44),	{ 0x000000c6, 0x000000b9 } }, | 
|  | 79 | { AR5K_RF_GAIN(45),	{ 0x000000c6, 0x000001bd } }, | 
|  | 80 | { AR5K_RF_GAIN(46),	{ 0x000000c6, 0x000001fd } }, | 
|  | 81 | { AR5K_RF_GAIN(47),	{ 0x000000c6, 0x0000003d } }, | 
|  | 82 | { AR5K_RF_GAIN(48),	{ 0x000000c6, 0x0000007d } }, | 
|  | 83 | { AR5K_RF_GAIN(49),	{ 0x000000c6, 0x000000bd } }, | 
|  | 84 | { AR5K_RF_GAIN(50),	{ 0x000000c6, 0x000000fd } }, | 
|  | 85 | { AR5K_RF_GAIN(51),	{ 0x000000c6, 0x000000fd } }, | 
|  | 86 | { AR5K_RF_GAIN(52),	{ 0x000000c6, 0x000000fd } }, | 
|  | 87 | { AR5K_RF_GAIN(53),	{ 0x000000c6, 0x000000fd } }, | 
|  | 88 | { AR5K_RF_GAIN(54),	{ 0x000000c6, 0x000000fd } }, | 
|  | 89 | { AR5K_RF_GAIN(55),	{ 0x000000c6, 0x000000fd } }, | 
|  | 90 | { AR5K_RF_GAIN(56),	{ 0x000000c6, 0x000000fd } }, | 
|  | 91 | { AR5K_RF_GAIN(57),	{ 0x000000c6, 0x000000fd } }, | 
|  | 92 | { AR5K_RF_GAIN(58),	{ 0x000000c6, 0x000000fd } }, | 
|  | 93 | { AR5K_RF_GAIN(59),	{ 0x000000c6, 0x000000fd } }, | 
|  | 94 | { AR5K_RF_GAIN(60),	{ 0x000000c6, 0x000000fd } }, | 
|  | 95 | { AR5K_RF_GAIN(61),	{ 0x000000c6, 0x000000fd } }, | 
|  | 96 | { AR5K_RF_GAIN(62),	{ 0x000000c6, 0x000000fd } }, | 
|  | 97 | { AR5K_RF_GAIN(63),	{ 0x000000c6, 0x000000fd } }, | 
|  | 98 | }; | 
|  | 99 |  | 
|  | 100 | /* Initial RF Gain settings for RF5112 */ | 
|  | 101 | static const struct ath5k_ini_rfgain rfgain_5112[] = { | 
|  | 102 | /*			      5Ghz	2Ghz	*/ | 
|  | 103 | { AR5K_RF_GAIN(0),	{ 0x00000007, 0x00000007 } }, | 
|  | 104 | { AR5K_RF_GAIN(1),	{ 0x00000047, 0x00000047 } }, | 
|  | 105 | { AR5K_RF_GAIN(2),	{ 0x00000087, 0x00000087 } }, | 
|  | 106 | { AR5K_RF_GAIN(3),	{ 0x000001a0, 0x000001a0 } }, | 
|  | 107 | { AR5K_RF_GAIN(4),	{ 0x000001e0, 0x000001e0 } }, | 
|  | 108 | { AR5K_RF_GAIN(5),	{ 0x00000020, 0x00000020 } }, | 
|  | 109 | { AR5K_RF_GAIN(6),	{ 0x00000060, 0x00000060 } }, | 
|  | 110 | { AR5K_RF_GAIN(7),	{ 0x000001a1, 0x000001a1 } }, | 
|  | 111 | { AR5K_RF_GAIN(8),	{ 0x000001e1, 0x000001e1 } }, | 
|  | 112 | { AR5K_RF_GAIN(9),	{ 0x00000021, 0x00000021 } }, | 
|  | 113 | { AR5K_RF_GAIN(10),	{ 0x00000061, 0x00000061 } }, | 
|  | 114 | { AR5K_RF_GAIN(11),	{ 0x00000162, 0x00000162 } }, | 
|  | 115 | { AR5K_RF_GAIN(12),	{ 0x000001a2, 0x000001a2 } }, | 
|  | 116 | { AR5K_RF_GAIN(13),	{ 0x000001e2, 0x000001e2 } }, | 
|  | 117 | { AR5K_RF_GAIN(14),	{ 0x00000022, 0x00000022 } }, | 
|  | 118 | { AR5K_RF_GAIN(15),	{ 0x00000062, 0x00000062 } }, | 
|  | 119 | { AR5K_RF_GAIN(16),	{ 0x00000163, 0x00000163 } }, | 
|  | 120 | { AR5K_RF_GAIN(17),	{ 0x000001a3, 0x000001a3 } }, | 
|  | 121 | { AR5K_RF_GAIN(18),	{ 0x000001e3, 0x000001e3 } }, | 
|  | 122 | { AR5K_RF_GAIN(19),	{ 0x00000023, 0x00000023 } }, | 
|  | 123 | { AR5K_RF_GAIN(20),	{ 0x00000063, 0x00000063 } }, | 
|  | 124 | { AR5K_RF_GAIN(21),	{ 0x00000184, 0x00000184 } }, | 
|  | 125 | { AR5K_RF_GAIN(22),	{ 0x000001c4, 0x000001c4 } }, | 
|  | 126 | { AR5K_RF_GAIN(23),	{ 0x00000004, 0x00000004 } }, | 
|  | 127 | { AR5K_RF_GAIN(24),	{ 0x000001ea, 0x0000000b } }, | 
|  | 128 | { AR5K_RF_GAIN(25),	{ 0x0000002a, 0x0000004b } }, | 
|  | 129 | { AR5K_RF_GAIN(26),	{ 0x0000006a, 0x0000008b } }, | 
|  | 130 | { AR5K_RF_GAIN(27),	{ 0x000000aa, 0x000001ac } }, | 
|  | 131 | { AR5K_RF_GAIN(28),	{ 0x000001ab, 0x000001ec } }, | 
|  | 132 | { AR5K_RF_GAIN(29),	{ 0x000001eb, 0x0000002c } }, | 
|  | 133 | { AR5K_RF_GAIN(30),	{ 0x0000002b, 0x00000012 } }, | 
|  | 134 | { AR5K_RF_GAIN(31),	{ 0x0000006b, 0x00000052 } }, | 
|  | 135 | { AR5K_RF_GAIN(32),	{ 0x000000ab, 0x00000092 } }, | 
|  | 136 | { AR5K_RF_GAIN(33),	{ 0x000001ac, 0x00000193 } }, | 
|  | 137 | { AR5K_RF_GAIN(34),	{ 0x000001ec, 0x000001d3 } }, | 
|  | 138 | { AR5K_RF_GAIN(35),	{ 0x0000002c, 0x00000013 } }, | 
|  | 139 | { AR5K_RF_GAIN(36),	{ 0x0000003a, 0x00000053 } }, | 
|  | 140 | { AR5K_RF_GAIN(37),	{ 0x0000007a, 0x00000093 } }, | 
|  | 141 | { AR5K_RF_GAIN(38),	{ 0x000000ba, 0x00000194 } }, | 
|  | 142 | { AR5K_RF_GAIN(39),	{ 0x000001bb, 0x000001d4 } }, | 
|  | 143 | { AR5K_RF_GAIN(40),	{ 0x000001fb, 0x00000014 } }, | 
|  | 144 | { AR5K_RF_GAIN(41),	{ 0x0000003b, 0x0000003a } }, | 
|  | 145 | { AR5K_RF_GAIN(42),	{ 0x0000007b, 0x0000007a } }, | 
|  | 146 | { AR5K_RF_GAIN(43),	{ 0x000000bb, 0x000000ba } }, | 
|  | 147 | { AR5K_RF_GAIN(44),	{ 0x000001bc, 0x000001bb } }, | 
|  | 148 | { AR5K_RF_GAIN(45),	{ 0x000001fc, 0x000001fb } }, | 
|  | 149 | { AR5K_RF_GAIN(46),	{ 0x0000003c, 0x0000003b } }, | 
|  | 150 | { AR5K_RF_GAIN(47),	{ 0x0000007c, 0x0000007b } }, | 
|  | 151 | { AR5K_RF_GAIN(48),	{ 0x000000bc, 0x000000bb } }, | 
|  | 152 | { AR5K_RF_GAIN(49),	{ 0x000000fc, 0x000001bc } }, | 
|  | 153 | { AR5K_RF_GAIN(50),	{ 0x000000fc, 0x000001fc } }, | 
|  | 154 | { AR5K_RF_GAIN(51),	{ 0x000000fc, 0x0000003c } }, | 
|  | 155 | { AR5K_RF_GAIN(52),	{ 0x000000fc, 0x0000007c } }, | 
|  | 156 | { AR5K_RF_GAIN(53),	{ 0x000000fc, 0x000000bc } }, | 
|  | 157 | { AR5K_RF_GAIN(54),	{ 0x000000fc, 0x000000fc } }, | 
|  | 158 | { AR5K_RF_GAIN(55),	{ 0x000000fc, 0x000000fc } }, | 
|  | 159 | { AR5K_RF_GAIN(56),	{ 0x000000fc, 0x000000fc } }, | 
|  | 160 | { AR5K_RF_GAIN(57),	{ 0x000000fc, 0x000000fc } }, | 
|  | 161 | { AR5K_RF_GAIN(58),	{ 0x000000fc, 0x000000fc } }, | 
|  | 162 | { AR5K_RF_GAIN(59),	{ 0x000000fc, 0x000000fc } }, | 
|  | 163 | { AR5K_RF_GAIN(60),	{ 0x000000fc, 0x000000fc } }, | 
|  | 164 | { AR5K_RF_GAIN(61),	{ 0x000000fc, 0x000000fc } }, | 
|  | 165 | { AR5K_RF_GAIN(62),	{ 0x000000fc, 0x000000fc } }, | 
|  | 166 | { AR5K_RF_GAIN(63),	{ 0x000000fc, 0x000000fc } }, | 
|  | 167 | }; | 
|  | 168 |  | 
|  | 169 | /* Initial RF Gain settings for RF2413 */ | 
|  | 170 | static const struct ath5k_ini_rfgain rfgain_2413[] = { | 
|  | 171 | { AR5K_RF_GAIN(0),	{ 0x00000000, 0x00000000 } }, | 
|  | 172 | { AR5K_RF_GAIN(1),	{ 0x00000000, 0x00000040 } }, | 
|  | 173 | { AR5K_RF_GAIN(2),	{ 0x00000000, 0x00000080 } }, | 
|  | 174 | { AR5K_RF_GAIN(3),	{ 0x00000000, 0x00000181 } }, | 
|  | 175 | { AR5K_RF_GAIN(4),	{ 0x00000000, 0x000001c1 } }, | 
|  | 176 | { AR5K_RF_GAIN(5),	{ 0x00000000, 0x00000001 } }, | 
|  | 177 | { AR5K_RF_GAIN(6),	{ 0x00000000, 0x00000041 } }, | 
|  | 178 | { AR5K_RF_GAIN(7),	{ 0x00000000, 0x00000081 } }, | 
|  | 179 | { AR5K_RF_GAIN(8),	{ 0x00000000, 0x00000168 } }, | 
|  | 180 | { AR5K_RF_GAIN(9),	{ 0x00000000, 0x000001a8 } }, | 
|  | 181 | { AR5K_RF_GAIN(10),	{ 0x00000000, 0x000001e8 } }, | 
|  | 182 | { AR5K_RF_GAIN(11),	{ 0x00000000, 0x00000028 } }, | 
|  | 183 | { AR5K_RF_GAIN(12),	{ 0x00000000, 0x00000068 } }, | 
|  | 184 | { AR5K_RF_GAIN(13),	{ 0x00000000, 0x00000189 } }, | 
|  | 185 | { AR5K_RF_GAIN(14),	{ 0x00000000, 0x000001c9 } }, | 
|  | 186 | { AR5K_RF_GAIN(15),	{ 0x00000000, 0x00000009 } }, | 
|  | 187 | { AR5K_RF_GAIN(16),	{ 0x00000000, 0x00000049 } }, | 
|  | 188 | { AR5K_RF_GAIN(17),	{ 0x00000000, 0x00000089 } }, | 
|  | 189 | { AR5K_RF_GAIN(18),	{ 0x00000000, 0x00000190 } }, | 
|  | 190 | { AR5K_RF_GAIN(19),	{ 0x00000000, 0x000001d0 } }, | 
|  | 191 | { AR5K_RF_GAIN(20),	{ 0x00000000, 0x00000010 } }, | 
|  | 192 | { AR5K_RF_GAIN(21),	{ 0x00000000, 0x00000050 } }, | 
|  | 193 | { AR5K_RF_GAIN(22),	{ 0x00000000, 0x00000090 } }, | 
|  | 194 | { AR5K_RF_GAIN(23),	{ 0x00000000, 0x00000191 } }, | 
|  | 195 | { AR5K_RF_GAIN(24),	{ 0x00000000, 0x000001d1 } }, | 
|  | 196 | { AR5K_RF_GAIN(25),	{ 0x00000000, 0x00000011 } }, | 
|  | 197 | { AR5K_RF_GAIN(26),	{ 0x00000000, 0x00000051 } }, | 
|  | 198 | { AR5K_RF_GAIN(27),	{ 0x00000000, 0x00000091 } }, | 
|  | 199 | { AR5K_RF_GAIN(28),	{ 0x00000000, 0x00000178 } }, | 
|  | 200 | { AR5K_RF_GAIN(29),	{ 0x00000000, 0x000001b8 } }, | 
|  | 201 | { AR5K_RF_GAIN(30),	{ 0x00000000, 0x000001f8 } }, | 
|  | 202 | { AR5K_RF_GAIN(31),	{ 0x00000000, 0x00000038 } }, | 
|  | 203 | { AR5K_RF_GAIN(32),	{ 0x00000000, 0x00000078 } }, | 
|  | 204 | { AR5K_RF_GAIN(33),	{ 0x00000000, 0x00000199 } }, | 
|  | 205 | { AR5K_RF_GAIN(34),	{ 0x00000000, 0x000001d9 } }, | 
|  | 206 | { AR5K_RF_GAIN(35),	{ 0x00000000, 0x00000019 } }, | 
|  | 207 | { AR5K_RF_GAIN(36),	{ 0x00000000, 0x00000059 } }, | 
|  | 208 | { AR5K_RF_GAIN(37),	{ 0x00000000, 0x00000099 } }, | 
|  | 209 | { AR5K_RF_GAIN(38),	{ 0x00000000, 0x000000d9 } }, | 
|  | 210 | { AR5K_RF_GAIN(39),	{ 0x00000000, 0x000000f9 } }, | 
|  | 211 | { AR5K_RF_GAIN(40),	{ 0x00000000, 0x000000f9 } }, | 
|  | 212 | { AR5K_RF_GAIN(41),	{ 0x00000000, 0x000000f9 } }, | 
|  | 213 | { AR5K_RF_GAIN(42),	{ 0x00000000, 0x000000f9 } }, | 
|  | 214 | { AR5K_RF_GAIN(43),	{ 0x00000000, 0x000000f9 } }, | 
|  | 215 | { AR5K_RF_GAIN(44),	{ 0x00000000, 0x000000f9 } }, | 
|  | 216 | { AR5K_RF_GAIN(45),	{ 0x00000000, 0x000000f9 } }, | 
|  | 217 | { AR5K_RF_GAIN(46),	{ 0x00000000, 0x000000f9 } }, | 
|  | 218 | { AR5K_RF_GAIN(47),	{ 0x00000000, 0x000000f9 } }, | 
|  | 219 | { AR5K_RF_GAIN(48),	{ 0x00000000, 0x000000f9 } }, | 
|  | 220 | { AR5K_RF_GAIN(49),	{ 0x00000000, 0x000000f9 } }, | 
|  | 221 | { AR5K_RF_GAIN(50),	{ 0x00000000, 0x000000f9 } }, | 
|  | 222 | { AR5K_RF_GAIN(51),	{ 0x00000000, 0x000000f9 } }, | 
|  | 223 | { AR5K_RF_GAIN(52),	{ 0x00000000, 0x000000f9 } }, | 
|  | 224 | { AR5K_RF_GAIN(53),	{ 0x00000000, 0x000000f9 } }, | 
|  | 225 | { AR5K_RF_GAIN(54),	{ 0x00000000, 0x000000f9 } }, | 
|  | 226 | { AR5K_RF_GAIN(55),	{ 0x00000000, 0x000000f9 } }, | 
|  | 227 | { AR5K_RF_GAIN(56),	{ 0x00000000, 0x000000f9 } }, | 
|  | 228 | { AR5K_RF_GAIN(57),	{ 0x00000000, 0x000000f9 } }, | 
|  | 229 | { AR5K_RF_GAIN(58),	{ 0x00000000, 0x000000f9 } }, | 
|  | 230 | { AR5K_RF_GAIN(59),	{ 0x00000000, 0x000000f9 } }, | 
|  | 231 | { AR5K_RF_GAIN(60),	{ 0x00000000, 0x000000f9 } }, | 
|  | 232 | { AR5K_RF_GAIN(61),	{ 0x00000000, 0x000000f9 } }, | 
|  | 233 | { AR5K_RF_GAIN(62),	{ 0x00000000, 0x000000f9 } }, | 
|  | 234 | { AR5K_RF_GAIN(63),	{ 0x00000000, 0x000000f9 } }, | 
|  | 235 | }; | 
|  | 236 |  | 
|  | 237 | /* Initial RF Gain settings for AR2316 */ | 
|  | 238 | static const struct ath5k_ini_rfgain rfgain_2316[] = { | 
|  | 239 | { AR5K_RF_GAIN(0),	{ 0x00000000, 0x00000000 } }, | 
|  | 240 | { AR5K_RF_GAIN(1),	{ 0x00000000, 0x00000040 } }, | 
|  | 241 | { AR5K_RF_GAIN(2),	{ 0x00000000, 0x00000080 } }, | 
|  | 242 | { AR5K_RF_GAIN(3),	{ 0x00000000, 0x000000c0 } }, | 
|  | 243 | { AR5K_RF_GAIN(4),	{ 0x00000000, 0x000000e0 } }, | 
|  | 244 | { AR5K_RF_GAIN(5),	{ 0x00000000, 0x000000e0 } }, | 
|  | 245 | { AR5K_RF_GAIN(6),	{ 0x00000000, 0x00000128 } }, | 
|  | 246 | { AR5K_RF_GAIN(7),	{ 0x00000000, 0x00000128 } }, | 
|  | 247 | { AR5K_RF_GAIN(8),	{ 0x00000000, 0x00000128 } }, | 
|  | 248 | { AR5K_RF_GAIN(9),	{ 0x00000000, 0x00000168 } }, | 
|  | 249 | { AR5K_RF_GAIN(10),	{ 0x00000000, 0x000001a8 } }, | 
|  | 250 | { AR5K_RF_GAIN(11),	{ 0x00000000, 0x000001e8 } }, | 
|  | 251 | { AR5K_RF_GAIN(12),	{ 0x00000000, 0x00000028 } }, | 
|  | 252 | { AR5K_RF_GAIN(13),	{ 0x00000000, 0x00000068 } }, | 
|  | 253 | { AR5K_RF_GAIN(14),	{ 0x00000000, 0x000000a8 } }, | 
|  | 254 | { AR5K_RF_GAIN(15),	{ 0x00000000, 0x000000e8 } }, | 
|  | 255 | { AR5K_RF_GAIN(16),	{ 0x00000000, 0x000000e8 } }, | 
|  | 256 | { AR5K_RF_GAIN(17),	{ 0x00000000, 0x00000130 } }, | 
|  | 257 | { AR5K_RF_GAIN(18),	{ 0x00000000, 0x00000130 } }, | 
|  | 258 | { AR5K_RF_GAIN(19),	{ 0x00000000, 0x00000170 } }, | 
|  | 259 | { AR5K_RF_GAIN(20),	{ 0x00000000, 0x000001b0 } }, | 
|  | 260 | { AR5K_RF_GAIN(21),	{ 0x00000000, 0x000001f0 } }, | 
|  | 261 | { AR5K_RF_GAIN(22),	{ 0x00000000, 0x00000030 } }, | 
|  | 262 | { AR5K_RF_GAIN(23),	{ 0x00000000, 0x00000070 } }, | 
|  | 263 | { AR5K_RF_GAIN(24),	{ 0x00000000, 0x000000b0 } }, | 
|  | 264 | { AR5K_RF_GAIN(25),	{ 0x00000000, 0x000000f0 } }, | 
|  | 265 | { AR5K_RF_GAIN(26),	{ 0x00000000, 0x000000f0 } }, | 
|  | 266 | { AR5K_RF_GAIN(27),	{ 0x00000000, 0x000000f0 } }, | 
|  | 267 | { AR5K_RF_GAIN(28),	{ 0x00000000, 0x000000f0 } }, | 
|  | 268 | { AR5K_RF_GAIN(29),	{ 0x00000000, 0x000000f0 } }, | 
|  | 269 | { AR5K_RF_GAIN(30),	{ 0x00000000, 0x000000f0 } }, | 
|  | 270 | { AR5K_RF_GAIN(31),	{ 0x00000000, 0x000000f0 } }, | 
|  | 271 | { AR5K_RF_GAIN(32),	{ 0x00000000, 0x000000f0 } }, | 
|  | 272 | { AR5K_RF_GAIN(33),	{ 0x00000000, 0x000000f0 } }, | 
|  | 273 | { AR5K_RF_GAIN(34),	{ 0x00000000, 0x000000f0 } }, | 
|  | 274 | { AR5K_RF_GAIN(35),	{ 0x00000000, 0x000000f0 } }, | 
|  | 275 | { AR5K_RF_GAIN(36),	{ 0x00000000, 0x000000f0 } }, | 
|  | 276 | { AR5K_RF_GAIN(37),	{ 0x00000000, 0x000000f0 } }, | 
|  | 277 | { AR5K_RF_GAIN(38),	{ 0x00000000, 0x000000f0 } }, | 
|  | 278 | { AR5K_RF_GAIN(39),	{ 0x00000000, 0x000000f0 } }, | 
|  | 279 | { AR5K_RF_GAIN(40),	{ 0x00000000, 0x000000f0 } }, | 
|  | 280 | { AR5K_RF_GAIN(41),	{ 0x00000000, 0x000000f0 } }, | 
|  | 281 | { AR5K_RF_GAIN(42),	{ 0x00000000, 0x000000f0 } }, | 
|  | 282 | { AR5K_RF_GAIN(43),	{ 0x00000000, 0x000000f0 } }, | 
|  | 283 | { AR5K_RF_GAIN(44),	{ 0x00000000, 0x000000f0 } }, | 
|  | 284 | { AR5K_RF_GAIN(45),	{ 0x00000000, 0x000000f0 } }, | 
|  | 285 | { AR5K_RF_GAIN(46),	{ 0x00000000, 0x000000f0 } }, | 
|  | 286 | { AR5K_RF_GAIN(47),	{ 0x00000000, 0x000000f0 } }, | 
|  | 287 | { AR5K_RF_GAIN(48),	{ 0x00000000, 0x000000f0 } }, | 
|  | 288 | { AR5K_RF_GAIN(49),	{ 0x00000000, 0x000000f0 } }, | 
|  | 289 | { AR5K_RF_GAIN(50),	{ 0x00000000, 0x000000f0 } }, | 
|  | 290 | { AR5K_RF_GAIN(51),	{ 0x00000000, 0x000000f0 } }, | 
|  | 291 | { AR5K_RF_GAIN(52),	{ 0x00000000, 0x000000f0 } }, | 
|  | 292 | { AR5K_RF_GAIN(53),	{ 0x00000000, 0x000000f0 } }, | 
|  | 293 | { AR5K_RF_GAIN(54),	{ 0x00000000, 0x000000f0 } }, | 
|  | 294 | { AR5K_RF_GAIN(55),	{ 0x00000000, 0x000000f0 } }, | 
|  | 295 | { AR5K_RF_GAIN(56),	{ 0x00000000, 0x000000f0 } }, | 
|  | 296 | { AR5K_RF_GAIN(57),	{ 0x00000000, 0x000000f0 } }, | 
|  | 297 | { AR5K_RF_GAIN(58),	{ 0x00000000, 0x000000f0 } }, | 
|  | 298 | { AR5K_RF_GAIN(59),	{ 0x00000000, 0x000000f0 } }, | 
|  | 299 | { AR5K_RF_GAIN(60),	{ 0x00000000, 0x000000f0 } }, | 
|  | 300 | { AR5K_RF_GAIN(61),	{ 0x00000000, 0x000000f0 } }, | 
|  | 301 | { AR5K_RF_GAIN(62),	{ 0x00000000, 0x000000f0 } }, | 
|  | 302 | { AR5K_RF_GAIN(63),	{ 0x00000000, 0x000000f0 } }, | 
|  | 303 | }; | 
|  | 304 |  | 
|  | 305 |  | 
|  | 306 | /* Initial RF Gain settings for RF5413 */ | 
|  | 307 | static const struct ath5k_ini_rfgain rfgain_5413[] = { | 
|  | 308 | /*			      5Ghz	2Ghz	*/ | 
|  | 309 | { AR5K_RF_GAIN(0),	{ 0x00000000, 0x00000000 } }, | 
|  | 310 | { AR5K_RF_GAIN(1),	{ 0x00000040, 0x00000040 } }, | 
|  | 311 | { AR5K_RF_GAIN(2),	{ 0x00000080, 0x00000080 } }, | 
|  | 312 | { AR5K_RF_GAIN(3),	{ 0x000001a1, 0x00000161 } }, | 
|  | 313 | { AR5K_RF_GAIN(4),	{ 0x000001e1, 0x000001a1 } }, | 
|  | 314 | { AR5K_RF_GAIN(5),	{ 0x00000021, 0x000001e1 } }, | 
|  | 315 | { AR5K_RF_GAIN(6),	{ 0x00000061, 0x00000021 } }, | 
|  | 316 | { AR5K_RF_GAIN(7),	{ 0x00000188, 0x00000061 } }, | 
|  | 317 | { AR5K_RF_GAIN(8),	{ 0x000001c8, 0x00000188 } }, | 
|  | 318 | { AR5K_RF_GAIN(9),	{ 0x00000008, 0x000001c8 } }, | 
|  | 319 | { AR5K_RF_GAIN(10),	{ 0x00000048, 0x00000008 } }, | 
|  | 320 | { AR5K_RF_GAIN(11),	{ 0x00000088, 0x00000048 } }, | 
|  | 321 | { AR5K_RF_GAIN(12),	{ 0x000001a9, 0x00000088 } }, | 
|  | 322 | { AR5K_RF_GAIN(13),	{ 0x000001e9, 0x00000169 } }, | 
|  | 323 | { AR5K_RF_GAIN(14),	{ 0x00000029, 0x000001a9 } }, | 
|  | 324 | { AR5K_RF_GAIN(15),	{ 0x00000069, 0x000001e9 } }, | 
|  | 325 | { AR5K_RF_GAIN(16),	{ 0x000001d0, 0x00000029 } }, | 
|  | 326 | { AR5K_RF_GAIN(17),	{ 0x00000010, 0x00000069 } }, | 
|  | 327 | { AR5K_RF_GAIN(18),	{ 0x00000050, 0x00000190 } }, | 
|  | 328 | { AR5K_RF_GAIN(19),	{ 0x00000090, 0x000001d0 } }, | 
|  | 329 | { AR5K_RF_GAIN(20),	{ 0x000001b1, 0x00000010 } }, | 
|  | 330 | { AR5K_RF_GAIN(21),	{ 0x000001f1, 0x00000050 } }, | 
|  | 331 | { AR5K_RF_GAIN(22),	{ 0x00000031, 0x00000090 } }, | 
|  | 332 | { AR5K_RF_GAIN(23),	{ 0x00000071, 0x00000171 } }, | 
|  | 333 | { AR5K_RF_GAIN(24),	{ 0x000001b8, 0x000001b1 } }, | 
|  | 334 | { AR5K_RF_GAIN(25),	{ 0x000001f8, 0x000001f1 } }, | 
|  | 335 | { AR5K_RF_GAIN(26),	{ 0x00000038, 0x00000031 } }, | 
|  | 336 | { AR5K_RF_GAIN(27),	{ 0x00000078, 0x00000071 } }, | 
|  | 337 | { AR5K_RF_GAIN(28),	{ 0x00000199, 0x00000198 } }, | 
|  | 338 | { AR5K_RF_GAIN(29),	{ 0x000001d9, 0x000001d8 } }, | 
|  | 339 | { AR5K_RF_GAIN(30),	{ 0x00000019, 0x00000018 } }, | 
|  | 340 | { AR5K_RF_GAIN(31),	{ 0x00000059, 0x00000058 } }, | 
|  | 341 | { AR5K_RF_GAIN(32),	{ 0x00000099, 0x00000098 } }, | 
|  | 342 | { AR5K_RF_GAIN(33),	{ 0x000000d9, 0x00000179 } }, | 
|  | 343 | { AR5K_RF_GAIN(34),	{ 0x000000f9, 0x000001b9 } }, | 
|  | 344 | { AR5K_RF_GAIN(35),	{ 0x000000f9, 0x000001f9 } }, | 
|  | 345 | { AR5K_RF_GAIN(36),	{ 0x000000f9, 0x00000039 } }, | 
|  | 346 | { AR5K_RF_GAIN(37),	{ 0x000000f9, 0x00000079 } }, | 
|  | 347 | { AR5K_RF_GAIN(38),	{ 0x000000f9, 0x000000b9 } }, | 
|  | 348 | { AR5K_RF_GAIN(39),	{ 0x000000f9, 0x000000f9 } }, | 
|  | 349 | { AR5K_RF_GAIN(40),	{ 0x000000f9, 0x000000f9 } }, | 
|  | 350 | { AR5K_RF_GAIN(41),	{ 0x000000f9, 0x000000f9 } }, | 
|  | 351 | { AR5K_RF_GAIN(42),	{ 0x000000f9, 0x000000f9 } }, | 
|  | 352 | { AR5K_RF_GAIN(43),	{ 0x000000f9, 0x000000f9 } }, | 
|  | 353 | { AR5K_RF_GAIN(44),	{ 0x000000f9, 0x000000f9 } }, | 
|  | 354 | { AR5K_RF_GAIN(45),	{ 0x000000f9, 0x000000f9 } }, | 
|  | 355 | { AR5K_RF_GAIN(46),	{ 0x000000f9, 0x000000f9 } }, | 
|  | 356 | { AR5K_RF_GAIN(47),	{ 0x000000f9, 0x000000f9 } }, | 
|  | 357 | { AR5K_RF_GAIN(48),	{ 0x000000f9, 0x000000f9 } }, | 
|  | 358 | { AR5K_RF_GAIN(49),	{ 0x000000f9, 0x000000f9 } }, | 
|  | 359 | { AR5K_RF_GAIN(50),	{ 0x000000f9, 0x000000f9 } }, | 
|  | 360 | { AR5K_RF_GAIN(51),	{ 0x000000f9, 0x000000f9 } }, | 
|  | 361 | { AR5K_RF_GAIN(52),	{ 0x000000f9, 0x000000f9 } }, | 
|  | 362 | { AR5K_RF_GAIN(53),	{ 0x000000f9, 0x000000f9 } }, | 
|  | 363 | { AR5K_RF_GAIN(54),	{ 0x000000f9, 0x000000f9 } }, | 
|  | 364 | { AR5K_RF_GAIN(55),	{ 0x000000f9, 0x000000f9 } }, | 
|  | 365 | { AR5K_RF_GAIN(56),	{ 0x000000f9, 0x000000f9 } }, | 
|  | 366 | { AR5K_RF_GAIN(57),	{ 0x000000f9, 0x000000f9 } }, | 
|  | 367 | { AR5K_RF_GAIN(58),	{ 0x000000f9, 0x000000f9 } }, | 
|  | 368 | { AR5K_RF_GAIN(59),	{ 0x000000f9, 0x000000f9 } }, | 
|  | 369 | { AR5K_RF_GAIN(60),	{ 0x000000f9, 0x000000f9 } }, | 
|  | 370 | { AR5K_RF_GAIN(61),	{ 0x000000f9, 0x000000f9 } }, | 
|  | 371 | { AR5K_RF_GAIN(62),	{ 0x000000f9, 0x000000f9 } }, | 
|  | 372 | { AR5K_RF_GAIN(63),	{ 0x000000f9, 0x000000f9 } }, | 
|  | 373 | }; | 
|  | 374 |  | 
|  | 375 |  | 
|  | 376 | /* Initial RF Gain settings for RF2425 */ | 
|  | 377 | static const struct ath5k_ini_rfgain rfgain_2425[] = { | 
|  | 378 | { AR5K_RF_GAIN(0),	{ 0x00000000, 0x00000000 } }, | 
|  | 379 | { AR5K_RF_GAIN(1),	{ 0x00000000, 0x00000040 } }, | 
|  | 380 | { AR5K_RF_GAIN(2),	{ 0x00000000, 0x00000080 } }, | 
|  | 381 | { AR5K_RF_GAIN(3),	{ 0x00000000, 0x00000181 } }, | 
|  | 382 | { AR5K_RF_GAIN(4),	{ 0x00000000, 0x000001c1 } }, | 
|  | 383 | { AR5K_RF_GAIN(5),	{ 0x00000000, 0x00000001 } }, | 
|  | 384 | { AR5K_RF_GAIN(6),	{ 0x00000000, 0x00000041 } }, | 
|  | 385 | { AR5K_RF_GAIN(7),	{ 0x00000000, 0x00000081 } }, | 
|  | 386 | { AR5K_RF_GAIN(8),	{ 0x00000000, 0x00000188 } }, | 
|  | 387 | { AR5K_RF_GAIN(9),	{ 0x00000000, 0x000001c8 } }, | 
|  | 388 | { AR5K_RF_GAIN(10),	{ 0x00000000, 0x00000008 } }, | 
|  | 389 | { AR5K_RF_GAIN(11),	{ 0x00000000, 0x00000048 } }, | 
|  | 390 | { AR5K_RF_GAIN(12),	{ 0x00000000, 0x00000088 } }, | 
|  | 391 | { AR5K_RF_GAIN(13),	{ 0x00000000, 0x00000189 } }, | 
|  | 392 | { AR5K_RF_GAIN(14),	{ 0x00000000, 0x000001c9 } }, | 
|  | 393 | { AR5K_RF_GAIN(15),	{ 0x00000000, 0x00000009 } }, | 
|  | 394 | { AR5K_RF_GAIN(16),	{ 0x00000000, 0x00000049 } }, | 
|  | 395 | { AR5K_RF_GAIN(17),	{ 0x00000000, 0x00000089 } }, | 
|  | 396 | { AR5K_RF_GAIN(18),	{ 0x00000000, 0x000001b0 } }, | 
|  | 397 | { AR5K_RF_GAIN(19),	{ 0x00000000, 0x000001f0 } }, | 
|  | 398 | { AR5K_RF_GAIN(20),	{ 0x00000000, 0x00000030 } }, | 
|  | 399 | { AR5K_RF_GAIN(21),	{ 0x00000000, 0x00000070 } }, | 
|  | 400 | { AR5K_RF_GAIN(22),	{ 0x00000000, 0x00000171 } }, | 
|  | 401 | { AR5K_RF_GAIN(23),	{ 0x00000000, 0x000001b1 } }, | 
|  | 402 | { AR5K_RF_GAIN(24),	{ 0x00000000, 0x000001f1 } }, | 
|  | 403 | { AR5K_RF_GAIN(25),	{ 0x00000000, 0x00000031 } }, | 
|  | 404 | { AR5K_RF_GAIN(26),	{ 0x00000000, 0x00000071 } }, | 
|  | 405 | { AR5K_RF_GAIN(27),	{ 0x00000000, 0x000001b8 } }, | 
|  | 406 | { AR5K_RF_GAIN(28),	{ 0x00000000, 0x000001f8 } }, | 
|  | 407 | { AR5K_RF_GAIN(29),	{ 0x00000000, 0x00000038 } }, | 
|  | 408 | { AR5K_RF_GAIN(30),	{ 0x00000000, 0x00000078 } }, | 
|  | 409 | { AR5K_RF_GAIN(31),	{ 0x00000000, 0x000000b8 } }, | 
|  | 410 | { AR5K_RF_GAIN(32),	{ 0x00000000, 0x000001b9 } }, | 
|  | 411 | { AR5K_RF_GAIN(33),	{ 0x00000000, 0x000001f9 } }, | 
|  | 412 | { AR5K_RF_GAIN(34),	{ 0x00000000, 0x00000039 } }, | 
|  | 413 | { AR5K_RF_GAIN(35),	{ 0x00000000, 0x00000079 } }, | 
|  | 414 | { AR5K_RF_GAIN(36),	{ 0x00000000, 0x000000b9 } }, | 
|  | 415 | { AR5K_RF_GAIN(37),	{ 0x00000000, 0x000000f9 } }, | 
|  | 416 | { AR5K_RF_GAIN(38),	{ 0x00000000, 0x000000f9 } }, | 
|  | 417 | { AR5K_RF_GAIN(39),	{ 0x00000000, 0x000000f9 } }, | 
|  | 418 | { AR5K_RF_GAIN(40),	{ 0x00000000, 0x000000f9 } }, | 
|  | 419 | { AR5K_RF_GAIN(41),	{ 0x00000000, 0x000000f9 } }, | 
|  | 420 | { AR5K_RF_GAIN(42),	{ 0x00000000, 0x000000f9 } }, | 
|  | 421 | { AR5K_RF_GAIN(43),	{ 0x00000000, 0x000000f9 } }, | 
|  | 422 | { AR5K_RF_GAIN(44),	{ 0x00000000, 0x000000f9 } }, | 
|  | 423 | { AR5K_RF_GAIN(45),	{ 0x00000000, 0x000000f9 } }, | 
|  | 424 | { AR5K_RF_GAIN(46),	{ 0x00000000, 0x000000f9 } }, | 
|  | 425 | { AR5K_RF_GAIN(47),	{ 0x00000000, 0x000000f9 } }, | 
|  | 426 | { AR5K_RF_GAIN(48),	{ 0x00000000, 0x000000f9 } }, | 
|  | 427 | { AR5K_RF_GAIN(49),	{ 0x00000000, 0x000000f9 } }, | 
|  | 428 | { AR5K_RF_GAIN(50),	{ 0x00000000, 0x000000f9 } }, | 
|  | 429 | { AR5K_RF_GAIN(51),	{ 0x00000000, 0x000000f9 } }, | 
|  | 430 | { AR5K_RF_GAIN(52),	{ 0x00000000, 0x000000f9 } }, | 
|  | 431 | { AR5K_RF_GAIN(53),	{ 0x00000000, 0x000000f9 } }, | 
|  | 432 | { AR5K_RF_GAIN(54),	{ 0x00000000, 0x000000f9 } }, | 
|  | 433 | { AR5K_RF_GAIN(55),	{ 0x00000000, 0x000000f9 } }, | 
|  | 434 | { AR5K_RF_GAIN(56),	{ 0x00000000, 0x000000f9 } }, | 
|  | 435 | { AR5K_RF_GAIN(57),	{ 0x00000000, 0x000000f9 } }, | 
|  | 436 | { AR5K_RF_GAIN(58),	{ 0x00000000, 0x000000f9 } }, | 
|  | 437 | { AR5K_RF_GAIN(59),	{ 0x00000000, 0x000000f9 } }, | 
|  | 438 | { AR5K_RF_GAIN(60),	{ 0x00000000, 0x000000f9 } }, | 
|  | 439 | { AR5K_RF_GAIN(61),	{ 0x00000000, 0x000000f9 } }, | 
|  | 440 | { AR5K_RF_GAIN(62),	{ 0x00000000, 0x000000f9 } }, | 
|  | 441 | { AR5K_RF_GAIN(63),	{ 0x00000000, 0x000000f9 } }, | 
|  | 442 | }; | 
|  | 443 |  | 
| Nick Kossifidis | 6f3b414 | 2009-02-09 06:03:41 +0200 | [diff] [blame] | 444 | #define AR5K_GAIN_CRN_FIX_BITS_5111		4 | 
|  | 445 | #define AR5K_GAIN_CRN_FIX_BITS_5112		7 | 
|  | 446 | #define AR5K_GAIN_CRN_MAX_FIX_BITS		AR5K_GAIN_CRN_FIX_BITS_5112 | 
|  | 447 | #define AR5K_GAIN_DYN_ADJUST_HI_MARGIN		15 | 
|  | 448 | #define AR5K_GAIN_DYN_ADJUST_LO_MARGIN		20 | 
|  | 449 | #define AR5K_GAIN_CCK_PROBE_CORR		5 | 
|  | 450 | #define AR5K_GAIN_CCK_OFDM_GAIN_DELTA		15 | 
|  | 451 | #define AR5K_GAIN_STEP_COUNT			10 | 
|  | 452 |  | 
|  | 453 | /* Check if our current measurement is inside our | 
|  | 454 | * current variable attenuation window */ | 
|  | 455 | #define AR5K_GAIN_CHECK_ADJUST(_g) 		\ | 
|  | 456 | ((_g)->g_current <= (_g)->g_low || (_g)->g_current >= (_g)->g_high) | 
|  | 457 |  | 
|  | 458 | struct ath5k_gain_opt_step { | 
|  | 459 | s8				gos_param[AR5K_GAIN_CRN_MAX_FIX_BITS]; | 
|  | 460 | s8				gos_gain; | 
|  | 461 | }; | 
|  | 462 |  | 
| Nick Kossifidis | 33a3182 | 2009-02-09 06:00:34 +0200 | [diff] [blame] | 463 | struct ath5k_gain_opt { | 
| Nick Kossifidis | 6f3b414 | 2009-02-09 06:03:41 +0200 | [diff] [blame] | 464 | u8				go_default; | 
|  | 465 | u8				go_steps_count; | 
| Nick Kossifidis | 33a3182 | 2009-02-09 06:00:34 +0200 | [diff] [blame] | 466 | const struct ath5k_gain_opt_step	go_step[AR5K_GAIN_STEP_COUNT]; | 
|  | 467 | }; | 
|  | 468 |  | 
| Nick Kossifidis | 6f3b414 | 2009-02-09 06:03:41 +0200 | [diff] [blame] | 469 | /* | 
|  | 470 | * Parameters on gos_param: | 
|  | 471 | * 1) Tx clip PHY register | 
|  | 472 | * 2) PWD 90 RF register | 
|  | 473 | * 3) PWD 84 RF register | 
|  | 474 | * 4) RFGainSel RF register | 
|  | 475 | */ | 
| Nick Kossifidis | 33a3182 | 2009-02-09 06:00:34 +0200 | [diff] [blame] | 476 | static const struct ath5k_gain_opt rfgain_opt_5111 = { | 
|  | 477 | 4, | 
|  | 478 | 9, | 
|  | 479 | { | 
|  | 480 | { { 4, 1, 1, 1 }, 6 }, | 
|  | 481 | { { 4, 0, 1, 1 }, 4 }, | 
|  | 482 | { { 3, 1, 1, 1 }, 3 }, | 
|  | 483 | { { 4, 0, 0, 1 }, 1 }, | 
|  | 484 | { { 4, 1, 1, 0 }, 0 }, | 
|  | 485 | { { 4, 0, 1, 0 }, -2 }, | 
|  | 486 | { { 3, 1, 1, 0 }, -3 }, | 
|  | 487 | { { 4, 0, 0, 0 }, -4 }, | 
|  | 488 | { { 2, 1, 1, 0 }, -6 } | 
|  | 489 | } | 
|  | 490 | }; | 
|  | 491 |  | 
| Nick Kossifidis | 6f3b414 | 2009-02-09 06:03:41 +0200 | [diff] [blame] | 492 | /* | 
|  | 493 | * Parameters on gos_param: | 
|  | 494 | * 1) Mixgain ovr RF register | 
|  | 495 | * 2) PWD 138 RF register | 
|  | 496 | * 3) PWD 137 RF register | 
|  | 497 | * 4) PWD 136 RF register | 
|  | 498 | * 5) PWD 132 RF register | 
|  | 499 | * 6) PWD 131 RF register | 
|  | 500 | * 7) PWD 130 RF register | 
|  | 501 | */ | 
| Nick Kossifidis | 33a3182 | 2009-02-09 06:00:34 +0200 | [diff] [blame] | 502 | static const struct ath5k_gain_opt rfgain_opt_5112 = { | 
|  | 503 | 1, | 
|  | 504 | 8, | 
|  | 505 | { | 
|  | 506 | { { 3, 0, 0, 0, 0, 0, 0 }, 6 }, | 
|  | 507 | { { 2, 0, 0, 0, 0, 0, 0 }, 0 }, | 
|  | 508 | { { 1, 0, 0, 0, 0, 0, 0 }, -3 }, | 
|  | 509 | { { 0, 0, 0, 0, 0, 0, 0 }, -6 }, | 
|  | 510 | { { 0, 1, 1, 0, 0, 0, 0 }, -8 }, | 
|  | 511 | { { 0, 1, 1, 0, 1, 1, 0 }, -10 }, | 
|  | 512 | { { 0, 1, 0, 1, 1, 1, 0 }, -13 }, | 
|  | 513 | { { 0, 1, 0, 1, 1, 0, 1 }, -16 }, | 
|  | 514 | } | 
|  | 515 | }; | 
|  | 516 |  |