Linux Audio

Check our new training course

Loading...
Note: File does not exist in v3.15.
  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
 13static 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
 67static 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
135static 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 */
200static 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
264static 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