1 /******************************************************************************
2  *
3  * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
4  *
5  * This program is free software; you can redistribute it and/or modify it
6  * under the terms of version 2 of the GNU General Public License as
7  * published by the Free Software Foundation.
8  *
9  * This program is distributed in the hope that it will be useful, but WITHOUT
10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11  * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12  * more details.
13  *
14  * You should have received a copy of the GNU General Public License along with
15  * this program; if not, write to the Free Software Foundation, Inc.,
16  * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
17  *
18  *
19  ******************************************************************************/
20 #define _RTW_RF_C_
21 
22 #include <osdep_service.h>
23 #include <drv_types.h>
24 #include <recv_osdep.h>
25 #include <xmit_osdep.h>
26 
27 
28 struct ch_freq {
29 	u32 channel;
30 	u32 frequency;
31 };
32 
33 static struct ch_freq ch_freq_map[] = {
34 	{1, 2412}, {2, 2417}, {3, 2422}, {4, 2427}, {5, 2432},
35 	{6, 2437}, {7, 2442}, {8, 2447}, {9, 2452}, {10, 2457},
36 	{11, 2462}, {12, 2467}, {13, 2472}, {14, 2484},
37 	/*  UNII */
38 	{36, 5180}, {40, 5200}, {44, 5220}, {48, 5240}, {52, 5260},
39 	{56, 5280}, {60, 5300}, {64, 5320}, {149, 5745}, {153, 5765},
40 	{157, 5785}, {161, 5805}, {165, 5825}, {167, 5835}, {169, 5845},
41 	{171, 5855}, {173, 5865},
42 	/* HiperLAN2 */
43 	{100, 5500}, {104, 5520}, {108, 5540}, {112, 5560}, {116, 5580},
44 	{120, 5600}, {124, 5620}, {128, 5640}, {132, 5660}, {136, 5680},
45 	{140, 5700},
46 	/* Japan MMAC */
47 	{34, 5170}, {38, 5190}, {42, 5210}, {46, 5230},
48 	/*  Japan */
49 	{184, 4920}, {188, 4940}, {192, 4960}, {196, 4980},
50 	{208, 5040},/* Japan, means J08 */
51 	{212, 5060},/* Japan, means J12 */
52 	{216, 5080},/* Japan, means J16 */
53 };
54 
55 static int ch_freq_map_num = ARRAY_SIZE(ch_freq_map);
56 
rtw_ch2freq(u32 channel)57 u32 rtw_ch2freq(u32 channel)
58 {
59 	u8	i;
60 	u32	freq = 0;
61 
62 	for (i = 0; i < ch_freq_map_num; i++) {
63 		if (channel == ch_freq_map[i].channel) {
64 			freq = ch_freq_map[i].frequency;
65 				break;
66 		}
67 	}
68 	if (i == ch_freq_map_num)
69 		freq = 2412;
70 
71 	return freq;
72 }
73 
rtw_freq2ch(u32 freq)74 u32 rtw_freq2ch(u32 freq)
75 {
76 	u8	i;
77 	u32	ch = 0;
78 
79 	for (i = 0; i < ch_freq_map_num; i++) {
80 		if (freq == ch_freq_map[i].frequency) {
81 			ch = ch_freq_map[i].channel;
82 				break;
83 		}
84 	}
85 	if (i == ch_freq_map_num)
86 		ch = 1;
87 
88 	return ch;
89 }
90