0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015 #include "b43legacy.h"
0016 #include "ilt.h"
0017 #include "phy.h"
0018
0019
0020
0021
0022 const u32 b43legacy_ilt_rotor[B43legacy_ILT_ROTOR_SIZE] = {
0023 0xFEB93FFD, 0xFEC63FFD,
0024 0xFED23FFD, 0xFEDF3FFD,
0025 0xFEEC3FFE, 0xFEF83FFE,
0026 0xFF053FFE, 0xFF113FFE,
0027 0xFF1E3FFE, 0xFF2A3FFF,
0028 0xFF373FFF, 0xFF443FFF,
0029 0xFF503FFF, 0xFF5D3FFF,
0030 0xFF693FFF, 0xFF763FFF,
0031 0xFF824000, 0xFF8F4000,
0032 0xFF9B4000, 0xFFA84000,
0033 0xFFB54000, 0xFFC14000,
0034 0xFFCE4000, 0xFFDA4000,
0035 0xFFE74000, 0xFFF34000,
0036 0x00004000, 0x000D4000,
0037 0x00194000, 0x00264000,
0038 0x00324000, 0x003F4000,
0039 0x004B4000, 0x00584000,
0040 0x00654000, 0x00714000,
0041 0x007E4000, 0x008A3FFF,
0042 0x00973FFF, 0x00A33FFF,
0043 0x00B03FFF, 0x00BC3FFF,
0044 0x00C93FFF, 0x00D63FFF,
0045 0x00E23FFE, 0x00EF3FFE,
0046 0x00FB3FFE, 0x01083FFE,
0047 0x01143FFE, 0x01213FFD,
0048 0x012E3FFD, 0x013A3FFD,
0049 0x01473FFD,
0050 };
0051
0052 const u32 b43legacy_ilt_retard[B43legacy_ILT_RETARD_SIZE] = {
0053 0xDB93CB87, 0xD666CF64,
0054 0xD1FDD358, 0xCDA6D826,
0055 0xCA38DD9F, 0xC729E2B4,
0056 0xC469E88E, 0xC26AEE2B,
0057 0xC0DEF46C, 0xC073FA62,
0058 0xC01D00D5, 0xC0760743,
0059 0xC1560D1E, 0xC2E51369,
0060 0xC4ED18FF, 0xC7AC1ED7,
0061 0xCB2823B2, 0xCEFA28D9,
0062 0xD2F62D3F, 0xD7BB3197,
0063 0xDCE53568, 0xE1FE3875,
0064 0xE7D13B35, 0xED663D35,
0065 0xF39B3EC4, 0xF98E3FA7,
0066 0x00004000, 0x06723FA7,
0067 0x0C653EC4, 0x129A3D35,
0068 0x182F3B35, 0x1E023875,
0069 0x231B3568, 0x28453197,
0070 0x2D0A2D3F, 0x310628D9,
0071 0x34D823B2, 0x38541ED7,
0072 0x3B1318FF, 0x3D1B1369,
0073 0x3EAA0D1E, 0x3F8A0743,
0074 0x3FE300D5, 0x3F8DFA62,
0075 0x3F22F46C, 0x3D96EE2B,
0076 0x3B97E88E, 0x38D7E2B4,
0077 0x35C8DD9F, 0x325AD826,
0078 0x2E03D358, 0x299ACF64,
0079 0x246DCB87,
0080 };
0081
0082 const u16 b43legacy_ilt_finefreqa[B43legacy_ILT_FINEFREQA_SIZE] = {
0083 0x0082, 0x0082, 0x0102, 0x0182,
0084 0x0202, 0x0282, 0x0302, 0x0382,
0085 0x0402, 0x0482, 0x0502, 0x0582,
0086 0x05E2, 0x0662, 0x06E2, 0x0762,
0087 0x07E2, 0x0842, 0x08C2, 0x0942,
0088 0x09C2, 0x0A22, 0x0AA2, 0x0B02,
0089 0x0B82, 0x0BE2, 0x0C62, 0x0CC2,
0090 0x0D42, 0x0DA2, 0x0E02, 0x0E62,
0091 0x0EE2, 0x0F42, 0x0FA2, 0x1002,
0092 0x1062, 0x10C2, 0x1122, 0x1182,
0093 0x11E2, 0x1242, 0x12A2, 0x12E2,
0094 0x1342, 0x13A2, 0x1402, 0x1442,
0095 0x14A2, 0x14E2, 0x1542, 0x1582,
0096 0x15E2, 0x1622, 0x1662, 0x16C1,
0097 0x1701, 0x1741, 0x1781, 0x17E1,
0098 0x1821, 0x1861, 0x18A1, 0x18E1,
0099 0x1921, 0x1961, 0x19A1, 0x19E1,
0100 0x1A21, 0x1A61, 0x1AA1, 0x1AC1,
0101 0x1B01, 0x1B41, 0x1B81, 0x1BA1,
0102 0x1BE1, 0x1C21, 0x1C41, 0x1C81,
0103 0x1CA1, 0x1CE1, 0x1D01, 0x1D41,
0104 0x1D61, 0x1DA1, 0x1DC1, 0x1E01,
0105 0x1E21, 0x1E61, 0x1E81, 0x1EA1,
0106 0x1EE1, 0x1F01, 0x1F21, 0x1F41,
0107 0x1F81, 0x1FA1, 0x1FC1, 0x1FE1,
0108 0x2001, 0x2041, 0x2061, 0x2081,
0109 0x20A1, 0x20C1, 0x20E1, 0x2101,
0110 0x2121, 0x2141, 0x2161, 0x2181,
0111 0x21A1, 0x21C1, 0x21E1, 0x2201,
0112 0x2221, 0x2241, 0x2261, 0x2281,
0113 0x22A1, 0x22C1, 0x22C1, 0x22E1,
0114 0x2301, 0x2321, 0x2341, 0x2361,
0115 0x2361, 0x2381, 0x23A1, 0x23C1,
0116 0x23E1, 0x23E1, 0x2401, 0x2421,
0117 0x2441, 0x2441, 0x2461, 0x2481,
0118 0x2481, 0x24A1, 0x24C1, 0x24C1,
0119 0x24E1, 0x2501, 0x2501, 0x2521,
0120 0x2541, 0x2541, 0x2561, 0x2561,
0121 0x2581, 0x25A1, 0x25A1, 0x25C1,
0122 0x25C1, 0x25E1, 0x2601, 0x2601,
0123 0x2621, 0x2621, 0x2641, 0x2641,
0124 0x2661, 0x2661, 0x2681, 0x2681,
0125 0x26A1, 0x26A1, 0x26C1, 0x26C1,
0126 0x26E1, 0x26E1, 0x2701, 0x2701,
0127 0x2721, 0x2721, 0x2740, 0x2740,
0128 0x2760, 0x2760, 0x2780, 0x2780,
0129 0x2780, 0x27A0, 0x27A0, 0x27C0,
0130 0x27C0, 0x27E0, 0x27E0, 0x27E0,
0131 0x2800, 0x2800, 0x2820, 0x2820,
0132 0x2820, 0x2840, 0x2840, 0x2840,
0133 0x2860, 0x2860, 0x2880, 0x2880,
0134 0x2880, 0x28A0, 0x28A0, 0x28A0,
0135 0x28C0, 0x28C0, 0x28C0, 0x28E0,
0136 0x28E0, 0x28E0, 0x2900, 0x2900,
0137 0x2900, 0x2920, 0x2920, 0x2920,
0138 0x2940, 0x2940, 0x2940, 0x2960,
0139 0x2960, 0x2960, 0x2960, 0x2980,
0140 0x2980, 0x2980, 0x29A0, 0x29A0,
0141 0x29A0, 0x29A0, 0x29C0, 0x29C0,
0142 0x29C0, 0x29E0, 0x29E0, 0x29E0,
0143 0x29E0, 0x2A00, 0x2A00, 0x2A00,
0144 0x2A00, 0x2A20, 0x2A20, 0x2A20,
0145 0x2A20, 0x2A40, 0x2A40, 0x2A40,
0146 0x2A40, 0x2A60, 0x2A60, 0x2A60,
0147 };
0148
0149 const u16 b43legacy_ilt_finefreqg[B43legacy_ILT_FINEFREQG_SIZE] = {
0150 0x0089, 0x02E9, 0x0409, 0x04E9,
0151 0x05A9, 0x0669, 0x0709, 0x0789,
0152 0x0829, 0x08A9, 0x0929, 0x0989,
0153 0x0A09, 0x0A69, 0x0AC9, 0x0B29,
0154 0x0BA9, 0x0BE9, 0x0C49, 0x0CA9,
0155 0x0D09, 0x0D69, 0x0DA9, 0x0E09,
0156 0x0E69, 0x0EA9, 0x0F09, 0x0F49,
0157 0x0FA9, 0x0FE9, 0x1029, 0x1089,
0158 0x10C9, 0x1109, 0x1169, 0x11A9,
0159 0x11E9, 0x1229, 0x1289, 0x12C9,
0160 0x1309, 0x1349, 0x1389, 0x13C9,
0161 0x1409, 0x1449, 0x14A9, 0x14E9,
0162 0x1529, 0x1569, 0x15A9, 0x15E9,
0163 0x1629, 0x1669, 0x16A9, 0x16E8,
0164 0x1728, 0x1768, 0x17A8, 0x17E8,
0165 0x1828, 0x1868, 0x18A8, 0x18E8,
0166 0x1928, 0x1968, 0x19A8, 0x19E8,
0167 0x1A28, 0x1A68, 0x1AA8, 0x1AE8,
0168 0x1B28, 0x1B68, 0x1BA8, 0x1BE8,
0169 0x1C28, 0x1C68, 0x1CA8, 0x1CE8,
0170 0x1D28, 0x1D68, 0x1DC8, 0x1E08,
0171 0x1E48, 0x1E88, 0x1EC8, 0x1F08,
0172 0x1F48, 0x1F88, 0x1FE8, 0x2028,
0173 0x2068, 0x20A8, 0x2108, 0x2148,
0174 0x2188, 0x21C8, 0x2228, 0x2268,
0175 0x22C8, 0x2308, 0x2348, 0x23A8,
0176 0x23E8, 0x2448, 0x24A8, 0x24E8,
0177 0x2548, 0x25A8, 0x2608, 0x2668,
0178 0x26C8, 0x2728, 0x2787, 0x27E7,
0179 0x2847, 0x28C7, 0x2947, 0x29A7,
0180 0x2A27, 0x2AC7, 0x2B47, 0x2BE7,
0181 0x2CA7, 0x2D67, 0x2E47, 0x2F67,
0182 0x3247, 0x3526, 0x3646, 0x3726,
0183 0x3806, 0x38A6, 0x3946, 0x39E6,
0184 0x3A66, 0x3AE6, 0x3B66, 0x3BC6,
0185 0x3C45, 0x3CA5, 0x3D05, 0x3D85,
0186 0x3DE5, 0x3E45, 0x3EA5, 0x3EE5,
0187 0x3F45, 0x3FA5, 0x4005, 0x4045,
0188 0x40A5, 0x40E5, 0x4145, 0x4185,
0189 0x41E5, 0x4225, 0x4265, 0x42C5,
0190 0x4305, 0x4345, 0x43A5, 0x43E5,
0191 0x4424, 0x4464, 0x44C4, 0x4504,
0192 0x4544, 0x4584, 0x45C4, 0x4604,
0193 0x4644, 0x46A4, 0x46E4, 0x4724,
0194 0x4764, 0x47A4, 0x47E4, 0x4824,
0195 0x4864, 0x48A4, 0x48E4, 0x4924,
0196 0x4964, 0x49A4, 0x49E4, 0x4A24,
0197 0x4A64, 0x4AA4, 0x4AE4, 0x4B23,
0198 0x4B63, 0x4BA3, 0x4BE3, 0x4C23,
0199 0x4C63, 0x4CA3, 0x4CE3, 0x4D23,
0200 0x4D63, 0x4DA3, 0x4DE3, 0x4E23,
0201 0x4E63, 0x4EA3, 0x4EE3, 0x4F23,
0202 0x4F63, 0x4FC3, 0x5003, 0x5043,
0203 0x5083, 0x50C3, 0x5103, 0x5143,
0204 0x5183, 0x51E2, 0x5222, 0x5262,
0205 0x52A2, 0x52E2, 0x5342, 0x5382,
0206 0x53C2, 0x5402, 0x5462, 0x54A2,
0207 0x5502, 0x5542, 0x55A2, 0x55E2,
0208 0x5642, 0x5682, 0x56E2, 0x5722,
0209 0x5782, 0x57E1, 0x5841, 0x58A1,
0210 0x5901, 0x5961, 0x59C1, 0x5A21,
0211 0x5AA1, 0x5B01, 0x5B81, 0x5BE1,
0212 0x5C61, 0x5D01, 0x5D80, 0x5E20,
0213 0x5EE0, 0x5FA0, 0x6080, 0x61C0,
0214 };
0215
0216 const u16 b43legacy_ilt_noisea2[B43legacy_ILT_NOISEA2_SIZE] = {
0217 0x0001, 0x0001, 0x0001, 0xFFFE,
0218 0xFFFE, 0x3FFF, 0x1000, 0x0393,
0219 };
0220
0221 const u16 b43legacy_ilt_noisea3[B43legacy_ILT_NOISEA3_SIZE] = {
0222 0x4C4C, 0x4C4C, 0x4C4C, 0x2D36,
0223 0x4C4C, 0x4C4C, 0x4C4C, 0x2D36,
0224 };
0225
0226 const u16 b43legacy_ilt_noiseg1[B43legacy_ILT_NOISEG1_SIZE] = {
0227 0x013C, 0x01F5, 0x031A, 0x0631,
0228 0x0001, 0x0001, 0x0001, 0x0001,
0229 };
0230
0231 const u16 b43legacy_ilt_noiseg2[B43legacy_ILT_NOISEG2_SIZE] = {
0232 0x5484, 0x3C40, 0x0000, 0x0000,
0233 0x0000, 0x0000, 0x0000, 0x0000,
0234 };
0235
0236 const u16 b43legacy_ilt_noisescaleg1[B43legacy_ILT_NOISESCALEG_SIZE] = {
0237 0x6C77, 0x5162, 0x3B40, 0x3335,
0238 0x2F2D, 0x2A2A, 0x2527, 0x1F21,
0239 0x1A1D, 0x1719, 0x1616, 0x1414,
0240 0x1414, 0x1400, 0x1414, 0x1614,
0241 0x1716, 0x1A19, 0x1F1D, 0x2521,
0242 0x2A27, 0x2F2A, 0x332D, 0x3B35,
0243 0x5140, 0x6C62, 0x0077,
0244 };
0245
0246 const u16 b43legacy_ilt_noisescaleg2[B43legacy_ILT_NOISESCALEG_SIZE] = {
0247 0xD8DD, 0xCBD4, 0xBCC0, 0XB6B7,
0248 0xB2B0, 0xADAD, 0xA7A9, 0x9FA1,
0249 0x969B, 0x9195, 0x8F8F, 0x8A8A,
0250 0x8A8A, 0x8A00, 0x8A8A, 0x8F8A,
0251 0x918F, 0x9695, 0x9F9B, 0xA7A1,
0252 0xADA9, 0xB2AD, 0xB6B0, 0xBCB7,
0253 0xCBC0, 0xD8D4, 0x00DD,
0254 };
0255
0256 const u16 b43legacy_ilt_noisescaleg3[B43legacy_ILT_NOISESCALEG_SIZE] = {
0257 0xA4A4, 0xA4A4, 0xA4A4, 0xA4A4,
0258 0xA4A4, 0xA4A4, 0xA4A4, 0xA4A4,
0259 0xA4A4, 0xA4A4, 0xA4A4, 0xA4A4,
0260 0xA4A4, 0xA400, 0xA4A4, 0xA4A4,
0261 0xA4A4, 0xA4A4, 0xA4A4, 0xA4A4,
0262 0xA4A4, 0xA4A4, 0xA4A4, 0xA4A4,
0263 0xA4A4, 0xA4A4, 0x00A4,
0264 };
0265
0266 const u16 b43legacy_ilt_sigmasqr1[B43legacy_ILT_SIGMASQR_SIZE] = {
0267 0x007A, 0x0075, 0x0071, 0x006C,
0268 0x0067, 0x0063, 0x005E, 0x0059,
0269 0x0054, 0x0050, 0x004B, 0x0046,
0270 0x0042, 0x003D, 0x003D, 0x003D,
0271 0x003D, 0x003D, 0x003D, 0x003D,
0272 0x003D, 0x003D, 0x003D, 0x003D,
0273 0x003D, 0x003D, 0x0000, 0x003D,
0274 0x003D, 0x003D, 0x003D, 0x003D,
0275 0x003D, 0x003D, 0x003D, 0x003D,
0276 0x003D, 0x003D, 0x003D, 0x003D,
0277 0x0042, 0x0046, 0x004B, 0x0050,
0278 0x0054, 0x0059, 0x005E, 0x0063,
0279 0x0067, 0x006C, 0x0071, 0x0075,
0280 0x007A,
0281 };
0282
0283 const u16 b43legacy_ilt_sigmasqr2[B43legacy_ILT_SIGMASQR_SIZE] = {
0284 0x00DE, 0x00DC, 0x00DA, 0x00D8,
0285 0x00D6, 0x00D4, 0x00D2, 0x00CF,
0286 0x00CD, 0x00CA, 0x00C7, 0x00C4,
0287 0x00C1, 0x00BE, 0x00BE, 0x00BE,
0288 0x00BE, 0x00BE, 0x00BE, 0x00BE,
0289 0x00BE, 0x00BE, 0x00BE, 0x00BE,
0290 0x00BE, 0x00BE, 0x0000, 0x00BE,
0291 0x00BE, 0x00BE, 0x00BE, 0x00BE,
0292 0x00BE, 0x00BE, 0x00BE, 0x00BE,
0293 0x00BE, 0x00BE, 0x00BE, 0x00BE,
0294 0x00C1, 0x00C4, 0x00C7, 0x00CA,
0295 0x00CD, 0x00CF, 0x00D2, 0x00D4,
0296 0x00D6, 0x00D8, 0x00DA, 0x00DC,
0297 0x00DE,
0298 };
0299
0300
0301
0302 void b43legacy_ilt_write(struct b43legacy_wldev *dev, u16 offset, u16 val)
0303 {
0304 b43legacy_phy_write(dev, B43legacy_PHY_ILT_G_CTRL, offset);
0305 b43legacy_phy_write(dev, B43legacy_PHY_ILT_G_DATA1, val);
0306 }
0307
0308 void b43legacy_ilt_write32(struct b43legacy_wldev *dev, u16 offset, u32 val)
0309 {
0310 b43legacy_phy_write(dev, B43legacy_PHY_ILT_G_CTRL, offset);
0311 b43legacy_phy_write(dev, B43legacy_PHY_ILT_G_DATA2,
0312 (val & 0xFFFF0000) >> 16);
0313 b43legacy_phy_write(dev, B43legacy_PHY_ILT_G_DATA1,
0314 val & 0x0000FFFF);
0315 }
0316
0317 u16 b43legacy_ilt_read(struct b43legacy_wldev *dev, u16 offset)
0318 {
0319 b43legacy_phy_write(dev, B43legacy_PHY_ILT_G_CTRL, offset);
0320 return b43legacy_phy_read(dev, B43legacy_PHY_ILT_G_DATA1);
0321 }