These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / drivers / net / wireless / mediatek / mt7601u / initvals_phy.h
diff --git a/kernel/drivers/net/wireless/mediatek/mt7601u/initvals_phy.h b/kernel/drivers/net/wireless/mediatek/mt7601u/initvals_phy.h
new file mode 100644 (file)
index 0000000..a2bdc3e
--- /dev/null
@@ -0,0 +1,291 @@
+/*
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ * Copyright (C) 2015 Jakub Kicinski <kubakici@wp.pl>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2
+ * as published by the Free Software Foundation
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ */
+
+#ifndef __MT7601U_PHY_INITVALS_H
+#define __MT7601U_PHY_INITVALS_H
+
+#define RF_REG_PAIR(bank, reg, value)                          \
+       { MT_MCU_MEMMAP_RF | (bank) << 16 | (reg), value }
+
+static const struct mt76_reg_pair rf_central[] = {
+       /* Bank 0 - for central blocks: BG, PLL, XTAL, LO, ADC/DAC */
+       RF_REG_PAIR(0,   0, 0x02),
+       RF_REG_PAIR(0,   1, 0x01),
+       RF_REG_PAIR(0,   2, 0x11),
+       RF_REG_PAIR(0,   3, 0xff),
+       RF_REG_PAIR(0,   4, 0x0a),
+       RF_REG_PAIR(0,   5, 0x20),
+       RF_REG_PAIR(0,   6, 0x00),
+       /* B/G */
+       RF_REG_PAIR(0,   7, 0x00),
+       RF_REG_PAIR(0,   8, 0x00),
+       RF_REG_PAIR(0,   9, 0x00),
+       RF_REG_PAIR(0,  10, 0x00),
+       RF_REG_PAIR(0,  11, 0x21),
+       /* XO */
+       RF_REG_PAIR(0,  13, 0x00),              /* 40mhz xtal */
+       /* RF_REG_PAIR(0,       13, 0x13), */   /* 20mhz xtal */
+       RF_REG_PAIR(0,  14, 0x7c),
+       RF_REG_PAIR(0,  15, 0x22),
+       RF_REG_PAIR(0,  16, 0x80),
+       /* PLL */
+       RF_REG_PAIR(0,  17, 0x99),
+       RF_REG_PAIR(0,  18, 0x99),
+       RF_REG_PAIR(0,  19, 0x09),
+       RF_REG_PAIR(0,  20, 0x50),
+       RF_REG_PAIR(0,  21, 0xb0),
+       RF_REG_PAIR(0,  22, 0x00),
+       RF_REG_PAIR(0,  23, 0xc5),
+       RF_REG_PAIR(0,  24, 0xfc),
+       RF_REG_PAIR(0,  25, 0x40),
+       RF_REG_PAIR(0,  26, 0x4d),
+       RF_REG_PAIR(0,  27, 0x02),
+       RF_REG_PAIR(0,  28, 0x72),
+       RF_REG_PAIR(0,  29, 0x01),
+       RF_REG_PAIR(0,  30, 0x00),
+       RF_REG_PAIR(0,  31, 0x00),
+       /* test ports */
+       RF_REG_PAIR(0,  32, 0x00),
+       RF_REG_PAIR(0,  33, 0x00),
+       RF_REG_PAIR(0,  34, 0x23),
+       RF_REG_PAIR(0,  35, 0x01), /* change setting to reduce spurs */
+       RF_REG_PAIR(0,  36, 0x00),
+       RF_REG_PAIR(0,  37, 0x00),
+       /* ADC/DAC */
+       RF_REG_PAIR(0,  38, 0x00),
+       RF_REG_PAIR(0,  39, 0x20),
+       RF_REG_PAIR(0,  40, 0x00),
+       RF_REG_PAIR(0,  41, 0xd0),
+       RF_REG_PAIR(0,  42, 0x1b),
+       RF_REG_PAIR(0,  43, 0x02),
+       RF_REG_PAIR(0,  44, 0x00),
+};
+
+static const struct mt76_reg_pair rf_channel[] = {
+       RF_REG_PAIR(4,   0, 0x01),
+       RF_REG_PAIR(4,   1, 0x00),
+       RF_REG_PAIR(4,   2, 0x00),
+       RF_REG_PAIR(4,   3, 0x00),
+       /* LDO */
+       RF_REG_PAIR(4,   4, 0x00),
+       RF_REG_PAIR(4,   5, 0x08),
+       RF_REG_PAIR(4,   6, 0x00),
+       /* RX */
+       RF_REG_PAIR(4,   7, 0x5b),
+       RF_REG_PAIR(4,   8, 0x52),
+       RF_REG_PAIR(4,   9, 0xb6),
+       RF_REG_PAIR(4,  10, 0x57),
+       RF_REG_PAIR(4,  11, 0x33),
+       RF_REG_PAIR(4,  12, 0x22),
+       RF_REG_PAIR(4,  13, 0x3d),
+       RF_REG_PAIR(4,  14, 0x3e),
+       RF_REG_PAIR(4,  15, 0x13),
+       RF_REG_PAIR(4,  16, 0x22),
+       RF_REG_PAIR(4,  17, 0x23),
+       RF_REG_PAIR(4,  18, 0x02),
+       RF_REG_PAIR(4,  19, 0xa4),
+       RF_REG_PAIR(4,  20, 0x01),
+       RF_REG_PAIR(4,  21, 0x12),
+       RF_REG_PAIR(4,  22, 0x80),
+       RF_REG_PAIR(4,  23, 0xb3),
+       RF_REG_PAIR(4,  24, 0x00), /* reserved */
+       RF_REG_PAIR(4,  25, 0x00), /* reserved */
+       RF_REG_PAIR(4,  26, 0x00), /* reserved */
+       RF_REG_PAIR(4,  27, 0x00), /* reserved */
+       /* LOGEN */
+       RF_REG_PAIR(4,  28, 0x18),
+       RF_REG_PAIR(4,  29, 0xee),
+       RF_REG_PAIR(4,  30, 0x6b),
+       RF_REG_PAIR(4,  31, 0x31),
+       RF_REG_PAIR(4,  32, 0x5d),
+       RF_REG_PAIR(4,  33, 0x00), /* reserved */
+       /* TX */
+       RF_REG_PAIR(4,  34, 0x96),
+       RF_REG_PAIR(4,  35, 0x55),
+       RF_REG_PAIR(4,  36, 0x08),
+       RF_REG_PAIR(4,  37, 0xbb),
+       RF_REG_PAIR(4,  38, 0xb3),
+       RF_REG_PAIR(4,  39, 0xb3),
+       RF_REG_PAIR(4,  40, 0x03),
+       RF_REG_PAIR(4,  41, 0x00), /* reserved */
+       RF_REG_PAIR(4,  42, 0x00), /* reserved */
+       RF_REG_PAIR(4,  43, 0xc5),
+       RF_REG_PAIR(4,  44, 0xc5),
+       RF_REG_PAIR(4,  45, 0xc5),
+       RF_REG_PAIR(4,  46, 0x07),
+       RF_REG_PAIR(4,  47, 0xa8),
+       RF_REG_PAIR(4,  48, 0xef),
+       RF_REG_PAIR(4,  49, 0x1a),
+       /* PA */
+       RF_REG_PAIR(4,  54, 0x07),
+       RF_REG_PAIR(4,  55, 0xa7),
+       RF_REG_PAIR(4,  56, 0xcc),
+       RF_REG_PAIR(4,  57, 0x14),
+       RF_REG_PAIR(4,  58, 0x07),
+       RF_REG_PAIR(4,  59, 0xa8),
+       RF_REG_PAIR(4,  60, 0xd7),
+       RF_REG_PAIR(4,  61, 0x10),
+       RF_REG_PAIR(4,  62, 0x1c),
+       RF_REG_PAIR(4,  63, 0x00), /* reserved */
+};
+
+static const struct mt76_reg_pair rf_vga[] = {
+       RF_REG_PAIR(5,   0, 0x47),
+       RF_REG_PAIR(5,   1, 0x00),
+       RF_REG_PAIR(5,   2, 0x00),
+       RF_REG_PAIR(5,   3, 0x08),
+       RF_REG_PAIR(5,   4, 0x04),
+       RF_REG_PAIR(5,   5, 0x20),
+       RF_REG_PAIR(5,   6, 0x3a),
+       RF_REG_PAIR(5,   7, 0x3a),
+       RF_REG_PAIR(5,   8, 0x00),
+       RF_REG_PAIR(5,   9, 0x00),
+       RF_REG_PAIR(5,  10, 0x10),
+       RF_REG_PAIR(5,  11, 0x10),
+       RF_REG_PAIR(5,  12, 0x10),
+       RF_REG_PAIR(5,  13, 0x10),
+       RF_REG_PAIR(5,  14, 0x10),
+       RF_REG_PAIR(5,  15, 0x20),
+       RF_REG_PAIR(5,  16, 0x22),
+       RF_REG_PAIR(5,  17, 0x7c),
+       RF_REG_PAIR(5,  18, 0x00),
+       RF_REG_PAIR(5,  19, 0x00),
+       RF_REG_PAIR(5,  20, 0x00),
+       RF_REG_PAIR(5,  21, 0xf1),
+       RF_REG_PAIR(5,  22, 0x11),
+       RF_REG_PAIR(5,  23, 0x02),
+       RF_REG_PAIR(5,  24, 0x41),
+       RF_REG_PAIR(5,  25, 0x20),
+       RF_REG_PAIR(5,  26, 0x00),
+       RF_REG_PAIR(5,  27, 0xd7),
+       RF_REG_PAIR(5,  28, 0xa2),
+       RF_REG_PAIR(5,  29, 0x20),
+       RF_REG_PAIR(5,  30, 0x49),
+       RF_REG_PAIR(5,  31, 0x20),
+       RF_REG_PAIR(5,  32, 0x04),
+       RF_REG_PAIR(5,  33, 0xf1),
+       RF_REG_PAIR(5,  34, 0xa1),
+       RF_REG_PAIR(5,  35, 0x01),
+       RF_REG_PAIR(5,  41, 0x00),
+       RF_REG_PAIR(5,  42, 0x00),
+       RF_REG_PAIR(5,  43, 0x00),
+       RF_REG_PAIR(5,  44, 0x00),
+       RF_REG_PAIR(5,  45, 0x00),
+       RF_REG_PAIR(5,  46, 0x00),
+       RF_REG_PAIR(5,  47, 0x00),
+       RF_REG_PAIR(5,  48, 0x00),
+       RF_REG_PAIR(5,  49, 0x00),
+       RF_REG_PAIR(5,  50, 0x00),
+       RF_REG_PAIR(5,  51, 0x00),
+       RF_REG_PAIR(5,  52, 0x00),
+       RF_REG_PAIR(5,  53, 0x00),
+       RF_REG_PAIR(5,  54, 0x00),
+       RF_REG_PAIR(5,  55, 0x00),
+       RF_REG_PAIR(5,  56, 0x00),
+       RF_REG_PAIR(5,  57, 0x00),
+       RF_REG_PAIR(5,  58, 0x31),
+       RF_REG_PAIR(5,  59, 0x31),
+       RF_REG_PAIR(5,  60, 0x0a),
+       RF_REG_PAIR(5,  61, 0x02),
+       RF_REG_PAIR(5,  62, 0x00),
+       RF_REG_PAIR(5,  63, 0x00),
+};
+
+/* TODO: BBP178 is set to 0xff for "CCK CH14 OBW" which overrides the settings
+ *      from channel switching. Seems stupid at best.
+ */
+static const struct mt76_reg_pair bbp_high_temp[] = {
+       {  75, 0x60 },
+       {  92, 0x02 },
+       { 178, 0xff }, /* For CCK CH14 OBW */
+       { 195, 0x88 }, { 196, 0x60 },
+}, bbp_high_temp_bw20[] = {
+       {  69, 0x12 },
+       {  91, 0x07 },
+       { 195, 0x23 }, { 196, 0x17 },
+       { 195, 0x24 }, { 196, 0x06 },
+       { 195, 0x81 }, { 196, 0x12 },
+       { 195, 0x83 }, { 196, 0x17 },
+}, bbp_high_temp_bw40[] = {
+       {  69, 0x15 },
+       {  91, 0x04 },
+       { 195, 0x23 }, { 196, 0x12 },
+       { 195, 0x24 }, { 196, 0x08 },
+       { 195, 0x81 }, { 196, 0x15 },
+       { 195, 0x83 }, { 196, 0x16 },
+}, bbp_low_temp[] = {
+       { 178, 0xff }, /* For CCK CH14 OBW */
+}, bbp_low_temp_bw20[] = {
+       {  69, 0x12 },
+       {  75, 0x5e },
+       {  91, 0x07 },
+       {  92, 0x02 },
+       { 195, 0x23 }, { 196, 0x17 },
+       { 195, 0x24 }, { 196, 0x06 },
+       { 195, 0x81 }, { 196, 0x12 },
+       { 195, 0x83 }, { 196, 0x17 },
+       { 195, 0x88 }, { 196, 0x5e },
+}, bbp_low_temp_bw40[] = {
+       {  69, 0x15 },
+       {  75, 0x5c },
+       {  91, 0x04 },
+       {  92, 0x03 },
+       { 195, 0x23 }, { 196, 0x10 },
+       { 195, 0x24 }, { 196, 0x08 },
+       { 195, 0x81 }, { 196, 0x15 },
+       { 195, 0x83 }, { 196, 0x16 },
+       { 195, 0x88 }, { 196, 0x5b },
+}, bbp_normal_temp[] = {
+       {  75, 0x60 },
+       {  92, 0x02 },
+       { 178, 0xff }, /* For CCK CH14 OBW */
+       { 195, 0x88 }, { 196, 0x60 },
+}, bbp_normal_temp_bw20[] = {
+       {  69, 0x12 },
+       {  91, 0x07 },
+       { 195, 0x23 }, { 196, 0x17 },
+       { 195, 0x24 }, { 196, 0x06 },
+       { 195, 0x81 }, { 196, 0x12 },
+       { 195, 0x83 }, { 196, 0x17 },
+}, bbp_normal_temp_bw40[] = {
+       {  69, 0x15 },
+       {  91, 0x04 },
+       { 195, 0x23 }, { 196, 0x12 },
+       { 195, 0x24 }, { 196, 0x08 },
+       { 195, 0x81 }, { 196, 0x15 },
+       { 195, 0x83 }, { 196, 0x16 },
+};
+
+#define BBP_TABLE(arr) { arr, ARRAY_SIZE(arr), }
+
+static const struct reg_table {
+       const struct mt76_reg_pair *regs;
+       size_t n;
+} bbp_mode_table[3][3] = {
+       {
+               BBP_TABLE(bbp_normal_temp_bw20),
+               BBP_TABLE(bbp_normal_temp_bw40),
+               BBP_TABLE(bbp_normal_temp),
+       }, {
+               BBP_TABLE(bbp_high_temp_bw20),
+               BBP_TABLE(bbp_high_temp_bw40),
+               BBP_TABLE(bbp_high_temp),
+       }, {
+               BBP_TABLE(bbp_low_temp_bw20),
+               BBP_TABLE(bbp_low_temp_bw40),
+               BBP_TABLE(bbp_low_temp),
+       }
+};
+
+#endif