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