162306a36Sopenharmony_ci/* 262306a36Sopenharmony_ci * Initial register settings functions 362306a36Sopenharmony_ci * 462306a36Sopenharmony_ci * Copyright (c) 2004-2007 Reyk Floeter <reyk@openbsd.org> 562306a36Sopenharmony_ci * Copyright (c) 2006-2009 Nick Kossifidis <mickflemm@gmail.com> 662306a36Sopenharmony_ci * Copyright (c) 2007-2008 Jiri Slaby <jirislaby@gmail.com> 762306a36Sopenharmony_ci * 862306a36Sopenharmony_ci * Permission to use, copy, modify, and distribute this software for any 962306a36Sopenharmony_ci * purpose with or without fee is hereby granted, provided that the above 1062306a36Sopenharmony_ci * copyright notice and this permission notice appear in all copies. 1162306a36Sopenharmony_ci * 1262306a36Sopenharmony_ci * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 1362306a36Sopenharmony_ci * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 1462306a36Sopenharmony_ci * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 1562306a36Sopenharmony_ci * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 1662306a36Sopenharmony_ci * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 1762306a36Sopenharmony_ci * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 1862306a36Sopenharmony_ci * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 1962306a36Sopenharmony_ci * 2062306a36Sopenharmony_ci */ 2162306a36Sopenharmony_ci 2262306a36Sopenharmony_ci#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt 2362306a36Sopenharmony_ci 2462306a36Sopenharmony_ci#include "ath5k.h" 2562306a36Sopenharmony_ci#include "reg.h" 2662306a36Sopenharmony_ci#include "debug.h" 2762306a36Sopenharmony_ci 2862306a36Sopenharmony_ci/** 2962306a36Sopenharmony_ci * struct ath5k_ini - Mode-independent initial register writes 3062306a36Sopenharmony_ci * @ini_register: Register address 3162306a36Sopenharmony_ci * @ini_value: Default value 3262306a36Sopenharmony_ci * @ini_mode: 0 to write 1 to read (and clear) 3362306a36Sopenharmony_ci */ 3462306a36Sopenharmony_cistruct ath5k_ini { 3562306a36Sopenharmony_ci u16 ini_register; 3662306a36Sopenharmony_ci u32 ini_value; 3762306a36Sopenharmony_ci 3862306a36Sopenharmony_ci enum { 3962306a36Sopenharmony_ci AR5K_INI_WRITE = 0, /* Default */ 4062306a36Sopenharmony_ci AR5K_INI_READ = 1, 4162306a36Sopenharmony_ci } ini_mode; 4262306a36Sopenharmony_ci}; 4362306a36Sopenharmony_ci 4462306a36Sopenharmony_ci/** 4562306a36Sopenharmony_ci * struct ath5k_ini_mode - Mode specific initial register values 4662306a36Sopenharmony_ci * @mode_register: Register address 4762306a36Sopenharmony_ci * @mode_value: Set of values for each enum ath5k_driver_mode 4862306a36Sopenharmony_ci */ 4962306a36Sopenharmony_cistruct ath5k_ini_mode { 5062306a36Sopenharmony_ci u16 mode_register; 5162306a36Sopenharmony_ci u32 mode_value[3]; 5262306a36Sopenharmony_ci}; 5362306a36Sopenharmony_ci 5462306a36Sopenharmony_ci/* Initial register settings for AR5210 */ 5562306a36Sopenharmony_cistatic const struct ath5k_ini ar5210_ini[] = { 5662306a36Sopenharmony_ci /* PCU and MAC registers */ 5762306a36Sopenharmony_ci { AR5K_NOQCU_TXDP0, 0 }, 5862306a36Sopenharmony_ci { AR5K_NOQCU_TXDP1, 0 }, 5962306a36Sopenharmony_ci { AR5K_RXDP, 0 }, 6062306a36Sopenharmony_ci { AR5K_CR, 0 }, 6162306a36Sopenharmony_ci { AR5K_ISR, 0, AR5K_INI_READ }, 6262306a36Sopenharmony_ci { AR5K_IMR, 0 }, 6362306a36Sopenharmony_ci { AR5K_IER, AR5K_IER_DISABLE }, 6462306a36Sopenharmony_ci { AR5K_BSR, 0, AR5K_INI_READ }, 6562306a36Sopenharmony_ci { AR5K_TXCFG, AR5K_DMASIZE_128B }, 6662306a36Sopenharmony_ci { AR5K_RXCFG, AR5K_DMASIZE_128B }, 6762306a36Sopenharmony_ci { AR5K_CFG, AR5K_INIT_CFG }, 6862306a36Sopenharmony_ci { AR5K_TOPS, 8 }, 6962306a36Sopenharmony_ci { AR5K_RXNOFRM, 8 }, 7062306a36Sopenharmony_ci { AR5K_RPGTO, 0 }, 7162306a36Sopenharmony_ci { AR5K_TXNOFRM, 0 }, 7262306a36Sopenharmony_ci { AR5K_SFR, 0 }, 7362306a36Sopenharmony_ci { AR5K_MIBC, 0 }, 7462306a36Sopenharmony_ci { AR5K_MISC, 0 }, 7562306a36Sopenharmony_ci { AR5K_RX_FILTER_5210, 0 }, 7662306a36Sopenharmony_ci { AR5K_MCAST_FILTER0_5210, 0 }, 7762306a36Sopenharmony_ci { AR5K_MCAST_FILTER1_5210, 0 }, 7862306a36Sopenharmony_ci { AR5K_TX_MASK0, 0 }, 7962306a36Sopenharmony_ci { AR5K_TX_MASK1, 0 }, 8062306a36Sopenharmony_ci { AR5K_CLR_TMASK, 0 }, 8162306a36Sopenharmony_ci { AR5K_TRIG_LVL, AR5K_TUNE_MIN_TX_FIFO_THRES }, 8262306a36Sopenharmony_ci { AR5K_DIAG_SW_5210, 0 }, 8362306a36Sopenharmony_ci { AR5K_RSSI_THR, AR5K_TUNE_RSSI_THRES }, 8462306a36Sopenharmony_ci { AR5K_TSF_L32_5210, 0 }, 8562306a36Sopenharmony_ci { AR5K_TIMER0_5210, 0 }, 8662306a36Sopenharmony_ci { AR5K_TIMER1_5210, 0xffffffff }, 8762306a36Sopenharmony_ci { AR5K_TIMER2_5210, 0xffffffff }, 8862306a36Sopenharmony_ci { AR5K_TIMER3_5210, 1 }, 8962306a36Sopenharmony_ci { AR5K_CFP_DUR_5210, 0 }, 9062306a36Sopenharmony_ci { AR5K_CFP_PERIOD_5210, 0 }, 9162306a36Sopenharmony_ci /* PHY registers */ 9262306a36Sopenharmony_ci { AR5K_PHY(0), 0x00000047 }, 9362306a36Sopenharmony_ci { AR5K_PHY_AGC, 0x00000000 }, 9462306a36Sopenharmony_ci { AR5K_PHY(3), 0x09848ea6 }, 9562306a36Sopenharmony_ci { AR5K_PHY(4), 0x3d32e000 }, 9662306a36Sopenharmony_ci { AR5K_PHY(5), 0x0000076b }, 9762306a36Sopenharmony_ci { AR5K_PHY_ACT, AR5K_PHY_ACT_DISABLE }, 9862306a36Sopenharmony_ci { AR5K_PHY(8), 0x02020200 }, 9962306a36Sopenharmony_ci { AR5K_PHY(9), 0x00000e0e }, 10062306a36Sopenharmony_ci { AR5K_PHY(10), 0x0a020201 }, 10162306a36Sopenharmony_ci { AR5K_PHY(11), 0x00036ffc }, 10262306a36Sopenharmony_ci { AR5K_PHY(12), 0x00000000 }, 10362306a36Sopenharmony_ci { AR5K_PHY(13), 0x00000e0e }, 10462306a36Sopenharmony_ci { AR5K_PHY(14), 0x00000007 }, 10562306a36Sopenharmony_ci { AR5K_PHY(15), 0x00020100 }, 10662306a36Sopenharmony_ci { AR5K_PHY(16), 0x89630000 }, 10762306a36Sopenharmony_ci { AR5K_PHY(17), 0x1372169c }, 10862306a36Sopenharmony_ci { AR5K_PHY(18), 0x0018b633 }, 10962306a36Sopenharmony_ci { AR5K_PHY(19), 0x1284613c }, 11062306a36Sopenharmony_ci { AR5K_PHY(20), 0x0de8b8e0 }, 11162306a36Sopenharmony_ci { AR5K_PHY(21), 0x00074859 }, 11262306a36Sopenharmony_ci { AR5K_PHY(22), 0x7e80beba }, 11362306a36Sopenharmony_ci { AR5K_PHY(23), 0x313a665e }, 11462306a36Sopenharmony_ci { AR5K_PHY_AGCCTL, 0x00001d08 }, 11562306a36Sopenharmony_ci { AR5K_PHY(25), 0x0001ce00 }, 11662306a36Sopenharmony_ci { AR5K_PHY(26), 0x409a4190 }, 11762306a36Sopenharmony_ci { AR5K_PHY(28), 0x0000000f }, 11862306a36Sopenharmony_ci { AR5K_PHY(29), 0x00000080 }, 11962306a36Sopenharmony_ci { AR5K_PHY(30), 0x00000004 }, 12062306a36Sopenharmony_ci { AR5K_PHY(31), 0x00000018 }, /* 0x987c */ 12162306a36Sopenharmony_ci { AR5K_PHY(64), 0x00000000 }, /* 0x9900 */ 12262306a36Sopenharmony_ci { AR5K_PHY(65), 0x00000000 }, 12362306a36Sopenharmony_ci { AR5K_PHY(66), 0x00000000 }, 12462306a36Sopenharmony_ci { AR5K_PHY(67), 0x00800000 }, 12562306a36Sopenharmony_ci { AR5K_PHY(68), 0x00000003 }, 12662306a36Sopenharmony_ci /* BB gain table (64bytes) */ 12762306a36Sopenharmony_ci { AR5K_BB_GAIN(0), 0x00000000 }, 12862306a36Sopenharmony_ci { AR5K_BB_GAIN(1), 0x00000020 }, 12962306a36Sopenharmony_ci { AR5K_BB_GAIN(2), 0x00000010 }, 13062306a36Sopenharmony_ci { AR5K_BB_GAIN(3), 0x00000030 }, 13162306a36Sopenharmony_ci { AR5K_BB_GAIN(4), 0x00000008 }, 13262306a36Sopenharmony_ci { AR5K_BB_GAIN(5), 0x00000028 }, 13362306a36Sopenharmony_ci { AR5K_BB_GAIN(6), 0x00000028 }, 13462306a36Sopenharmony_ci { AR5K_BB_GAIN(7), 0x00000004 }, 13562306a36Sopenharmony_ci { AR5K_BB_GAIN(8), 0x00000024 }, 13662306a36Sopenharmony_ci { AR5K_BB_GAIN(9), 0x00000014 }, 13762306a36Sopenharmony_ci { AR5K_BB_GAIN(10), 0x00000034 }, 13862306a36Sopenharmony_ci { AR5K_BB_GAIN(11), 0x0000000c }, 13962306a36Sopenharmony_ci { AR5K_BB_GAIN(12), 0x0000002c }, 14062306a36Sopenharmony_ci { AR5K_BB_GAIN(13), 0x00000002 }, 14162306a36Sopenharmony_ci { AR5K_BB_GAIN(14), 0x00000022 }, 14262306a36Sopenharmony_ci { AR5K_BB_GAIN(15), 0x00000012 }, 14362306a36Sopenharmony_ci { AR5K_BB_GAIN(16), 0x00000032 }, 14462306a36Sopenharmony_ci { AR5K_BB_GAIN(17), 0x0000000a }, 14562306a36Sopenharmony_ci { AR5K_BB_GAIN(18), 0x0000002a }, 14662306a36Sopenharmony_ci { AR5K_BB_GAIN(19), 0x00000001 }, 14762306a36Sopenharmony_ci { AR5K_BB_GAIN(20), 0x00000021 }, 14862306a36Sopenharmony_ci { AR5K_BB_GAIN(21), 0x00000011 }, 14962306a36Sopenharmony_ci { AR5K_BB_GAIN(22), 0x00000031 }, 15062306a36Sopenharmony_ci { AR5K_BB_GAIN(23), 0x00000009 }, 15162306a36Sopenharmony_ci { AR5K_BB_GAIN(24), 0x00000029 }, 15262306a36Sopenharmony_ci { AR5K_BB_GAIN(25), 0x00000005 }, 15362306a36Sopenharmony_ci { AR5K_BB_GAIN(26), 0x00000025 }, 15462306a36Sopenharmony_ci { AR5K_BB_GAIN(27), 0x00000015 }, 15562306a36Sopenharmony_ci { AR5K_BB_GAIN(28), 0x00000035 }, 15662306a36Sopenharmony_ci { AR5K_BB_GAIN(29), 0x0000000d }, 15762306a36Sopenharmony_ci { AR5K_BB_GAIN(30), 0x0000002d }, 15862306a36Sopenharmony_ci { AR5K_BB_GAIN(31), 0x00000003 }, 15962306a36Sopenharmony_ci { AR5K_BB_GAIN(32), 0x00000023 }, 16062306a36Sopenharmony_ci { AR5K_BB_GAIN(33), 0x00000013 }, 16162306a36Sopenharmony_ci { AR5K_BB_GAIN(34), 0x00000033 }, 16262306a36Sopenharmony_ci { AR5K_BB_GAIN(35), 0x0000000b }, 16362306a36Sopenharmony_ci { AR5K_BB_GAIN(36), 0x0000002b }, 16462306a36Sopenharmony_ci { AR5K_BB_GAIN(37), 0x00000007 }, 16562306a36Sopenharmony_ci { AR5K_BB_GAIN(38), 0x00000027 }, 16662306a36Sopenharmony_ci { AR5K_BB_GAIN(39), 0x00000017 }, 16762306a36Sopenharmony_ci { AR5K_BB_GAIN(40), 0x00000037 }, 16862306a36Sopenharmony_ci { AR5K_BB_GAIN(41), 0x0000000f }, 16962306a36Sopenharmony_ci { AR5K_BB_GAIN(42), 0x0000002f }, 17062306a36Sopenharmony_ci { AR5K_BB_GAIN(43), 0x0000002f }, 17162306a36Sopenharmony_ci { AR5K_BB_GAIN(44), 0x0000002f }, 17262306a36Sopenharmony_ci { AR5K_BB_GAIN(45), 0x0000002f }, 17362306a36Sopenharmony_ci { AR5K_BB_GAIN(46), 0x0000002f }, 17462306a36Sopenharmony_ci { AR5K_BB_GAIN(47), 0x0000002f }, 17562306a36Sopenharmony_ci { AR5K_BB_GAIN(48), 0x0000002f }, 17662306a36Sopenharmony_ci { AR5K_BB_GAIN(49), 0x0000002f }, 17762306a36Sopenharmony_ci { AR5K_BB_GAIN(50), 0x0000002f }, 17862306a36Sopenharmony_ci { AR5K_BB_GAIN(51), 0x0000002f }, 17962306a36Sopenharmony_ci { AR5K_BB_GAIN(52), 0x0000002f }, 18062306a36Sopenharmony_ci { AR5K_BB_GAIN(53), 0x0000002f }, 18162306a36Sopenharmony_ci { AR5K_BB_GAIN(54), 0x0000002f }, 18262306a36Sopenharmony_ci { AR5K_BB_GAIN(55), 0x0000002f }, 18362306a36Sopenharmony_ci { AR5K_BB_GAIN(56), 0x0000002f }, 18462306a36Sopenharmony_ci { AR5K_BB_GAIN(57), 0x0000002f }, 18562306a36Sopenharmony_ci { AR5K_BB_GAIN(58), 0x0000002f }, 18662306a36Sopenharmony_ci { AR5K_BB_GAIN(59), 0x0000002f }, 18762306a36Sopenharmony_ci { AR5K_BB_GAIN(60), 0x0000002f }, 18862306a36Sopenharmony_ci { AR5K_BB_GAIN(61), 0x0000002f }, 18962306a36Sopenharmony_ci { AR5K_BB_GAIN(62), 0x0000002f }, 19062306a36Sopenharmony_ci { AR5K_BB_GAIN(63), 0x0000002f }, 19162306a36Sopenharmony_ci /* 5110 RF gain table (64btes) */ 19262306a36Sopenharmony_ci { AR5K_RF_GAIN(0), 0x0000001d }, 19362306a36Sopenharmony_ci { AR5K_RF_GAIN(1), 0x0000005d }, 19462306a36Sopenharmony_ci { AR5K_RF_GAIN(2), 0x0000009d }, 19562306a36Sopenharmony_ci { AR5K_RF_GAIN(3), 0x000000dd }, 19662306a36Sopenharmony_ci { AR5K_RF_GAIN(4), 0x0000011d }, 19762306a36Sopenharmony_ci { AR5K_RF_GAIN(5), 0x00000021 }, 19862306a36Sopenharmony_ci { AR5K_RF_GAIN(6), 0x00000061 }, 19962306a36Sopenharmony_ci { AR5K_RF_GAIN(7), 0x000000a1 }, 20062306a36Sopenharmony_ci { AR5K_RF_GAIN(8), 0x000000e1 }, 20162306a36Sopenharmony_ci { AR5K_RF_GAIN(9), 0x00000031 }, 20262306a36Sopenharmony_ci { AR5K_RF_GAIN(10), 0x00000071 }, 20362306a36Sopenharmony_ci { AR5K_RF_GAIN(11), 0x000000b1 }, 20462306a36Sopenharmony_ci { AR5K_RF_GAIN(12), 0x0000001c }, 20562306a36Sopenharmony_ci { AR5K_RF_GAIN(13), 0x0000005c }, 20662306a36Sopenharmony_ci { AR5K_RF_GAIN(14), 0x00000029 }, 20762306a36Sopenharmony_ci { AR5K_RF_GAIN(15), 0x00000069 }, 20862306a36Sopenharmony_ci { AR5K_RF_GAIN(16), 0x000000a9 }, 20962306a36Sopenharmony_ci { AR5K_RF_GAIN(17), 0x00000020 }, 21062306a36Sopenharmony_ci { AR5K_RF_GAIN(18), 0x00000019 }, 21162306a36Sopenharmony_ci { AR5K_RF_GAIN(19), 0x00000059 }, 21262306a36Sopenharmony_ci { AR5K_RF_GAIN(20), 0x00000099 }, 21362306a36Sopenharmony_ci { AR5K_RF_GAIN(21), 0x00000030 }, 21462306a36Sopenharmony_ci { AR5K_RF_GAIN(22), 0x00000005 }, 21562306a36Sopenharmony_ci { AR5K_RF_GAIN(23), 0x00000025 }, 21662306a36Sopenharmony_ci { AR5K_RF_GAIN(24), 0x00000065 }, 21762306a36Sopenharmony_ci { AR5K_RF_GAIN(25), 0x000000a5 }, 21862306a36Sopenharmony_ci { AR5K_RF_GAIN(26), 0x00000028 }, 21962306a36Sopenharmony_ci { AR5K_RF_GAIN(27), 0x00000068 }, 22062306a36Sopenharmony_ci { AR5K_RF_GAIN(28), 0x0000001f }, 22162306a36Sopenharmony_ci { AR5K_RF_GAIN(29), 0x0000001e }, 22262306a36Sopenharmony_ci { AR5K_RF_GAIN(30), 0x00000018 }, 22362306a36Sopenharmony_ci { AR5K_RF_GAIN(31), 0x00000058 }, 22462306a36Sopenharmony_ci { AR5K_RF_GAIN(32), 0x00000098 }, 22562306a36Sopenharmony_ci { AR5K_RF_GAIN(33), 0x00000003 }, 22662306a36Sopenharmony_ci { AR5K_RF_GAIN(34), 0x00000004 }, 22762306a36Sopenharmony_ci { AR5K_RF_GAIN(35), 0x00000044 }, 22862306a36Sopenharmony_ci { AR5K_RF_GAIN(36), 0x00000084 }, 22962306a36Sopenharmony_ci { AR5K_RF_GAIN(37), 0x00000013 }, 23062306a36Sopenharmony_ci { AR5K_RF_GAIN(38), 0x00000012 }, 23162306a36Sopenharmony_ci { AR5K_RF_GAIN(39), 0x00000052 }, 23262306a36Sopenharmony_ci { AR5K_RF_GAIN(40), 0x00000092 }, 23362306a36Sopenharmony_ci { AR5K_RF_GAIN(41), 0x000000d2 }, 23462306a36Sopenharmony_ci { AR5K_RF_GAIN(42), 0x0000002b }, 23562306a36Sopenharmony_ci { AR5K_RF_GAIN(43), 0x0000002a }, 23662306a36Sopenharmony_ci { AR5K_RF_GAIN(44), 0x0000006a }, 23762306a36Sopenharmony_ci { AR5K_RF_GAIN(45), 0x000000aa }, 23862306a36Sopenharmony_ci { AR5K_RF_GAIN(46), 0x0000001b }, 23962306a36Sopenharmony_ci { AR5K_RF_GAIN(47), 0x0000001a }, 24062306a36Sopenharmony_ci { AR5K_RF_GAIN(48), 0x0000005a }, 24162306a36Sopenharmony_ci { AR5K_RF_GAIN(49), 0x0000009a }, 24262306a36Sopenharmony_ci { AR5K_RF_GAIN(50), 0x000000da }, 24362306a36Sopenharmony_ci { AR5K_RF_GAIN(51), 0x00000006 }, 24462306a36Sopenharmony_ci { AR5K_RF_GAIN(52), 0x00000006 }, 24562306a36Sopenharmony_ci { AR5K_RF_GAIN(53), 0x00000006 }, 24662306a36Sopenharmony_ci { AR5K_RF_GAIN(54), 0x00000006 }, 24762306a36Sopenharmony_ci { AR5K_RF_GAIN(55), 0x00000006 }, 24862306a36Sopenharmony_ci { AR5K_RF_GAIN(56), 0x00000006 }, 24962306a36Sopenharmony_ci { AR5K_RF_GAIN(57), 0x00000006 }, 25062306a36Sopenharmony_ci { AR5K_RF_GAIN(58), 0x00000006 }, 25162306a36Sopenharmony_ci { AR5K_RF_GAIN(59), 0x00000006 }, 25262306a36Sopenharmony_ci { AR5K_RF_GAIN(60), 0x00000006 }, 25362306a36Sopenharmony_ci { AR5K_RF_GAIN(61), 0x00000006 }, 25462306a36Sopenharmony_ci { AR5K_RF_GAIN(62), 0x00000006 }, 25562306a36Sopenharmony_ci { AR5K_RF_GAIN(63), 0x00000006 }, 25662306a36Sopenharmony_ci /* PHY activation */ 25762306a36Sopenharmony_ci { AR5K_PHY(53), 0x00000020 }, 25862306a36Sopenharmony_ci { AR5K_PHY(51), 0x00000004 }, 25962306a36Sopenharmony_ci { AR5K_PHY(50), 0x00060106 }, 26062306a36Sopenharmony_ci { AR5K_PHY(39), 0x0000006d }, 26162306a36Sopenharmony_ci { AR5K_PHY(48), 0x00000000 }, 26262306a36Sopenharmony_ci { AR5K_PHY(52), 0x00000014 }, 26362306a36Sopenharmony_ci { AR5K_PHY_ACT, AR5K_PHY_ACT_ENABLE }, 26462306a36Sopenharmony_ci}; 26562306a36Sopenharmony_ci 26662306a36Sopenharmony_ci/* Initial register settings for AR5211 */ 26762306a36Sopenharmony_cistatic const struct ath5k_ini ar5211_ini[] = { 26862306a36Sopenharmony_ci { AR5K_RXDP, 0x00000000 }, 26962306a36Sopenharmony_ci { AR5K_RTSD0, 0x84849c9c }, 27062306a36Sopenharmony_ci { AR5K_RTSD1, 0x7c7c7c7c }, 27162306a36Sopenharmony_ci { AR5K_RXCFG, 0x00000005 }, 27262306a36Sopenharmony_ci { AR5K_MIBC, 0x00000000 }, 27362306a36Sopenharmony_ci { AR5K_TOPS, 0x00000008 }, 27462306a36Sopenharmony_ci { AR5K_RXNOFRM, 0x00000008 }, 27562306a36Sopenharmony_ci { AR5K_TXNOFRM, 0x00000010 }, 27662306a36Sopenharmony_ci { AR5K_RPGTO, 0x00000000 }, 27762306a36Sopenharmony_ci { AR5K_RFCNT, 0x0000001f }, 27862306a36Sopenharmony_ci { AR5K_QUEUE_TXDP(0), 0x00000000 }, 27962306a36Sopenharmony_ci { AR5K_QUEUE_TXDP(1), 0x00000000 }, 28062306a36Sopenharmony_ci { AR5K_QUEUE_TXDP(2), 0x00000000 }, 28162306a36Sopenharmony_ci { AR5K_QUEUE_TXDP(3), 0x00000000 }, 28262306a36Sopenharmony_ci { AR5K_QUEUE_TXDP(4), 0x00000000 }, 28362306a36Sopenharmony_ci { AR5K_QUEUE_TXDP(5), 0x00000000 }, 28462306a36Sopenharmony_ci { AR5K_QUEUE_TXDP(6), 0x00000000 }, 28562306a36Sopenharmony_ci { AR5K_QUEUE_TXDP(7), 0x00000000 }, 28662306a36Sopenharmony_ci { AR5K_QUEUE_TXDP(8), 0x00000000 }, 28762306a36Sopenharmony_ci { AR5K_QUEUE_TXDP(9), 0x00000000 }, 28862306a36Sopenharmony_ci { AR5K_DCU_FP, 0x00000000 }, 28962306a36Sopenharmony_ci { AR5K_STA_ID1, 0x00000000 }, 29062306a36Sopenharmony_ci { AR5K_BSS_ID0, 0x00000000 }, 29162306a36Sopenharmony_ci { AR5K_BSS_ID1, 0x00000000 }, 29262306a36Sopenharmony_ci { AR5K_RSSI_THR, 0x00000000 }, 29362306a36Sopenharmony_ci { AR5K_CFP_PERIOD_5211, 0x00000000 }, 29462306a36Sopenharmony_ci { AR5K_TIMER0_5211, 0x00000030 }, 29562306a36Sopenharmony_ci { AR5K_TIMER1_5211, 0x0007ffff }, 29662306a36Sopenharmony_ci { AR5K_TIMER2_5211, 0x01ffffff }, 29762306a36Sopenharmony_ci { AR5K_TIMER3_5211, 0x00000031 }, 29862306a36Sopenharmony_ci { AR5K_CFP_DUR_5211, 0x00000000 }, 29962306a36Sopenharmony_ci { AR5K_RX_FILTER_5211, 0x00000000 }, 30062306a36Sopenharmony_ci { AR5K_MCAST_FILTER0_5211, 0x00000000 }, 30162306a36Sopenharmony_ci { AR5K_MCAST_FILTER1_5211, 0x00000002 }, 30262306a36Sopenharmony_ci { AR5K_DIAG_SW_5211, 0x00000000 }, 30362306a36Sopenharmony_ci { AR5K_ADDAC_TEST, 0x00000000 }, 30462306a36Sopenharmony_ci { AR5K_DEFAULT_ANTENNA, 0x00000000 }, 30562306a36Sopenharmony_ci /* PHY registers */ 30662306a36Sopenharmony_ci { AR5K_PHY_AGC, 0x00000000 }, 30762306a36Sopenharmony_ci { AR5K_PHY(3), 0x2d849093 }, 30862306a36Sopenharmony_ci { AR5K_PHY(4), 0x7d32e000 }, 30962306a36Sopenharmony_ci { AR5K_PHY(5), 0x00000f6b }, 31062306a36Sopenharmony_ci { AR5K_PHY_ACT, 0x00000000 }, 31162306a36Sopenharmony_ci { AR5K_PHY(11), 0x00026ffe }, 31262306a36Sopenharmony_ci { AR5K_PHY(12), 0x00000000 }, 31362306a36Sopenharmony_ci { AR5K_PHY(15), 0x00020100 }, 31462306a36Sopenharmony_ci { AR5K_PHY(16), 0x206a017a }, 31562306a36Sopenharmony_ci { AR5K_PHY(19), 0x1284613c }, 31662306a36Sopenharmony_ci { AR5K_PHY(21), 0x00000859 }, 31762306a36Sopenharmony_ci { AR5K_PHY(26), 0x409a4190 }, /* 0x9868 */ 31862306a36Sopenharmony_ci { AR5K_PHY(27), 0x050cb081 }, 31962306a36Sopenharmony_ci { AR5K_PHY(28), 0x0000000f }, 32062306a36Sopenharmony_ci { AR5K_PHY(29), 0x00000080 }, 32162306a36Sopenharmony_ci { AR5K_PHY(30), 0x0000000c }, 32262306a36Sopenharmony_ci { AR5K_PHY(64), 0x00000000 }, 32362306a36Sopenharmony_ci { AR5K_PHY(65), 0x00000000 }, 32462306a36Sopenharmony_ci { AR5K_PHY(66), 0x00000000 }, 32562306a36Sopenharmony_ci { AR5K_PHY(67), 0x00800000 }, 32662306a36Sopenharmony_ci { AR5K_PHY(68), 0x00000001 }, 32762306a36Sopenharmony_ci { AR5K_PHY(71), 0x0000092a }, 32862306a36Sopenharmony_ci { AR5K_PHY_IQ, 0x00000000 }, 32962306a36Sopenharmony_ci { AR5K_PHY(73), 0x00058a05 }, 33062306a36Sopenharmony_ci { AR5K_PHY(74), 0x00000001 }, 33162306a36Sopenharmony_ci { AR5K_PHY(75), 0x00000000 }, 33262306a36Sopenharmony_ci { AR5K_PHY_PAPD_PROBE, 0x00000000 }, 33362306a36Sopenharmony_ci { AR5K_PHY(77), 0x00000000 }, /* 0x9934 */ 33462306a36Sopenharmony_ci { AR5K_PHY(78), 0x00000000 }, /* 0x9938 */ 33562306a36Sopenharmony_ci { AR5K_PHY(79), 0x0000003f }, /* 0x993c */ 33662306a36Sopenharmony_ci { AR5K_PHY(80), 0x00000004 }, 33762306a36Sopenharmony_ci { AR5K_PHY(82), 0x00000000 }, 33862306a36Sopenharmony_ci { AR5K_PHY(83), 0x00000000 }, 33962306a36Sopenharmony_ci { AR5K_PHY(84), 0x00000000 }, 34062306a36Sopenharmony_ci { AR5K_PHY_RADAR, 0x5d50f14c }, 34162306a36Sopenharmony_ci { AR5K_PHY(86), 0x00000018 }, 34262306a36Sopenharmony_ci { AR5K_PHY(87), 0x004b6a8e }, 34362306a36Sopenharmony_ci /* Initial Power table (32bytes) 34462306a36Sopenharmony_ci * common on all cards/modes. 34562306a36Sopenharmony_ci * Note: Table is rewritten during 34662306a36Sopenharmony_ci * txpower setup later using calibration 34762306a36Sopenharmony_ci * data etc. so next write is non-common */ 34862306a36Sopenharmony_ci { AR5K_PHY_PCDAC_TXPOWER(1), 0x06ff05ff }, 34962306a36Sopenharmony_ci { AR5K_PHY_PCDAC_TXPOWER(2), 0x07ff07ff }, 35062306a36Sopenharmony_ci { AR5K_PHY_PCDAC_TXPOWER(3), 0x08ff08ff }, 35162306a36Sopenharmony_ci { AR5K_PHY_PCDAC_TXPOWER(4), 0x09ff09ff }, 35262306a36Sopenharmony_ci { AR5K_PHY_PCDAC_TXPOWER(5), 0x0aff0aff }, 35362306a36Sopenharmony_ci { AR5K_PHY_PCDAC_TXPOWER(6), 0x0bff0bff }, 35462306a36Sopenharmony_ci { AR5K_PHY_PCDAC_TXPOWER(7), 0x0cff0cff }, 35562306a36Sopenharmony_ci { AR5K_PHY_PCDAC_TXPOWER(8), 0x0dff0dff }, 35662306a36Sopenharmony_ci { AR5K_PHY_PCDAC_TXPOWER(9), 0x0fff0eff }, 35762306a36Sopenharmony_ci { AR5K_PHY_PCDAC_TXPOWER(10), 0x12ff12ff }, 35862306a36Sopenharmony_ci { AR5K_PHY_PCDAC_TXPOWER(11), 0x14ff13ff }, 35962306a36Sopenharmony_ci { AR5K_PHY_PCDAC_TXPOWER(12), 0x16ff15ff }, 36062306a36Sopenharmony_ci { AR5K_PHY_PCDAC_TXPOWER(13), 0x19ff17ff }, 36162306a36Sopenharmony_ci { AR5K_PHY_PCDAC_TXPOWER(14), 0x1bff1aff }, 36262306a36Sopenharmony_ci { AR5K_PHY_PCDAC_TXPOWER(15), 0x1eff1dff }, 36362306a36Sopenharmony_ci { AR5K_PHY_PCDAC_TXPOWER(16), 0x23ff20ff }, 36462306a36Sopenharmony_ci { AR5K_PHY_PCDAC_TXPOWER(17), 0x27ff25ff }, 36562306a36Sopenharmony_ci { AR5K_PHY_PCDAC_TXPOWER(18), 0x2cff29ff }, 36662306a36Sopenharmony_ci { AR5K_PHY_PCDAC_TXPOWER(19), 0x31ff2fff }, 36762306a36Sopenharmony_ci { AR5K_PHY_PCDAC_TXPOWER(20), 0x37ff34ff }, 36862306a36Sopenharmony_ci { AR5K_PHY_PCDAC_TXPOWER(21), 0x3aff3aff }, 36962306a36Sopenharmony_ci { AR5K_PHY_PCDAC_TXPOWER(22), 0x3aff3aff }, 37062306a36Sopenharmony_ci { AR5K_PHY_PCDAC_TXPOWER(23), 0x3aff3aff }, 37162306a36Sopenharmony_ci { AR5K_PHY_PCDAC_TXPOWER(24), 0x3aff3aff }, 37262306a36Sopenharmony_ci { AR5K_PHY_PCDAC_TXPOWER(25), 0x3aff3aff }, 37362306a36Sopenharmony_ci { AR5K_PHY_PCDAC_TXPOWER(26), 0x3aff3aff }, 37462306a36Sopenharmony_ci { AR5K_PHY_PCDAC_TXPOWER(27), 0x3aff3aff }, 37562306a36Sopenharmony_ci { AR5K_PHY_PCDAC_TXPOWER(28), 0x3aff3aff }, 37662306a36Sopenharmony_ci { AR5K_PHY_PCDAC_TXPOWER(29), 0x3aff3aff }, 37762306a36Sopenharmony_ci { AR5K_PHY_PCDAC_TXPOWER(30), 0x3aff3aff }, 37862306a36Sopenharmony_ci { AR5K_PHY_PCDAC_TXPOWER(31), 0x3aff3aff }, 37962306a36Sopenharmony_ci { AR5K_PHY_CCKTXCTL, 0x00000000 }, 38062306a36Sopenharmony_ci { AR5K_PHY(642), 0x503e4646 }, 38162306a36Sopenharmony_ci { AR5K_PHY_GAIN_2GHZ, 0x6480416c }, 38262306a36Sopenharmony_ci { AR5K_PHY(644), 0x0199a003 }, 38362306a36Sopenharmony_ci { AR5K_PHY(645), 0x044cd610 }, 38462306a36Sopenharmony_ci { AR5K_PHY(646), 0x13800040 }, 38562306a36Sopenharmony_ci { AR5K_PHY(647), 0x1be00060 }, 38662306a36Sopenharmony_ci { AR5K_PHY(648), 0x0c53800a }, 38762306a36Sopenharmony_ci { AR5K_PHY(649), 0x0014df3b }, 38862306a36Sopenharmony_ci { AR5K_PHY(650), 0x000001b5 }, 38962306a36Sopenharmony_ci { AR5K_PHY(651), 0x00000020 }, 39062306a36Sopenharmony_ci}; 39162306a36Sopenharmony_ci 39262306a36Sopenharmony_ci/* Initial mode-specific settings for AR5211 39362306a36Sopenharmony_ci * 5211 supports OFDM-only g (draft g) but we 39462306a36Sopenharmony_ci * need to test it ! */ 39562306a36Sopenharmony_cistatic const struct ath5k_ini_mode ar5211_ini_mode[] = { 39662306a36Sopenharmony_ci { AR5K_TXCFG, 39762306a36Sopenharmony_ci /* A B G */ 39862306a36Sopenharmony_ci { 0x00000015, 0x0000001d, 0x00000015 } }, 39962306a36Sopenharmony_ci { AR5K_QUEUE_DFS_LOCAL_IFS(0), 40062306a36Sopenharmony_ci { 0x002ffc0f, 0x002ffc1f, 0x002ffc0f } }, 40162306a36Sopenharmony_ci { AR5K_QUEUE_DFS_LOCAL_IFS(1), 40262306a36Sopenharmony_ci { 0x002ffc0f, 0x002ffc1f, 0x002ffc0f } }, 40362306a36Sopenharmony_ci { AR5K_QUEUE_DFS_LOCAL_IFS(2), 40462306a36Sopenharmony_ci { 0x002ffc0f, 0x002ffc1f, 0x002ffc0f } }, 40562306a36Sopenharmony_ci { AR5K_QUEUE_DFS_LOCAL_IFS(3), 40662306a36Sopenharmony_ci { 0x002ffc0f, 0x002ffc1f, 0x002ffc0f } }, 40762306a36Sopenharmony_ci { AR5K_QUEUE_DFS_LOCAL_IFS(4), 40862306a36Sopenharmony_ci { 0x002ffc0f, 0x002ffc1f, 0x002ffc0f } }, 40962306a36Sopenharmony_ci { AR5K_QUEUE_DFS_LOCAL_IFS(5), 41062306a36Sopenharmony_ci { 0x002ffc0f, 0x002ffc1f, 0x002ffc0f } }, 41162306a36Sopenharmony_ci { AR5K_QUEUE_DFS_LOCAL_IFS(6), 41262306a36Sopenharmony_ci { 0x002ffc0f, 0x002ffc1f, 0x002ffc0f } }, 41362306a36Sopenharmony_ci { AR5K_QUEUE_DFS_LOCAL_IFS(7), 41462306a36Sopenharmony_ci { 0x002ffc0f, 0x002ffc1f, 0x002ffc0f } }, 41562306a36Sopenharmony_ci { AR5K_QUEUE_DFS_LOCAL_IFS(8), 41662306a36Sopenharmony_ci { 0x002ffc0f, 0x002ffc1f, 0x002ffc0f } }, 41762306a36Sopenharmony_ci { AR5K_QUEUE_DFS_LOCAL_IFS(9), 41862306a36Sopenharmony_ci { 0x002ffc0f, 0x002ffc1f, 0x002ffc0f } }, 41962306a36Sopenharmony_ci { AR5K_DCU_GBL_IFS_SLOT, 42062306a36Sopenharmony_ci { 0x00000168, 0x000001b8, 0x00000168 } }, 42162306a36Sopenharmony_ci { AR5K_DCU_GBL_IFS_SIFS, 42262306a36Sopenharmony_ci { 0x00000230, 0x000000b0, 0x00000230 } }, 42362306a36Sopenharmony_ci { AR5K_DCU_GBL_IFS_EIFS, 42462306a36Sopenharmony_ci { 0x00000d98, 0x00001f48, 0x00000d98 } }, 42562306a36Sopenharmony_ci { AR5K_DCU_GBL_IFS_MISC, 42662306a36Sopenharmony_ci { 0x0000a0e0, 0x00005880, 0x0000a0e0 } }, 42762306a36Sopenharmony_ci { AR5K_TIME_OUT, 42862306a36Sopenharmony_ci { 0x04000400, 0x20003000, 0x04000400 } }, 42962306a36Sopenharmony_ci { AR5K_USEC_5211, 43062306a36Sopenharmony_ci { 0x0e8d8fa7, 0x01608f95, 0x0e8d8fa7 } }, 43162306a36Sopenharmony_ci { AR5K_PHY(8), 43262306a36Sopenharmony_ci { 0x02020200, 0x02010200, 0x02020200 } }, 43362306a36Sopenharmony_ci { AR5K_PHY_RF_CTL2, 43462306a36Sopenharmony_ci { 0x00000e0e, 0x00000707, 0x00000e0e } }, 43562306a36Sopenharmony_ci { AR5K_PHY_RF_CTL3, 43662306a36Sopenharmony_ci { 0x0a020001, 0x05010000, 0x0a020001 } }, 43762306a36Sopenharmony_ci { AR5K_PHY_RF_CTL4, 43862306a36Sopenharmony_ci { 0x00000e0e, 0x00000e0e, 0x00000e0e } }, 43962306a36Sopenharmony_ci { AR5K_PHY_PA_CTL, 44062306a36Sopenharmony_ci { 0x00000007, 0x0000000b, 0x0000000b } }, 44162306a36Sopenharmony_ci { AR5K_PHY_SETTLING, 44262306a36Sopenharmony_ci { 0x1372169c, 0x137216a8, 0x1372169c } }, 44362306a36Sopenharmony_ci { AR5K_PHY_GAIN, 44462306a36Sopenharmony_ci { 0x0018ba67, 0x0018ba69, 0x0018ba69 } }, 44562306a36Sopenharmony_ci { AR5K_PHY_DESIRED_SIZE, 44662306a36Sopenharmony_ci { 0x0c28b4e0, 0x0c28b4e0, 0x0c28b4e0 } }, 44762306a36Sopenharmony_ci { AR5K_PHY_SIG, 44862306a36Sopenharmony_ci { 0x7e800d2e, 0x7ec00d2e, 0x7e800d2e } }, 44962306a36Sopenharmony_ci { AR5K_PHY_AGCCOARSE, 45062306a36Sopenharmony_ci { 0x31375d5e, 0x313a5d5e, 0x31375d5e } }, 45162306a36Sopenharmony_ci { AR5K_PHY_AGCCTL, 45262306a36Sopenharmony_ci { 0x0000bd10, 0x0000bd38, 0x0000bd10 } }, 45362306a36Sopenharmony_ci { AR5K_PHY_NF, 45462306a36Sopenharmony_ci { 0x0001ce00, 0x0001ce00, 0x0001ce00 } }, 45562306a36Sopenharmony_ci { AR5K_PHY_RX_DELAY, 45662306a36Sopenharmony_ci { 0x00002710, 0x0000157c, 0x00002710 } }, 45762306a36Sopenharmony_ci { AR5K_PHY(70), 45862306a36Sopenharmony_ci { 0x00000190, 0x00000084, 0x00000190 } }, 45962306a36Sopenharmony_ci { AR5K_PHY_FRAME_CTL_5211, 46062306a36Sopenharmony_ci { 0x6fe01020, 0x6fe00920, 0x6fe01020 } }, 46162306a36Sopenharmony_ci { AR5K_PHY_PCDAC_TXPOWER_BASE, 46262306a36Sopenharmony_ci { 0x05ff14ff, 0x05ff14ff, 0x05ff19ff } }, 46362306a36Sopenharmony_ci { AR5K_RF_BUFFER_CONTROL_4, 46462306a36Sopenharmony_ci { 0x00000010, 0x00000010, 0x00000010 } }, 46562306a36Sopenharmony_ci}; 46662306a36Sopenharmony_ci 46762306a36Sopenharmony_ci/* Initial register settings for AR5212 and newer chips */ 46862306a36Sopenharmony_cistatic const struct ath5k_ini ar5212_ini_common_start[] = { 46962306a36Sopenharmony_ci { AR5K_RXDP, 0x00000000 }, 47062306a36Sopenharmony_ci { AR5K_RXCFG, 0x00000005 }, 47162306a36Sopenharmony_ci { AR5K_MIBC, 0x00000000 }, 47262306a36Sopenharmony_ci { AR5K_TOPS, 0x00000008 }, 47362306a36Sopenharmony_ci { AR5K_RXNOFRM, 0x00000008 }, 47462306a36Sopenharmony_ci { AR5K_TXNOFRM, 0x00000010 }, 47562306a36Sopenharmony_ci { AR5K_RPGTO, 0x00000000 }, 47662306a36Sopenharmony_ci { AR5K_RFCNT, 0x0000001f }, 47762306a36Sopenharmony_ci { AR5K_QUEUE_TXDP(0), 0x00000000 }, 47862306a36Sopenharmony_ci { AR5K_QUEUE_TXDP(1), 0x00000000 }, 47962306a36Sopenharmony_ci { AR5K_QUEUE_TXDP(2), 0x00000000 }, 48062306a36Sopenharmony_ci { AR5K_QUEUE_TXDP(3), 0x00000000 }, 48162306a36Sopenharmony_ci { AR5K_QUEUE_TXDP(4), 0x00000000 }, 48262306a36Sopenharmony_ci { AR5K_QUEUE_TXDP(5), 0x00000000 }, 48362306a36Sopenharmony_ci { AR5K_QUEUE_TXDP(6), 0x00000000 }, 48462306a36Sopenharmony_ci { AR5K_QUEUE_TXDP(7), 0x00000000 }, 48562306a36Sopenharmony_ci { AR5K_QUEUE_TXDP(8), 0x00000000 }, 48662306a36Sopenharmony_ci { AR5K_QUEUE_TXDP(9), 0x00000000 }, 48762306a36Sopenharmony_ci { AR5K_DCU_FP, 0x00000000 }, 48862306a36Sopenharmony_ci { AR5K_DCU_TXP, 0x00000000 }, 48962306a36Sopenharmony_ci /* Tx filter table 0 (32 entries) */ 49062306a36Sopenharmony_ci { AR5K_DCU_TX_FILTER_0(0), 0x00000000 }, /* DCU 0 */ 49162306a36Sopenharmony_ci { AR5K_DCU_TX_FILTER_0(1), 0x00000000 }, 49262306a36Sopenharmony_ci { AR5K_DCU_TX_FILTER_0(2), 0x00000000 }, 49362306a36Sopenharmony_ci { AR5K_DCU_TX_FILTER_0(3), 0x00000000 }, 49462306a36Sopenharmony_ci { AR5K_DCU_TX_FILTER_0(4), 0x00000000 }, /* DCU 1 */ 49562306a36Sopenharmony_ci { AR5K_DCU_TX_FILTER_0(5), 0x00000000 }, 49662306a36Sopenharmony_ci { AR5K_DCU_TX_FILTER_0(6), 0x00000000 }, 49762306a36Sopenharmony_ci { AR5K_DCU_TX_FILTER_0(7), 0x00000000 }, 49862306a36Sopenharmony_ci { AR5K_DCU_TX_FILTER_0(8), 0x00000000 }, /* DCU 2 */ 49962306a36Sopenharmony_ci { AR5K_DCU_TX_FILTER_0(9), 0x00000000 }, 50062306a36Sopenharmony_ci { AR5K_DCU_TX_FILTER_0(10), 0x00000000 }, 50162306a36Sopenharmony_ci { AR5K_DCU_TX_FILTER_0(11), 0x00000000 }, 50262306a36Sopenharmony_ci { AR5K_DCU_TX_FILTER_0(12), 0x00000000 }, /* DCU 3 */ 50362306a36Sopenharmony_ci { AR5K_DCU_TX_FILTER_0(13), 0x00000000 }, 50462306a36Sopenharmony_ci { AR5K_DCU_TX_FILTER_0(14), 0x00000000 }, 50562306a36Sopenharmony_ci { AR5K_DCU_TX_FILTER_0(15), 0x00000000 }, 50662306a36Sopenharmony_ci { AR5K_DCU_TX_FILTER_0(16), 0x00000000 }, /* DCU 4 */ 50762306a36Sopenharmony_ci { AR5K_DCU_TX_FILTER_0(17), 0x00000000 }, 50862306a36Sopenharmony_ci { AR5K_DCU_TX_FILTER_0(18), 0x00000000 }, 50962306a36Sopenharmony_ci { AR5K_DCU_TX_FILTER_0(19), 0x00000000 }, 51062306a36Sopenharmony_ci { AR5K_DCU_TX_FILTER_0(20), 0x00000000 }, /* DCU 5 */ 51162306a36Sopenharmony_ci { AR5K_DCU_TX_FILTER_0(21), 0x00000000 }, 51262306a36Sopenharmony_ci { AR5K_DCU_TX_FILTER_0(22), 0x00000000 }, 51362306a36Sopenharmony_ci { AR5K_DCU_TX_FILTER_0(23), 0x00000000 }, 51462306a36Sopenharmony_ci { AR5K_DCU_TX_FILTER_0(24), 0x00000000 }, /* DCU 6 */ 51562306a36Sopenharmony_ci { AR5K_DCU_TX_FILTER_0(25), 0x00000000 }, 51662306a36Sopenharmony_ci { AR5K_DCU_TX_FILTER_0(26), 0x00000000 }, 51762306a36Sopenharmony_ci { AR5K_DCU_TX_FILTER_0(27), 0x00000000 }, 51862306a36Sopenharmony_ci { AR5K_DCU_TX_FILTER_0(28), 0x00000000 }, /* DCU 7 */ 51962306a36Sopenharmony_ci { AR5K_DCU_TX_FILTER_0(29), 0x00000000 }, 52062306a36Sopenharmony_ci { AR5K_DCU_TX_FILTER_0(30), 0x00000000 }, 52162306a36Sopenharmony_ci { AR5K_DCU_TX_FILTER_0(31), 0x00000000 }, 52262306a36Sopenharmony_ci /* Tx filter table 1 (16 entries) */ 52362306a36Sopenharmony_ci { AR5K_DCU_TX_FILTER_1(0), 0x00000000 }, 52462306a36Sopenharmony_ci { AR5K_DCU_TX_FILTER_1(1), 0x00000000 }, 52562306a36Sopenharmony_ci { AR5K_DCU_TX_FILTER_1(2), 0x00000000 }, 52662306a36Sopenharmony_ci { AR5K_DCU_TX_FILTER_1(3), 0x00000000 }, 52762306a36Sopenharmony_ci { AR5K_DCU_TX_FILTER_1(4), 0x00000000 }, 52862306a36Sopenharmony_ci { AR5K_DCU_TX_FILTER_1(5), 0x00000000 }, 52962306a36Sopenharmony_ci { AR5K_DCU_TX_FILTER_1(6), 0x00000000 }, 53062306a36Sopenharmony_ci { AR5K_DCU_TX_FILTER_1(7), 0x00000000 }, 53162306a36Sopenharmony_ci { AR5K_DCU_TX_FILTER_1(8), 0x00000000 }, 53262306a36Sopenharmony_ci { AR5K_DCU_TX_FILTER_1(9), 0x00000000 }, 53362306a36Sopenharmony_ci { AR5K_DCU_TX_FILTER_1(10), 0x00000000 }, 53462306a36Sopenharmony_ci { AR5K_DCU_TX_FILTER_1(11), 0x00000000 }, 53562306a36Sopenharmony_ci { AR5K_DCU_TX_FILTER_1(12), 0x00000000 }, 53662306a36Sopenharmony_ci { AR5K_DCU_TX_FILTER_1(13), 0x00000000 }, 53762306a36Sopenharmony_ci { AR5K_DCU_TX_FILTER_1(14), 0x00000000 }, 53862306a36Sopenharmony_ci { AR5K_DCU_TX_FILTER_1(15), 0x00000000 }, 53962306a36Sopenharmony_ci { AR5K_DCU_TX_FILTER_CLR, 0x00000000 }, 54062306a36Sopenharmony_ci { AR5K_DCU_TX_FILTER_SET, 0x00000000 }, 54162306a36Sopenharmony_ci { AR5K_STA_ID1, 0x00000000 }, 54262306a36Sopenharmony_ci { AR5K_BSS_ID0, 0x00000000 }, 54362306a36Sopenharmony_ci { AR5K_BSS_ID1, 0x00000000 }, 54462306a36Sopenharmony_ci { AR5K_BEACON_5211, 0x00000000 }, 54562306a36Sopenharmony_ci { AR5K_CFP_PERIOD_5211, 0x00000000 }, 54662306a36Sopenharmony_ci { AR5K_TIMER0_5211, 0x00000030 }, 54762306a36Sopenharmony_ci { AR5K_TIMER1_5211, 0x0007ffff }, 54862306a36Sopenharmony_ci { AR5K_TIMER2_5211, 0x01ffffff }, 54962306a36Sopenharmony_ci { AR5K_TIMER3_5211, 0x00000031 }, 55062306a36Sopenharmony_ci { AR5K_CFP_DUR_5211, 0x00000000 }, 55162306a36Sopenharmony_ci { AR5K_RX_FILTER_5211, 0x00000000 }, 55262306a36Sopenharmony_ci { AR5K_DIAG_SW_5211, 0x00000000 }, 55362306a36Sopenharmony_ci { AR5K_ADDAC_TEST, 0x00000000 }, 55462306a36Sopenharmony_ci { AR5K_DEFAULT_ANTENNA, 0x00000000 }, 55562306a36Sopenharmony_ci { AR5K_FRAME_CTL_QOSM, 0x000fc78f }, 55662306a36Sopenharmony_ci { AR5K_XRMODE, 0x2a82301a }, 55762306a36Sopenharmony_ci { AR5K_XRDELAY, 0x05dc01e0 }, 55862306a36Sopenharmony_ci { AR5K_XRTIMEOUT, 0x1f402710 }, 55962306a36Sopenharmony_ci { AR5K_XRCHIRP, 0x01f40000 }, 56062306a36Sopenharmony_ci { AR5K_XRSTOMP, 0x00001e1c }, 56162306a36Sopenharmony_ci { AR5K_SLEEP0, 0x0002aaaa }, 56262306a36Sopenharmony_ci { AR5K_SLEEP1, 0x02005555 }, 56362306a36Sopenharmony_ci { AR5K_SLEEP2, 0x00000000 }, 56462306a36Sopenharmony_ci { AR_BSSMSKL, 0xffffffff }, 56562306a36Sopenharmony_ci { AR_BSSMSKU, 0x0000ffff }, 56662306a36Sopenharmony_ci { AR5K_TXPC, 0x00000000 }, 56762306a36Sopenharmony_ci { AR5K_PROFCNT_TX, 0x00000000 }, 56862306a36Sopenharmony_ci { AR5K_PROFCNT_RX, 0x00000000 }, 56962306a36Sopenharmony_ci { AR5K_PROFCNT_RXCLR, 0x00000000 }, 57062306a36Sopenharmony_ci { AR5K_PROFCNT_CYCLE, 0x00000000 }, 57162306a36Sopenharmony_ci { AR5K_QUIET_CTL1, 0x00000088 }, 57262306a36Sopenharmony_ci /* Initial rate duration table (32 entries )*/ 57362306a36Sopenharmony_ci { AR5K_RATE_DUR(0), 0x00000000 }, 57462306a36Sopenharmony_ci { AR5K_RATE_DUR(1), 0x0000008c }, 57562306a36Sopenharmony_ci { AR5K_RATE_DUR(2), 0x000000e4 }, 57662306a36Sopenharmony_ci { AR5K_RATE_DUR(3), 0x000002d5 }, 57762306a36Sopenharmony_ci { AR5K_RATE_DUR(4), 0x00000000 }, 57862306a36Sopenharmony_ci { AR5K_RATE_DUR(5), 0x00000000 }, 57962306a36Sopenharmony_ci { AR5K_RATE_DUR(6), 0x000000a0 }, 58062306a36Sopenharmony_ci { AR5K_RATE_DUR(7), 0x000001c9 }, 58162306a36Sopenharmony_ci { AR5K_RATE_DUR(8), 0x0000002c }, 58262306a36Sopenharmony_ci { AR5K_RATE_DUR(9), 0x0000002c }, 58362306a36Sopenharmony_ci { AR5K_RATE_DUR(10), 0x00000030 }, 58462306a36Sopenharmony_ci { AR5K_RATE_DUR(11), 0x0000003c }, 58562306a36Sopenharmony_ci { AR5K_RATE_DUR(12), 0x0000002c }, 58662306a36Sopenharmony_ci { AR5K_RATE_DUR(13), 0x0000002c }, 58762306a36Sopenharmony_ci { AR5K_RATE_DUR(14), 0x00000030 }, 58862306a36Sopenharmony_ci { AR5K_RATE_DUR(15), 0x0000003c }, 58962306a36Sopenharmony_ci { AR5K_RATE_DUR(16), 0x00000000 }, 59062306a36Sopenharmony_ci { AR5K_RATE_DUR(17), 0x00000000 }, 59162306a36Sopenharmony_ci { AR5K_RATE_DUR(18), 0x00000000 }, 59262306a36Sopenharmony_ci { AR5K_RATE_DUR(19), 0x00000000 }, 59362306a36Sopenharmony_ci { AR5K_RATE_DUR(20), 0x00000000 }, 59462306a36Sopenharmony_ci { AR5K_RATE_DUR(21), 0x00000000 }, 59562306a36Sopenharmony_ci { AR5K_RATE_DUR(22), 0x00000000 }, 59662306a36Sopenharmony_ci { AR5K_RATE_DUR(23), 0x00000000 }, 59762306a36Sopenharmony_ci { AR5K_RATE_DUR(24), 0x000000d5 }, 59862306a36Sopenharmony_ci { AR5K_RATE_DUR(25), 0x000000df }, 59962306a36Sopenharmony_ci { AR5K_RATE_DUR(26), 0x00000102 }, 60062306a36Sopenharmony_ci { AR5K_RATE_DUR(27), 0x0000013a }, 60162306a36Sopenharmony_ci { AR5K_RATE_DUR(28), 0x00000075 }, 60262306a36Sopenharmony_ci { AR5K_RATE_DUR(29), 0x0000007f }, 60362306a36Sopenharmony_ci { AR5K_RATE_DUR(30), 0x000000a2 }, 60462306a36Sopenharmony_ci { AR5K_RATE_DUR(31), 0x00000000 }, 60562306a36Sopenharmony_ci { AR5K_QUIET_CTL2, 0x00010002 }, 60662306a36Sopenharmony_ci { AR5K_TSF_PARM, 0x00000001 }, 60762306a36Sopenharmony_ci { AR5K_QOS_NOACK, 0x000000c0 }, 60862306a36Sopenharmony_ci { AR5K_PHY_ERR_FIL, 0x00000000 }, 60962306a36Sopenharmony_ci { AR5K_XRLAT_TX, 0x00000168 }, 61062306a36Sopenharmony_ci { AR5K_ACKSIFS, 0x00000000 }, 61162306a36Sopenharmony_ci /* Rate -> db table 61262306a36Sopenharmony_ci * notice ...03<-02<-01<-00 ! */ 61362306a36Sopenharmony_ci { AR5K_RATE2DB(0), 0x03020100 }, 61462306a36Sopenharmony_ci { AR5K_RATE2DB(1), 0x07060504 }, 61562306a36Sopenharmony_ci { AR5K_RATE2DB(2), 0x0b0a0908 }, 61662306a36Sopenharmony_ci { AR5K_RATE2DB(3), 0x0f0e0d0c }, 61762306a36Sopenharmony_ci { AR5K_RATE2DB(4), 0x13121110 }, 61862306a36Sopenharmony_ci { AR5K_RATE2DB(5), 0x17161514 }, 61962306a36Sopenharmony_ci { AR5K_RATE2DB(6), 0x1b1a1918 }, 62062306a36Sopenharmony_ci { AR5K_RATE2DB(7), 0x1f1e1d1c }, 62162306a36Sopenharmony_ci /* Db -> Rate table */ 62262306a36Sopenharmony_ci { AR5K_DB2RATE(0), 0x03020100 }, 62362306a36Sopenharmony_ci { AR5K_DB2RATE(1), 0x07060504 }, 62462306a36Sopenharmony_ci { AR5K_DB2RATE(2), 0x0b0a0908 }, 62562306a36Sopenharmony_ci { AR5K_DB2RATE(3), 0x0f0e0d0c }, 62662306a36Sopenharmony_ci { AR5K_DB2RATE(4), 0x13121110 }, 62762306a36Sopenharmony_ci { AR5K_DB2RATE(5), 0x17161514 }, 62862306a36Sopenharmony_ci { AR5K_DB2RATE(6), 0x1b1a1918 }, 62962306a36Sopenharmony_ci { AR5K_DB2RATE(7), 0x1f1e1d1c }, 63062306a36Sopenharmony_ci /* PHY registers (Common settings 63162306a36Sopenharmony_ci * for all chips/modes) */ 63262306a36Sopenharmony_ci { AR5K_PHY(3), 0xad848e19 }, 63362306a36Sopenharmony_ci { AR5K_PHY(4), 0x7d28e000 }, 63462306a36Sopenharmony_ci { AR5K_PHY_TIMING_3, 0x9c0a9f6b }, 63562306a36Sopenharmony_ci { AR5K_PHY_ACT, 0x00000000 }, 63662306a36Sopenharmony_ci { AR5K_PHY(16), 0x206a017a }, 63762306a36Sopenharmony_ci { AR5K_PHY(21), 0x00000859 }, 63862306a36Sopenharmony_ci { AR5K_PHY_BIN_MASK_1, 0x00000000 }, 63962306a36Sopenharmony_ci { AR5K_PHY_BIN_MASK_2, 0x00000000 }, 64062306a36Sopenharmony_ci { AR5K_PHY_BIN_MASK_3, 0x00000000 }, 64162306a36Sopenharmony_ci { AR5K_PHY_BIN_MASK_CTL, 0x00800000 }, 64262306a36Sopenharmony_ci { AR5K_PHY_ANT_CTL, 0x00000001 }, 64362306a36Sopenharmony_ci /*{ AR5K_PHY(71), 0x0000092a },*/ /* Old value */ 64462306a36Sopenharmony_ci { AR5K_PHY_MAX_RX_LEN, 0x00000c80 }, 64562306a36Sopenharmony_ci { AR5K_PHY_IQ, 0x05100000 }, 64662306a36Sopenharmony_ci { AR5K_PHY_WARM_RESET, 0x00000001 }, 64762306a36Sopenharmony_ci { AR5K_PHY_CTL, 0x00000004 }, 64862306a36Sopenharmony_ci { AR5K_PHY_TXPOWER_RATE1, 0x1e1f2022 }, 64962306a36Sopenharmony_ci { AR5K_PHY_TXPOWER_RATE2, 0x0a0b0c0d }, 65062306a36Sopenharmony_ci { AR5K_PHY_TXPOWER_RATE_MAX, 0x0000003f }, 65162306a36Sopenharmony_ci { AR5K_PHY(82), 0x9280b212 }, 65262306a36Sopenharmony_ci { AR5K_PHY_RADAR, 0x5d50e188 }, 65362306a36Sopenharmony_ci /*{ AR5K_PHY(86), 0x000000ff },*/ 65462306a36Sopenharmony_ci { AR5K_PHY(87), 0x004b6a8e }, 65562306a36Sopenharmony_ci { AR5K_PHY_NFTHRES, 0x000003ce }, 65662306a36Sopenharmony_ci { AR5K_PHY_RESTART, 0x192fb515 }, 65762306a36Sopenharmony_ci { AR5K_PHY(94), 0x00000001 }, 65862306a36Sopenharmony_ci { AR5K_PHY_RFBUS_REQ, 0x00000000 }, 65962306a36Sopenharmony_ci /*{ AR5K_PHY(644), 0x0080a333 },*/ /* Old value */ 66062306a36Sopenharmony_ci /*{ AR5K_PHY(645), 0x00206c10 },*/ /* Old value */ 66162306a36Sopenharmony_ci { AR5K_PHY(644), 0x00806333 }, 66262306a36Sopenharmony_ci { AR5K_PHY(645), 0x00106c10 }, 66362306a36Sopenharmony_ci { AR5K_PHY(646), 0x009c4060 }, 66462306a36Sopenharmony_ci /* { AR5K_PHY(647), 0x1483800a }, */ 66562306a36Sopenharmony_ci /* { AR5K_PHY(648), 0x01831061 }, */ /* Old value */ 66662306a36Sopenharmony_ci { AR5K_PHY(648), 0x018830c6 }, 66762306a36Sopenharmony_ci { AR5K_PHY(649), 0x00000400 }, 66862306a36Sopenharmony_ci /*{ AR5K_PHY(650), 0x000001b5 },*/ 66962306a36Sopenharmony_ci { AR5K_PHY(651), 0x00000000 }, 67062306a36Sopenharmony_ci { AR5K_PHY_TXPOWER_RATE3, 0x20202020 }, 67162306a36Sopenharmony_ci { AR5K_PHY_TXPOWER_RATE4, 0x20202020 }, 67262306a36Sopenharmony_ci /*{ AR5K_PHY(655), 0x13c889af },*/ 67362306a36Sopenharmony_ci { AR5K_PHY(656), 0x38490a20 }, 67462306a36Sopenharmony_ci { AR5K_PHY(657), 0x00007bb6 }, 67562306a36Sopenharmony_ci { AR5K_PHY(658), 0x0fff3ffc }, 67662306a36Sopenharmony_ci}; 67762306a36Sopenharmony_ci 67862306a36Sopenharmony_ci/* Initial mode-specific settings for AR5212 (Written before ar5212_ini) */ 67962306a36Sopenharmony_cistatic const struct ath5k_ini_mode ar5212_ini_mode_start[] = { 68062306a36Sopenharmony_ci { AR5K_QUEUE_DFS_LOCAL_IFS(0), 68162306a36Sopenharmony_ci /* A/XR B G */ 68262306a36Sopenharmony_ci { 0x002ffc0f, 0x002ffc1f, 0x002ffc0f } }, 68362306a36Sopenharmony_ci { AR5K_QUEUE_DFS_LOCAL_IFS(1), 68462306a36Sopenharmony_ci { 0x002ffc0f, 0x002ffc1f, 0x002ffc0f } }, 68562306a36Sopenharmony_ci { AR5K_QUEUE_DFS_LOCAL_IFS(2), 68662306a36Sopenharmony_ci { 0x002ffc0f, 0x002ffc1f, 0x002ffc0f } }, 68762306a36Sopenharmony_ci { AR5K_QUEUE_DFS_LOCAL_IFS(3), 68862306a36Sopenharmony_ci { 0x002ffc0f, 0x002ffc1f, 0x002ffc0f } }, 68962306a36Sopenharmony_ci { AR5K_QUEUE_DFS_LOCAL_IFS(4), 69062306a36Sopenharmony_ci { 0x002ffc0f, 0x002ffc1f, 0x002ffc0f } }, 69162306a36Sopenharmony_ci { AR5K_QUEUE_DFS_LOCAL_IFS(5), 69262306a36Sopenharmony_ci { 0x002ffc0f, 0x002ffc1f, 0x002ffc0f } }, 69362306a36Sopenharmony_ci { AR5K_QUEUE_DFS_LOCAL_IFS(6), 69462306a36Sopenharmony_ci { 0x002ffc0f, 0x002ffc1f, 0x002ffc0f } }, 69562306a36Sopenharmony_ci { AR5K_QUEUE_DFS_LOCAL_IFS(7), 69662306a36Sopenharmony_ci { 0x002ffc0f, 0x002ffc1f, 0x002ffc0f } }, 69762306a36Sopenharmony_ci { AR5K_QUEUE_DFS_LOCAL_IFS(8), 69862306a36Sopenharmony_ci { 0x002ffc0f, 0x002ffc1f, 0x002ffc0f } }, 69962306a36Sopenharmony_ci { AR5K_QUEUE_DFS_LOCAL_IFS(9), 70062306a36Sopenharmony_ci { 0x002ffc0f, 0x002ffc1f, 0x002ffc0f } }, 70162306a36Sopenharmony_ci { AR5K_DCU_GBL_IFS_SIFS, 70262306a36Sopenharmony_ci { 0x00000230, 0x000000b0, 0x00000160 } }, 70362306a36Sopenharmony_ci { AR5K_DCU_GBL_IFS_SLOT, 70462306a36Sopenharmony_ci { 0x00000168, 0x000001b8, 0x0000018c } }, 70562306a36Sopenharmony_ci { AR5K_DCU_GBL_IFS_EIFS, 70662306a36Sopenharmony_ci { 0x00000e60, 0x00001f1c, 0x00003e38 } }, 70762306a36Sopenharmony_ci { AR5K_DCU_GBL_IFS_MISC, 70862306a36Sopenharmony_ci { 0x0000a0e0, 0x00005880, 0x0000b0e0 } }, 70962306a36Sopenharmony_ci { AR5K_TIME_OUT, 71062306a36Sopenharmony_ci { 0x03e803e8, 0x04200420, 0x08400840 } }, 71162306a36Sopenharmony_ci { AR5K_PHY(8), 71262306a36Sopenharmony_ci { 0x02020200, 0x02010200, 0x02020200 } }, 71362306a36Sopenharmony_ci { AR5K_PHY_RF_CTL2, 71462306a36Sopenharmony_ci { 0x00000e0e, 0x00000707, 0x00000e0e } }, 71562306a36Sopenharmony_ci { AR5K_PHY_SETTLING, 71662306a36Sopenharmony_ci { 0x1372161c, 0x13721722, 0x137216a2 } }, 71762306a36Sopenharmony_ci { AR5K_PHY_AGCCTL, 71862306a36Sopenharmony_ci { 0x00009d10, 0x00009d18, 0x00009d18 } }, 71962306a36Sopenharmony_ci { AR5K_PHY_NF, 72062306a36Sopenharmony_ci { 0x0001ce00, 0x0001ce00, 0x0001ce00 } }, 72162306a36Sopenharmony_ci { AR5K_PHY_WEAK_OFDM_HIGH_THR, 72262306a36Sopenharmony_ci { 0x409a4190, 0x409a4190, 0x409a4190 } }, 72362306a36Sopenharmony_ci { AR5K_PHY(70), 72462306a36Sopenharmony_ci { 0x000001b8, 0x00000084, 0x00000108 } }, 72562306a36Sopenharmony_ci { AR5K_PHY_OFDM_SELFCORR, 72662306a36Sopenharmony_ci { 0x10058a05, 0x10058a05, 0x10058a05 } }, 72762306a36Sopenharmony_ci { 0xa230, 72862306a36Sopenharmony_ci { 0x00000000, 0x00000000, 0x00000108 } }, 72962306a36Sopenharmony_ci}; 73062306a36Sopenharmony_ci 73162306a36Sopenharmony_ci/* Initial mode-specific settings for AR5212 + RF5111 73262306a36Sopenharmony_ci * (Written after ar5212_ini) */ 73362306a36Sopenharmony_cistatic const struct ath5k_ini_mode rf5111_ini_mode_end[] = { 73462306a36Sopenharmony_ci { AR5K_TXCFG, 73562306a36Sopenharmony_ci /* A/XR B G */ 73662306a36Sopenharmony_ci { 0x00008015, 0x00008015, 0x00008015 } }, 73762306a36Sopenharmony_ci { AR5K_USEC_5211, 73862306a36Sopenharmony_ci { 0x128d8fa7, 0x04e00f95, 0x12e00fab } }, 73962306a36Sopenharmony_ci { AR5K_PHY_RF_CTL3, 74062306a36Sopenharmony_ci { 0x0a020001, 0x05010100, 0x0a020001 } }, 74162306a36Sopenharmony_ci { AR5K_PHY_RF_CTL4, 74262306a36Sopenharmony_ci { 0x00000e0e, 0x00000e0e, 0x00000e0e } }, 74362306a36Sopenharmony_ci { AR5K_PHY_PA_CTL, 74462306a36Sopenharmony_ci { 0x00000007, 0x0000000b, 0x0000000b } }, 74562306a36Sopenharmony_ci { AR5K_PHY_GAIN, 74662306a36Sopenharmony_ci { 0x0018da5a, 0x0018ca69, 0x0018ca69 } }, 74762306a36Sopenharmony_ci { AR5K_PHY_DESIRED_SIZE, 74862306a36Sopenharmony_ci { 0x0de8b4e0, 0x0de8b4e0, 0x0de8b4e0 } }, 74962306a36Sopenharmony_ci { AR5K_PHY_SIG, 75062306a36Sopenharmony_ci { 0x7e800d2e, 0x7ee84d2e, 0x7ee84d2e } }, 75162306a36Sopenharmony_ci { AR5K_PHY_AGCCOARSE, 75262306a36Sopenharmony_ci { 0x3137665e, 0x3137665e, 0x3137665e } }, 75362306a36Sopenharmony_ci { AR5K_PHY_WEAK_OFDM_LOW_THR, 75462306a36Sopenharmony_ci { 0x050cb081, 0x050cb081, 0x050cb080 } }, 75562306a36Sopenharmony_ci { AR5K_PHY_RX_DELAY, 75662306a36Sopenharmony_ci { 0x00002710, 0x0000157c, 0x00002af8 } }, 75762306a36Sopenharmony_ci { AR5K_PHY_FRAME_CTL_5211, 75862306a36Sopenharmony_ci { 0xf7b81020, 0xf7b80d20, 0xf7b81020 } }, 75962306a36Sopenharmony_ci { AR5K_PHY_GAIN_2GHZ, 76062306a36Sopenharmony_ci { 0x642c416a, 0x6440416a, 0x6440416a } }, 76162306a36Sopenharmony_ci { AR5K_PHY_CCK_RX_CTL_4, 76262306a36Sopenharmony_ci { 0x1883800a, 0x1873800a, 0x1883800a } }, 76362306a36Sopenharmony_ci}; 76462306a36Sopenharmony_ci 76562306a36Sopenharmony_ci/* Common for all modes */ 76662306a36Sopenharmony_cistatic const struct ath5k_ini rf5111_ini_common_end[] = { 76762306a36Sopenharmony_ci { AR5K_DCU_FP, 0x00000000 }, 76862306a36Sopenharmony_ci { AR5K_PHY_AGC, 0x00000000 }, 76962306a36Sopenharmony_ci { AR5K_PHY_ADC_CTL, 0x00022ffe }, 77062306a36Sopenharmony_ci { 0x983c, 0x00020100 }, 77162306a36Sopenharmony_ci { AR5K_PHY_GAIN_OFFSET, 0x1284613c }, 77262306a36Sopenharmony_ci { AR5K_PHY_PAPD_PROBE, 0x00004883 }, 77362306a36Sopenharmony_ci { 0x9940, 0x00000004 }, 77462306a36Sopenharmony_ci { 0x9958, 0x000000ff }, 77562306a36Sopenharmony_ci { 0x9974, 0x00000000 }, 77662306a36Sopenharmony_ci { AR5K_PHY_SPENDING, 0x00000018 }, 77762306a36Sopenharmony_ci { AR5K_PHY_CCKTXCTL, 0x00000000 }, 77862306a36Sopenharmony_ci { AR5K_PHY_CCK_CROSSCORR, 0xd03e6788 }, 77962306a36Sopenharmony_ci { AR5K_PHY_DAG_CCK_CTL, 0x000001b5 }, 78062306a36Sopenharmony_ci { 0xa23c, 0x13c889af }, 78162306a36Sopenharmony_ci}; 78262306a36Sopenharmony_ci 78362306a36Sopenharmony_ci 78462306a36Sopenharmony_ci/* Initial mode-specific settings for AR5212 + RF5112 78562306a36Sopenharmony_ci * (Written after ar5212_ini) */ 78662306a36Sopenharmony_cistatic const struct ath5k_ini_mode rf5112_ini_mode_end[] = { 78762306a36Sopenharmony_ci { AR5K_TXCFG, 78862306a36Sopenharmony_ci /* A/XR B G */ 78962306a36Sopenharmony_ci { 0x00008015, 0x00008015, 0x00008015 } }, 79062306a36Sopenharmony_ci { AR5K_USEC_5211, 79162306a36Sopenharmony_ci { 0x128d93a7, 0x04e01395, 0x12e013ab } }, 79262306a36Sopenharmony_ci { AR5K_PHY_RF_CTL3, 79362306a36Sopenharmony_ci { 0x0a020001, 0x05020100, 0x0a020001 } }, 79462306a36Sopenharmony_ci { AR5K_PHY_RF_CTL4, 79562306a36Sopenharmony_ci { 0x00000e0e, 0x00000e0e, 0x00000e0e } }, 79662306a36Sopenharmony_ci { AR5K_PHY_PA_CTL, 79762306a36Sopenharmony_ci { 0x00000007, 0x0000000b, 0x0000000b } }, 79862306a36Sopenharmony_ci { AR5K_PHY_GAIN, 79962306a36Sopenharmony_ci { 0x0018da6d, 0x0018ca75, 0x0018ca75 } }, 80062306a36Sopenharmony_ci { AR5K_PHY_DESIRED_SIZE, 80162306a36Sopenharmony_ci { 0x0de8b4e0, 0x0de8b4e0, 0x0de8b4e0 } }, 80262306a36Sopenharmony_ci { AR5K_PHY_SIG, 80362306a36Sopenharmony_ci { 0x7e800d2e, 0x7ee80d2e, 0x7ee80d2e } }, 80462306a36Sopenharmony_ci { AR5K_PHY_AGCCOARSE, 80562306a36Sopenharmony_ci { 0x3137665e, 0x3137665e, 0x3137665e } }, 80662306a36Sopenharmony_ci { AR5K_PHY_WEAK_OFDM_LOW_THR, 80762306a36Sopenharmony_ci { 0x050cb081, 0x050cb081, 0x050cb081 } }, 80862306a36Sopenharmony_ci { AR5K_PHY_RX_DELAY, 80962306a36Sopenharmony_ci { 0x000007d0, 0x0000044c, 0x00000898 } }, 81062306a36Sopenharmony_ci { AR5K_PHY_FRAME_CTL_5211, 81162306a36Sopenharmony_ci { 0xf7b81020, 0xf7b80d10, 0xf7b81010 } }, 81262306a36Sopenharmony_ci { AR5K_PHY_CCKTXCTL, 81362306a36Sopenharmony_ci { 0x00000000, 0x00000008, 0x00000008 } }, 81462306a36Sopenharmony_ci { AR5K_PHY_CCK_CROSSCORR, 81562306a36Sopenharmony_ci { 0xd6be6788, 0xd03e6788, 0xd03e6788 } }, 81662306a36Sopenharmony_ci { AR5K_PHY_GAIN_2GHZ, 81762306a36Sopenharmony_ci { 0x642c0140, 0x6442c160, 0x6442c160 } }, 81862306a36Sopenharmony_ci { AR5K_PHY_CCK_RX_CTL_4, 81962306a36Sopenharmony_ci { 0x1883800a, 0x1873800a, 0x1883800a } }, 82062306a36Sopenharmony_ci}; 82162306a36Sopenharmony_ci 82262306a36Sopenharmony_cistatic const struct ath5k_ini rf5112_ini_common_end[] = { 82362306a36Sopenharmony_ci { AR5K_DCU_FP, 0x00000000 }, 82462306a36Sopenharmony_ci { AR5K_PHY_AGC, 0x00000000 }, 82562306a36Sopenharmony_ci { AR5K_PHY_ADC_CTL, 0x00022ffe }, 82662306a36Sopenharmony_ci { 0x983c, 0x00020100 }, 82762306a36Sopenharmony_ci { AR5K_PHY_GAIN_OFFSET, 0x1284613c }, 82862306a36Sopenharmony_ci { AR5K_PHY_PAPD_PROBE, 0x00004882 }, 82962306a36Sopenharmony_ci { 0x9940, 0x00000004 }, 83062306a36Sopenharmony_ci { 0x9958, 0x000000ff }, 83162306a36Sopenharmony_ci { 0x9974, 0x00000000 }, 83262306a36Sopenharmony_ci { AR5K_PHY_DAG_CCK_CTL, 0x000001b5 }, 83362306a36Sopenharmony_ci { 0xa23c, 0x13c889af }, 83462306a36Sopenharmony_ci}; 83562306a36Sopenharmony_ci 83662306a36Sopenharmony_ci 83762306a36Sopenharmony_ci/* Initial mode-specific settings for RF5413/5414 83862306a36Sopenharmony_ci * (Written after ar5212_ini) */ 83962306a36Sopenharmony_cistatic const struct ath5k_ini_mode rf5413_ini_mode_end[] = { 84062306a36Sopenharmony_ci { AR5K_TXCFG, 84162306a36Sopenharmony_ci /* A/XR B G */ 84262306a36Sopenharmony_ci { 0x00000015, 0x00000015, 0x00000015 } }, 84362306a36Sopenharmony_ci { AR5K_USEC_5211, 84462306a36Sopenharmony_ci { 0x128d93a7, 0x04e01395, 0x12e013ab } }, 84562306a36Sopenharmony_ci { AR5K_PHY_RF_CTL3, 84662306a36Sopenharmony_ci { 0x0a020001, 0x05020100, 0x0a020001 } }, 84762306a36Sopenharmony_ci { AR5K_PHY_RF_CTL4, 84862306a36Sopenharmony_ci { 0x00000e0e, 0x00000e0e, 0x00000e0e } }, 84962306a36Sopenharmony_ci { AR5K_PHY_PA_CTL, 85062306a36Sopenharmony_ci { 0x00000007, 0x0000000b, 0x0000000b } }, 85162306a36Sopenharmony_ci { AR5K_PHY_GAIN, 85262306a36Sopenharmony_ci { 0x0018fa61, 0x001a1a63, 0x001a1a63 } }, 85362306a36Sopenharmony_ci { AR5K_PHY_DESIRED_SIZE, 85462306a36Sopenharmony_ci { 0x0c98b4e0, 0x0c98b0da, 0x0c98b0da } }, 85562306a36Sopenharmony_ci { AR5K_PHY_SIG, 85662306a36Sopenharmony_ci { 0x7ec80d2e, 0x7ec80d2e, 0x7ec80d2e } }, 85762306a36Sopenharmony_ci { AR5K_PHY_AGCCOARSE, 85862306a36Sopenharmony_ci { 0x3139605e, 0x3139605e, 0x3139605e } }, 85962306a36Sopenharmony_ci { AR5K_PHY_WEAK_OFDM_LOW_THR, 86062306a36Sopenharmony_ci { 0x050cb081, 0x050cb081, 0x050cb081 } }, 86162306a36Sopenharmony_ci { AR5K_PHY_RX_DELAY, 86262306a36Sopenharmony_ci { 0x000007d0, 0x0000044c, 0x00000898 } }, 86362306a36Sopenharmony_ci { AR5K_PHY_FRAME_CTL_5211, 86462306a36Sopenharmony_ci { 0xf7b81000, 0xf7b80d00, 0xf7b81000 } }, 86562306a36Sopenharmony_ci { AR5K_PHY_CCKTXCTL, 86662306a36Sopenharmony_ci { 0x00000000, 0x00000000, 0x00000000 } }, 86762306a36Sopenharmony_ci { AR5K_PHY_CCK_CROSSCORR, 86862306a36Sopenharmony_ci { 0xd6be6788, 0xd03e6788, 0xd03e6788 } }, 86962306a36Sopenharmony_ci { AR5K_PHY_GAIN_2GHZ, 87062306a36Sopenharmony_ci { 0x002ec1e0, 0x002ac120, 0x002ac120 } }, 87162306a36Sopenharmony_ci { AR5K_PHY_CCK_RX_CTL_4, 87262306a36Sopenharmony_ci { 0x1883800a, 0x1863800a, 0x1883800a } }, 87362306a36Sopenharmony_ci { 0xa300, 87462306a36Sopenharmony_ci { 0x18010000, 0x18010000, 0x18010000 } }, 87562306a36Sopenharmony_ci { 0xa304, 87662306a36Sopenharmony_ci { 0x30032602, 0x30032602, 0x30032602 } }, 87762306a36Sopenharmony_ci { 0xa308, 87862306a36Sopenharmony_ci { 0x48073e06, 0x48073e06, 0x48073e06 } }, 87962306a36Sopenharmony_ci { 0xa30c, 88062306a36Sopenharmony_ci { 0x560b4c0a, 0x560b4c0a, 0x560b4c0a } }, 88162306a36Sopenharmony_ci { 0xa310, 88262306a36Sopenharmony_ci { 0x641a600f, 0x641a600f, 0x641a600f } }, 88362306a36Sopenharmony_ci { 0xa314, 88462306a36Sopenharmony_ci { 0x784f6e1b, 0x784f6e1b, 0x784f6e1b } }, 88562306a36Sopenharmony_ci { 0xa318, 88662306a36Sopenharmony_ci { 0x868f7c5a, 0x868f7c5a, 0x868f7c5a } }, 88762306a36Sopenharmony_ci { 0xa31c, 88862306a36Sopenharmony_ci { 0x90cf865b, 0x8ecf865b, 0x8ecf865b } }, 88962306a36Sopenharmony_ci { 0xa320, 89062306a36Sopenharmony_ci { 0x9d4f970f, 0x9b4f970f, 0x9b4f970f } }, 89162306a36Sopenharmony_ci { 0xa324, 89262306a36Sopenharmony_ci { 0xa7cfa38f, 0xa3cf9f8f, 0xa3cf9f8f } }, 89362306a36Sopenharmony_ci { 0xa328, 89462306a36Sopenharmony_ci { 0xb55faf1f, 0xb35faf1f, 0xb35faf1f } }, 89562306a36Sopenharmony_ci { 0xa32c, 89662306a36Sopenharmony_ci { 0xbddfb99f, 0xbbdfb99f, 0xbbdfb99f } }, 89762306a36Sopenharmony_ci { 0xa330, 89862306a36Sopenharmony_ci { 0xcb7fc53f, 0xcb7fc73f, 0xcb7fc73f } }, 89962306a36Sopenharmony_ci { 0xa334, 90062306a36Sopenharmony_ci { 0xd5ffd1bf, 0xd3ffd1bf, 0xd3ffd1bf } }, 90162306a36Sopenharmony_ci}; 90262306a36Sopenharmony_ci 90362306a36Sopenharmony_cistatic const struct ath5k_ini rf5413_ini_common_end[] = { 90462306a36Sopenharmony_ci { AR5K_DCU_FP, 0x000003e0 }, 90562306a36Sopenharmony_ci { AR5K_5414_CBCFG, 0x00000010 }, 90662306a36Sopenharmony_ci { AR5K_SEQ_MASK, 0x0000000f }, 90762306a36Sopenharmony_ci { 0x809c, 0x00000000 }, 90862306a36Sopenharmony_ci { 0x80a0, 0x00000000 }, 90962306a36Sopenharmony_ci { AR5K_MIC_QOS_CTL, 0x00000000 }, 91062306a36Sopenharmony_ci { AR5K_MIC_QOS_SEL, 0x00000000 }, 91162306a36Sopenharmony_ci { AR5K_MISC_MODE, 0x00000000 }, 91262306a36Sopenharmony_ci { AR5K_OFDM_FIL_CNT, 0x00000000 }, 91362306a36Sopenharmony_ci { AR5K_CCK_FIL_CNT, 0x00000000 }, 91462306a36Sopenharmony_ci { AR5K_PHYERR_CNT1, 0x00000000 }, 91562306a36Sopenharmony_ci { AR5K_PHYERR_CNT1_MASK, 0x00000000 }, 91662306a36Sopenharmony_ci { AR5K_PHYERR_CNT2, 0x00000000 }, 91762306a36Sopenharmony_ci { AR5K_PHYERR_CNT2_MASK, 0x00000000 }, 91862306a36Sopenharmony_ci { AR5K_TSF_THRES, 0x00000000 }, 91962306a36Sopenharmony_ci { 0x8140, 0x800003f9 }, 92062306a36Sopenharmony_ci { 0x8144, 0x00000000 }, 92162306a36Sopenharmony_ci { AR5K_PHY_AGC, 0x00000000 }, 92262306a36Sopenharmony_ci { AR5K_PHY_ADC_CTL, 0x0000a000 }, 92362306a36Sopenharmony_ci { 0x983c, 0x00200400 }, 92462306a36Sopenharmony_ci { AR5K_PHY_GAIN_OFFSET, 0x1284233c }, 92562306a36Sopenharmony_ci { AR5K_PHY_SCR, 0x0000001f }, 92662306a36Sopenharmony_ci { AR5K_PHY_SLMT, 0x00000080 }, 92762306a36Sopenharmony_ci { AR5K_PHY_SCAL, 0x0000000e }, 92862306a36Sopenharmony_ci { 0x9958, 0x00081fff }, 92962306a36Sopenharmony_ci { AR5K_PHY_TIMING_7, 0x00000000 }, 93062306a36Sopenharmony_ci { AR5K_PHY_TIMING_8, 0x02800000 }, 93162306a36Sopenharmony_ci { AR5K_PHY_TIMING_11, 0x00000000 }, 93262306a36Sopenharmony_ci { AR5K_PHY_HEAVY_CLIP_ENABLE, 0x00000000 }, 93362306a36Sopenharmony_ci { 0x99e4, 0xaaaaaaaa }, 93462306a36Sopenharmony_ci { 0x99e8, 0x3c466478 }, 93562306a36Sopenharmony_ci { 0x99ec, 0x000000aa }, 93662306a36Sopenharmony_ci { AR5K_PHY_SCLOCK, 0x0000000c }, 93762306a36Sopenharmony_ci { AR5K_PHY_SDELAY, 0x000000ff }, 93862306a36Sopenharmony_ci { AR5K_PHY_SPENDING, 0x00000014 }, 93962306a36Sopenharmony_ci { AR5K_PHY_DAG_CCK_CTL, 0x000009b5 }, 94062306a36Sopenharmony_ci { 0xa23c, 0x93c889af }, 94162306a36Sopenharmony_ci { AR5K_PHY_FAST_ADC, 0x00000001 }, 94262306a36Sopenharmony_ci { 0xa250, 0x0000a000 }, 94362306a36Sopenharmony_ci { AR5K_PHY_BLUETOOTH, 0x00000000 }, 94462306a36Sopenharmony_ci { AR5K_PHY_TPC_RG1, 0x0cc75380 }, 94562306a36Sopenharmony_ci { 0xa25c, 0x0f0f0f01 }, 94662306a36Sopenharmony_ci { 0xa260, 0x5f690f01 }, 94762306a36Sopenharmony_ci { 0xa264, 0x00418a11 }, 94862306a36Sopenharmony_ci { 0xa268, 0x00000000 }, 94962306a36Sopenharmony_ci { AR5K_PHY_TPC_RG5, 0x0c30c16a }, 95062306a36Sopenharmony_ci { 0xa270, 0x00820820 }, 95162306a36Sopenharmony_ci { 0xa274, 0x081b7caa }, 95262306a36Sopenharmony_ci { 0xa278, 0x1ce739ce }, 95362306a36Sopenharmony_ci { 0xa27c, 0x051701ce }, 95462306a36Sopenharmony_ci { 0xa338, 0x00000000 }, 95562306a36Sopenharmony_ci { 0xa33c, 0x00000000 }, 95662306a36Sopenharmony_ci { 0xa340, 0x00000000 }, 95762306a36Sopenharmony_ci { 0xa344, 0x00000000 }, 95862306a36Sopenharmony_ci { 0xa348, 0x3fffffff }, 95962306a36Sopenharmony_ci { 0xa34c, 0x3fffffff }, 96062306a36Sopenharmony_ci { 0xa350, 0x3fffffff }, 96162306a36Sopenharmony_ci { 0xa354, 0x0003ffff }, 96262306a36Sopenharmony_ci { 0xa358, 0x79a8aa1f }, 96362306a36Sopenharmony_ci { 0xa35c, 0x066c420f }, 96462306a36Sopenharmony_ci { 0xa360, 0x0f282207 }, 96562306a36Sopenharmony_ci { 0xa364, 0x17601685 }, 96662306a36Sopenharmony_ci { 0xa368, 0x1f801104 }, 96762306a36Sopenharmony_ci { 0xa36c, 0x37a00c03 }, 96862306a36Sopenharmony_ci { 0xa370, 0x3fc40883 }, 96962306a36Sopenharmony_ci { 0xa374, 0x57c00803 }, 97062306a36Sopenharmony_ci { 0xa378, 0x5fd80682 }, 97162306a36Sopenharmony_ci { 0xa37c, 0x7fe00482 }, 97262306a36Sopenharmony_ci { 0xa380, 0x7f3c7bba }, 97362306a36Sopenharmony_ci { 0xa384, 0xf3307ff0 }, 97462306a36Sopenharmony_ci}; 97562306a36Sopenharmony_ci 97662306a36Sopenharmony_ci/* Initial mode-specific settings for RF2413/2414 97762306a36Sopenharmony_ci * (Written after ar5212_ini) */ 97862306a36Sopenharmony_ci/* XXX: a mode ? */ 97962306a36Sopenharmony_cistatic const struct ath5k_ini_mode rf2413_ini_mode_end[] = { 98062306a36Sopenharmony_ci { AR5K_TXCFG, 98162306a36Sopenharmony_ci /* A/XR B G */ 98262306a36Sopenharmony_ci { 0x00000015, 0x00000015, 0x00000015 } }, 98362306a36Sopenharmony_ci { AR5K_USEC_5211, 98462306a36Sopenharmony_ci { 0x128d93a7, 0x04e01395, 0x12e013ab } }, 98562306a36Sopenharmony_ci { AR5K_PHY_RF_CTL3, 98662306a36Sopenharmony_ci { 0x0a020001, 0x05020000, 0x0a020001 } }, 98762306a36Sopenharmony_ci { AR5K_PHY_RF_CTL4, 98862306a36Sopenharmony_ci { 0x00000e00, 0x00000e00, 0x00000e00 } }, 98962306a36Sopenharmony_ci { AR5K_PHY_PA_CTL, 99062306a36Sopenharmony_ci { 0x00000002, 0x0000000a, 0x0000000a } }, 99162306a36Sopenharmony_ci { AR5K_PHY_GAIN, 99262306a36Sopenharmony_ci { 0x0018da6d, 0x001a6a64, 0x001a6a64 } }, 99362306a36Sopenharmony_ci { AR5K_PHY_DESIRED_SIZE, 99462306a36Sopenharmony_ci { 0x0de8b4e0, 0x0de8b0da, 0x0c98b0da } }, 99562306a36Sopenharmony_ci { AR5K_PHY_SIG, 99662306a36Sopenharmony_ci { 0x7e800d2e, 0x7ee80d2e, 0x7ec80d2e } }, 99762306a36Sopenharmony_ci { AR5K_PHY_AGCCOARSE, 99862306a36Sopenharmony_ci { 0x3137665e, 0x3137665e, 0x3139605e } }, 99962306a36Sopenharmony_ci { AR5K_PHY_WEAK_OFDM_LOW_THR, 100062306a36Sopenharmony_ci { 0x050cb081, 0x050cb081, 0x050cb081 } }, 100162306a36Sopenharmony_ci { AR5K_PHY_RX_DELAY, 100262306a36Sopenharmony_ci { 0x000007d0, 0x0000044c, 0x00000898 } }, 100362306a36Sopenharmony_ci { AR5K_PHY_FRAME_CTL_5211, 100462306a36Sopenharmony_ci { 0xf7b81000, 0xf7b80d00, 0xf7b81000 } }, 100562306a36Sopenharmony_ci { AR5K_PHY_CCKTXCTL, 100662306a36Sopenharmony_ci { 0x00000000, 0x00000000, 0x00000000 } }, 100762306a36Sopenharmony_ci { AR5K_PHY_CCK_CROSSCORR, 100862306a36Sopenharmony_ci { 0xd6be6788, 0xd03e6788, 0xd03e6788 } }, 100962306a36Sopenharmony_ci { AR5K_PHY_GAIN_2GHZ, 101062306a36Sopenharmony_ci { 0x002c0140, 0x0042c140, 0x0042c140 } }, 101162306a36Sopenharmony_ci { AR5K_PHY_CCK_RX_CTL_4, 101262306a36Sopenharmony_ci { 0x1883800a, 0x1863800a, 0x1883800a } }, 101362306a36Sopenharmony_ci}; 101462306a36Sopenharmony_ci 101562306a36Sopenharmony_cistatic const struct ath5k_ini rf2413_ini_common_end[] = { 101662306a36Sopenharmony_ci { AR5K_DCU_FP, 0x000003e0 }, 101762306a36Sopenharmony_ci { AR5K_SEQ_MASK, 0x0000000f }, 101862306a36Sopenharmony_ci { AR5K_MIC_QOS_CTL, 0x00000000 }, 101962306a36Sopenharmony_ci { AR5K_MIC_QOS_SEL, 0x00000000 }, 102062306a36Sopenharmony_ci { AR5K_MISC_MODE, 0x00000000 }, 102162306a36Sopenharmony_ci { AR5K_OFDM_FIL_CNT, 0x00000000 }, 102262306a36Sopenharmony_ci { AR5K_CCK_FIL_CNT, 0x00000000 }, 102362306a36Sopenharmony_ci { AR5K_PHYERR_CNT1, 0x00000000 }, 102462306a36Sopenharmony_ci { AR5K_PHYERR_CNT1_MASK, 0x00000000 }, 102562306a36Sopenharmony_ci { AR5K_PHYERR_CNT2, 0x00000000 }, 102662306a36Sopenharmony_ci { AR5K_PHYERR_CNT2_MASK, 0x00000000 }, 102762306a36Sopenharmony_ci { AR5K_TSF_THRES, 0x00000000 }, 102862306a36Sopenharmony_ci { 0x8140, 0x800000a8 }, 102962306a36Sopenharmony_ci { 0x8144, 0x00000000 }, 103062306a36Sopenharmony_ci { AR5K_PHY_AGC, 0x00000000 }, 103162306a36Sopenharmony_ci { AR5K_PHY_ADC_CTL, 0x0000a000 }, 103262306a36Sopenharmony_ci { 0x983c, 0x00200400 }, 103362306a36Sopenharmony_ci { AR5K_PHY_GAIN_OFFSET, 0x1284233c }, 103462306a36Sopenharmony_ci { AR5K_PHY_SCR, 0x0000001f }, 103562306a36Sopenharmony_ci { AR5K_PHY_SLMT, 0x00000080 }, 103662306a36Sopenharmony_ci { AR5K_PHY_SCAL, 0x0000000e }, 103762306a36Sopenharmony_ci { 0x9958, 0x000000ff }, 103862306a36Sopenharmony_ci { AR5K_PHY_TIMING_7, 0x00000000 }, 103962306a36Sopenharmony_ci { AR5K_PHY_TIMING_8, 0x02800000 }, 104062306a36Sopenharmony_ci { AR5K_PHY_TIMING_11, 0x00000000 }, 104162306a36Sopenharmony_ci { AR5K_PHY_HEAVY_CLIP_ENABLE, 0x00000000 }, 104262306a36Sopenharmony_ci { 0x99e4, 0xaaaaaaaa }, 104362306a36Sopenharmony_ci { 0x99e8, 0x3c466478 }, 104462306a36Sopenharmony_ci { 0x99ec, 0x000000aa }, 104562306a36Sopenharmony_ci { AR5K_PHY_SCLOCK, 0x0000000c }, 104662306a36Sopenharmony_ci { AR5K_PHY_SDELAY, 0x000000ff }, 104762306a36Sopenharmony_ci { AR5K_PHY_SPENDING, 0x00000014 }, 104862306a36Sopenharmony_ci { AR5K_PHY_DAG_CCK_CTL, 0x000009b5 }, 104962306a36Sopenharmony_ci { 0xa23c, 0x93c889af }, 105062306a36Sopenharmony_ci { AR5K_PHY_FAST_ADC, 0x00000001 }, 105162306a36Sopenharmony_ci { 0xa250, 0x0000a000 }, 105262306a36Sopenharmony_ci { AR5K_PHY_BLUETOOTH, 0x00000000 }, 105362306a36Sopenharmony_ci { AR5K_PHY_TPC_RG1, 0x0cc75380 }, 105462306a36Sopenharmony_ci { 0xa25c, 0x0f0f0f01 }, 105562306a36Sopenharmony_ci { 0xa260, 0x5f690f01 }, 105662306a36Sopenharmony_ci { 0xa264, 0x00418a11 }, 105762306a36Sopenharmony_ci { 0xa268, 0x00000000 }, 105862306a36Sopenharmony_ci { AR5K_PHY_TPC_RG5, 0x0c30c16a }, 105962306a36Sopenharmony_ci { 0xa270, 0x00820820 }, 106062306a36Sopenharmony_ci { 0xa274, 0x001b7caa }, 106162306a36Sopenharmony_ci { 0xa278, 0x1ce739ce }, 106262306a36Sopenharmony_ci { 0xa27c, 0x051701ce }, 106362306a36Sopenharmony_ci { 0xa300, 0x18010000 }, 106462306a36Sopenharmony_ci { 0xa304, 0x30032602 }, 106562306a36Sopenharmony_ci { 0xa308, 0x48073e06 }, 106662306a36Sopenharmony_ci { 0xa30c, 0x560b4c0a }, 106762306a36Sopenharmony_ci { 0xa310, 0x641a600f }, 106862306a36Sopenharmony_ci { 0xa314, 0x784f6e1b }, 106962306a36Sopenharmony_ci { 0xa318, 0x868f7c5a }, 107062306a36Sopenharmony_ci { 0xa31c, 0x8ecf865b }, 107162306a36Sopenharmony_ci { 0xa320, 0x9d4f970f }, 107262306a36Sopenharmony_ci { 0xa324, 0xa5cfa18f }, 107362306a36Sopenharmony_ci { 0xa328, 0xb55faf1f }, 107462306a36Sopenharmony_ci { 0xa32c, 0xbddfb99f }, 107562306a36Sopenharmony_ci { 0xa330, 0xcd7fc73f }, 107662306a36Sopenharmony_ci { 0xa334, 0xd5ffd1bf }, 107762306a36Sopenharmony_ci { 0xa338, 0x00000000 }, 107862306a36Sopenharmony_ci { 0xa33c, 0x00000000 }, 107962306a36Sopenharmony_ci { 0xa340, 0x00000000 }, 108062306a36Sopenharmony_ci { 0xa344, 0x00000000 }, 108162306a36Sopenharmony_ci { 0xa348, 0x3fffffff }, 108262306a36Sopenharmony_ci { 0xa34c, 0x3fffffff }, 108362306a36Sopenharmony_ci { 0xa350, 0x3fffffff }, 108462306a36Sopenharmony_ci { 0xa354, 0x0003ffff }, 108562306a36Sopenharmony_ci { 0xa358, 0x79a8aa1f }, 108662306a36Sopenharmony_ci { 0xa35c, 0x066c420f }, 108762306a36Sopenharmony_ci { 0xa360, 0x0f282207 }, 108862306a36Sopenharmony_ci { 0xa364, 0x17601685 }, 108962306a36Sopenharmony_ci { 0xa368, 0x1f801104 }, 109062306a36Sopenharmony_ci { 0xa36c, 0x37a00c03 }, 109162306a36Sopenharmony_ci { 0xa370, 0x3fc40883 }, 109262306a36Sopenharmony_ci { 0xa374, 0x57c00803 }, 109362306a36Sopenharmony_ci { 0xa378, 0x5fd80682 }, 109462306a36Sopenharmony_ci { 0xa37c, 0x7fe00482 }, 109562306a36Sopenharmony_ci { 0xa380, 0x7f3c7bba }, 109662306a36Sopenharmony_ci { 0xa384, 0xf3307ff0 }, 109762306a36Sopenharmony_ci}; 109862306a36Sopenharmony_ci 109962306a36Sopenharmony_ci/* Initial mode-specific settings for RF2425 110062306a36Sopenharmony_ci * (Written after ar5212_ini) */ 110162306a36Sopenharmony_ci/* XXX: a mode ? */ 110262306a36Sopenharmony_cistatic const struct ath5k_ini_mode rf2425_ini_mode_end[] = { 110362306a36Sopenharmony_ci { AR5K_TXCFG, 110462306a36Sopenharmony_ci /* A/XR B G */ 110562306a36Sopenharmony_ci { 0x00000015, 0x00000015, 0x00000015 } }, 110662306a36Sopenharmony_ci { AR5K_USEC_5211, 110762306a36Sopenharmony_ci { 0x128d93a7, 0x04e01395, 0x12e013ab } }, 110862306a36Sopenharmony_ci { AR5K_PHY_RF_CTL3, 110962306a36Sopenharmony_ci { 0x0a020001, 0x05020100, 0x0a020001 } }, 111062306a36Sopenharmony_ci { AR5K_PHY_RF_CTL4, 111162306a36Sopenharmony_ci { 0x00000e0e, 0x00000e0e, 0x00000e0e } }, 111262306a36Sopenharmony_ci { AR5K_PHY_PA_CTL, 111362306a36Sopenharmony_ci { 0x00000003, 0x0000000b, 0x0000000b } }, 111462306a36Sopenharmony_ci { AR5K_PHY_SETTLING, 111562306a36Sopenharmony_ci { 0x1372161c, 0x13721722, 0x13721422 } }, 111662306a36Sopenharmony_ci { AR5K_PHY_GAIN, 111762306a36Sopenharmony_ci { 0x0018fa61, 0x00199a65, 0x00199a65 } }, 111862306a36Sopenharmony_ci { AR5K_PHY_DESIRED_SIZE, 111962306a36Sopenharmony_ci { 0x0c98b4e0, 0x0c98b0da, 0x0c98b0da } }, 112062306a36Sopenharmony_ci { AR5K_PHY_SIG, 112162306a36Sopenharmony_ci { 0x7ec80d2e, 0x7ec80d2e, 0x7ec80d2e } }, 112262306a36Sopenharmony_ci { AR5K_PHY_AGCCOARSE, 112362306a36Sopenharmony_ci { 0x3139605e, 0x3139605e, 0x3139605e } }, 112462306a36Sopenharmony_ci { AR5K_PHY_WEAK_OFDM_LOW_THR, 112562306a36Sopenharmony_ci { 0x050cb081, 0x050cb081, 0x050cb081 } }, 112662306a36Sopenharmony_ci { AR5K_PHY_RX_DELAY, 112762306a36Sopenharmony_ci { 0x000007d0, 0x0000044c, 0x00000898 } }, 112862306a36Sopenharmony_ci { AR5K_PHY_FRAME_CTL_5211, 112962306a36Sopenharmony_ci { 0xf7b81000, 0xf7b80d00, 0xf7b81000 } }, 113062306a36Sopenharmony_ci { AR5K_PHY_CCKTXCTL, 113162306a36Sopenharmony_ci { 0x00000000, 0x00000000, 0x00000000 } }, 113262306a36Sopenharmony_ci { AR5K_PHY_CCK_CROSSCORR, 113362306a36Sopenharmony_ci { 0xd6be6788, 0xd03e6788, 0xd03e6788 } }, 113462306a36Sopenharmony_ci { AR5K_PHY_GAIN_2GHZ, 113562306a36Sopenharmony_ci { 0x00000140, 0x0052c140, 0x0052c140 } }, 113662306a36Sopenharmony_ci { AR5K_PHY_CCK_RX_CTL_4, 113762306a36Sopenharmony_ci { 0x1883800a, 0x1863800a, 0x1883800a } }, 113862306a36Sopenharmony_ci { 0xa324, 113962306a36Sopenharmony_ci { 0xa7cfa7cf, 0xa7cfa7cf, 0xa7cfa7cf } }, 114062306a36Sopenharmony_ci { 0xa328, 114162306a36Sopenharmony_ci { 0xa7cfa7cf, 0xa7cfa7cf, 0xa7cfa7cf } }, 114262306a36Sopenharmony_ci { 0xa32c, 114362306a36Sopenharmony_ci { 0xa7cfa7cf, 0xa7cfa7cf, 0xa7cfa7cf } }, 114462306a36Sopenharmony_ci { 0xa330, 114562306a36Sopenharmony_ci { 0xa7cfa7cf, 0xa7cfa7cf, 0xa7cfa7cf } }, 114662306a36Sopenharmony_ci { 0xa334, 114762306a36Sopenharmony_ci { 0xa7cfa7cf, 0xa7cfa7cf, 0xa7cfa7cf } }, 114862306a36Sopenharmony_ci}; 114962306a36Sopenharmony_ci 115062306a36Sopenharmony_cistatic const struct ath5k_ini rf2425_ini_common_end[] = { 115162306a36Sopenharmony_ci { AR5K_DCU_FP, 0x000003e0 }, 115262306a36Sopenharmony_ci { AR5K_SEQ_MASK, 0x0000000f }, 115362306a36Sopenharmony_ci { 0x809c, 0x00000000 }, 115462306a36Sopenharmony_ci { 0x80a0, 0x00000000 }, 115562306a36Sopenharmony_ci { AR5K_MIC_QOS_CTL, 0x00000000 }, 115662306a36Sopenharmony_ci { AR5K_MIC_QOS_SEL, 0x00000000 }, 115762306a36Sopenharmony_ci { AR5K_MISC_MODE, 0x00000000 }, 115862306a36Sopenharmony_ci { AR5K_OFDM_FIL_CNT, 0x00000000 }, 115962306a36Sopenharmony_ci { AR5K_CCK_FIL_CNT, 0x00000000 }, 116062306a36Sopenharmony_ci { AR5K_PHYERR_CNT1, 0x00000000 }, 116162306a36Sopenharmony_ci { AR5K_PHYERR_CNT1_MASK, 0x00000000 }, 116262306a36Sopenharmony_ci { AR5K_PHYERR_CNT2, 0x00000000 }, 116362306a36Sopenharmony_ci { AR5K_PHYERR_CNT2_MASK, 0x00000000 }, 116462306a36Sopenharmony_ci { AR5K_TSF_THRES, 0x00000000 }, 116562306a36Sopenharmony_ci { 0x8140, 0x800003f9 }, 116662306a36Sopenharmony_ci { 0x8144, 0x00000000 }, 116762306a36Sopenharmony_ci { AR5K_PHY_AGC, 0x00000000 }, 116862306a36Sopenharmony_ci { AR5K_PHY_ADC_CTL, 0x0000a000 }, 116962306a36Sopenharmony_ci { 0x983c, 0x00200400 }, 117062306a36Sopenharmony_ci { AR5K_PHY_GAIN_OFFSET, 0x1284233c }, 117162306a36Sopenharmony_ci { AR5K_PHY_SCR, 0x0000001f }, 117262306a36Sopenharmony_ci { AR5K_PHY_SLMT, 0x00000080 }, 117362306a36Sopenharmony_ci { AR5K_PHY_SCAL, 0x0000000e }, 117462306a36Sopenharmony_ci { 0x9958, 0x00081fff }, 117562306a36Sopenharmony_ci { AR5K_PHY_TIMING_7, 0x00000000 }, 117662306a36Sopenharmony_ci { AR5K_PHY_TIMING_8, 0x02800000 }, 117762306a36Sopenharmony_ci { AR5K_PHY_TIMING_11, 0x00000000 }, 117862306a36Sopenharmony_ci { 0x99dc, 0xfebadbe8 }, 117962306a36Sopenharmony_ci { AR5K_PHY_HEAVY_CLIP_ENABLE, 0x00000000 }, 118062306a36Sopenharmony_ci { 0x99e4, 0xaaaaaaaa }, 118162306a36Sopenharmony_ci { 0x99e8, 0x3c466478 }, 118262306a36Sopenharmony_ci { 0x99ec, 0x000000aa }, 118362306a36Sopenharmony_ci { AR5K_PHY_SCLOCK, 0x0000000c }, 118462306a36Sopenharmony_ci { AR5K_PHY_SDELAY, 0x000000ff }, 118562306a36Sopenharmony_ci { AR5K_PHY_SPENDING, 0x00000014 }, 118662306a36Sopenharmony_ci { AR5K_PHY_DAG_CCK_CTL, 0x000009b5 }, 118762306a36Sopenharmony_ci { AR5K_PHY_TXPOWER_RATE3, 0x20202020 }, 118862306a36Sopenharmony_ci { AR5K_PHY_TXPOWER_RATE4, 0x20202020 }, 118962306a36Sopenharmony_ci { 0xa23c, 0x93c889af }, 119062306a36Sopenharmony_ci { AR5K_PHY_FAST_ADC, 0x00000001 }, 119162306a36Sopenharmony_ci { 0xa250, 0x0000a000 }, 119262306a36Sopenharmony_ci { AR5K_PHY_BLUETOOTH, 0x00000000 }, 119362306a36Sopenharmony_ci { AR5K_PHY_TPC_RG1, 0x0cc75380 }, 119462306a36Sopenharmony_ci { 0xa25c, 0x0f0f0f01 }, 119562306a36Sopenharmony_ci { 0xa260, 0x5f690f01 }, 119662306a36Sopenharmony_ci { 0xa264, 0x00418a11 }, 119762306a36Sopenharmony_ci { 0xa268, 0x00000000 }, 119862306a36Sopenharmony_ci { AR5K_PHY_TPC_RG5, 0x0c30c166 }, 119962306a36Sopenharmony_ci { 0xa270, 0x00820820 }, 120062306a36Sopenharmony_ci { 0xa274, 0x081a3caa }, 120162306a36Sopenharmony_ci { 0xa278, 0x1ce739ce }, 120262306a36Sopenharmony_ci { 0xa27c, 0x051701ce }, 120362306a36Sopenharmony_ci { 0xa300, 0x16010000 }, 120462306a36Sopenharmony_ci { 0xa304, 0x2c032402 }, 120562306a36Sopenharmony_ci { 0xa308, 0x48433e42 }, 120662306a36Sopenharmony_ci { 0xa30c, 0x5a0f500b }, 120762306a36Sopenharmony_ci { 0xa310, 0x6c4b624a }, 120862306a36Sopenharmony_ci { 0xa314, 0x7e8b748a }, 120962306a36Sopenharmony_ci { 0xa318, 0x96cf8ccb }, 121062306a36Sopenharmony_ci { 0xa31c, 0xa34f9d0f }, 121162306a36Sopenharmony_ci { 0xa320, 0xa7cfa58f }, 121262306a36Sopenharmony_ci { 0xa348, 0x3fffffff }, 121362306a36Sopenharmony_ci { 0xa34c, 0x3fffffff }, 121462306a36Sopenharmony_ci { 0xa350, 0x3fffffff }, 121562306a36Sopenharmony_ci { 0xa354, 0x0003ffff }, 121662306a36Sopenharmony_ci { 0xa358, 0x79a8aa1f }, 121762306a36Sopenharmony_ci { 0xa35c, 0x066c420f }, 121862306a36Sopenharmony_ci { 0xa360, 0x0f282207 }, 121962306a36Sopenharmony_ci { 0xa364, 0x17601685 }, 122062306a36Sopenharmony_ci { 0xa368, 0x1f801104 }, 122162306a36Sopenharmony_ci { 0xa36c, 0x37a00c03 }, 122262306a36Sopenharmony_ci { 0xa370, 0x3fc40883 }, 122362306a36Sopenharmony_ci { 0xa374, 0x57c00803 }, 122462306a36Sopenharmony_ci { 0xa378, 0x5fd80682 }, 122562306a36Sopenharmony_ci { 0xa37c, 0x7fe00482 }, 122662306a36Sopenharmony_ci { 0xa380, 0x7f3c7bba }, 122762306a36Sopenharmony_ci { 0xa384, 0xf3307ff0 }, 122862306a36Sopenharmony_ci}; 122962306a36Sopenharmony_ci 123062306a36Sopenharmony_ci/* 123162306a36Sopenharmony_ci * Initial BaseBand Gain settings for RF5111/5112 (AR5210 comes with 123262306a36Sopenharmony_ci * RF5110 only so initial BB Gain settings are included in AR5K_AR5210_INI) 123362306a36Sopenharmony_ci */ 123462306a36Sopenharmony_ci 123562306a36Sopenharmony_ci/* RF5111 Initial BaseBand Gain settings */ 123662306a36Sopenharmony_cistatic const struct ath5k_ini rf5111_ini_bbgain[] = { 123762306a36Sopenharmony_ci { AR5K_BB_GAIN(0), 0x00000000 }, 123862306a36Sopenharmony_ci { AR5K_BB_GAIN(1), 0x00000020 }, 123962306a36Sopenharmony_ci { AR5K_BB_GAIN(2), 0x00000010 }, 124062306a36Sopenharmony_ci { AR5K_BB_GAIN(3), 0x00000030 }, 124162306a36Sopenharmony_ci { AR5K_BB_GAIN(4), 0x00000008 }, 124262306a36Sopenharmony_ci { AR5K_BB_GAIN(5), 0x00000028 }, 124362306a36Sopenharmony_ci { AR5K_BB_GAIN(6), 0x00000004 }, 124462306a36Sopenharmony_ci { AR5K_BB_GAIN(7), 0x00000024 }, 124562306a36Sopenharmony_ci { AR5K_BB_GAIN(8), 0x00000014 }, 124662306a36Sopenharmony_ci { AR5K_BB_GAIN(9), 0x00000034 }, 124762306a36Sopenharmony_ci { AR5K_BB_GAIN(10), 0x0000000c }, 124862306a36Sopenharmony_ci { AR5K_BB_GAIN(11), 0x0000002c }, 124962306a36Sopenharmony_ci { AR5K_BB_GAIN(12), 0x00000002 }, 125062306a36Sopenharmony_ci { AR5K_BB_GAIN(13), 0x00000022 }, 125162306a36Sopenharmony_ci { AR5K_BB_GAIN(14), 0x00000012 }, 125262306a36Sopenharmony_ci { AR5K_BB_GAIN(15), 0x00000032 }, 125362306a36Sopenharmony_ci { AR5K_BB_GAIN(16), 0x0000000a }, 125462306a36Sopenharmony_ci { AR5K_BB_GAIN(17), 0x0000002a }, 125562306a36Sopenharmony_ci { AR5K_BB_GAIN(18), 0x00000006 }, 125662306a36Sopenharmony_ci { AR5K_BB_GAIN(19), 0x00000026 }, 125762306a36Sopenharmony_ci { AR5K_BB_GAIN(20), 0x00000016 }, 125862306a36Sopenharmony_ci { AR5K_BB_GAIN(21), 0x00000036 }, 125962306a36Sopenharmony_ci { AR5K_BB_GAIN(22), 0x0000000e }, 126062306a36Sopenharmony_ci { AR5K_BB_GAIN(23), 0x0000002e }, 126162306a36Sopenharmony_ci { AR5K_BB_GAIN(24), 0x00000001 }, 126262306a36Sopenharmony_ci { AR5K_BB_GAIN(25), 0x00000021 }, 126362306a36Sopenharmony_ci { AR5K_BB_GAIN(26), 0x00000011 }, 126462306a36Sopenharmony_ci { AR5K_BB_GAIN(27), 0x00000031 }, 126562306a36Sopenharmony_ci { AR5K_BB_GAIN(28), 0x00000009 }, 126662306a36Sopenharmony_ci { AR5K_BB_GAIN(29), 0x00000029 }, 126762306a36Sopenharmony_ci { AR5K_BB_GAIN(30), 0x00000005 }, 126862306a36Sopenharmony_ci { AR5K_BB_GAIN(31), 0x00000025 }, 126962306a36Sopenharmony_ci { AR5K_BB_GAIN(32), 0x00000015 }, 127062306a36Sopenharmony_ci { AR5K_BB_GAIN(33), 0x00000035 }, 127162306a36Sopenharmony_ci { AR5K_BB_GAIN(34), 0x0000000d }, 127262306a36Sopenharmony_ci { AR5K_BB_GAIN(35), 0x0000002d }, 127362306a36Sopenharmony_ci { AR5K_BB_GAIN(36), 0x00000003 }, 127462306a36Sopenharmony_ci { AR5K_BB_GAIN(37), 0x00000023 }, 127562306a36Sopenharmony_ci { AR5K_BB_GAIN(38), 0x00000013 }, 127662306a36Sopenharmony_ci { AR5K_BB_GAIN(39), 0x00000033 }, 127762306a36Sopenharmony_ci { AR5K_BB_GAIN(40), 0x0000000b }, 127862306a36Sopenharmony_ci { AR5K_BB_GAIN(41), 0x0000002b }, 127962306a36Sopenharmony_ci { AR5K_BB_GAIN(42), 0x0000002b }, 128062306a36Sopenharmony_ci { AR5K_BB_GAIN(43), 0x0000002b }, 128162306a36Sopenharmony_ci { AR5K_BB_GAIN(44), 0x0000002b }, 128262306a36Sopenharmony_ci { AR5K_BB_GAIN(45), 0x0000002b }, 128362306a36Sopenharmony_ci { AR5K_BB_GAIN(46), 0x0000002b }, 128462306a36Sopenharmony_ci { AR5K_BB_GAIN(47), 0x0000002b }, 128562306a36Sopenharmony_ci { AR5K_BB_GAIN(48), 0x0000002b }, 128662306a36Sopenharmony_ci { AR5K_BB_GAIN(49), 0x0000002b }, 128762306a36Sopenharmony_ci { AR5K_BB_GAIN(50), 0x0000002b }, 128862306a36Sopenharmony_ci { AR5K_BB_GAIN(51), 0x0000002b }, 128962306a36Sopenharmony_ci { AR5K_BB_GAIN(52), 0x0000002b }, 129062306a36Sopenharmony_ci { AR5K_BB_GAIN(53), 0x0000002b }, 129162306a36Sopenharmony_ci { AR5K_BB_GAIN(54), 0x0000002b }, 129262306a36Sopenharmony_ci { AR5K_BB_GAIN(55), 0x0000002b }, 129362306a36Sopenharmony_ci { AR5K_BB_GAIN(56), 0x0000002b }, 129462306a36Sopenharmony_ci { AR5K_BB_GAIN(57), 0x0000002b }, 129562306a36Sopenharmony_ci { AR5K_BB_GAIN(58), 0x0000002b }, 129662306a36Sopenharmony_ci { AR5K_BB_GAIN(59), 0x0000002b }, 129762306a36Sopenharmony_ci { AR5K_BB_GAIN(60), 0x0000002b }, 129862306a36Sopenharmony_ci { AR5K_BB_GAIN(61), 0x0000002b }, 129962306a36Sopenharmony_ci { AR5K_BB_GAIN(62), 0x00000002 }, 130062306a36Sopenharmony_ci { AR5K_BB_GAIN(63), 0x00000016 }, 130162306a36Sopenharmony_ci}; 130262306a36Sopenharmony_ci 130362306a36Sopenharmony_ci/* RF5112 Initial BaseBand Gain settings (Same for RF5413/5414+) */ 130462306a36Sopenharmony_cistatic const struct ath5k_ini rf5112_ini_bbgain[] = { 130562306a36Sopenharmony_ci { AR5K_BB_GAIN(0), 0x00000000 }, 130662306a36Sopenharmony_ci { AR5K_BB_GAIN(1), 0x00000001 }, 130762306a36Sopenharmony_ci { AR5K_BB_GAIN(2), 0x00000002 }, 130862306a36Sopenharmony_ci { AR5K_BB_GAIN(3), 0x00000003 }, 130962306a36Sopenharmony_ci { AR5K_BB_GAIN(4), 0x00000004 }, 131062306a36Sopenharmony_ci { AR5K_BB_GAIN(5), 0x00000005 }, 131162306a36Sopenharmony_ci { AR5K_BB_GAIN(6), 0x00000008 }, 131262306a36Sopenharmony_ci { AR5K_BB_GAIN(7), 0x00000009 }, 131362306a36Sopenharmony_ci { AR5K_BB_GAIN(8), 0x0000000a }, 131462306a36Sopenharmony_ci { AR5K_BB_GAIN(9), 0x0000000b }, 131562306a36Sopenharmony_ci { AR5K_BB_GAIN(10), 0x0000000c }, 131662306a36Sopenharmony_ci { AR5K_BB_GAIN(11), 0x0000000d }, 131762306a36Sopenharmony_ci { AR5K_BB_GAIN(12), 0x00000010 }, 131862306a36Sopenharmony_ci { AR5K_BB_GAIN(13), 0x00000011 }, 131962306a36Sopenharmony_ci { AR5K_BB_GAIN(14), 0x00000012 }, 132062306a36Sopenharmony_ci { AR5K_BB_GAIN(15), 0x00000013 }, 132162306a36Sopenharmony_ci { AR5K_BB_GAIN(16), 0x00000014 }, 132262306a36Sopenharmony_ci { AR5K_BB_GAIN(17), 0x00000015 }, 132362306a36Sopenharmony_ci { AR5K_BB_GAIN(18), 0x00000018 }, 132462306a36Sopenharmony_ci { AR5K_BB_GAIN(19), 0x00000019 }, 132562306a36Sopenharmony_ci { AR5K_BB_GAIN(20), 0x0000001a }, 132662306a36Sopenharmony_ci { AR5K_BB_GAIN(21), 0x0000001b }, 132762306a36Sopenharmony_ci { AR5K_BB_GAIN(22), 0x0000001c }, 132862306a36Sopenharmony_ci { AR5K_BB_GAIN(23), 0x0000001d }, 132962306a36Sopenharmony_ci { AR5K_BB_GAIN(24), 0x00000020 }, 133062306a36Sopenharmony_ci { AR5K_BB_GAIN(25), 0x00000021 }, 133162306a36Sopenharmony_ci { AR5K_BB_GAIN(26), 0x00000022 }, 133262306a36Sopenharmony_ci { AR5K_BB_GAIN(27), 0x00000023 }, 133362306a36Sopenharmony_ci { AR5K_BB_GAIN(28), 0x00000024 }, 133462306a36Sopenharmony_ci { AR5K_BB_GAIN(29), 0x00000025 }, 133562306a36Sopenharmony_ci { AR5K_BB_GAIN(30), 0x00000028 }, 133662306a36Sopenharmony_ci { AR5K_BB_GAIN(31), 0x00000029 }, 133762306a36Sopenharmony_ci { AR5K_BB_GAIN(32), 0x0000002a }, 133862306a36Sopenharmony_ci { AR5K_BB_GAIN(33), 0x0000002b }, 133962306a36Sopenharmony_ci { AR5K_BB_GAIN(34), 0x0000002c }, 134062306a36Sopenharmony_ci { AR5K_BB_GAIN(35), 0x0000002d }, 134162306a36Sopenharmony_ci { AR5K_BB_GAIN(36), 0x00000030 }, 134262306a36Sopenharmony_ci { AR5K_BB_GAIN(37), 0x00000031 }, 134362306a36Sopenharmony_ci { AR5K_BB_GAIN(38), 0x00000032 }, 134462306a36Sopenharmony_ci { AR5K_BB_GAIN(39), 0x00000033 }, 134562306a36Sopenharmony_ci { AR5K_BB_GAIN(40), 0x00000034 }, 134662306a36Sopenharmony_ci { AR5K_BB_GAIN(41), 0x00000035 }, 134762306a36Sopenharmony_ci { AR5K_BB_GAIN(42), 0x00000035 }, 134862306a36Sopenharmony_ci { AR5K_BB_GAIN(43), 0x00000035 }, 134962306a36Sopenharmony_ci { AR5K_BB_GAIN(44), 0x00000035 }, 135062306a36Sopenharmony_ci { AR5K_BB_GAIN(45), 0x00000035 }, 135162306a36Sopenharmony_ci { AR5K_BB_GAIN(46), 0x00000035 }, 135262306a36Sopenharmony_ci { AR5K_BB_GAIN(47), 0x00000035 }, 135362306a36Sopenharmony_ci { AR5K_BB_GAIN(48), 0x00000035 }, 135462306a36Sopenharmony_ci { AR5K_BB_GAIN(49), 0x00000035 }, 135562306a36Sopenharmony_ci { AR5K_BB_GAIN(50), 0x00000035 }, 135662306a36Sopenharmony_ci { AR5K_BB_GAIN(51), 0x00000035 }, 135762306a36Sopenharmony_ci { AR5K_BB_GAIN(52), 0x00000035 }, 135862306a36Sopenharmony_ci { AR5K_BB_GAIN(53), 0x00000035 }, 135962306a36Sopenharmony_ci { AR5K_BB_GAIN(54), 0x00000035 }, 136062306a36Sopenharmony_ci { AR5K_BB_GAIN(55), 0x00000035 }, 136162306a36Sopenharmony_ci { AR5K_BB_GAIN(56), 0x00000035 }, 136262306a36Sopenharmony_ci { AR5K_BB_GAIN(57), 0x00000035 }, 136362306a36Sopenharmony_ci { AR5K_BB_GAIN(58), 0x00000035 }, 136462306a36Sopenharmony_ci { AR5K_BB_GAIN(59), 0x00000035 }, 136562306a36Sopenharmony_ci { AR5K_BB_GAIN(60), 0x00000035 }, 136662306a36Sopenharmony_ci { AR5K_BB_GAIN(61), 0x00000035 }, 136762306a36Sopenharmony_ci { AR5K_BB_GAIN(62), 0x00000010 }, 136862306a36Sopenharmony_ci { AR5K_BB_GAIN(63), 0x0000001a }, 136962306a36Sopenharmony_ci}; 137062306a36Sopenharmony_ci 137162306a36Sopenharmony_ci 137262306a36Sopenharmony_ci/** 137362306a36Sopenharmony_ci * ath5k_hw_ini_registers() - Write initial register dump common for all modes 137462306a36Sopenharmony_ci * @ah: The &struct ath5k_hw 137562306a36Sopenharmony_ci * @size: Dump size 137662306a36Sopenharmony_ci * @ini_regs: The array of &struct ath5k_ini 137762306a36Sopenharmony_ci * @skip_pcu: Skip PCU registers 137862306a36Sopenharmony_ci */ 137962306a36Sopenharmony_cistatic void 138062306a36Sopenharmony_ciath5k_hw_ini_registers(struct ath5k_hw *ah, unsigned int size, 138162306a36Sopenharmony_ci const struct ath5k_ini *ini_regs, bool skip_pcu) 138262306a36Sopenharmony_ci{ 138362306a36Sopenharmony_ci unsigned int i; 138462306a36Sopenharmony_ci 138562306a36Sopenharmony_ci /* Write initial registers */ 138662306a36Sopenharmony_ci for (i = 0; i < size; i++) { 138762306a36Sopenharmony_ci /* Skip PCU registers if 138862306a36Sopenharmony_ci * requested */ 138962306a36Sopenharmony_ci if (skip_pcu && 139062306a36Sopenharmony_ci ini_regs[i].ini_register >= AR5K_PCU_MIN && 139162306a36Sopenharmony_ci ini_regs[i].ini_register <= AR5K_PCU_MAX) 139262306a36Sopenharmony_ci continue; 139362306a36Sopenharmony_ci 139462306a36Sopenharmony_ci switch (ini_regs[i].ini_mode) { 139562306a36Sopenharmony_ci case AR5K_INI_READ: 139662306a36Sopenharmony_ci /* Cleared on read */ 139762306a36Sopenharmony_ci ath5k_hw_reg_read(ah, ini_regs[i].ini_register); 139862306a36Sopenharmony_ci break; 139962306a36Sopenharmony_ci case AR5K_INI_WRITE: 140062306a36Sopenharmony_ci default: 140162306a36Sopenharmony_ci AR5K_REG_WAIT(i); 140262306a36Sopenharmony_ci ath5k_hw_reg_write(ah, ini_regs[i].ini_value, 140362306a36Sopenharmony_ci ini_regs[i].ini_register); 140462306a36Sopenharmony_ci } 140562306a36Sopenharmony_ci } 140662306a36Sopenharmony_ci} 140762306a36Sopenharmony_ci 140862306a36Sopenharmony_ci/** 140962306a36Sopenharmony_ci * ath5k_hw_ini_mode_registers() - Write initial mode-specific register dump 141062306a36Sopenharmony_ci * @ah: The &struct ath5k_hw 141162306a36Sopenharmony_ci * @size: Dump size 141262306a36Sopenharmony_ci * @ini_mode: The array of &struct ath5k_ini_mode 141362306a36Sopenharmony_ci * @mode: One of enum ath5k_driver_mode 141462306a36Sopenharmony_ci */ 141562306a36Sopenharmony_cistatic void 141662306a36Sopenharmony_ciath5k_hw_ini_mode_registers(struct ath5k_hw *ah, 141762306a36Sopenharmony_ci unsigned int size, const struct ath5k_ini_mode *ini_mode, 141862306a36Sopenharmony_ci u8 mode) 141962306a36Sopenharmony_ci{ 142062306a36Sopenharmony_ci unsigned int i; 142162306a36Sopenharmony_ci 142262306a36Sopenharmony_ci for (i = 0; i < size; i++) { 142362306a36Sopenharmony_ci AR5K_REG_WAIT(i); 142462306a36Sopenharmony_ci ath5k_hw_reg_write(ah, ini_mode[i].mode_value[mode], 142562306a36Sopenharmony_ci (u32)ini_mode[i].mode_register); 142662306a36Sopenharmony_ci } 142762306a36Sopenharmony_ci 142862306a36Sopenharmony_ci} 142962306a36Sopenharmony_ci 143062306a36Sopenharmony_ci/** 143162306a36Sopenharmony_ci * ath5k_hw_write_initvals() - Write initial chip-specific register dump 143262306a36Sopenharmony_ci * @ah: The &struct ath5k_hw 143362306a36Sopenharmony_ci * @mode: One of enum ath5k_driver_mode 143462306a36Sopenharmony_ci * @skip_pcu: Skip PCU registers 143562306a36Sopenharmony_ci * 143662306a36Sopenharmony_ci * Write initial chip-specific register dump, to get the chipset on a 143762306a36Sopenharmony_ci * clean and ready-to-work state after warm reset. 143862306a36Sopenharmony_ci */ 143962306a36Sopenharmony_ciint 144062306a36Sopenharmony_ciath5k_hw_write_initvals(struct ath5k_hw *ah, u8 mode, bool skip_pcu) 144162306a36Sopenharmony_ci{ 144262306a36Sopenharmony_ci /* 144362306a36Sopenharmony_ci * Write initial register settings 144462306a36Sopenharmony_ci */ 144562306a36Sopenharmony_ci 144662306a36Sopenharmony_ci /* For AR5212 and compatible */ 144762306a36Sopenharmony_ci if (ah->ah_version == AR5K_AR5212) { 144862306a36Sopenharmony_ci 144962306a36Sopenharmony_ci /* First set of mode-specific settings */ 145062306a36Sopenharmony_ci ath5k_hw_ini_mode_registers(ah, 145162306a36Sopenharmony_ci ARRAY_SIZE(ar5212_ini_mode_start), 145262306a36Sopenharmony_ci ar5212_ini_mode_start, mode); 145362306a36Sopenharmony_ci 145462306a36Sopenharmony_ci /* 145562306a36Sopenharmony_ci * Write initial settings common for all modes 145662306a36Sopenharmony_ci */ 145762306a36Sopenharmony_ci ath5k_hw_ini_registers(ah, ARRAY_SIZE(ar5212_ini_common_start), 145862306a36Sopenharmony_ci ar5212_ini_common_start, skip_pcu); 145962306a36Sopenharmony_ci 146062306a36Sopenharmony_ci /* Second set of mode-specific settings */ 146162306a36Sopenharmony_ci switch (ah->ah_radio) { 146262306a36Sopenharmony_ci case AR5K_RF5111: 146362306a36Sopenharmony_ci 146462306a36Sopenharmony_ci ath5k_hw_ini_mode_registers(ah, 146562306a36Sopenharmony_ci ARRAY_SIZE(rf5111_ini_mode_end), 146662306a36Sopenharmony_ci rf5111_ini_mode_end, mode); 146762306a36Sopenharmony_ci 146862306a36Sopenharmony_ci ath5k_hw_ini_registers(ah, 146962306a36Sopenharmony_ci ARRAY_SIZE(rf5111_ini_common_end), 147062306a36Sopenharmony_ci rf5111_ini_common_end, skip_pcu); 147162306a36Sopenharmony_ci 147262306a36Sopenharmony_ci /* Baseband gain table */ 147362306a36Sopenharmony_ci ath5k_hw_ini_registers(ah, 147462306a36Sopenharmony_ci ARRAY_SIZE(rf5111_ini_bbgain), 147562306a36Sopenharmony_ci rf5111_ini_bbgain, skip_pcu); 147662306a36Sopenharmony_ci 147762306a36Sopenharmony_ci break; 147862306a36Sopenharmony_ci case AR5K_RF5112: 147962306a36Sopenharmony_ci 148062306a36Sopenharmony_ci ath5k_hw_ini_mode_registers(ah, 148162306a36Sopenharmony_ci ARRAY_SIZE(rf5112_ini_mode_end), 148262306a36Sopenharmony_ci rf5112_ini_mode_end, mode); 148362306a36Sopenharmony_ci 148462306a36Sopenharmony_ci ath5k_hw_ini_registers(ah, 148562306a36Sopenharmony_ci ARRAY_SIZE(rf5112_ini_common_end), 148662306a36Sopenharmony_ci rf5112_ini_common_end, skip_pcu); 148762306a36Sopenharmony_ci 148862306a36Sopenharmony_ci ath5k_hw_ini_registers(ah, 148962306a36Sopenharmony_ci ARRAY_SIZE(rf5112_ini_bbgain), 149062306a36Sopenharmony_ci rf5112_ini_bbgain, skip_pcu); 149162306a36Sopenharmony_ci 149262306a36Sopenharmony_ci break; 149362306a36Sopenharmony_ci case AR5K_RF5413: 149462306a36Sopenharmony_ci 149562306a36Sopenharmony_ci ath5k_hw_ini_mode_registers(ah, 149662306a36Sopenharmony_ci ARRAY_SIZE(rf5413_ini_mode_end), 149762306a36Sopenharmony_ci rf5413_ini_mode_end, mode); 149862306a36Sopenharmony_ci 149962306a36Sopenharmony_ci ath5k_hw_ini_registers(ah, 150062306a36Sopenharmony_ci ARRAY_SIZE(rf5413_ini_common_end), 150162306a36Sopenharmony_ci rf5413_ini_common_end, skip_pcu); 150262306a36Sopenharmony_ci 150362306a36Sopenharmony_ci ath5k_hw_ini_registers(ah, 150462306a36Sopenharmony_ci ARRAY_SIZE(rf5112_ini_bbgain), 150562306a36Sopenharmony_ci rf5112_ini_bbgain, skip_pcu); 150662306a36Sopenharmony_ci 150762306a36Sopenharmony_ci break; 150862306a36Sopenharmony_ci case AR5K_RF2316: 150962306a36Sopenharmony_ci case AR5K_RF2413: 151062306a36Sopenharmony_ci 151162306a36Sopenharmony_ci ath5k_hw_ini_mode_registers(ah, 151262306a36Sopenharmony_ci ARRAY_SIZE(rf2413_ini_mode_end), 151362306a36Sopenharmony_ci rf2413_ini_mode_end, mode); 151462306a36Sopenharmony_ci 151562306a36Sopenharmony_ci ath5k_hw_ini_registers(ah, 151662306a36Sopenharmony_ci ARRAY_SIZE(rf2413_ini_common_end), 151762306a36Sopenharmony_ci rf2413_ini_common_end, skip_pcu); 151862306a36Sopenharmony_ci 151962306a36Sopenharmony_ci /* Override settings from rf2413_ini_common_end */ 152062306a36Sopenharmony_ci if (ah->ah_radio == AR5K_RF2316) { 152162306a36Sopenharmony_ci ath5k_hw_reg_write(ah, 0x00004000, 152262306a36Sopenharmony_ci AR5K_PHY_AGC); 152362306a36Sopenharmony_ci ath5k_hw_reg_write(ah, 0x081b7caa, 152462306a36Sopenharmony_ci 0xa274); 152562306a36Sopenharmony_ci } 152662306a36Sopenharmony_ci 152762306a36Sopenharmony_ci ath5k_hw_ini_registers(ah, 152862306a36Sopenharmony_ci ARRAY_SIZE(rf5112_ini_bbgain), 152962306a36Sopenharmony_ci rf5112_ini_bbgain, skip_pcu); 153062306a36Sopenharmony_ci break; 153162306a36Sopenharmony_ci case AR5K_RF2317: 153262306a36Sopenharmony_ci 153362306a36Sopenharmony_ci ath5k_hw_ini_mode_registers(ah, 153462306a36Sopenharmony_ci ARRAY_SIZE(rf2413_ini_mode_end), 153562306a36Sopenharmony_ci rf2413_ini_mode_end, mode); 153662306a36Sopenharmony_ci 153762306a36Sopenharmony_ci ath5k_hw_ini_registers(ah, 153862306a36Sopenharmony_ci ARRAY_SIZE(rf2425_ini_common_end), 153962306a36Sopenharmony_ci rf2425_ini_common_end, skip_pcu); 154062306a36Sopenharmony_ci 154162306a36Sopenharmony_ci /* Override settings from rf2413_ini_mode_end */ 154262306a36Sopenharmony_ci ath5k_hw_reg_write(ah, 0x00180a65, AR5K_PHY_GAIN); 154362306a36Sopenharmony_ci 154462306a36Sopenharmony_ci /* Override settings from rf2413_ini_common_end */ 154562306a36Sopenharmony_ci ath5k_hw_reg_write(ah, 0x00004000, AR5K_PHY_AGC); 154662306a36Sopenharmony_ci AR5K_REG_WRITE_BITS(ah, AR5K_PHY_TPC_RG5, 154762306a36Sopenharmony_ci AR5K_PHY_TPC_RG5_PD_GAIN_OVERLAP, 0xa); 154862306a36Sopenharmony_ci ath5k_hw_reg_write(ah, 0x800000a8, 0x8140); 154962306a36Sopenharmony_ci ath5k_hw_reg_write(ah, 0x000000ff, 0x9958); 155062306a36Sopenharmony_ci 155162306a36Sopenharmony_ci ath5k_hw_ini_registers(ah, 155262306a36Sopenharmony_ci ARRAY_SIZE(rf5112_ini_bbgain), 155362306a36Sopenharmony_ci rf5112_ini_bbgain, skip_pcu); 155462306a36Sopenharmony_ci break; 155562306a36Sopenharmony_ci case AR5K_RF2425: 155662306a36Sopenharmony_ci 155762306a36Sopenharmony_ci ath5k_hw_ini_mode_registers(ah, 155862306a36Sopenharmony_ci ARRAY_SIZE(rf2425_ini_mode_end), 155962306a36Sopenharmony_ci rf2425_ini_mode_end, mode); 156062306a36Sopenharmony_ci 156162306a36Sopenharmony_ci ath5k_hw_ini_registers(ah, 156262306a36Sopenharmony_ci ARRAY_SIZE(rf2425_ini_common_end), 156362306a36Sopenharmony_ci rf2425_ini_common_end, skip_pcu); 156462306a36Sopenharmony_ci 156562306a36Sopenharmony_ci ath5k_hw_ini_registers(ah, 156662306a36Sopenharmony_ci ARRAY_SIZE(rf5112_ini_bbgain), 156762306a36Sopenharmony_ci rf5112_ini_bbgain, skip_pcu); 156862306a36Sopenharmony_ci break; 156962306a36Sopenharmony_ci default: 157062306a36Sopenharmony_ci return -EINVAL; 157162306a36Sopenharmony_ci 157262306a36Sopenharmony_ci } 157362306a36Sopenharmony_ci 157462306a36Sopenharmony_ci /* For AR5211 */ 157562306a36Sopenharmony_ci } else if (ah->ah_version == AR5K_AR5211) { 157662306a36Sopenharmony_ci 157762306a36Sopenharmony_ci /* AR5K_MODE_11B */ 157862306a36Sopenharmony_ci if (mode > 2) { 157962306a36Sopenharmony_ci ATH5K_ERR(ah, "unsupported channel mode: %d\n", mode); 158062306a36Sopenharmony_ci return -EINVAL; 158162306a36Sopenharmony_ci } 158262306a36Sopenharmony_ci 158362306a36Sopenharmony_ci /* Mode-specific settings */ 158462306a36Sopenharmony_ci ath5k_hw_ini_mode_registers(ah, ARRAY_SIZE(ar5211_ini_mode), 158562306a36Sopenharmony_ci ar5211_ini_mode, mode); 158662306a36Sopenharmony_ci 158762306a36Sopenharmony_ci /* 158862306a36Sopenharmony_ci * Write initial settings common for all modes 158962306a36Sopenharmony_ci */ 159062306a36Sopenharmony_ci ath5k_hw_ini_registers(ah, ARRAY_SIZE(ar5211_ini), 159162306a36Sopenharmony_ci ar5211_ini, skip_pcu); 159262306a36Sopenharmony_ci 159362306a36Sopenharmony_ci /* AR5211 only comes with 5111 */ 159462306a36Sopenharmony_ci 159562306a36Sopenharmony_ci /* Baseband gain table */ 159662306a36Sopenharmony_ci ath5k_hw_ini_registers(ah, ARRAY_SIZE(rf5111_ini_bbgain), 159762306a36Sopenharmony_ci rf5111_ini_bbgain, skip_pcu); 159862306a36Sopenharmony_ci /* For AR5210 (for mode settings check out ath5k_hw_reset_tx_queue) */ 159962306a36Sopenharmony_ci } else if (ah->ah_version == AR5K_AR5210) { 160062306a36Sopenharmony_ci ath5k_hw_ini_registers(ah, ARRAY_SIZE(ar5210_ini), 160162306a36Sopenharmony_ci ar5210_ini, skip_pcu); 160262306a36Sopenharmony_ci } 160362306a36Sopenharmony_ci 160462306a36Sopenharmony_ci return 0; 160562306a36Sopenharmony_ci} 1606