Linux Audio

Check our new training course

Loading...
Note: File does not exist in v6.13.7.
  1/*
  2
  3  Broadcom B43 wireless driver
  4  IEEE 802.11n 2059 radio device data tables
  5
  6  This program is free software; you can redistribute it and/or modify
  7  it under the terms of the GNU General Public License as published by
  8  the Free Software Foundation; either version 2 of the License, or
  9  (at your option) any later version.
 10
 11  This program is distributed in the hope that it will be useful,
 12  but WITHOUT ANY WARRANTY; without even the implied warranty of
 13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 14  GNU General Public License for more details.
 15
 16  You should have received a copy of the GNU General Public License
 17  along with this program; see the file COPYING.  If not, write to
 18  the Free Software Foundation, Inc., 51 Franklin Steet, Fifth Floor,
 19  Boston, MA 02110-1301, USA.
 20
 21*/
 22
 23#include "b43.h"
 24#include "radio_2059.h"
 25
 26#define RADIOREGS(r00, r01, r02, r03, r04, r05, r06, r07, r08, r09, \
 27		  r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, \
 28		  r20, r21, r22, r23, r24, r25, r26, r27, r28) \
 29	.radio_syn16			= r00,	\
 30	.radio_syn17			= r01,	\
 31	.radio_syn22			= r02,	\
 32	.radio_syn25			= r03,	\
 33	.radio_syn27			= r04,	\
 34	.radio_syn28			= r05,	\
 35	.radio_syn29			= r06,	\
 36	.radio_syn2c			= r07,	\
 37	.radio_syn2d			= r08,	\
 38	.radio_syn37			= r09,	\
 39	.radio_syn41			= r10,	\
 40	.radio_syn43			= r11,	\
 41	.radio_syn47			= r12,	\
 42	.radio_syn4a			= r13,	\
 43	.radio_syn58			= r14,	\
 44	.radio_syn5a			= r15,	\
 45	.radio_syn6a			= r16,	\
 46	.radio_syn6d			= r17,	\
 47	.radio_syn6e			= r18,	\
 48	.radio_syn92			= r19,	\
 49	.radio_syn98			= r20,	\
 50	.radio_rxtx4a			= r21,	\
 51	.radio_rxtx58			= r22,	\
 52	.radio_rxtx5a			= r23,	\
 53	.radio_rxtx6a			= r24,	\
 54	.radio_rxtx6d			= r25,	\
 55	.radio_rxtx6e			= r26,	\
 56	.radio_rxtx92			= r27,	\
 57	.radio_rxtx98			= r28
 58
 59#define PHYREGS(r0, r1, r2, r3, r4, r5)	\
 60	.phy_regs.bw1	= r0,	\
 61	.phy_regs.bw2	= r1,	\
 62	.phy_regs.bw3	= r2,	\
 63	.phy_regs.bw4	= r3,	\
 64	.phy_regs.bw5	= r4,	\
 65	.phy_regs.bw6	= r5
 66
 67static const struct b43_phy_ht_channeltab_e_radio2059 b43_phy_ht_channeltab_radio2059[] = {
 68  {	.freq			= 2412,
 69	RADIOREGS(0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c,
 70		  0x09, 0x0f, 0x0a, 0x00, 0x0a, 0x00, 0x61, 0x03,
 71		  0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x61, 0x03,
 72		  0x00, 0x00, 0x00, 0xf0, 0x00),
 73	PHYREGS(0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443),
 74  },
 75  {	.freq			= 2417,
 76	RADIOREGS(0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71,
 77		  0x09, 0x0f, 0x0a, 0x00, 0x0a, 0x00, 0x61, 0x03,
 78		  0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x61, 0x03,
 79		  0x00, 0x00, 0x00, 0xf0, 0x00),
 80	PHYREGS(0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441),
 81  },
 82  {	.freq			= 2422,
 83	RADIOREGS(0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76,
 84		  0x09, 0x0f, 0x09, 0x00, 0x09, 0x00, 0x61, 0x03,
 85		  0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x61, 0x03,
 86		  0x00, 0x00, 0x00, 0xf0, 0x00),
 87	PHYREGS(0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f),
 88  },
 89  {	.freq			= 2427,
 90	RADIOREGS(0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b,
 91		  0x09, 0x0f, 0x09, 0x00, 0x09, 0x00, 0x61, 0x03,
 92		  0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x61, 0x03,
 93		  0x00, 0x00, 0x00, 0xf0, 0x00),
 94	PHYREGS(0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d),
 95  },
 96  {	.freq			= 2432,
 97	RADIOREGS(0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80,
 98		  0x09, 0x0f, 0x08, 0x00, 0x08, 0x00, 0x61, 0x03,
 99		  0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x61, 0x03,
100		  0x00, 0x00, 0x00, 0xf0, 0x00),
101	PHYREGS(0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a),
102  },
103  {	.freq			= 2437,
104	RADIOREGS(0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85,
105		  0x09, 0x0f, 0x08, 0x00, 0x08, 0x00, 0x61, 0x03,
106		  0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x61, 0x03,
107		  0x00, 0x00, 0x00, 0xf0, 0x00),
108	PHYREGS(0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438),
109  },
110  {	.freq			= 2442,
111	RADIOREGS(0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a,
112		  0x09, 0x0f, 0x07, 0x00, 0x07, 0x00, 0x61, 0x03,
113		  0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x61, 0x03,
114		  0x00, 0x00, 0x00, 0xf0, 0x00),
115	PHYREGS(0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436),
116  },
117  {	.freq			= 2447,
118	RADIOREGS(0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f,
119		  0x09, 0x0f, 0x07, 0x00, 0x07, 0x00, 0x61, 0x03,
120		  0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x61, 0x03,
121		  0x00, 0x00, 0x00, 0xf0, 0x00),
122	PHYREGS(0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434),
123  },
124  {	.freq			= 2452,
125	RADIOREGS(0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94,
126		  0x09, 0x0f, 0x07, 0x00, 0x07, 0x00, 0x61, 0x03,
127		  0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x61, 0x03,
128		  0x00, 0x00, 0x00, 0xf0, 0x00),
129	PHYREGS(0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431),
130  },
131  {	.freq			= 2457,
132	RADIOREGS(0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99,
133		  0x09, 0x0f, 0x06, 0x00, 0x06, 0x00, 0x61, 0x03,
134		  0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x61, 0x03,
135		  0x00, 0x00, 0x00, 0xf0, 0x00),
136	PHYREGS(0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f),
137  },
138  {	.freq			= 2462,
139	RADIOREGS(0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e,
140		  0x09, 0x0f, 0x06, 0x00, 0x06, 0x00, 0x61, 0x03,
141		  0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x61, 0x03,
142		  0x00, 0x00, 0x00, 0xf0, 0x00),
143	PHYREGS(0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d),
144  },
145  {	.freq			= 2467,
146	RADIOREGS(0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3,
147		  0x09, 0x0f, 0x05, 0x00, 0x05, 0x00, 0x61, 0x03,
148		  0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x61, 0x03,
149		  0x00, 0x00, 0x00, 0xf0, 0x00),
150	PHYREGS(0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b),
151  },
152  {	.freq			= 2472,
153	RADIOREGS(0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8,
154		  0x09, 0x0f, 0x05, 0x00, 0x05, 0x00, 0x61, 0x03,
155		  0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x61, 0x03,
156		  0x00, 0x00, 0x00, 0xf0, 0x00),
157	PHYREGS(0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429),
158  },
159};
160
161const struct b43_phy_ht_channeltab_e_radio2059
162*b43_phy_ht_get_channeltab_e_r2059(struct b43_wldev *dev, u16 freq)
163{
164	const struct b43_phy_ht_channeltab_e_radio2059 *e;
165	unsigned int i;
166
167	e = b43_phy_ht_channeltab_radio2059;
168	for (i = 0; i < ARRAY_SIZE(b43_phy_ht_channeltab_radio2059); i++, e++) {
169		if (e->freq == freq)
170			return e;
171	}
172
173	return NULL;
174}