/******************************************************************************
 *
 * 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.
 *
 * You should have received a copy of the GNU General Public License along with
 * this program; if not, write to the Free Software Foundation, Inc.,
 * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
 *
 *
 ******************************************************************************/
#define _RTW_RF_C_

#include <drv_types.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 */
};

static int ch_freq_map_num = (sizeof(ch_freq_map) / sizeof(struct ch_freq));

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

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

	return freq;
}

u32 rtw_freq2ch(u32 freq)
{
	u8	i;
	u32	ch = 0;

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

	return ch;
}
