/*
 * RF Gain optimization
 *
 * Copyright (c) 2004-2009 Reyk Floeter <reyk@openbsd.org>
 * Copyright (c) 2006-2009 Nick Kossifidis <mickflemm@gmail.com>
 *
 * Permission to use, copy, modify, and distribute this software for any
 * purpose with or without fee is hereby granted, provided that the above
 * copyright notice and this permission notice appear in all copies.
 *
 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 *
 */

/**
 * struct ath5k_ini_rfgain - RF Gain table
 * @rfg_register: RF Gain register address
 * @rfg_value: Register value for 5 and 2GHz
 *
 * Mode-specific RF Gain table (64bytes) for RF5111/5112
 * (RF5110 only comes with AR5210 and only supports a/turbo a mode so initial
 * RF Gain values are included in AR5K_AR5210_INI)
 */
struct ath5k_ini_rfgain {
	u16	rfg_register;
	u32	rfg_value[2];	/* [freq (see below)] */
};

/* Initial RF Gain settings for RF5111 */
static const struct ath5k_ini_rfgain rfgain_5111[] = {
	/*			      5GHz	2GHz	*/
	{ AR5K_RF_GAIN(0),	{ 0x000001a9, 0x00000000 } },
	{ AR5K_RF_GAIN(1),	{ 0x000001e9, 0x00000040 } },
	{ AR5K_RF_GAIN(2),	{ 0x00000029, 0x00000080 } },
	{ AR5K_RF_GAIN(3),	{ 0x00000069, 0x00000150 } },
	{ AR5K_RF_GAIN(4),	{ 0x00000199, 0x00000190 } },
	{ AR5K_RF_GAIN(5),	{ 0x000001d9, 0x000001d0 } },
	{ AR5K_RF_GAIN(6),	{ 0x00000019, 0x00000010 } },
	{ AR5K_RF_GAIN(7),	{ 0x00000059, 0x00000044 } },
	{ AR5K_RF_GAIN(8),	{ 0x00000099, 0x00000084 } },
	{ AR5K_RF_GAIN(9),	{ 0x000001a5, 0x00000148 } },
	{ AR5K_RF_GAIN(10),	{ 0x000001e5, 0x00000188 } },
	{ AR5K_RF_GAIN(11),	{ 0x00000025, 0x000001c8 } },
	{ AR5K_RF_GAIN(12),	{ 0x000001c8, 0x00000014 } },
	{ AR5K_RF_GAIN(13),	{ 0x00000008, 0x00000042 } },
	{ AR5K_RF_GAIN(14),	{ 0x00000048, 0x00000082 } },
	{ AR5K_RF_GAIN(15),	{ 0x00000088, 0x00000178 } },
	{ AR5K_RF_GAIN(16),	{ 0x00000198, 0x000001b8 } },
	{ AR5K_RF_GAIN(17),	{ 0x000001d8, 0x000001f8 } },
	{ AR5K_RF_GAIN(18),	{ 0x00000018, 0x00000012 } },
	{ AR5K_RF_GAIN(19),	{ 0x00000058, 0x00000052 } },
	{ AR5K_RF_GAIN(20),	{ 0x00000098, 0x00000092 } },
	{ AR5K_RF_GAIN(21),	{ 0x000001a4, 0x0000017c } },
	{ AR5K_RF_GAIN(22),	{ 0x000001e4, 0x000001bc } },
	{ AR5K_RF_GAIN(23),	{ 0x00000024, 0x000001fc } },
	{ AR5K_RF_GAIN(24),	{ 0x00000064, 0x0000000a } },
	{ AR5K_RF_GAIN(25),	{ 0x000000a4, 0x0000004a } },
	{ AR5K_RF_GAIN(26),	{ 0x000000e4, 0x0000008a } },
	{ AR5K_RF_GAIN(27),	{ 0x0000010a, 0x0000015a } },
	{ AR5K_RF_GAIN(28),	{ 0x0000014a, 0x0000019a } },
	{ AR5K_RF_GAIN(29),	{ 0x0000018a, 0x000001da } },
	{ AR5K_RF_GAIN(30),	{ 0x000001ca, 0x0000000e } },
	{ AR5K_RF_GAIN(31),	{ 0x0000000a, 0x0000004e } },
	{ AR5K_RF_GAIN(32),	{ 0x0000004a, 0x0000008e } },
	{ AR5K_RF_GAIN(33),	{ 0x0000008a, 0x0000015e } },
	{ AR5K_RF_GAIN(34),	{ 0x000001ba, 0x0000019e } },
	{ AR5K_RF_GAIN(35),	{ 0x000001fa, 0x000001de } },
	{ AR5K_RF_GAIN(36),	{ 0x0000003a, 0x00000009 } },
	{ AR5K_RF_GAIN(37),	{ 0x0000007a, 0x00000049 } },
	{ AR5K_RF_GAIN(38),	{ 0x00000186, 0x00000089 } },
	{ AR5K_RF_GAIN(39),	{ 0x000001c6, 0x00000179 } },
	{ AR5K_RF_GAIN(40),	{ 0x00000006, 0x000001b9 } },
	{ AR5K_RF_GAIN(41),	{ 0x00000046, 0x000001f9 } },
	{ AR5K_RF_GAIN(42),	{ 0x00000086, 0x00000039 } },
	{ AR5K_RF_GAIN(43),	{ 0x000000c6, 0x00000079 } },
	{ AR5K_RF_GAIN(44),	{ 0x000000c6, 0x000000b9 } },
	{ AR5K_RF_GAIN(45),	{ 0x000000c6, 0x000001bd } },
	{ AR5K_RF_GAIN(46),	{ 0x000000c6, 0x000001fd } },
	{ AR5K_RF_GAIN(47),	{ 0x000000c6, 0x0000003d } },
	{ AR5K_RF_GAIN(48),	{ 0x000000c6, 0x0000007d } },
	{ AR5K_RF_GAIN(49),	{ 0x000000c6, 0x000000bd } },
	{ AR5K_RF_GAIN(50),	{ 0x000000c6, 0x000000fd } },
	{ AR5K_RF_GAIN(51),	{ 0x000000c6, 0x000000fd } },
	{ AR5K_RF_GAIN(52),	{ 0x000000c6, 0x000000fd } },
	{ AR5K_RF_GAIN(53),	{ 0x000000c6, 0x000000fd } },
	{ AR5K_RF_GAIN(54),	{ 0x000000c6, 0x000000fd } },
	{ AR5K_RF_GAIN(55),	{ 0x000000c6, 0x000000fd } },
	{ AR5K_RF_GAIN(56),	{ 0x000000c6, 0x000000fd } },
	{ AR5K_RF_GAIN(57),	{ 0x000000c6, 0x000000fd } },
	{ AR5K_RF_GAIN(58),	{ 0x000000c6, 0x000000fd } },
	{ AR5K_RF_GAIN(59),	{ 0x000000c6, 0x000000fd } },
	{ AR5K_RF_GAIN(60),	{ 0x000000c6, 0x000000fd } },
	{ AR5K_RF_GAIN(61),	{ 0x000000c6, 0x000000fd } },
	{ AR5K_RF_GAIN(62),	{ 0x000000c6, 0x000000fd } },
	{ AR5K_RF_GAIN(63),	{ 0x000000c6, 0x000000fd } },
};

/* Initial RF Gain settings for RF5112 */
static const struct ath5k_ini_rfgain rfgain_5112[] = {
	/*			      5GHz	2GHz	*/
	{ AR5K_RF_GAIN(0),	{ 0x00000007, 0x00000007 } },
	{ AR5K_RF_GAIN(1),	{ 0x00000047, 0x00000047 } },
	{ AR5K_RF_GAIN(2),	{ 0x00000087, 0x00000087 } },
	{ AR5K_RF_GAIN(3),	{ 0x000001a0, 0x000001a0 } },
	{ AR5K_RF_GAIN(4),	{ 0x000001e0, 0x000001e0 } },
	{ AR5K_RF_GAIN(5),	{ 0x00000020, 0x00000020 } },
	{ AR5K_RF_GAIN(6),	{ 0x00000060, 0x00000060 } },
	{ AR5K_RF_GAIN(7),	{ 0x000001a1, 0x000001a1 } },
	{ AR5K_RF_GAIN(8),	{ 0x000001e1, 0x000001e1 } },
	{ AR5K_RF_GAIN(9),	{ 0x00000021, 0x00000021 } },
	{ AR5K_RF_GAIN(10),	{ 0x00000061, 0x00000061 } },
	{ AR5K_RF_GAIN(11),	{ 0x00000162, 0x00000162 } },
	{ AR5K_RF_GAIN(12),	{ 0x000001a2, 0x000001a2 } },
	{ AR5K_RF_GAIN(13),	{ 0x000001e2, 0x000001e2 } },
	{ AR5K_RF_GAIN(14),	{ 0x00000022, 0x00000022 } },
	{ AR5K_RF_GAIN(15),	{ 0x00000062, 0x00000062 } },
	{ AR5K_RF_GAIN(16),	{ 0x00000163, 0x00000163 } },
	{ AR5K_RF_GAIN(17),	{ 0x000001a3, 0x000001a3 } },
	{ AR5K_RF_GAIN(18),	{ 0x000001e3, 0x000001e3 } },
	{ AR5K_RF_GAIN(19),	{ 0x00000023, 0x00000023 } },
	{ AR5K_RF_GAIN(20),	{ 0x00000063, 0x00000063 } },
	{ AR5K_RF_GAIN(21),	{ 0x00000184, 0x00000184 } },
	{ AR5K_RF_GAIN(22),	{ 0x000001c4, 0x000001c4 } },
	{ AR5K_RF_GAIN(23),	{ 0x00000004, 0x00000004 } },
	{ AR5K_RF_GAIN(24),	{ 0x000001ea, 0x0000000b } },
	{ AR5K_RF_GAIN(25),	{ 0x0000002a, 0x0000004b } },
	{ AR5K_RF_GAIN(26),	{ 0x0000006a, 0x0000008b } },
	{ AR5K_RF_GAIN(27),	{ 0x000000aa, 0x000001ac } },
	{ AR5K_RF_GAIN(28),	{ 0x000001ab, 0x000001ec } },
	{ AR5K_RF_GAIN(29),	{ 0x000001eb, 0x0000002c } },
	{ AR5K_RF_GAIN(30),	{ 0x0000002b, 0x00000012 } },
	{ AR5K_RF_GAIN(31),	{ 0x0000006b, 0x00000052 } },
	{ AR5K_RF_GAIN(32),	{ 0x000000ab, 0x00000092 } },
	{ AR5K_RF_GAIN(33),	{ 0x000001ac, 0x00000193 } },
	{ AR5K_RF_GAIN(34),	{ 0x000001ec, 0x000001d3 } },
	{ AR5K_RF_GAIN(35),	{ 0x0000002c, 0x00000013 } },
	{ AR5K_RF_GAIN(36),	{ 0x0000003a, 0x00000053 } },
	{ AR5K_RF_GAIN(37),	{ 0x0000007a, 0x00000093 } },
	{ AR5K_RF_GAIN(38),	{ 0x000000ba, 0x00000194 } },
	{ AR5K_RF_GAIN(39),	{ 0x000001bb, 0x000001d4 } },
	{ AR5K_RF_GAIN(40),	{ 0x000001fb, 0x00000014 } },
	{ AR5K_RF_GAIN(41),	{ 0x0000003b, 0x0000003a } },
	{ AR5K_RF_GAIN(42),	{ 0x0000007b, 0x0000007a } },
	{ AR5K_RF_GAIN(43),	{ 0x000000bb, 0x000000ba } },
	{ AR5K_RF_GAIN(44),	{ 0x000001bc, 0x000001bb } },
	{ AR5K_RF_GAIN(45),	{ 0x000001fc, 0x000001fb } },
	{ AR5K_RF_GAIN(46),	{ 0x0000003c, 0x0000003b } },
	{ AR5K_RF_GAIN(47),	{ 0x0000007c, 0x0000007b } },
	{ AR5K_RF_GAIN(48),	{ 0x000000bc, 0x000000bb } },
	{ AR5K_RF_GAIN(49),	{ 0x000000fc, 0x000001bc } },
	{ AR5K_RF_GAIN(50),	{ 0x000000fc, 0x000001fc } },
	{ AR5K_RF_GAIN(51),	{ 0x000000fc, 0x0000003c } },
	{ AR5K_RF_GAIN(52),	{ 0x000000fc, 0x0000007c } },
	{ AR5K_RF_GAIN(53),	{ 0x000000fc, 0x000000bc } },
	{ AR5K_RF_GAIN(54),	{ 0x000000fc, 0x000000fc } },
	{ AR5K_RF_GAIN(55),	{ 0x000000fc, 0x000000fc } },
	{ AR5K_RF_GAIN(56),	{ 0x000000fc, 0x000000fc } },
	{ AR5K_RF_GAIN(57),	{ 0x000000fc, 0x000000fc } },
	{ AR5K_RF_GAIN(58),	{ 0x000000fc, 0x000000fc } },
	{ AR5K_RF_GAIN(59),	{ 0x000000fc, 0x000000fc } },
	{ AR5K_RF_GAIN(60),	{ 0x000000fc, 0x000000fc } },
	{ AR5K_RF_GAIN(61),	{ 0x000000fc, 0x000000fc } },
	{ AR5K_RF_GAIN(62),	{ 0x000000fc, 0x000000fc } },
	{ AR5K_RF_GAIN(63),	{ 0x000000fc, 0x000000fc } },
};

/* Initial RF Gain settings for RF2413 */
static const struct ath5k_ini_rfgain rfgain_2413[] = {
	{ AR5K_RF_GAIN(0),	{ 0x00000000, 0x00000000 } },
	{ AR5K_RF_GAIN(1),	{ 0x00000000, 0x00000040 } },
	{ AR5K_RF_GAIN(2),	{ 0x00000000, 0x00000080 } },
	{ AR5K_RF_GAIN(3),	{ 0x00000000, 0x00000181 } },
	{ AR5K_RF_GAIN(4),	{ 0x00000000, 0x000001c1 } },
	{ AR5K_RF_GAIN(5),	{ 0x00000000, 0x00000001 } },
	{ AR5K_RF_GAIN(6),	{ 0x00000000, 0x00000041 } },
	{ AR5K_RF_GAIN(7),	{ 0x00000000, 0x00000081 } },
	{ AR5K_RF_GAIN(8),	{ 0x00000000, 0x00000168 } },
	{ AR5K_RF_GAIN(9),	{ 0x00000000, 0x000001a8 } },
	{ AR5K_RF_GAIN(10),	{ 0x00000000, 0x000001e8 } },
	{ AR5K_RF_GAIN(11),	{ 0x00000000, 0x00000028 } },
	{ AR5K_RF_GAIN(12),	{ 0x00000000, 0x00000068 } },
	{ AR5K_RF_GAIN(13),	{ 0x00000000, 0x00000189 } },
	{ AR5K_RF_GAIN(14),	{ 0x00000000, 0x000001c9 } },
	{ AR5K_RF_GAIN(15),	{ 0x00000000, 0x00000009 } },
	{ AR5K_RF_GAIN(16),	{ 0x00000000, 0x00000049 } },
	{ AR5K_RF_GAIN(17),	{ 0x00000000, 0x00000089 } },
	{ AR5K_RF_GAIN(18),	{ 0x00000000, 0x00000190 } },
	{ AR5K_RF_GAIN(19),	{ 0x00000000, 0x000001d0 } },
	{ AR5K_RF_GAIN(20),	{ 0x00000000, 0x00000010 } },
	{ AR5K_RF_GAIN(21),	{ 0x00000000, 0x00000050 } },
	{ AR5K_RF_GAIN(22),	{ 0x00000000, 0x00000090 } },
	{ AR5K_RF_GAIN(23),	{ 0x00000000, 0x00000191 } },
	{ AR5K_RF_GAIN(24),	{ 0x00000000, 0x000001d1 } },
	{ AR5K_RF_GAIN(25),	{ 0x00000000, 0x00000011 } },
	{ AR5K_RF_GAIN(26),	{ 0x00000000, 0x00000051 } },
	{ AR5K_RF_GAIN(27),	{ 0x00000000, 0x00000091 } },
	{ AR5K_RF_GAIN(28),	{ 0x00000000, 0x00000178 } },
	{ AR5K_RF_GAIN(29),	{ 0x00000000, 0x000001b8 } },
	{ AR5K_RF_GAIN(30),	{ 0x00000000, 0x000001f8 } },
	{ AR5K_RF_GAIN(31),	{ 0x00000000, 0x00000038 } },
	{ AR5K_RF_GAIN(32),	{ 0x00000000, 0x00000078 } },
	{ AR5K_RF_GAIN(33),	{ 0x00000000, 0x00000199 } },
	{ AR5K_RF_GAIN(34),	{ 0x00000000, 0x000001d9 } },
	{ AR5K_RF_GAIN(35),	{ 0x00000000, 0x00000019 } },
	{ AR5K_RF_GAIN(36),	{ 0x00000000, 0x00000059 } },
	{ AR5K_RF_GAIN(37),	{ 0x00000000, 0x00000099 } },
	{ AR5K_RF_GAIN(38),	{ 0x00000000, 0x000000d9 } },
	{ AR5K_RF_GAIN(39),	{ 0x00000000, 0x000000f9 } },
	{ AR5K_RF_GAIN(40),	{ 0x00000000, 0x000000f9 } },
	{ AR5K_RF_GAIN(41),	{ 0x00000000, 0x000000f9 } },
	{ AR5K_RF_GAIN(42),	{ 0x00000000, 0x000000f9 } },
	{ AR5K_RF_GAIN(43),	{ 0x00000000, 0x000000f9 } },
	{ AR5K_RF_GAIN(44),	{ 0x00000000, 0x000000f9 } },
	{ AR5K_RF_GAIN(45),	{ 0x00000000, 0x000000f9 } },
	{ AR5K_RF_GAIN(46),	{ 0x00000000, 0x000000f9 } },
	{ AR5K_RF_GAIN(47),	{ 0x00000000, 0x000000f9 } },
	{ AR5K_RF_GAIN(48),	{ 0x00000000, 0x000000f9 } },
	{ AR5K_RF_GAIN(49),	{ 0x00000000, 0x000000f9 } },
	{ AR5K_RF_GAIN(50),	{ 0x00000000, 0x000000f9 } },
	{ AR5K_RF_GAIN(51),	{ 0x00000000, 0x000000f9 } },
	{ AR5K_RF_GAIN(52),	{ 0x00000000, 0x000000f9 } },
	{ AR5K_RF_GAIN(53),	{ 0x00000000, 0x000000f9 } },
	{ AR5K_RF_GAIN(54),	{ 0x00000000, 0x000000f9 } },
	{ AR5K_RF_GAIN(55),	{ 0x00000000, 0x000000f9 } },
	{ AR5K_RF_GAIN(56),	{ 0x00000000, 0x000000f9 } },
	{ AR5K_RF_GAIN(57),	{ 0x00000000, 0x000000f9 } },
	{ AR5K_RF_GAIN(58),	{ 0x00000000, 0x000000f9 } },
	{ AR5K_RF_GAIN(59),	{ 0x00000000, 0x000000f9 } },
	{ AR5K_RF_GAIN(60),	{ 0x00000000, 0x000000f9 } },
	{ AR5K_RF_GAIN(61),	{ 0x00000000, 0x000000f9 } },
	{ AR5K_RF_GAIN(62),	{ 0x00000000, 0x000000f9 } },
	{ AR5K_RF_GAIN(63),	{ 0x00000000, 0x000000f9 } },
};

/* Initial RF Gain settings for AR2316 */
static const struct ath5k_ini_rfgain rfgain_2316[] = {
	{ AR5K_RF_GAIN(0),	{ 0x00000000, 0x00000000 } },
	{ AR5K_RF_GAIN(1),	{ 0x00000000, 0x00000040 } },
	{ AR5K_RF_GAIN(2),	{ 0x00000000, 0x00000080 } },
	{ AR5K_RF_GAIN(3),	{ 0x00000000, 0x000000c0 } },
	{ AR5K_RF_GAIN(4),	{ 0x00000000, 0x000000e0 } },
	{ AR5K_RF_GAIN(5),	{ 0x00000000, 0x000000e0 } },
	{ AR5K_RF_GAIN(6),	{ 0x00000000, 0x00000128 } },
	{ AR5K_RF_GAIN(7),	{ 0x00000000, 0x00000128 } },
	{ AR5K_RF_GAIN(8),	{ 0x00000000, 0x00000128 } },
	{ AR5K_RF_GAIN(9),	{ 0x00000000, 0x00000168 } },
	{ AR5K_RF_GAIN(10),	{ 0x00000000, 0x000001a8 } },
	{ AR5K_RF_GAIN(11),	{ 0x00000000, 0x000001e8 } },
	{ AR5K_RF_GAIN(12),	{ 0x00000000, 0x00000028 } },
	{ AR5K_RF_GAIN(13),	{ 0x00000000, 0x00000068 } },
	{ AR5K_RF_GAIN(14),	{ 0x00000000, 0x000000a8 } },
	{ AR5K_RF_GAIN(15),	{ 0x00000000, 0x000000e8 } },
	{ AR5K_RF_GAIN(16),	{ 0x00000000, 0x000000e8 } },
	{ AR5K_RF_GAIN(17),	{ 0x00000000, 0x00000130 } },
	{ AR5K_RF_GAIN(18),	{ 0x00000000, 0x00000130 } },
	{ AR5K_RF_GAIN(19),	{ 0x00000000, 0x00000170 } },
	{ AR5K_RF_GAIN(20),	{ 0x00000000, 0x000001b0 } },
	{ AR5K_RF_GAIN(21),	{ 0x00000000, 0x000001f0 } },
	{ AR5K_RF_GAIN(22),	{ 0x00000000, 0x00000030 } },
	{ AR5K_RF_GAIN(23),	{ 0x00000000, 0x00000070 } },
	{ AR5K_RF_GAIN(24),	{ 0x00000000, 0x000000b0 } },
	{ AR5K_RF_GAIN(25),	{ 0x00000000, 0x000000f0 } },
	{ AR5K_RF_GAIN(26),	{ 0x00000000, 0x000000f0 } },
	{ AR5K_RF_GAIN(27),	{ 0x00000000, 0x000000f0 } },
	{ AR5K_RF_GAIN(28),	{ 0x00000000, 0x000000f0 } },
	{ AR5K_RF_GAIN(29),	{ 0x00000000, 0x000000f0 } },
	{ AR5K_RF_GAIN(30),	{ 0x00000000, 0x000000f0 } },
	{ AR5K_RF_GAIN(31),	{ 0x00000000, 0x000000f0 } },
	{ AR5K_RF_GAIN(32),	{ 0x00000000, 0x000000f0 } },
	{ AR5K_RF_GAIN(33),	{ 0x00000000, 0x000000f0 } },
	{ AR5K_RF_GAIN(34),	{ 0x00000000, 0x000000f0 } },
	{ AR5K_RF_GAIN(35),	{ 0x00000000, 0x000000f0 } },
	{ AR5K_RF_GAIN(36),	{ 0x00000000, 0x000000f0 } },
	{ AR5K_RF_GAIN(37),	{ 0x00000000, 0x000000f0 } },
	{ AR5K_RF_GAIN(38),	{ 0x00000000, 0x000000f0 } },
	{ AR5K_RF_GAIN(39),	{ 0x00000000, 0x000000f0 } },
	{ AR5K_RF_GAIN(40),	{ 0x00000000, 0x000000f0 } },
	{ AR5K_RF_GAIN(41),	{ 0x00000000, 0x000000f0 } },
	{ AR5K_RF_GAIN(42),	{ 0x00000000, 0x000000f0 } },
	{ AR5K_RF_GAIN(43),	{ 0x00000000, 0x000000f0 } },
	{ AR5K_RF_GAIN(44),	{ 0x00000000, 0x000000f0 } },
	{ AR5K_RF_GAIN(45),	{ 0x00000000, 0x000000f0 } },
	{ AR5K_RF_GAIN(46),	{ 0x00000000, 0x000000f0 } },
	{ AR5K_RF_GAIN(47),	{ 0x00000000, 0x000000f0 } },
	{ AR5K_RF_GAIN(48),	{ 0x00000000, 0x000000f0 } },
	{ AR5K_RF_GAIN(49),	{ 0x00000000, 0x000000f0 } },
	{ AR5K_RF_GAIN(50),	{ 0x00000000, 0x000000f0 } },
	{ AR5K_RF_GAIN(51),	{ 0x00000000, 0x000000f0 } },
	{ AR5K_RF_GAIN(52),	{ 0x00000000, 0x000000f0 } },
	{ AR5K_RF_GAIN(53),	{ 0x00000000, 0x000000f0 } },
	{ AR5K_RF_GAIN(54),	{ 0x00000000, 0x000000f0 } },
	{ AR5K_RF_GAIN(55),	{ 0x00000000, 0x000000f0 } },
	{ AR5K_RF_GAIN(56),	{ 0x00000000, 0x000000f0 } },
	{ AR5K_RF_GAIN(57),	{ 0x00000000, 0x000000f0 } },
	{ AR5K_RF_GAIN(58),	{ 0x00000000, 0x000000f0 } },
	{ AR5K_RF_GAIN(59),	{ 0x00000000, 0x000000f0 } },
	{ AR5K_RF_GAIN(60),	{ 0x00000000, 0x000000f0 } },
	{ AR5K_RF_GAIN(61),	{ 0x00000000, 0x000000f0 } },
	{ AR5K_RF_GAIN(62),	{ 0x00000000, 0x000000f0 } },
	{ AR5K_RF_GAIN(63),	{ 0x00000000, 0x000000f0 } },
};


/* Initial RF Gain settings for RF5413 */
static const struct ath5k_ini_rfgain rfgain_5413[] = {
	/*			      5GHz	2GHz	*/
	{ AR5K_RF_GAIN(0),	{ 0x00000000, 0x00000000 } },
	{ AR5K_RF_GAIN(1),	{ 0x00000040, 0x00000040 } },
	{ AR5K_RF_GAIN(2),	{ 0x00000080, 0x00000080 } },
	{ AR5K_RF_GAIN(3),	{ 0x000001a1, 0x00000161 } },
	{ AR5K_RF_GAIN(4),	{ 0x000001e1, 0x000001a1 } },
	{ AR5K_RF_GAIN(5),	{ 0x00000021, 0x000001e1 } },
	{ AR5K_RF_GAIN(6),	{ 0x00000061, 0x00000021 } },
	{ AR5K_RF_GAIN(7),	{ 0x00000188, 0x00000061 } },
	{ AR5K_RF_GAIN(8),	{ 0x000001c8, 0x00000188 } },
	{ AR5K_RF_GAIN(9),	{ 0x00000008, 0x000001c8 } },
	{ AR5K_RF_GAIN(10),	{ 0x00000048, 0x00000008 } },
	{ AR5K_RF_GAIN(11),	{ 0x00000088, 0x00000048 } },
	{ AR5K_RF_GAIN(12),	{ 0x000001a9, 0x00000088 } },
	{ AR5K_RF_GAIN(13),	{ 0x000001e9, 0x00000169 } },
	{ AR5K_RF_GAIN(14),	{ 0x00000029, 0x000001a9 } },
	{ AR5K_RF_GAIN(15),	{ 0x00000069, 0x000001e9 } },
	{ AR5K_RF_GAIN(16),	{ 0x000001d0, 0x00000029 } },
	{ AR5K_RF_GAIN(17),	{ 0x00000010, 0x00000069 } },
	{ AR5K_RF_GAIN(18),	{ 0x00000050, 0x00000190 } },
	{ AR5K_RF_GAIN(19),	{ 0x00000090, 0x000001d0 } },
	{ AR5K_RF_GAIN(20),	{ 0x000001b1, 0x00000010 } },
	{ AR5K_RF_GAIN(21),	{ 0x000001f1, 0x00000050 } },
	{ AR5K_RF_GAIN(22),	{ 0x00000031, 0x00000090 } },
	{ AR5K_RF_GAIN(23),	{ 0x00000071, 0x00000171 } },
	{ AR5K_RF_GAIN(24),	{ 0x000001b8, 0x000001b1 } },
	{ AR5K_RF_GAIN(25),	{ 0x000001f8, 0x000001f1 } },
	{ AR5K_RF_GAIN(26),	{ 0x00000038, 0x00000031 } },
	{ AR5K_RF_GAIN(27),	{ 0x00000078, 0x00000071 } },
	{ AR5K_RF_GAIN(28),	{ 0x00000199, 0x00000198 } },
	{ AR5K_RF_GAIN(29),	{ 0x000001d9, 0x000001d8 } },
	{ AR5K_RF_GAIN(30),	{ 0x00000019, 0x00000018 } },
	{ AR5K_RF_GAIN(31),	{ 0x00000059, 0x00000058 } },
	{ AR5K_RF_GAIN(32),	{ 0x00000099, 0x00000098 } },
	{ AR5K_RF_GAIN(33),	{ 0x000000d9, 0x00000179 } },
	{ AR5K_RF_GAIN(34),	{ 0x000000f9, 0x000001b9 } },
	{ AR5K_RF_GAIN(35),	{ 0x000000f9, 0x000001f9 } },
	{ AR5K_RF_GAIN(36),	{ 0x000000f9, 0x00000039 } },
	{ AR5K_RF_GAIN(37),	{ 0x000000f9, 0x00000079 } },
	{ AR5K_RF_GAIN(38),	{ 0x000000f9, 0x000000b9 } },
	{ AR5K_RF_GAIN(39),	{ 0x000000f9, 0x000000f9 } },
	{ AR5K_RF_GAIN(40),	{ 0x000000f9, 0x000000f9 } },
	{ AR5K_RF_GAIN(41),	{ 0x000000f9, 0x000000f9 } },
	{ AR5K_RF_GAIN(42),	{ 0x000000f9, 0x000000f9 } },
	{ AR5K_RF_GAIN(43),	{ 0x000000f9, 0x000000f9 } },
	{ AR5K_RF_GAIN(44),	{ 0x000000f9, 0x000000f9 } },
	{ AR5K_RF_GAIN(45),	{ 0x000000f9, 0x000000f9 } },
	{ AR5K_RF_GAIN(46),	{ 0x000000f9, 0x000000f9 } },
	{ AR5K_RF_GAIN(47),	{ 0x000000f9, 0x000000f9 } },
	{ AR5K_RF_GAIN(48),	{ 0x000000f9, 0x000000f9 } },
	{ AR5K_RF_GAIN(49),	{ 0x000000f9, 0x000000f9 } },
	{ AR5K_RF_GAIN(50),	{ 0x000000f9, 0x000000f9 } },
	{ AR5K_RF_GAIN(51),	{ 0x000000f9, 0x000000f9 } },
	{ AR5K_RF_GAIN(52),	{ 0x000000f9, 0x000000f9 } },
	{ AR5K_RF_GAIN(53),	{ 0x000000f9, 0x000000f9 } },
	{ AR5K_RF_GAIN(54),	{ 0x000000f9, 0x000000f9 } },
	{ AR5K_RF_GAIN(55),	{ 0x000000f9, 0x000000f9 } },
	{ AR5K_RF_GAIN(56),	{ 0x000000f9, 0x000000f9 } },
	{ AR5K_RF_GAIN(57),	{ 0x000000f9, 0x000000f9 } },
	{ AR5K_RF_GAIN(58),	{ 0x000000f9, 0x000000f9 } },
	{ AR5K_RF_GAIN(59),	{ 0x000000f9, 0x000000f9 } },
	{ AR5K_RF_GAIN(60),	{ 0x000000f9, 0x000000f9 } },
	{ AR5K_RF_GAIN(61),	{ 0x000000f9, 0x000000f9 } },
	{ AR5K_RF_GAIN(62),	{ 0x000000f9, 0x000000f9 } },
	{ AR5K_RF_GAIN(63),	{ 0x000000f9, 0x000000f9 } },
};


/* Initial RF Gain settings for RF2425 */
static const struct ath5k_ini_rfgain rfgain_2425[] = {
	{ AR5K_RF_GAIN(0),	{ 0x00000000, 0x00000000 } },
	{ AR5K_RF_GAIN(1),	{ 0x00000000, 0x00000040 } },
	{ AR5K_RF_GAIN(2),	{ 0x00000000, 0x00000080 } },
	{ AR5K_RF_GAIN(3),	{ 0x00000000, 0x00000181 } },
	{ AR5K_RF_GAIN(4),	{ 0x00000000, 0x000001c1 } },
	{ AR5K_RF_GAIN(5),	{ 0x00000000, 0x00000001 } },
	{ AR5K_RF_GAIN(6),	{ 0x00000000, 0x00000041 } },
	{ AR5K_RF_GAIN(7),	{ 0x00000000, 0x00000081 } },
	{ AR5K_RF_GAIN(8),	{ 0x00000000, 0x00000188 } },
	{ AR5K_RF_GAIN(9),	{ 0x00000000, 0x000001c8 } },
	{ AR5K_RF_GAIN(10),	{ 0x00000000, 0x00000008 } },
	{ AR5K_RF_GAIN(11),	{ 0x00000000, 0x00000048 } },
	{ AR5K_RF_GAIN(12),	{ 0x00000000, 0x00000088 } },
	{ AR5K_RF_GAIN(13),	{ 0x00000000, 0x00000189 } },
	{ AR5K_RF_GAIN(14),	{ 0x00000000, 0x000001c9 } },
	{ AR5K_RF_GAIN(15),	{ 0x00000000, 0x00000009 } },
	{ AR5K_RF_GAIN(16),	{ 0x00000000, 0x00000049 } },
	{ AR5K_RF_GAIN(17),	{ 0x00000000, 0x00000089 } },
	{ AR5K_RF_GAIN(18),	{ 0x00000000, 0x000001b0 } },
	{ AR5K_RF_GAIN(19),	{ 0x00000000, 0x000001f0 } },
	{ AR5K_RF_GAIN(20),	{ 0x00000000, 0x00000030 } },
	{ AR5K_RF_GAIN(21),	{ 0x00000000, 0x00000070 } },
	{ AR5K_RF_GAIN(22),	{ 0x00000000, 0x00000171 } },
	{ AR5K_RF_GAIN(23),	{ 0x00000000, 0x000001b1 } },
	{ AR5K_RF_GAIN(24),	{ 0x00000000, 0x000001f1 } },
	{ AR5K_RF_GAIN(25),	{ 0x00000000, 0x00000031 } },
	{ AR5K_RF_GAIN(26),	{ 0x00000000, 0x00000071 } },
	{ AR5K_RF_GAIN(27),	{ 0x00000000, 0x000001b8 } },
	{ AR5K_RF_GAIN(28),	{ 0x00000000, 0x000001f8 } },
	{ AR5K_RF_GAIN(29),	{ 0x00000000, 0x00000038 } },
	{ AR5K_RF_GAIN(30),	{ 0x00000000, 0x00000078 } },
	{ AR5K_RF_GAIN(31),	{ 0x00000000, 0x000000b8 } },
	{ AR5K_RF_GAIN(32),	{ 0x00000000, 0x000001b9 } },
	{ AR5K_RF_GAIN(33),	{ 0x00000000, 0x000001f9 } },
	{ AR5K_RF_GAIN(34),	{ 0x00000000, 0x00000039 } },
	{ AR5K_RF_GAIN(35),	{ 0x00000000, 0x00000079 } },
	{ AR5K_RF_GAIN(36),	{ 0x00000000, 0x000000b9 } },
	{ AR5K_RF_GAIN(37),	{ 0x00000000, 0x000000f9 } },
	{ AR5K_RF_GAIN(38),	{ 0x00000000, 0x000000f9 } },
	{ AR5K_RF_GAIN(39),	{ 0x00000000, 0x000000f9 } },
	{ AR5K_RF_GAIN(40),	{ 0x00000000, 0x000000f9 } },
	{ AR5K_RF_GAIN(41),	{ 0x00000000, 0x000000f9 } },
	{ AR5K_RF_GAIN(42),	{ 0x00000000, 0x000000f9 } },
	{ AR5K_RF_GAIN(43),	{ 0x00000000, 0x000000f9 } },
	{ AR5K_RF_GAIN(44),	{ 0x00000000, 0x000000f9 } },
	{ AR5K_RF_GAIN(45),	{ 0x00000000, 0x000000f9 } },
	{ AR5K_RF_GAIN(46),	{ 0x00000000, 0x000000f9 } },
	{ AR5K_RF_GAIN(47),	{ 0x00000000, 0x000000f9 } },
	{ AR5K_RF_GAIN(48),	{ 0x00000000, 0x000000f9 } },
	{ AR5K_RF_GAIN(49),	{ 0x00000000, 0x000000f9 } },
	{ AR5K_RF_GAIN(50),	{ 0x00000000, 0x000000f9 } },
	{ AR5K_RF_GAIN(51),	{ 0x00000000, 0x000000f9 } },
	{ AR5K_RF_GAIN(52),	{ 0x00000000, 0x000000f9 } },
	{ AR5K_RF_GAIN(53),	{ 0x00000000, 0x000000f9 } },
	{ AR5K_RF_GAIN(54),	{ 0x00000000, 0x000000f9 } },
	{ AR5K_RF_GAIN(55),	{ 0x00000000, 0x000000f9 } },
	{ AR5K_RF_GAIN(56),	{ 0x00000000, 0x000000f9 } },
	{ AR5K_RF_GAIN(57),	{ 0x00000000, 0x000000f9 } },
	{ AR5K_RF_GAIN(58),	{ 0x00000000, 0x000000f9 } },
	{ AR5K_RF_GAIN(59),	{ 0x00000000, 0x000000f9 } },
	{ AR5K_RF_GAIN(60),	{ 0x00000000, 0x000000f9 } },
	{ AR5K_RF_GAIN(61),	{ 0x00000000, 0x000000f9 } },
	{ AR5K_RF_GAIN(62),	{ 0x00000000, 0x000000f9 } },
	{ AR5K_RF_GAIN(63),	{ 0x00000000, 0x000000f9 } },
};

#define AR5K_GAIN_CRN_FIX_BITS_5111		4
#define AR5K_GAIN_CRN_FIX_BITS_5112		7
#define AR5K_GAIN_CRN_MAX_FIX_BITS		AR5K_GAIN_CRN_FIX_BITS_5112
#define AR5K_GAIN_DYN_ADJUST_HI_MARGIN		15
#define AR5K_GAIN_DYN_ADJUST_LO_MARGIN		20
#define AR5K_GAIN_CCK_PROBE_CORR		5
#define AR5K_GAIN_CCK_OFDM_GAIN_DELTA		15
#define AR5K_GAIN_STEP_COUNT			10

/* Check if our current measurement is inside our
 * current variable attenuation window */
#define AR5K_GAIN_CHECK_ADJUST(_g)		\
	((_g)->g_current <= (_g)->g_low || (_g)->g_current >= (_g)->g_high)

/**
 * struct ath5k_gain_opt_step - An RF gain optimization step
 * @gos_param: Set of parameters
 * @gos_gain: Gain
 */
struct ath5k_gain_opt_step {
	s8				gos_param[AR5K_GAIN_CRN_MAX_FIX_BITS];
	s8				gos_gain;
};

/**
 * struct ath5k_gain_opt - RF Gain optimization ladder
 * @go_default: The default step
 * @go_steps_count: How many optimization steps
 * @go_step: Array of &struct ath5k_gain_opt_step
 */
struct ath5k_gain_opt {
	u8				go_default;
	u8				go_steps_count;
	const struct ath5k_gain_opt_step	go_step[AR5K_GAIN_STEP_COUNT];
};


/*
 * RF5111
 * Parameters on gos_param:
 * 1) Tx clip PHY register
 * 2) PWD 90 RF register
 * 3) PWD 84 RF register
 * 4) RFGainSel RF register
 */
static const struct ath5k_gain_opt rfgain_opt_5111 = {
	4,
	9,
	{
		{ { 4, 1, 1, 1 }, 6 },
		{ { 4, 0, 1, 1 }, 4 },
		{ { 3, 1, 1, 1 }, 3 },
		{ { 4, 0, 0, 1 }, 1 },
		{ { 4, 1, 1, 0 }, 0 },
		{ { 4, 0, 1, 0 }, -2 },
		{ { 3, 1, 1, 0 }, -3 },
		{ { 4, 0, 0, 0 }, -4 },
		{ { 2, 1, 1, 0 }, -6 }
	}
};

/*
 * RF5112
 * Parameters on gos_param:
 * 1) Mixgain ovr RF register
 * 2) PWD 138 RF register
 * 3) PWD 137 RF register
 * 4) PWD 136 RF register
 * 5) PWD 132 RF register
 * 6) PWD 131 RF register
 * 7) PWD 130 RF register
 */
static const struct ath5k_gain_opt rfgain_opt_5112 = {
	1,
	8,
	{
		{ { 3, 0, 0, 0, 0, 0, 0 }, 6 },
		{ { 2, 0, 0, 0, 0, 0, 0 }, 0 },
		{ { 1, 0, 0, 0, 0, 0, 0 }, -3 },
		{ { 0, 0, 0, 0, 0, 0, 0 }, -6 },
		{ { 0, 1, 1, 0, 0, 0, 0 }, -8 },
		{ { 0, 1, 1, 0, 1, 1, 0 }, -10 },
		{ { 0, 1, 0, 1, 1, 1, 0 }, -13 },
		{ { 0, 1, 0, 1, 1, 0, 1 }, -16 },
	}
};

