aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging/rtl8723bs/core/rtw_rf.c
blob: 07f5577cc073a6e2bb7400267b3f51c7f4806579 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
/******************************************************************************
 *
 * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify it
 * under the terms of version 2 of the GNU General Public License as
 * published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
 * more details.
 *
 ******************************************************************************/
#define _RTW_RF_C_

#include <drv_types.h>
#include <linux/kernel.h>


struct ch_freq {
	u32 channel;
	u32 frequency;
};

static struct ch_freq ch_freq_map[] = {
	{1, 2412}, {2, 2417}, {3, 2422}, {4, 2427}, {5, 2432},
	{6, 2437}, {7, 2442}, {8, 2447}, {9, 2452}, {10, 2457},
	{11, 2462}, {12, 2467}, {13, 2472}, {14, 2484},
	/*  UNII */
	{36, 5180}, {40, 5200}, {44, 5220}, {48, 5240}, {52, 5260},
	{56, 5280}, {60, 5300}, {64, 5320}, {149, 5745}, {153, 5765},
	{157, 5785}, {161, 5805}, {165, 5825}, {167, 5835}, {169, 5845},
	{171, 5855}, {173, 5865},
	/* HiperLAN2 */
	{100, 5500}, {104, 5520}, {108, 5540}, {112, 5560}, {116, 5580},
	{120, 5600}, {124, 5620}, {128, 5640}, {132, 5660}, {136, 5680},
	{140, 5700},
	/* Japan MMAC */
	{34, 5170}, {38, 5190}, {42, 5210}, {46, 5230},
	/*  Japan */
	{184, 4920}, {188, 4940}, {192, 4960}, {196, 4980},
	{208, 5040},/* Japan, means J08 */
	{212, 5060},/* Japan, means J12 */
	{216, 5080},/* Japan, means J16 */
};

u32 rtw_ch2freq(u32 channel)
{
	u8 i;
	u32 freq = 0;

	for (i = 0; i < ARRAY_SIZE(ch_freq_map); i++) {
		if (channel == ch_freq_map[i].channel) {
			freq = ch_freq_map[i].frequency;
				break;
		}
	}
	if (i == ARRAY_SIZE(ch_freq_map))
		freq = 2412;

	return freq;
}