rtw_odm.h 3.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. /******************************************************************************
  2. *
  3. * Copyright(c) 2013 - 2017 Realtek Corporation.
  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. *****************************************************************************/
  15. #ifndef __RTW_ODM_H__
  16. #define __RTW_ODM_H__
  17. #include <drv_types.h>
  18. #include "../hal/phydm/phydm_types.h"
  19. /*
  20. * This file provides utilities/wrappers for rtw driver to use ODM
  21. */
  22. typedef enum _HAL_PHYDM_OPS {
  23. HAL_PHYDM_DIS_ALL_FUNC,
  24. HAL_PHYDM_FUNC_SET,
  25. HAL_PHYDM_FUNC_CLR,
  26. HAL_PHYDM_ABILITY_BK,
  27. HAL_PHYDM_ABILITY_RESTORE,
  28. HAL_PHYDM_ABILITY_SET,
  29. HAL_PHYDM_ABILITY_GET,
  30. } HAL_PHYDM_OPS;
  31. #define DYNAMIC_FUNC_DISABLE (0x0)
  32. u32 rtw_phydm_ability_ops(_adapter *adapter, HAL_PHYDM_OPS ops, u32 ability);
  33. #define rtw_phydm_func_disable_all(adapter) \
  34. rtw_phydm_ability_ops(adapter, HAL_PHYDM_DIS_ALL_FUNC, 0)
  35. #ifdef CONFIG_RTW_ACS
  36. #define rtw_phydm_func_for_offchannel(adapter) \
  37. do { \
  38. rtw_phydm_ability_ops(adapter, HAL_PHYDM_DIS_ALL_FUNC, 0); \
  39. if (rtw_odm_adaptivity_needed(adapter)) \
  40. rtw_phydm_ability_ops(adapter, HAL_PHYDM_FUNC_SET, ODM_BB_ADAPTIVITY); \
  41. if (IS_ACS_ENABLE(adapter))\
  42. rtw_phydm_ability_ops(adapter, HAL_PHYDM_FUNC_SET, ODM_BB_ENV_MONITOR); \
  43. } while (0)
  44. #else
  45. #define rtw_phydm_func_for_offchannel(adapter) \
  46. do { \
  47. rtw_phydm_ability_ops(adapter, HAL_PHYDM_DIS_ALL_FUNC, 0); \
  48. if (rtw_odm_adaptivity_needed(adapter)) \
  49. rtw_phydm_ability_ops(adapter, HAL_PHYDM_FUNC_SET, ODM_BB_ADAPTIVITY); \
  50. } while (0)
  51. #endif
  52. #define rtw_phydm_func_clr(adapter, ability) \
  53. rtw_phydm_ability_ops(adapter, HAL_PHYDM_FUNC_CLR, ability)
  54. #define rtw_phydm_ability_backup(adapter) \
  55. rtw_phydm_ability_ops(adapter, HAL_PHYDM_ABILITY_BK, 0)
  56. #define rtw_phydm_ability_restore(adapter) \
  57. rtw_phydm_ability_ops(adapter, HAL_PHYDM_ABILITY_RESTORE, 0)
  58. static inline u32 rtw_phydm_ability_get(_adapter *adapter)
  59. {
  60. return rtw_phydm_ability_ops(adapter, HAL_PHYDM_ABILITY_GET, 0);
  61. }
  62. void rtw_odm_init_ic_type(_adapter *adapter);
  63. void rtw_odm_adaptivity_config_msg(void *sel, _adapter *adapter);
  64. bool rtw_odm_adaptivity_needed(_adapter *adapter);
  65. void rtw_odm_adaptivity_parm_msg(void *sel, _adapter *adapter);
  66. void rtw_odm_adaptivity_parm_set(_adapter *adapter, s8 th_l2h_ini, s8 th_edcca_hl_diff);
  67. void rtw_odm_get_perpkt_rssi(void *sel, _adapter *adapter);
  68. void rtw_odm_acquirespinlock(_adapter *adapter, enum rt_spinlock_type type);
  69. void rtw_odm_releasespinlock(_adapter *adapter, enum rt_spinlock_type type);
  70. u8 rtw_odm_get_dfs_domain(struct dvobj_priv *dvobj);
  71. u8 rtw_odm_dfs_domain_unknown(struct dvobj_priv *dvobj);
  72. #ifdef CONFIG_DFS_MASTER
  73. VOID rtw_odm_radar_detect_reset(_adapter *adapter);
  74. VOID rtw_odm_radar_detect_disable(_adapter *adapter);
  75. VOID rtw_odm_radar_detect_enable(_adapter *adapter);
  76. BOOLEAN rtw_odm_radar_detect(_adapter *adapter);
  77. u8 rtw_odm_radar_detect_polling_int_ms(struct dvobj_priv *dvobj);
  78. #endif /* CONFIG_DFS_MASTER */
  79. void rtw_odm_parse_rx_phy_status_chinfo(union recv_frame *rframe, u8 *phys);
  80. #endif /* __RTW_ODM_H__ */