Annotation of qemu/roms/ipxe/src/drivers/net/ath5k/rfgain.h, revision 1.1

1.1     ! root        1: /*
        !             2:  * RF Gain optimization
        !             3:  *
        !             4:  * Copyright (c) 2004-2009 Reyk Floeter <[email protected]>
        !             5:  * Copyright (c) 2006-2009 Nick Kossifidis <[email protected]>
        !             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: 
        !           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: 
        !           463: struct ath5k_gain_opt {
        !           464:        u8                              go_default;
        !           465:        u8                              go_steps_count;
        !           466:        const struct ath5k_gain_opt_step        go_step[AR5K_GAIN_STEP_COUNT];
        !           467: };
        !           468: 
        !           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:  */
        !           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: 
        !           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:  */
        !           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: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.