Linux Audio

Check our new training course

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