0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030 struct ath5k_ini_rfgain {
0031 u16 rfg_register;
0032 u32 rfg_value[2];
0033 };
0034
0035
0036 static const struct ath5k_ini_rfgain rfgain_5111[] = {
0037
0038 { AR5K_RF_GAIN(0), { 0x000001a9, 0x00000000 } },
0039 { AR5K_RF_GAIN(1), { 0x000001e9, 0x00000040 } },
0040 { AR5K_RF_GAIN(2), { 0x00000029, 0x00000080 } },
0041 { AR5K_RF_GAIN(3), { 0x00000069, 0x00000150 } },
0042 { AR5K_RF_GAIN(4), { 0x00000199, 0x00000190 } },
0043 { AR5K_RF_GAIN(5), { 0x000001d9, 0x000001d0 } },
0044 { AR5K_RF_GAIN(6), { 0x00000019, 0x00000010 } },
0045 { AR5K_RF_GAIN(7), { 0x00000059, 0x00000044 } },
0046 { AR5K_RF_GAIN(8), { 0x00000099, 0x00000084 } },
0047 { AR5K_RF_GAIN(9), { 0x000001a5, 0x00000148 } },
0048 { AR5K_RF_GAIN(10), { 0x000001e5, 0x00000188 } },
0049 { AR5K_RF_GAIN(11), { 0x00000025, 0x000001c8 } },
0050 { AR5K_RF_GAIN(12), { 0x000001c8, 0x00000014 } },
0051 { AR5K_RF_GAIN(13), { 0x00000008, 0x00000042 } },
0052 { AR5K_RF_GAIN(14), { 0x00000048, 0x00000082 } },
0053 { AR5K_RF_GAIN(15), { 0x00000088, 0x00000178 } },
0054 { AR5K_RF_GAIN(16), { 0x00000198, 0x000001b8 } },
0055 { AR5K_RF_GAIN(17), { 0x000001d8, 0x000001f8 } },
0056 { AR5K_RF_GAIN(18), { 0x00000018, 0x00000012 } },
0057 { AR5K_RF_GAIN(19), { 0x00000058, 0x00000052 } },
0058 { AR5K_RF_GAIN(20), { 0x00000098, 0x00000092 } },
0059 { AR5K_RF_GAIN(21), { 0x000001a4, 0x0000017c } },
0060 { AR5K_RF_GAIN(22), { 0x000001e4, 0x000001bc } },
0061 { AR5K_RF_GAIN(23), { 0x00000024, 0x000001fc } },
0062 { AR5K_RF_GAIN(24), { 0x00000064, 0x0000000a } },
0063 { AR5K_RF_GAIN(25), { 0x000000a4, 0x0000004a } },
0064 { AR5K_RF_GAIN(26), { 0x000000e4, 0x0000008a } },
0065 { AR5K_RF_GAIN(27), { 0x0000010a, 0x0000015a } },
0066 { AR5K_RF_GAIN(28), { 0x0000014a, 0x0000019a } },
0067 { AR5K_RF_GAIN(29), { 0x0000018a, 0x000001da } },
0068 { AR5K_RF_GAIN(30), { 0x000001ca, 0x0000000e } },
0069 { AR5K_RF_GAIN(31), { 0x0000000a, 0x0000004e } },
0070 { AR5K_RF_GAIN(32), { 0x0000004a, 0x0000008e } },
0071 { AR5K_RF_GAIN(33), { 0x0000008a, 0x0000015e } },
0072 { AR5K_RF_GAIN(34), { 0x000001ba, 0x0000019e } },
0073 { AR5K_RF_GAIN(35), { 0x000001fa, 0x000001de } },
0074 { AR5K_RF_GAIN(36), { 0x0000003a, 0x00000009 } },
0075 { AR5K_RF_GAIN(37), { 0x0000007a, 0x00000049 } },
0076 { AR5K_RF_GAIN(38), { 0x00000186, 0x00000089 } },
0077 { AR5K_RF_GAIN(39), { 0x000001c6, 0x00000179 } },
0078 { AR5K_RF_GAIN(40), { 0x00000006, 0x000001b9 } },
0079 { AR5K_RF_GAIN(41), { 0x00000046, 0x000001f9 } },
0080 { AR5K_RF_GAIN(42), { 0x00000086, 0x00000039 } },
0081 { AR5K_RF_GAIN(43), { 0x000000c6, 0x00000079 } },
0082 { AR5K_RF_GAIN(44), { 0x000000c6, 0x000000b9 } },
0083 { AR5K_RF_GAIN(45), { 0x000000c6, 0x000001bd } },
0084 { AR5K_RF_GAIN(46), { 0x000000c6, 0x000001fd } },
0085 { AR5K_RF_GAIN(47), { 0x000000c6, 0x0000003d } },
0086 { AR5K_RF_GAIN(48), { 0x000000c6, 0x0000007d } },
0087 { AR5K_RF_GAIN(49), { 0x000000c6, 0x000000bd } },
0088 { AR5K_RF_GAIN(50), { 0x000000c6, 0x000000fd } },
0089 { AR5K_RF_GAIN(51), { 0x000000c6, 0x000000fd } },
0090 { AR5K_RF_GAIN(52), { 0x000000c6, 0x000000fd } },
0091 { AR5K_RF_GAIN(53), { 0x000000c6, 0x000000fd } },
0092 { AR5K_RF_GAIN(54), { 0x000000c6, 0x000000fd } },
0093 { AR5K_RF_GAIN(55), { 0x000000c6, 0x000000fd } },
0094 { AR5K_RF_GAIN(56), { 0x000000c6, 0x000000fd } },
0095 { AR5K_RF_GAIN(57), { 0x000000c6, 0x000000fd } },
0096 { AR5K_RF_GAIN(58), { 0x000000c6, 0x000000fd } },
0097 { AR5K_RF_GAIN(59), { 0x000000c6, 0x000000fd } },
0098 { AR5K_RF_GAIN(60), { 0x000000c6, 0x000000fd } },
0099 { AR5K_RF_GAIN(61), { 0x000000c6, 0x000000fd } },
0100 { AR5K_RF_GAIN(62), { 0x000000c6, 0x000000fd } },
0101 { AR5K_RF_GAIN(63), { 0x000000c6, 0x000000fd } },
0102 };
0103
0104
0105 static const struct ath5k_ini_rfgain rfgain_5112[] = {
0106
0107 { AR5K_RF_GAIN(0), { 0x00000007, 0x00000007 } },
0108 { AR5K_RF_GAIN(1), { 0x00000047, 0x00000047 } },
0109 { AR5K_RF_GAIN(2), { 0x00000087, 0x00000087 } },
0110 { AR5K_RF_GAIN(3), { 0x000001a0, 0x000001a0 } },
0111 { AR5K_RF_GAIN(4), { 0x000001e0, 0x000001e0 } },
0112 { AR5K_RF_GAIN(5), { 0x00000020, 0x00000020 } },
0113 { AR5K_RF_GAIN(6), { 0x00000060, 0x00000060 } },
0114 { AR5K_RF_GAIN(7), { 0x000001a1, 0x000001a1 } },
0115 { AR5K_RF_GAIN(8), { 0x000001e1, 0x000001e1 } },
0116 { AR5K_RF_GAIN(9), { 0x00000021, 0x00000021 } },
0117 { AR5K_RF_GAIN(10), { 0x00000061, 0x00000061 } },
0118 { AR5K_RF_GAIN(11), { 0x00000162, 0x00000162 } },
0119 { AR5K_RF_GAIN(12), { 0x000001a2, 0x000001a2 } },
0120 { AR5K_RF_GAIN(13), { 0x000001e2, 0x000001e2 } },
0121 { AR5K_RF_GAIN(14), { 0x00000022, 0x00000022 } },
0122 { AR5K_RF_GAIN(15), { 0x00000062, 0x00000062 } },
0123 { AR5K_RF_GAIN(16), { 0x00000163, 0x00000163 } },
0124 { AR5K_RF_GAIN(17), { 0x000001a3, 0x000001a3 } },
0125 { AR5K_RF_GAIN(18), { 0x000001e3, 0x000001e3 } },
0126 { AR5K_RF_GAIN(19), { 0x00000023, 0x00000023 } },
0127 { AR5K_RF_GAIN(20), { 0x00000063, 0x00000063 } },
0128 { AR5K_RF_GAIN(21), { 0x00000184, 0x00000184 } },
0129 { AR5K_RF_GAIN(22), { 0x000001c4, 0x000001c4 } },
0130 { AR5K_RF_GAIN(23), { 0x00000004, 0x00000004 } },
0131 { AR5K_RF_GAIN(24), { 0x000001ea, 0x0000000b } },
0132 { AR5K_RF_GAIN(25), { 0x0000002a, 0x0000004b } },
0133 { AR5K_RF_GAIN(26), { 0x0000006a, 0x0000008b } },
0134 { AR5K_RF_GAIN(27), { 0x000000aa, 0x000001ac } },
0135 { AR5K_RF_GAIN(28), { 0x000001ab, 0x000001ec } },
0136 { AR5K_RF_GAIN(29), { 0x000001eb, 0x0000002c } },
0137 { AR5K_RF_GAIN(30), { 0x0000002b, 0x00000012 } },
0138 { AR5K_RF_GAIN(31), { 0x0000006b, 0x00000052 } },
0139 { AR5K_RF_GAIN(32), { 0x000000ab, 0x00000092 } },
0140 { AR5K_RF_GAIN(33), { 0x000001ac, 0x00000193 } },
0141 { AR5K_RF_GAIN(34), { 0x000001ec, 0x000001d3 } },
0142 { AR5K_RF_GAIN(35), { 0x0000002c, 0x00000013 } },
0143 { AR5K_RF_GAIN(36), { 0x0000003a, 0x00000053 } },
0144 { AR5K_RF_GAIN(37), { 0x0000007a, 0x00000093 } },
0145 { AR5K_RF_GAIN(38), { 0x000000ba, 0x00000194 } },
0146 { AR5K_RF_GAIN(39), { 0x000001bb, 0x000001d4 } },
0147 { AR5K_RF_GAIN(40), { 0x000001fb, 0x00000014 } },
0148 { AR5K_RF_GAIN(41), { 0x0000003b, 0x0000003a } },
0149 { AR5K_RF_GAIN(42), { 0x0000007b, 0x0000007a } },
0150 { AR5K_RF_GAIN(43), { 0x000000bb, 0x000000ba } },
0151 { AR5K_RF_GAIN(44), { 0x000001bc, 0x000001bb } },
0152 { AR5K_RF_GAIN(45), { 0x000001fc, 0x000001fb } },
0153 { AR5K_RF_GAIN(46), { 0x0000003c, 0x0000003b } },
0154 { AR5K_RF_GAIN(47), { 0x0000007c, 0x0000007b } },
0155 { AR5K_RF_GAIN(48), { 0x000000bc, 0x000000bb } },
0156 { AR5K_RF_GAIN(49), { 0x000000fc, 0x000001bc } },
0157 { AR5K_RF_GAIN(50), { 0x000000fc, 0x000001fc } },
0158 { AR5K_RF_GAIN(51), { 0x000000fc, 0x0000003c } },
0159 { AR5K_RF_GAIN(52), { 0x000000fc, 0x0000007c } },
0160 { AR5K_RF_GAIN(53), { 0x000000fc, 0x000000bc } },
0161 { AR5K_RF_GAIN(54), { 0x000000fc, 0x000000fc } },
0162 { AR5K_RF_GAIN(55), { 0x000000fc, 0x000000fc } },
0163 { AR5K_RF_GAIN(56), { 0x000000fc, 0x000000fc } },
0164 { AR5K_RF_GAIN(57), { 0x000000fc, 0x000000fc } },
0165 { AR5K_RF_GAIN(58), { 0x000000fc, 0x000000fc } },
0166 { AR5K_RF_GAIN(59), { 0x000000fc, 0x000000fc } },
0167 { AR5K_RF_GAIN(60), { 0x000000fc, 0x000000fc } },
0168 { AR5K_RF_GAIN(61), { 0x000000fc, 0x000000fc } },
0169 { AR5K_RF_GAIN(62), { 0x000000fc, 0x000000fc } },
0170 { AR5K_RF_GAIN(63), { 0x000000fc, 0x000000fc } },
0171 };
0172
0173
0174 static const struct ath5k_ini_rfgain rfgain_2413[] = {
0175 { AR5K_RF_GAIN(0), { 0x00000000, 0x00000000 } },
0176 { AR5K_RF_GAIN(1), { 0x00000000, 0x00000040 } },
0177 { AR5K_RF_GAIN(2), { 0x00000000, 0x00000080 } },
0178 { AR5K_RF_GAIN(3), { 0x00000000, 0x00000181 } },
0179 { AR5K_RF_GAIN(4), { 0x00000000, 0x000001c1 } },
0180 { AR5K_RF_GAIN(5), { 0x00000000, 0x00000001 } },
0181 { AR5K_RF_GAIN(6), { 0x00000000, 0x00000041 } },
0182 { AR5K_RF_GAIN(7), { 0x00000000, 0x00000081 } },
0183 { AR5K_RF_GAIN(8), { 0x00000000, 0x00000168 } },
0184 { AR5K_RF_GAIN(9), { 0x00000000, 0x000001a8 } },
0185 { AR5K_RF_GAIN(10), { 0x00000000, 0x000001e8 } },
0186 { AR5K_RF_GAIN(11), { 0x00000000, 0x00000028 } },
0187 { AR5K_RF_GAIN(12), { 0x00000000, 0x00000068 } },
0188 { AR5K_RF_GAIN(13), { 0x00000000, 0x00000189 } },
0189 { AR5K_RF_GAIN(14), { 0x00000000, 0x000001c9 } },
0190 { AR5K_RF_GAIN(15), { 0x00000000, 0x00000009 } },
0191 { AR5K_RF_GAIN(16), { 0x00000000, 0x00000049 } },
0192 { AR5K_RF_GAIN(17), { 0x00000000, 0x00000089 } },
0193 { AR5K_RF_GAIN(18), { 0x00000000, 0x00000190 } },
0194 { AR5K_RF_GAIN(19), { 0x00000000, 0x000001d0 } },
0195 { AR5K_RF_GAIN(20), { 0x00000000, 0x00000010 } },
0196 { AR5K_RF_GAIN(21), { 0x00000000, 0x00000050 } },
0197 { AR5K_RF_GAIN(22), { 0x00000000, 0x00000090 } },
0198 { AR5K_RF_GAIN(23), { 0x00000000, 0x00000191 } },
0199 { AR5K_RF_GAIN(24), { 0x00000000, 0x000001d1 } },
0200 { AR5K_RF_GAIN(25), { 0x00000000, 0x00000011 } },
0201 { AR5K_RF_GAIN(26), { 0x00000000, 0x00000051 } },
0202 { AR5K_RF_GAIN(27), { 0x00000000, 0x00000091 } },
0203 { AR5K_RF_GAIN(28), { 0x00000000, 0x00000178 } },
0204 { AR5K_RF_GAIN(29), { 0x00000000, 0x000001b8 } },
0205 { AR5K_RF_GAIN(30), { 0x00000000, 0x000001f8 } },
0206 { AR5K_RF_GAIN(31), { 0x00000000, 0x00000038 } },
0207 { AR5K_RF_GAIN(32), { 0x00000000, 0x00000078 } },
0208 { AR5K_RF_GAIN(33), { 0x00000000, 0x00000199 } },
0209 { AR5K_RF_GAIN(34), { 0x00000000, 0x000001d9 } },
0210 { AR5K_RF_GAIN(35), { 0x00000000, 0x00000019 } },
0211 { AR5K_RF_GAIN(36), { 0x00000000, 0x00000059 } },
0212 { AR5K_RF_GAIN(37), { 0x00000000, 0x00000099 } },
0213 { AR5K_RF_GAIN(38), { 0x00000000, 0x000000d9 } },
0214 { AR5K_RF_GAIN(39), { 0x00000000, 0x000000f9 } },
0215 { AR5K_RF_GAIN(40), { 0x00000000, 0x000000f9 } },
0216 { AR5K_RF_GAIN(41), { 0x00000000, 0x000000f9 } },
0217 { AR5K_RF_GAIN(42), { 0x00000000, 0x000000f9 } },
0218 { AR5K_RF_GAIN(43), { 0x00000000, 0x000000f9 } },
0219 { AR5K_RF_GAIN(44), { 0x00000000, 0x000000f9 } },
0220 { AR5K_RF_GAIN(45), { 0x00000000, 0x000000f9 } },
0221 { AR5K_RF_GAIN(46), { 0x00000000, 0x000000f9 } },
0222 { AR5K_RF_GAIN(47), { 0x00000000, 0x000000f9 } },
0223 { AR5K_RF_GAIN(48), { 0x00000000, 0x000000f9 } },
0224 { AR5K_RF_GAIN(49), { 0x00000000, 0x000000f9 } },
0225 { AR5K_RF_GAIN(50), { 0x00000000, 0x000000f9 } },
0226 { AR5K_RF_GAIN(51), { 0x00000000, 0x000000f9 } },
0227 { AR5K_RF_GAIN(52), { 0x00000000, 0x000000f9 } },
0228 { AR5K_RF_GAIN(53), { 0x00000000, 0x000000f9 } },
0229 { AR5K_RF_GAIN(54), { 0x00000000, 0x000000f9 } },
0230 { AR5K_RF_GAIN(55), { 0x00000000, 0x000000f9 } },
0231 { AR5K_RF_GAIN(56), { 0x00000000, 0x000000f9 } },
0232 { AR5K_RF_GAIN(57), { 0x00000000, 0x000000f9 } },
0233 { AR5K_RF_GAIN(58), { 0x00000000, 0x000000f9 } },
0234 { AR5K_RF_GAIN(59), { 0x00000000, 0x000000f9 } },
0235 { AR5K_RF_GAIN(60), { 0x00000000, 0x000000f9 } },
0236 { AR5K_RF_GAIN(61), { 0x00000000, 0x000000f9 } },
0237 { AR5K_RF_GAIN(62), { 0x00000000, 0x000000f9 } },
0238 { AR5K_RF_GAIN(63), { 0x00000000, 0x000000f9 } },
0239 };
0240
0241
0242 static const struct ath5k_ini_rfgain rfgain_2316[] = {
0243 { AR5K_RF_GAIN(0), { 0x00000000, 0x00000000 } },
0244 { AR5K_RF_GAIN(1), { 0x00000000, 0x00000040 } },
0245 { AR5K_RF_GAIN(2), { 0x00000000, 0x00000080 } },
0246 { AR5K_RF_GAIN(3), { 0x00000000, 0x000000c0 } },
0247 { AR5K_RF_GAIN(4), { 0x00000000, 0x000000e0 } },
0248 { AR5K_RF_GAIN(5), { 0x00000000, 0x000000e0 } },
0249 { AR5K_RF_GAIN(6), { 0x00000000, 0x00000128 } },
0250 { AR5K_RF_GAIN(7), { 0x00000000, 0x00000128 } },
0251 { AR5K_RF_GAIN(8), { 0x00000000, 0x00000128 } },
0252 { AR5K_RF_GAIN(9), { 0x00000000, 0x00000168 } },
0253 { AR5K_RF_GAIN(10), { 0x00000000, 0x000001a8 } },
0254 { AR5K_RF_GAIN(11), { 0x00000000, 0x000001e8 } },
0255 { AR5K_RF_GAIN(12), { 0x00000000, 0x00000028 } },
0256 { AR5K_RF_GAIN(13), { 0x00000000, 0x00000068 } },
0257 { AR5K_RF_GAIN(14), { 0x00000000, 0x000000a8 } },
0258 { AR5K_RF_GAIN(15), { 0x00000000, 0x000000e8 } },
0259 { AR5K_RF_GAIN(16), { 0x00000000, 0x000000e8 } },
0260 { AR5K_RF_GAIN(17), { 0x00000000, 0x00000130 } },
0261 { AR5K_RF_GAIN(18), { 0x00000000, 0x00000130 } },
0262 { AR5K_RF_GAIN(19), { 0x00000000, 0x00000170 } },
0263 { AR5K_RF_GAIN(20), { 0x00000000, 0x000001b0 } },
0264 { AR5K_RF_GAIN(21), { 0x00000000, 0x000001f0 } },
0265 { AR5K_RF_GAIN(22), { 0x00000000, 0x00000030 } },
0266 { AR5K_RF_GAIN(23), { 0x00000000, 0x00000070 } },
0267 { AR5K_RF_GAIN(24), { 0x00000000, 0x000000b0 } },
0268 { AR5K_RF_GAIN(25), { 0x00000000, 0x000000f0 } },
0269 { AR5K_RF_GAIN(26), { 0x00000000, 0x000000f0 } },
0270 { AR5K_RF_GAIN(27), { 0x00000000, 0x000000f0 } },
0271 { AR5K_RF_GAIN(28), { 0x00000000, 0x000000f0 } },
0272 { AR5K_RF_GAIN(29), { 0x00000000, 0x000000f0 } },
0273 { AR5K_RF_GAIN(30), { 0x00000000, 0x000000f0 } },
0274 { AR5K_RF_GAIN(31), { 0x00000000, 0x000000f0 } },
0275 { AR5K_RF_GAIN(32), { 0x00000000, 0x000000f0 } },
0276 { AR5K_RF_GAIN(33), { 0x00000000, 0x000000f0 } },
0277 { AR5K_RF_GAIN(34), { 0x00000000, 0x000000f0 } },
0278 { AR5K_RF_GAIN(35), { 0x00000000, 0x000000f0 } },
0279 { AR5K_RF_GAIN(36), { 0x00000000, 0x000000f0 } },
0280 { AR5K_RF_GAIN(37), { 0x00000000, 0x000000f0 } },
0281 { AR5K_RF_GAIN(38), { 0x00000000, 0x000000f0 } },
0282 { AR5K_RF_GAIN(39), { 0x00000000, 0x000000f0 } },
0283 { AR5K_RF_GAIN(40), { 0x00000000, 0x000000f0 } },
0284 { AR5K_RF_GAIN(41), { 0x00000000, 0x000000f0 } },
0285 { AR5K_RF_GAIN(42), { 0x00000000, 0x000000f0 } },
0286 { AR5K_RF_GAIN(43), { 0x00000000, 0x000000f0 } },
0287 { AR5K_RF_GAIN(44), { 0x00000000, 0x000000f0 } },
0288 { AR5K_RF_GAIN(45), { 0x00000000, 0x000000f0 } },
0289 { AR5K_RF_GAIN(46), { 0x00000000, 0x000000f0 } },
0290 { AR5K_RF_GAIN(47), { 0x00000000, 0x000000f0 } },
0291 { AR5K_RF_GAIN(48), { 0x00000000, 0x000000f0 } },
0292 { AR5K_RF_GAIN(49), { 0x00000000, 0x000000f0 } },
0293 { AR5K_RF_GAIN(50), { 0x00000000, 0x000000f0 } },
0294 { AR5K_RF_GAIN(51), { 0x00000000, 0x000000f0 } },
0295 { AR5K_RF_GAIN(52), { 0x00000000, 0x000000f0 } },
0296 { AR5K_RF_GAIN(53), { 0x00000000, 0x000000f0 } },
0297 { AR5K_RF_GAIN(54), { 0x00000000, 0x000000f0 } },
0298 { AR5K_RF_GAIN(55), { 0x00000000, 0x000000f0 } },
0299 { AR5K_RF_GAIN(56), { 0x00000000, 0x000000f0 } },
0300 { AR5K_RF_GAIN(57), { 0x00000000, 0x000000f0 } },
0301 { AR5K_RF_GAIN(58), { 0x00000000, 0x000000f0 } },
0302 { AR5K_RF_GAIN(59), { 0x00000000, 0x000000f0 } },
0303 { AR5K_RF_GAIN(60), { 0x00000000, 0x000000f0 } },
0304 { AR5K_RF_GAIN(61), { 0x00000000, 0x000000f0 } },
0305 { AR5K_RF_GAIN(62), { 0x00000000, 0x000000f0 } },
0306 { AR5K_RF_GAIN(63), { 0x00000000, 0x000000f0 } },
0307 };
0308
0309
0310
0311 static const struct ath5k_ini_rfgain rfgain_5413[] = {
0312
0313 { AR5K_RF_GAIN(0), { 0x00000000, 0x00000000 } },
0314 { AR5K_RF_GAIN(1), { 0x00000040, 0x00000040 } },
0315 { AR5K_RF_GAIN(2), { 0x00000080, 0x00000080 } },
0316 { AR5K_RF_GAIN(3), { 0x000001a1, 0x00000161 } },
0317 { AR5K_RF_GAIN(4), { 0x000001e1, 0x000001a1 } },
0318 { AR5K_RF_GAIN(5), { 0x00000021, 0x000001e1 } },
0319 { AR5K_RF_GAIN(6), { 0x00000061, 0x00000021 } },
0320 { AR5K_RF_GAIN(7), { 0x00000188, 0x00000061 } },
0321 { AR5K_RF_GAIN(8), { 0x000001c8, 0x00000188 } },
0322 { AR5K_RF_GAIN(9), { 0x00000008, 0x000001c8 } },
0323 { AR5K_RF_GAIN(10), { 0x00000048, 0x00000008 } },
0324 { AR5K_RF_GAIN(11), { 0x00000088, 0x00000048 } },
0325 { AR5K_RF_GAIN(12), { 0x000001a9, 0x00000088 } },
0326 { AR5K_RF_GAIN(13), { 0x000001e9, 0x00000169 } },
0327 { AR5K_RF_GAIN(14), { 0x00000029, 0x000001a9 } },
0328 { AR5K_RF_GAIN(15), { 0x00000069, 0x000001e9 } },
0329 { AR5K_RF_GAIN(16), { 0x000001d0, 0x00000029 } },
0330 { AR5K_RF_GAIN(17), { 0x00000010, 0x00000069 } },
0331 { AR5K_RF_GAIN(18), { 0x00000050, 0x00000190 } },
0332 { AR5K_RF_GAIN(19), { 0x00000090, 0x000001d0 } },
0333 { AR5K_RF_GAIN(20), { 0x000001b1, 0x00000010 } },
0334 { AR5K_RF_GAIN(21), { 0x000001f1, 0x00000050 } },
0335 { AR5K_RF_GAIN(22), { 0x00000031, 0x00000090 } },
0336 { AR5K_RF_GAIN(23), { 0x00000071, 0x00000171 } },
0337 { AR5K_RF_GAIN(24), { 0x000001b8, 0x000001b1 } },
0338 { AR5K_RF_GAIN(25), { 0x000001f8, 0x000001f1 } },
0339 { AR5K_RF_GAIN(26), { 0x00000038, 0x00000031 } },
0340 { AR5K_RF_GAIN(27), { 0x00000078, 0x00000071 } },
0341 { AR5K_RF_GAIN(28), { 0x00000199, 0x00000198 } },
0342 { AR5K_RF_GAIN(29), { 0x000001d9, 0x000001d8 } },
0343 { AR5K_RF_GAIN(30), { 0x00000019, 0x00000018 } },
0344 { AR5K_RF_GAIN(31), { 0x00000059, 0x00000058 } },
0345 { AR5K_RF_GAIN(32), { 0x00000099, 0x00000098 } },
0346 { AR5K_RF_GAIN(33), { 0x000000d9, 0x00000179 } },
0347 { AR5K_RF_GAIN(34), { 0x000000f9, 0x000001b9 } },
0348 { AR5K_RF_GAIN(35), { 0x000000f9, 0x000001f9 } },
0349 { AR5K_RF_GAIN(36), { 0x000000f9, 0x00000039 } },
0350 { AR5K_RF_GAIN(37), { 0x000000f9, 0x00000079 } },
0351 { AR5K_RF_GAIN(38), { 0x000000f9, 0x000000b9 } },
0352 { AR5K_RF_GAIN(39), { 0x000000f9, 0x000000f9 } },
0353 { AR5K_RF_GAIN(40), { 0x000000f9, 0x000000f9 } },
0354 { AR5K_RF_GAIN(41), { 0x000000f9, 0x000000f9 } },
0355 { AR5K_RF_GAIN(42), { 0x000000f9, 0x000000f9 } },
0356 { AR5K_RF_GAIN(43), { 0x000000f9, 0x000000f9 } },
0357 { AR5K_RF_GAIN(44), { 0x000000f9, 0x000000f9 } },
0358 { AR5K_RF_GAIN(45), { 0x000000f9, 0x000000f9 } },
0359 { AR5K_RF_GAIN(46), { 0x000000f9, 0x000000f9 } },
0360 { AR5K_RF_GAIN(47), { 0x000000f9, 0x000000f9 } },
0361 { AR5K_RF_GAIN(48), { 0x000000f9, 0x000000f9 } },
0362 { AR5K_RF_GAIN(49), { 0x000000f9, 0x000000f9 } },
0363 { AR5K_RF_GAIN(50), { 0x000000f9, 0x000000f9 } },
0364 { AR5K_RF_GAIN(51), { 0x000000f9, 0x000000f9 } },
0365 { AR5K_RF_GAIN(52), { 0x000000f9, 0x000000f9 } },
0366 { AR5K_RF_GAIN(53), { 0x000000f9, 0x000000f9 } },
0367 { AR5K_RF_GAIN(54), { 0x000000f9, 0x000000f9 } },
0368 { AR5K_RF_GAIN(55), { 0x000000f9, 0x000000f9 } },
0369 { AR5K_RF_GAIN(56), { 0x000000f9, 0x000000f9 } },
0370 { AR5K_RF_GAIN(57), { 0x000000f9, 0x000000f9 } },
0371 { AR5K_RF_GAIN(58), { 0x000000f9, 0x000000f9 } },
0372 { AR5K_RF_GAIN(59), { 0x000000f9, 0x000000f9 } },
0373 { AR5K_RF_GAIN(60), { 0x000000f9, 0x000000f9 } },
0374 { AR5K_RF_GAIN(61), { 0x000000f9, 0x000000f9 } },
0375 { AR5K_RF_GAIN(62), { 0x000000f9, 0x000000f9 } },
0376 { AR5K_RF_GAIN(63), { 0x000000f9, 0x000000f9 } },
0377 };
0378
0379
0380
0381 static const struct ath5k_ini_rfgain rfgain_2425[] = {
0382 { AR5K_RF_GAIN(0), { 0x00000000, 0x00000000 } },
0383 { AR5K_RF_GAIN(1), { 0x00000000, 0x00000040 } },
0384 { AR5K_RF_GAIN(2), { 0x00000000, 0x00000080 } },
0385 { AR5K_RF_GAIN(3), { 0x00000000, 0x00000181 } },
0386 { AR5K_RF_GAIN(4), { 0x00000000, 0x000001c1 } },
0387 { AR5K_RF_GAIN(5), { 0x00000000, 0x00000001 } },
0388 { AR5K_RF_GAIN(6), { 0x00000000, 0x00000041 } },
0389 { AR5K_RF_GAIN(7), { 0x00000000, 0x00000081 } },
0390 { AR5K_RF_GAIN(8), { 0x00000000, 0x00000188 } },
0391 { AR5K_RF_GAIN(9), { 0x00000000, 0x000001c8 } },
0392 { AR5K_RF_GAIN(10), { 0x00000000, 0x00000008 } },
0393 { AR5K_RF_GAIN(11), { 0x00000000, 0x00000048 } },
0394 { AR5K_RF_GAIN(12), { 0x00000000, 0x00000088 } },
0395 { AR5K_RF_GAIN(13), { 0x00000000, 0x00000189 } },
0396 { AR5K_RF_GAIN(14), { 0x00000000, 0x000001c9 } },
0397 { AR5K_RF_GAIN(15), { 0x00000000, 0x00000009 } },
0398 { AR5K_RF_GAIN(16), { 0x00000000, 0x00000049 } },
0399 { AR5K_RF_GAIN(17), { 0x00000000, 0x00000089 } },
0400 { AR5K_RF_GAIN(18), { 0x00000000, 0x000001b0 } },
0401 { AR5K_RF_GAIN(19), { 0x00000000, 0x000001f0 } },
0402 { AR5K_RF_GAIN(20), { 0x00000000, 0x00000030 } },
0403 { AR5K_RF_GAIN(21), { 0x00000000, 0x00000070 } },
0404 { AR5K_RF_GAIN(22), { 0x00000000, 0x00000171 } },
0405 { AR5K_RF_GAIN(23), { 0x00000000, 0x000001b1 } },
0406 { AR5K_RF_GAIN(24), { 0x00000000, 0x000001f1 } },
0407 { AR5K_RF_GAIN(25), { 0x00000000, 0x00000031 } },
0408 { AR5K_RF_GAIN(26), { 0x00000000, 0x00000071 } },
0409 { AR5K_RF_GAIN(27), { 0x00000000, 0x000001b8 } },
0410 { AR5K_RF_GAIN(28), { 0x00000000, 0x000001f8 } },
0411 { AR5K_RF_GAIN(29), { 0x00000000, 0x00000038 } },
0412 { AR5K_RF_GAIN(30), { 0x00000000, 0x00000078 } },
0413 { AR5K_RF_GAIN(31), { 0x00000000, 0x000000b8 } },
0414 { AR5K_RF_GAIN(32), { 0x00000000, 0x000001b9 } },
0415 { AR5K_RF_GAIN(33), { 0x00000000, 0x000001f9 } },
0416 { AR5K_RF_GAIN(34), { 0x00000000, 0x00000039 } },
0417 { AR5K_RF_GAIN(35), { 0x00000000, 0x00000079 } },
0418 { AR5K_RF_GAIN(36), { 0x00000000, 0x000000b9 } },
0419 { AR5K_RF_GAIN(37), { 0x00000000, 0x000000f9 } },
0420 { AR5K_RF_GAIN(38), { 0x00000000, 0x000000f9 } },
0421 { AR5K_RF_GAIN(39), { 0x00000000, 0x000000f9 } },
0422 { AR5K_RF_GAIN(40), { 0x00000000, 0x000000f9 } },
0423 { AR5K_RF_GAIN(41), { 0x00000000, 0x000000f9 } },
0424 { AR5K_RF_GAIN(42), { 0x00000000, 0x000000f9 } },
0425 { AR5K_RF_GAIN(43), { 0x00000000, 0x000000f9 } },
0426 { AR5K_RF_GAIN(44), { 0x00000000, 0x000000f9 } },
0427 { AR5K_RF_GAIN(45), { 0x00000000, 0x000000f9 } },
0428 { AR5K_RF_GAIN(46), { 0x00000000, 0x000000f9 } },
0429 { AR5K_RF_GAIN(47), { 0x00000000, 0x000000f9 } },
0430 { AR5K_RF_GAIN(48), { 0x00000000, 0x000000f9 } },
0431 { AR5K_RF_GAIN(49), { 0x00000000, 0x000000f9 } },
0432 { AR5K_RF_GAIN(50), { 0x00000000, 0x000000f9 } },
0433 { AR5K_RF_GAIN(51), { 0x00000000, 0x000000f9 } },
0434 { AR5K_RF_GAIN(52), { 0x00000000, 0x000000f9 } },
0435 { AR5K_RF_GAIN(53), { 0x00000000, 0x000000f9 } },
0436 { AR5K_RF_GAIN(54), { 0x00000000, 0x000000f9 } },
0437 { AR5K_RF_GAIN(55), { 0x00000000, 0x000000f9 } },
0438 { AR5K_RF_GAIN(56), { 0x00000000, 0x000000f9 } },
0439 { AR5K_RF_GAIN(57), { 0x00000000, 0x000000f9 } },
0440 { AR5K_RF_GAIN(58), { 0x00000000, 0x000000f9 } },
0441 { AR5K_RF_GAIN(59), { 0x00000000, 0x000000f9 } },
0442 { AR5K_RF_GAIN(60), { 0x00000000, 0x000000f9 } },
0443 { AR5K_RF_GAIN(61), { 0x00000000, 0x000000f9 } },
0444 { AR5K_RF_GAIN(62), { 0x00000000, 0x000000f9 } },
0445 { AR5K_RF_GAIN(63), { 0x00000000, 0x000000f9 } },
0446 };
0447
0448 #define AR5K_GAIN_CRN_FIX_BITS_5111 4
0449 #define AR5K_GAIN_CRN_FIX_BITS_5112 7
0450 #define AR5K_GAIN_CRN_MAX_FIX_BITS AR5K_GAIN_CRN_FIX_BITS_5112
0451 #define AR5K_GAIN_DYN_ADJUST_HI_MARGIN 15
0452 #define AR5K_GAIN_DYN_ADJUST_LO_MARGIN 20
0453 #define AR5K_GAIN_CCK_PROBE_CORR 5
0454 #define AR5K_GAIN_CCK_OFDM_GAIN_DELTA 15
0455 #define AR5K_GAIN_STEP_COUNT 10
0456
0457
0458
0459 #define AR5K_GAIN_CHECK_ADJUST(_g) \
0460 ((_g)->g_current <= (_g)->g_low || (_g)->g_current >= (_g)->g_high)
0461
0462
0463
0464
0465
0466
0467 struct ath5k_gain_opt_step {
0468 s8 gos_param[AR5K_GAIN_CRN_MAX_FIX_BITS];
0469 s8 gos_gain;
0470 };
0471
0472
0473
0474
0475
0476
0477
0478 struct ath5k_gain_opt {
0479 u8 go_default;
0480 u8 go_steps_count;
0481 const struct ath5k_gain_opt_step go_step[AR5K_GAIN_STEP_COUNT];
0482 };
0483
0484
0485
0486
0487
0488
0489
0490
0491
0492
0493 static const struct ath5k_gain_opt rfgain_opt_5111 = {
0494 4,
0495 9,
0496 {
0497 { { 4, 1, 1, 1 }, 6 },
0498 { { 4, 0, 1, 1 }, 4 },
0499 { { 3, 1, 1, 1 }, 3 },
0500 { { 4, 0, 0, 1 }, 1 },
0501 { { 4, 1, 1, 0 }, 0 },
0502 { { 4, 0, 1, 0 }, -2 },
0503 { { 3, 1, 1, 0 }, -3 },
0504 { { 4, 0, 0, 0 }, -4 },
0505 { { 2, 1, 1, 0 }, -6 }
0506 }
0507 };
0508
0509
0510
0511
0512
0513
0514
0515
0516
0517
0518
0519
0520 static const struct ath5k_gain_opt rfgain_opt_5112 = {
0521 1,
0522 8,
0523 {
0524 { { 3, 0, 0, 0, 0, 0, 0 }, 6 },
0525 { { 2, 0, 0, 0, 0, 0, 0 }, 0 },
0526 { { 1, 0, 0, 0, 0, 0, 0 }, -3 },
0527 { { 0, 0, 0, 0, 0, 0, 0 }, -6 },
0528 { { 0, 1, 1, 0, 0, 0, 0 }, -8 },
0529 { { 0, 1, 1, 0, 1, 1, 0 }, -10 },
0530 { { 0, 1, 0, 1, 1, 1, 0 }, -13 },
0531 { { 0, 1, 0, 1, 1, 0, 1 }, -16 },
0532 }
0533 };
0534