rtw_rf.c 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  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. #include <drv_types.h>
  22. struct ch_freq {
  23. u32 channel;
  24. u32 frequency;
  25. };
  26. struct ch_freq ch_freq_map[] = {
  27. {1, 2412},{2, 2417},{3, 2422},{4, 2427},{5, 2432},
  28. {6, 2437},{7, 2442},{8, 2447},{9, 2452},{10, 2457},
  29. {11, 2462},{12, 2467},{13, 2472},{14, 2484},
  30. /* UNII */
  31. {36, 5180},{40, 5200},{44, 5220},{48, 5240},{52, 5260},
  32. {56, 5280},{60, 5300},{64, 5320},{149, 5745},{153, 5765},
  33. {157, 5785},{161, 5805},{165, 5825},{167, 5835},{169, 5845},
  34. {171, 5855},{173, 5865},
  35. /* HiperLAN2 */
  36. {100, 5500},{104, 5520},{108, 5540},{112, 5560},{116, 5580},
  37. {120, 5600},{124, 5620},{128, 5640},{132, 5660},{136, 5680},
  38. {140, 5700},
  39. /* Japan MMAC */
  40. {34, 5170},{38, 5190},{42, 5210},{46, 5230},
  41. /* Japan */
  42. {184, 4920},{188, 4940},{192, 4960},{196, 4980},
  43. {208, 5040},/* Japan, means J08 */
  44. {212, 5060},/* Japan, means J12 */
  45. {216, 5080},/* Japan, means J16 */
  46. };
  47. int ch_freq_map_num = (sizeof(ch_freq_map) / sizeof(struct ch_freq));
  48. u32 rtw_ch2freq(u32 channel)
  49. {
  50. u8 i;
  51. u32 freq = 0;
  52. for (i = 0; i < ch_freq_map_num; i++)
  53. {
  54. if (channel == ch_freq_map[i].channel)
  55. {
  56. freq = ch_freq_map[i].frequency;
  57. break;
  58. }
  59. }
  60. if (i == ch_freq_map_num)
  61. freq = 2412;
  62. return freq;
  63. }
  64. u32 rtw_freq2ch(u32 freq)
  65. {
  66. u8 i;
  67. u32 ch = 0;
  68. for (i = 0; i < ch_freq_map_num; i++)
  69. {
  70. if (freq == ch_freq_map[i].frequency)
  71. {
  72. ch = ch_freq_map[i].channel;
  73. break;
  74. }
  75. }
  76. if (i == ch_freq_map_num)
  77. ch = 1;
  78. return ch;
  79. }