0001
0002
0003
0004
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
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
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
0029 RF_REG_PAIR(0, 13, 0x00),
0030
0031 RF_REG_PAIR(0, 14, 0x7c),
0032 RF_REG_PAIR(0, 15, 0x22),
0033 RF_REG_PAIR(0, 16, 0x80),
0034
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
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),
0055 RF_REG_PAIR(0, 36, 0x00),
0056 RF_REG_PAIR(0, 37, 0x00),
0057
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
0073 RF_REG_PAIR(4, 4, 0x00),
0074 RF_REG_PAIR(4, 5, 0x08),
0075 RF_REG_PAIR(4, 6, 0x00),
0076
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),
0095 RF_REG_PAIR(4, 25, 0x00),
0096 RF_REG_PAIR(4, 26, 0x00),
0097 RF_REG_PAIR(4, 27, 0x00),
0098
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),
0105
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),
0114 RF_REG_PAIR(4, 42, 0x00),
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
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),
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
0198
0199
0200 static const struct mt76_reg_pair bbp_high_temp[] = {
0201 { 75, 0x60 },
0202 { 92, 0x02 },
0203 { 178, 0xff },
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 },
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 },
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