Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-only */
0002 /*
0003  * (c) Copyright 2002-2010, Ralink Technology, Inc.
0004  * Copyright (C) 2015 Jakub Kicinski <kubakici@wp.pl>
0005  */
0006 
0007 #ifndef __MT7601U_PHY_INITVALS_H
0008 #define __MT7601U_PHY_INITVALS_H
0009 
0010 #define RF_REG_PAIR(bank, reg, value)               \
0011     { MT_MCU_MEMMAP_RF | (bank) << 16 | (reg), value }
0012 
0013 static const struct mt76_reg_pair rf_central[] = {
0014     /* Bank 0 - for central blocks: BG, PLL, XTAL, LO, ADC/DAC */
0015     RF_REG_PAIR(0,   0, 0x02),
0016     RF_REG_PAIR(0,   1, 0x01),
0017     RF_REG_PAIR(0,   2, 0x11),
0018     RF_REG_PAIR(0,   3, 0xff),
0019     RF_REG_PAIR(0,   4, 0x0a),
0020     RF_REG_PAIR(0,   5, 0x20),
0021     RF_REG_PAIR(0,   6, 0x00),
0022     /* B/G */
0023     RF_REG_PAIR(0,   7, 0x00),
0024     RF_REG_PAIR(0,   8, 0x00),
0025     RF_REG_PAIR(0,   9, 0x00),
0026     RF_REG_PAIR(0,  10, 0x00),
0027     RF_REG_PAIR(0,  11, 0x21),
0028     /* XO */
0029     RF_REG_PAIR(0,  13, 0x00),      /* 40mhz xtal */
0030     /* RF_REG_PAIR(0,   13, 0x13), */   /* 20mhz xtal */
0031     RF_REG_PAIR(0,  14, 0x7c),
0032     RF_REG_PAIR(0,  15, 0x22),
0033     RF_REG_PAIR(0,  16, 0x80),
0034     /* PLL */
0035     RF_REG_PAIR(0,  17, 0x99),
0036     RF_REG_PAIR(0,  18, 0x99),
0037     RF_REG_PAIR(0,  19, 0x09),
0038     RF_REG_PAIR(0,  20, 0x50),
0039     RF_REG_PAIR(0,  21, 0xb0),
0040     RF_REG_PAIR(0,  22, 0x00),
0041     RF_REG_PAIR(0,  23, 0xc5),
0042     RF_REG_PAIR(0,  24, 0xfc),
0043     RF_REG_PAIR(0,  25, 0x40),
0044     RF_REG_PAIR(0,  26, 0x4d),
0045     RF_REG_PAIR(0,  27, 0x02),
0046     RF_REG_PAIR(0,  28, 0x72),
0047     RF_REG_PAIR(0,  29, 0x01),
0048     RF_REG_PAIR(0,  30, 0x00),
0049     RF_REG_PAIR(0,  31, 0x00),
0050     /* test ports */
0051     RF_REG_PAIR(0,  32, 0x00),
0052     RF_REG_PAIR(0,  33, 0x00),
0053     RF_REG_PAIR(0,  34, 0x23),
0054     RF_REG_PAIR(0,  35, 0x01), /* change setting to reduce spurs */
0055     RF_REG_PAIR(0,  36, 0x00),
0056     RF_REG_PAIR(0,  37, 0x00),
0057     /* ADC/DAC */
0058     RF_REG_PAIR(0,  38, 0x00),
0059     RF_REG_PAIR(0,  39, 0x20),
0060     RF_REG_PAIR(0,  40, 0x00),
0061     RF_REG_PAIR(0,  41, 0xd0),
0062     RF_REG_PAIR(0,  42, 0x1b),
0063     RF_REG_PAIR(0,  43, 0x02),
0064     RF_REG_PAIR(0,  44, 0x00),
0065 };
0066 
0067 static const struct mt76_reg_pair rf_channel[] = {
0068     RF_REG_PAIR(4,   0, 0x01),
0069     RF_REG_PAIR(4,   1, 0x00),
0070     RF_REG_PAIR(4,   2, 0x00),
0071     RF_REG_PAIR(4,   3, 0x00),
0072     /* LDO */
0073     RF_REG_PAIR(4,   4, 0x00),
0074     RF_REG_PAIR(4,   5, 0x08),
0075     RF_REG_PAIR(4,   6, 0x00),
0076     /* RX */
0077     RF_REG_PAIR(4,   7, 0x5b),
0078     RF_REG_PAIR(4,   8, 0x52),
0079     RF_REG_PAIR(4,   9, 0xb6),
0080     RF_REG_PAIR(4,  10, 0x57),
0081     RF_REG_PAIR(4,  11, 0x33),
0082     RF_REG_PAIR(4,  12, 0x22),
0083     RF_REG_PAIR(4,  13, 0x3d),
0084     RF_REG_PAIR(4,  14, 0x3e),
0085     RF_REG_PAIR(4,  15, 0x13),
0086     RF_REG_PAIR(4,  16, 0x22),
0087     RF_REG_PAIR(4,  17, 0x23),
0088     RF_REG_PAIR(4,  18, 0x02),
0089     RF_REG_PAIR(4,  19, 0xa4),
0090     RF_REG_PAIR(4,  20, 0x01),
0091     RF_REG_PAIR(4,  21, 0x12),
0092     RF_REG_PAIR(4,  22, 0x80),
0093     RF_REG_PAIR(4,  23, 0xb3),
0094     RF_REG_PAIR(4,  24, 0x00), /* reserved */
0095     RF_REG_PAIR(4,  25, 0x00), /* reserved */
0096     RF_REG_PAIR(4,  26, 0x00), /* reserved */
0097     RF_REG_PAIR(4,  27, 0x00), /* reserved */
0098     /* LOGEN */
0099     RF_REG_PAIR(4,  28, 0x18),
0100     RF_REG_PAIR(4,  29, 0xee),
0101     RF_REG_PAIR(4,  30, 0x6b),
0102     RF_REG_PAIR(4,  31, 0x31),
0103     RF_REG_PAIR(4,  32, 0x5d),
0104     RF_REG_PAIR(4,  33, 0x00), /* reserved */
0105     /* TX */
0106     RF_REG_PAIR(4,  34, 0x96),
0107     RF_REG_PAIR(4,  35, 0x55),
0108     RF_REG_PAIR(4,  36, 0x08),
0109     RF_REG_PAIR(4,  37, 0xbb),
0110     RF_REG_PAIR(4,  38, 0xb3),
0111     RF_REG_PAIR(4,  39, 0xb3),
0112     RF_REG_PAIR(4,  40, 0x03),
0113     RF_REG_PAIR(4,  41, 0x00), /* reserved */
0114     RF_REG_PAIR(4,  42, 0x00), /* reserved */
0115     RF_REG_PAIR(4,  43, 0xc5),
0116     RF_REG_PAIR(4,  44, 0xc5),
0117     RF_REG_PAIR(4,  45, 0xc5),
0118     RF_REG_PAIR(4,  46, 0x07),
0119     RF_REG_PAIR(4,  47, 0xa8),
0120     RF_REG_PAIR(4,  48, 0xef),
0121     RF_REG_PAIR(4,  49, 0x1a),
0122     /* PA */
0123     RF_REG_PAIR(4,  54, 0x07),
0124     RF_REG_PAIR(4,  55, 0xa7),
0125     RF_REG_PAIR(4,  56, 0xcc),
0126     RF_REG_PAIR(4,  57, 0x14),
0127     RF_REG_PAIR(4,  58, 0x07),
0128     RF_REG_PAIR(4,  59, 0xa8),
0129     RF_REG_PAIR(4,  60, 0xd7),
0130     RF_REG_PAIR(4,  61, 0x10),
0131     RF_REG_PAIR(4,  62, 0x1c),
0132     RF_REG_PAIR(4,  63, 0x00), /* reserved */
0133 };
0134 
0135 static const struct mt76_reg_pair rf_vga[] = {
0136     RF_REG_PAIR(5,   0, 0x47),
0137     RF_REG_PAIR(5,   1, 0x00),
0138     RF_REG_PAIR(5,   2, 0x00),
0139     RF_REG_PAIR(5,   3, 0x08),
0140     RF_REG_PAIR(5,   4, 0x04),
0141     RF_REG_PAIR(5,   5, 0x20),
0142     RF_REG_PAIR(5,   6, 0x3a),
0143     RF_REG_PAIR(5,   7, 0x3a),
0144     RF_REG_PAIR(5,   8, 0x00),
0145     RF_REG_PAIR(5,   9, 0x00),
0146     RF_REG_PAIR(5,  10, 0x10),
0147     RF_REG_PAIR(5,  11, 0x10),
0148     RF_REG_PAIR(5,  12, 0x10),
0149     RF_REG_PAIR(5,  13, 0x10),
0150     RF_REG_PAIR(5,  14, 0x10),
0151     RF_REG_PAIR(5,  15, 0x20),
0152     RF_REG_PAIR(5,  16, 0x22),
0153     RF_REG_PAIR(5,  17, 0x7c),
0154     RF_REG_PAIR(5,  18, 0x00),
0155     RF_REG_PAIR(5,  19, 0x00),
0156     RF_REG_PAIR(5,  20, 0x00),
0157     RF_REG_PAIR(5,  21, 0xf1),
0158     RF_REG_PAIR(5,  22, 0x11),
0159     RF_REG_PAIR(5,  23, 0x02),
0160     RF_REG_PAIR(5,  24, 0x41),
0161     RF_REG_PAIR(5,  25, 0x20),
0162     RF_REG_PAIR(5,  26, 0x00),
0163     RF_REG_PAIR(5,  27, 0xd7),
0164     RF_REG_PAIR(5,  28, 0xa2),
0165     RF_REG_PAIR(5,  29, 0x20),
0166     RF_REG_PAIR(5,  30, 0x49),
0167     RF_REG_PAIR(5,  31, 0x20),
0168     RF_REG_PAIR(5,  32, 0x04),
0169     RF_REG_PAIR(5,  33, 0xf1),
0170     RF_REG_PAIR(5,  34, 0xa1),
0171     RF_REG_PAIR(5,  35, 0x01),
0172     RF_REG_PAIR(5,  41, 0x00),
0173     RF_REG_PAIR(5,  42, 0x00),
0174     RF_REG_PAIR(5,  43, 0x00),
0175     RF_REG_PAIR(5,  44, 0x00),
0176     RF_REG_PAIR(5,  45, 0x00),
0177     RF_REG_PAIR(5,  46, 0x00),
0178     RF_REG_PAIR(5,  47, 0x00),
0179     RF_REG_PAIR(5,  48, 0x00),
0180     RF_REG_PAIR(5,  49, 0x00),
0181     RF_REG_PAIR(5,  50, 0x00),
0182     RF_REG_PAIR(5,  51, 0x00),
0183     RF_REG_PAIR(5,  52, 0x00),
0184     RF_REG_PAIR(5,  53, 0x00),
0185     RF_REG_PAIR(5,  54, 0x00),
0186     RF_REG_PAIR(5,  55, 0x00),
0187     RF_REG_PAIR(5,  56, 0x00),
0188     RF_REG_PAIR(5,  57, 0x00),
0189     RF_REG_PAIR(5,  58, 0x31),
0190     RF_REG_PAIR(5,  59, 0x31),
0191     RF_REG_PAIR(5,  60, 0x0a),
0192     RF_REG_PAIR(5,  61, 0x02),
0193     RF_REG_PAIR(5,  62, 0x00),
0194     RF_REG_PAIR(5,  63, 0x00),
0195 };
0196 
0197 /* TODO: BBP178 is set to 0xff for "CCK CH14 OBW" which overrides the settings
0198  *   from channel switching. Seems stupid at best.
0199  */
0200 static const struct mt76_reg_pair bbp_high_temp[] = {
0201     {  75, 0x60 },
0202     {  92, 0x02 },
0203     { 178, 0xff }, /* For CCK CH14 OBW */
0204     { 195, 0x88 }, { 196, 0x60 },
0205 }, bbp_high_temp_bw20[] = {
0206     {  69, 0x12 },
0207     {  91, 0x07 },
0208     { 195, 0x23 }, { 196, 0x17 },
0209     { 195, 0x24 }, { 196, 0x06 },
0210     { 195, 0x81 }, { 196, 0x12 },
0211     { 195, 0x83 }, { 196, 0x17 },
0212 }, bbp_high_temp_bw40[] = {
0213     {  69, 0x15 },
0214     {  91, 0x04 },
0215     { 195, 0x23 }, { 196, 0x12 },
0216     { 195, 0x24 }, { 196, 0x08 },
0217     { 195, 0x81 }, { 196, 0x15 },
0218     { 195, 0x83 }, { 196, 0x16 },
0219 }, bbp_low_temp[] = {
0220     { 178, 0xff }, /* For CCK CH14 OBW */
0221 }, bbp_low_temp_bw20[] = {
0222     {  69, 0x12 },
0223     {  75, 0x5e },
0224     {  91, 0x07 },
0225     {  92, 0x02 },
0226     { 195, 0x23 }, { 196, 0x17 },
0227     { 195, 0x24 }, { 196, 0x06 },
0228     { 195, 0x81 }, { 196, 0x12 },
0229     { 195, 0x83 }, { 196, 0x17 },
0230     { 195, 0x88 }, { 196, 0x5e },
0231 }, bbp_low_temp_bw40[] = {
0232     {  69, 0x15 },
0233     {  75, 0x5c },
0234     {  91, 0x04 },
0235     {  92, 0x03 },
0236     { 195, 0x23 }, { 196, 0x10 },
0237     { 195, 0x24 }, { 196, 0x08 },
0238     { 195, 0x81 }, { 196, 0x15 },
0239     { 195, 0x83 }, { 196, 0x16 },
0240     { 195, 0x88 }, { 196, 0x5b },
0241 }, bbp_normal_temp[] = {
0242     {  75, 0x60 },
0243     {  92, 0x02 },
0244     { 178, 0xff }, /* For CCK CH14 OBW */
0245     { 195, 0x88 }, { 196, 0x60 },
0246 }, bbp_normal_temp_bw20[] = {
0247     {  69, 0x12 },
0248     {  91, 0x07 },
0249     { 195, 0x23 }, { 196, 0x17 },
0250     { 195, 0x24 }, { 196, 0x06 },
0251     { 195, 0x81 }, { 196, 0x12 },
0252     { 195, 0x83 }, { 196, 0x17 },
0253 }, bbp_normal_temp_bw40[] = {
0254     {  69, 0x15 },
0255     {  91, 0x04 },
0256     { 195, 0x23 }, { 196, 0x12 },
0257     { 195, 0x24 }, { 196, 0x08 },
0258     { 195, 0x81 }, { 196, 0x15 },
0259     { 195, 0x83 }, { 196, 0x16 },
0260 };
0261 
0262 #define BBP_TABLE(arr) { arr, ARRAY_SIZE(arr), }
0263 
0264 static const struct reg_table {
0265     const struct mt76_reg_pair *regs;
0266     size_t n;
0267 } bbp_mode_table[3][3] = {
0268     {
0269         BBP_TABLE(bbp_normal_temp_bw20),
0270         BBP_TABLE(bbp_normal_temp_bw40),
0271         BBP_TABLE(bbp_normal_temp),
0272     }, {
0273         BBP_TABLE(bbp_high_temp_bw20),
0274         BBP_TABLE(bbp_high_temp_bw40),
0275         BBP_TABLE(bbp_high_temp),
0276     }, {
0277         BBP_TABLE(bbp_low_temp_bw20),
0278         BBP_TABLE(bbp_low_temp_bw40),
0279         BBP_TABLE(bbp_low_temp),
0280     }
0281 };
0282 
0283 #endif