root/drivers/net/wireless/mediatek/mt7601u/initvals_phy.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 /* SPDX-License-Identifier: GPL-2.0-only */
   2 /*
   3  * (c) Copyright 2002-2010, Ralink Technology, Inc.
   4  * Copyright (C) 2015 Jakub Kicinski <kubakici@wp.pl>
   5  */
   6 
   7 #ifndef __MT7601U_PHY_INITVALS_H
   8 #define __MT7601U_PHY_INITVALS_H
   9 
  10 #define RF_REG_PAIR(bank, reg, value)                           \
  11         { MT_MCU_MEMMAP_RF | (bank) << 16 | (reg), value }
  12 
  13 static const struct mt76_reg_pair rf_central[] = {
  14         /* Bank 0 - for central blocks: BG, PLL, XTAL, LO, ADC/DAC */
  15         RF_REG_PAIR(0,   0, 0x02),
  16         RF_REG_PAIR(0,   1, 0x01),
  17         RF_REG_PAIR(0,   2, 0x11),
  18         RF_REG_PAIR(0,   3, 0xff),
  19         RF_REG_PAIR(0,   4, 0x0a),
  20         RF_REG_PAIR(0,   5, 0x20),
  21         RF_REG_PAIR(0,   6, 0x00),
  22         /* B/G */
  23         RF_REG_PAIR(0,   7, 0x00),
  24         RF_REG_PAIR(0,   8, 0x00),
  25         RF_REG_PAIR(0,   9, 0x00),
  26         RF_REG_PAIR(0,  10, 0x00),
  27         RF_REG_PAIR(0,  11, 0x21),
  28         /* XO */
  29         RF_REG_PAIR(0,  13, 0x00),              /* 40mhz xtal */
  30         /* RF_REG_PAIR(0,       13, 0x13), */   /* 20mhz xtal */
  31         RF_REG_PAIR(0,  14, 0x7c),
  32         RF_REG_PAIR(0,  15, 0x22),
  33         RF_REG_PAIR(0,  16, 0x80),
  34         /* PLL */
  35         RF_REG_PAIR(0,  17, 0x99),
  36         RF_REG_PAIR(0,  18, 0x99),
  37         RF_REG_PAIR(0,  19, 0x09),
  38         RF_REG_PAIR(0,  20, 0x50),
  39         RF_REG_PAIR(0,  21, 0xb0),
  40         RF_REG_PAIR(0,  22, 0x00),
  41         RF_REG_PAIR(0,  23, 0xc5),
  42         RF_REG_PAIR(0,  24, 0xfc),
  43         RF_REG_PAIR(0,  25, 0x40),
  44         RF_REG_PAIR(0,  26, 0x4d),
  45         RF_REG_PAIR(0,  27, 0x02),
  46         RF_REG_PAIR(0,  28, 0x72),
  47         RF_REG_PAIR(0,  29, 0x01),
  48         RF_REG_PAIR(0,  30, 0x00),
  49         RF_REG_PAIR(0,  31, 0x00),
  50         /* test ports */
  51         RF_REG_PAIR(0,  32, 0x00),
  52         RF_REG_PAIR(0,  33, 0x00),
  53         RF_REG_PAIR(0,  34, 0x23),
  54         RF_REG_PAIR(0,  35, 0x01), /* change setting to reduce spurs */
  55         RF_REG_PAIR(0,  36, 0x00),
  56         RF_REG_PAIR(0,  37, 0x00),
  57         /* ADC/DAC */
  58         RF_REG_PAIR(0,  38, 0x00),
  59         RF_REG_PAIR(0,  39, 0x20),
  60         RF_REG_PAIR(0,  40, 0x00),
  61         RF_REG_PAIR(0,  41, 0xd0),
  62         RF_REG_PAIR(0,  42, 0x1b),
  63         RF_REG_PAIR(0,  43, 0x02),
  64         RF_REG_PAIR(0,  44, 0x00),
  65 };
  66 
  67 static const struct mt76_reg_pair rf_channel[] = {
  68         RF_REG_PAIR(4,   0, 0x01),
  69         RF_REG_PAIR(4,   1, 0x00),
  70         RF_REG_PAIR(4,   2, 0x00),
  71         RF_REG_PAIR(4,   3, 0x00),
  72         /* LDO */
  73         RF_REG_PAIR(4,   4, 0x00),
  74         RF_REG_PAIR(4,   5, 0x08),
  75         RF_REG_PAIR(4,   6, 0x00),
  76         /* RX */
  77         RF_REG_PAIR(4,   7, 0x5b),
  78         RF_REG_PAIR(4,   8, 0x52),
  79         RF_REG_PAIR(4,   9, 0xb6),
  80         RF_REG_PAIR(4,  10, 0x57),
  81         RF_REG_PAIR(4,  11, 0x33),
  82         RF_REG_PAIR(4,  12, 0x22),
  83         RF_REG_PAIR(4,  13, 0x3d),
  84         RF_REG_PAIR(4,  14, 0x3e),
  85         RF_REG_PAIR(4,  15, 0x13),
  86         RF_REG_PAIR(4,  16, 0x22),
  87         RF_REG_PAIR(4,  17, 0x23),
  88         RF_REG_PAIR(4,  18, 0x02),
  89         RF_REG_PAIR(4,  19, 0xa4),
  90         RF_REG_PAIR(4,  20, 0x01),
  91         RF_REG_PAIR(4,  21, 0x12),
  92         RF_REG_PAIR(4,  22, 0x80),
  93         RF_REG_PAIR(4,  23, 0xb3),
  94         RF_REG_PAIR(4,  24, 0x00), /* reserved */
  95         RF_REG_PAIR(4,  25, 0x00), /* reserved */
  96         RF_REG_PAIR(4,  26, 0x00), /* reserved */
  97         RF_REG_PAIR(4,  27, 0x00), /* reserved */
  98         /* LOGEN */
  99         RF_REG_PAIR(4,  28, 0x18),
 100         RF_REG_PAIR(4,  29, 0xee),
 101         RF_REG_PAIR(4,  30, 0x6b),
 102         RF_REG_PAIR(4,  31, 0x31),
 103         RF_REG_PAIR(4,  32, 0x5d),
 104         RF_REG_PAIR(4,  33, 0x00), /* reserved */
 105         /* TX */
 106         RF_REG_PAIR(4,  34, 0x96),
 107         RF_REG_PAIR(4,  35, 0x55),
 108         RF_REG_PAIR(4,  36, 0x08),
 109         RF_REG_PAIR(4,  37, 0xbb),
 110         RF_REG_PAIR(4,  38, 0xb3),
 111         RF_REG_PAIR(4,  39, 0xb3),
 112         RF_REG_PAIR(4,  40, 0x03),
 113         RF_REG_PAIR(4,  41, 0x00), /* reserved */
 114         RF_REG_PAIR(4,  42, 0x00), /* reserved */
 115         RF_REG_PAIR(4,  43, 0xc5),
 116         RF_REG_PAIR(4,  44, 0xc5),
 117         RF_REG_PAIR(4,  45, 0xc5),
 118         RF_REG_PAIR(4,  46, 0x07),
 119         RF_REG_PAIR(4,  47, 0xa8),
 120         RF_REG_PAIR(4,  48, 0xef),
 121         RF_REG_PAIR(4,  49, 0x1a),
 122         /* PA */
 123         RF_REG_PAIR(4,  54, 0x07),
 124         RF_REG_PAIR(4,  55, 0xa7),
 125         RF_REG_PAIR(4,  56, 0xcc),
 126         RF_REG_PAIR(4,  57, 0x14),
 127         RF_REG_PAIR(4,  58, 0x07),
 128         RF_REG_PAIR(4,  59, 0xa8),
 129         RF_REG_PAIR(4,  60, 0xd7),
 130         RF_REG_PAIR(4,  61, 0x10),
 131         RF_REG_PAIR(4,  62, 0x1c),
 132         RF_REG_PAIR(4,  63, 0x00), /* reserved */
 133 };
 134 
 135 static const struct mt76_reg_pair rf_vga[] = {
 136         RF_REG_PAIR(5,   0, 0x47),
 137         RF_REG_PAIR(5,   1, 0x00),
 138         RF_REG_PAIR(5,   2, 0x00),
 139         RF_REG_PAIR(5,   3, 0x08),
 140         RF_REG_PAIR(5,   4, 0x04),
 141         RF_REG_PAIR(5,   5, 0x20),
 142         RF_REG_PAIR(5,   6, 0x3a),
 143         RF_REG_PAIR(5,   7, 0x3a),
 144         RF_REG_PAIR(5,   8, 0x00),
 145         RF_REG_PAIR(5,   9, 0x00),
 146         RF_REG_PAIR(5,  10, 0x10),
 147         RF_REG_PAIR(5,  11, 0x10),
 148         RF_REG_PAIR(5,  12, 0x10),
 149         RF_REG_PAIR(5,  13, 0x10),
 150         RF_REG_PAIR(5,  14, 0x10),
 151         RF_REG_PAIR(5,  15, 0x20),
 152         RF_REG_PAIR(5,  16, 0x22),
 153         RF_REG_PAIR(5,  17, 0x7c),
 154         RF_REG_PAIR(5,  18, 0x00),
 155         RF_REG_PAIR(5,  19, 0x00),
 156         RF_REG_PAIR(5,  20, 0x00),
 157         RF_REG_PAIR(5,  21, 0xf1),
 158         RF_REG_PAIR(5,  22, 0x11),
 159         RF_REG_PAIR(5,  23, 0x02),
 160         RF_REG_PAIR(5,  24, 0x41),
 161         RF_REG_PAIR(5,  25, 0x20),
 162         RF_REG_PAIR(5,  26, 0x00),
 163         RF_REG_PAIR(5,  27, 0xd7),
 164         RF_REG_PAIR(5,  28, 0xa2),
 165         RF_REG_PAIR(5,  29, 0x20),
 166         RF_REG_PAIR(5,  30, 0x49),
 167         RF_REG_PAIR(5,  31, 0x20),
 168         RF_REG_PAIR(5,  32, 0x04),
 169         RF_REG_PAIR(5,  33, 0xf1),
 170         RF_REG_PAIR(5,  34, 0xa1),
 171         RF_REG_PAIR(5,  35, 0x01),
 172         RF_REG_PAIR(5,  41, 0x00),
 173         RF_REG_PAIR(5,  42, 0x00),
 174         RF_REG_PAIR(5,  43, 0x00),
 175         RF_REG_PAIR(5,  44, 0x00),
 176         RF_REG_PAIR(5,  45, 0x00),
 177         RF_REG_PAIR(5,  46, 0x00),
 178         RF_REG_PAIR(5,  47, 0x00),
 179         RF_REG_PAIR(5,  48, 0x00),
 180         RF_REG_PAIR(5,  49, 0x00),
 181         RF_REG_PAIR(5,  50, 0x00),
 182         RF_REG_PAIR(5,  51, 0x00),
 183         RF_REG_PAIR(5,  52, 0x00),
 184         RF_REG_PAIR(5,  53, 0x00),
 185         RF_REG_PAIR(5,  54, 0x00),
 186         RF_REG_PAIR(5,  55, 0x00),
 187         RF_REG_PAIR(5,  56, 0x00),
 188         RF_REG_PAIR(5,  57, 0x00),
 189         RF_REG_PAIR(5,  58, 0x31),
 190         RF_REG_PAIR(5,  59, 0x31),
 191         RF_REG_PAIR(5,  60, 0x0a),
 192         RF_REG_PAIR(5,  61, 0x02),
 193         RF_REG_PAIR(5,  62, 0x00),
 194         RF_REG_PAIR(5,  63, 0x00),
 195 };
 196 
 197 /* TODO: BBP178 is set to 0xff for "CCK CH14 OBW" which overrides the settings
 198  *       from channel switching. Seems stupid at best.
 199  */
 200 static const struct mt76_reg_pair bbp_high_temp[] = {
 201         {  75, 0x60 },
 202         {  92, 0x02 },
 203         { 178, 0xff }, /* For CCK CH14 OBW */
 204         { 195, 0x88 }, { 196, 0x60 },
 205 }, bbp_high_temp_bw20[] = {
 206         {  69, 0x12 },
 207         {  91, 0x07 },
 208         { 195, 0x23 }, { 196, 0x17 },
 209         { 195, 0x24 }, { 196, 0x06 },
 210         { 195, 0x81 }, { 196, 0x12 },
 211         { 195, 0x83 }, { 196, 0x17 },
 212 }, bbp_high_temp_bw40[] = {
 213         {  69, 0x15 },
 214         {  91, 0x04 },
 215         { 195, 0x23 }, { 196, 0x12 },
 216         { 195, 0x24 }, { 196, 0x08 },
 217         { 195, 0x81 }, { 196, 0x15 },
 218         { 195, 0x83 }, { 196, 0x16 },
 219 }, bbp_low_temp[] = {
 220         { 178, 0xff }, /* For CCK CH14 OBW */
 221 }, bbp_low_temp_bw20[] = {
 222         {  69, 0x12 },
 223         {  75, 0x5e },
 224         {  91, 0x07 },
 225         {  92, 0x02 },
 226         { 195, 0x23 }, { 196, 0x17 },
 227         { 195, 0x24 }, { 196, 0x06 },
 228         { 195, 0x81 }, { 196, 0x12 },
 229         { 195, 0x83 }, { 196, 0x17 },
 230         { 195, 0x88 }, { 196, 0x5e },
 231 }, bbp_low_temp_bw40[] = {
 232         {  69, 0x15 },
 233         {  75, 0x5c },
 234         {  91, 0x04 },
 235         {  92, 0x03 },
 236         { 195, 0x23 }, { 196, 0x10 },
 237         { 195, 0x24 }, { 196, 0x08 },
 238         { 195, 0x81 }, { 196, 0x15 },
 239         { 195, 0x83 }, { 196, 0x16 },
 240         { 195, 0x88 }, { 196, 0x5b },
 241 }, bbp_normal_temp[] = {
 242         {  75, 0x60 },
 243         {  92, 0x02 },
 244         { 178, 0xff }, /* For CCK CH14 OBW */
 245         { 195, 0x88 }, { 196, 0x60 },
 246 }, bbp_normal_temp_bw20[] = {
 247         {  69, 0x12 },
 248         {  91, 0x07 },
 249         { 195, 0x23 }, { 196, 0x17 },
 250         { 195, 0x24 }, { 196, 0x06 },
 251         { 195, 0x81 }, { 196, 0x12 },
 252         { 195, 0x83 }, { 196, 0x17 },
 253 }, bbp_normal_temp_bw40[] = {
 254         {  69, 0x15 },
 255         {  91, 0x04 },
 256         { 195, 0x23 }, { 196, 0x12 },
 257         { 195, 0x24 }, { 196, 0x08 },
 258         { 195, 0x81 }, { 196, 0x15 },
 259         { 195, 0x83 }, { 196, 0x16 },
 260 };
 261 
 262 #define BBP_TABLE(arr) { arr, ARRAY_SIZE(arr), }
 263 
 264 static const struct reg_table {
 265         const struct mt76_reg_pair *regs;
 266         size_t n;
 267 } bbp_mode_table[3][3] = {
 268         {
 269                 BBP_TABLE(bbp_normal_temp_bw20),
 270                 BBP_TABLE(bbp_normal_temp_bw40),
 271                 BBP_TABLE(bbp_normal_temp),
 272         }, {
 273                 BBP_TABLE(bbp_high_temp_bw20),
 274                 BBP_TABLE(bbp_high_temp_bw40),
 275                 BBP_TABLE(bbp_high_temp),
 276         }, {
 277                 BBP_TABLE(bbp_low_temp_bw20),
 278                 BBP_TABLE(bbp_low_temp_bw40),
 279                 BBP_TABLE(bbp_low_temp),
 280         }
 281 };
 282 
 283 #endif

/* [<][>][^][v][top][bottom][index][help] */