phydm_adc_sampling.h 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. /******************************************************************************
  2. *
  3. * Copyright(c) 2007 - 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. * The full GNU General Public License is included in this distribution in the
  15. * file called LICENSE.
  16. *
  17. * Contact Information:
  18. * wlanfae <wlanfae@realtek.com>
  19. * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park,
  20. * Hsinchu 300, Taiwan.
  21. *
  22. * Larry Finger <Larry.Finger@lwfinger.net>
  23. *
  24. *****************************************************************************/
  25. #ifndef __INC_ADCSMP_H
  26. #define __INC_ADCSMP_H
  27. #if (PHYDM_LA_MODE_SUPPORT)
  28. #define DYNAMIC_LA_MODE "2.0"
  29. struct rt_adcsmp_string {
  30. u32 *octet;
  31. u32 length;
  32. u32 buffer_size;
  33. u32 start_pos;
  34. u32 end_pos; /*@buf addr*/
  35. };
  36. enum rt_adcsmp_trig_sel {
  37. PHYDM_ADC_BB_TRIG = 0,
  38. PHYDM_ADC_MAC_TRIG = 1,
  39. PHYDM_ADC_RF0_TRIG = 2,
  40. PHYDM_ADC_RF1_TRIG = 3,
  41. PHYDM_MAC_TRIG = 4
  42. };
  43. enum rt_adcsmp_trig_sig_sel {
  44. ADCSMP_TRIG_CRCOK = 0,
  45. ADCSMP_TRIG_CRCFAIL = 1,
  46. ADCSMP_TRIG_CCA = 2,
  47. ADCSMP_TRIG_REG = 3
  48. };
  49. enum rt_adcsmp_state {
  50. ADCSMP_STATE_IDLE = 0,
  51. ADCSMP_STATE_SET = 1,
  52. ADCSMP_STATE_QUERY = 2
  53. };
  54. struct rt_adcsmp {
  55. struct rt_adcsmp_string adc_smp_buf;
  56. enum rt_adcsmp_state adc_smp_state;
  57. u8 la_trig_mode;
  58. u32 la_trig_sig_sel;
  59. u8 la_dma_type;
  60. u32 la_trigger_time;
  61. /*
  62. * @1.BB mode: for debug port header sel;
  63. * 2.MAC mode: for reference mask
  64. */
  65. u32 la_mac_mask_or_hdr_sel;
  66. u32 la_dbg_port;
  67. u8 la_trigger_edge;
  68. u8 la_smp_rate;
  69. u32 la_count;
  70. u8 is_bb_trigger;
  71. u8 la_work_item_index;
  72. boolean la_en_new_bbtrigger;
  73. boolean la_ori_bb_dis;
  74. u8 la_and1_sel;
  75. u8 la_and1_val;
  76. u8 la_and2_sel;
  77. u8 la_and2_val;
  78. u8 la_and3_sel;
  79. u8 la_and3_val;
  80. u32 la_and4_en;
  81. u32 la_and4_val;
  82. boolean is_fake_trig;
  83. #if (DM_ODM_SUPPORT_TYPE == ODM_WIN)
  84. RT_WORK_ITEM adc_smp_work_item;
  85. RT_WORK_ITEM adc_smp_work_item_1;
  86. #endif
  87. };
  88. #if (DM_ODM_SUPPORT_TYPE & ODM_WIN)
  89. void adc_smp_work_item_callback(
  90. void *context);
  91. #endif
  92. void adc_smp_set(void *dm_void, u8 trig_mode, u32 trig_sig_sel,
  93. u8 dma_data_sig_sel, u32 trig_time, u16 polling_time);
  94. #if (DM_ODM_SUPPORT_TYPE & ODM_WIN)
  95. enum rt_status
  96. adc_smp_query(void *dm_void, ULONG info_buf_length, void *info_buf,
  97. PULONG bytes_written);
  98. #elif (DM_ODM_SUPPORT_TYPE & ODM_CE)
  99. void adc_smp_query(void *dm_void, void *output, u32 out_len, u32 *pused);
  100. s32 adc_smp_get_sample_counts(void *dm_void);
  101. s32 adc_smp_query_single_data(void *dm_void, void *output, u32 out_len,
  102. u32 idx);
  103. #endif
  104. void adc_smp_stop(void *dm_void);
  105. void adc_smp_init(void *dm_void);
  106. #if (DM_ODM_SUPPORT_TYPE & (ODM_WIN | ODM_CE))
  107. void adc_smp_de_init(void *dm_void);
  108. #endif
  109. void phydm_la_mode_bb_setting(void *dm_void, boolean en_fake_trig);
  110. void phydm_la_mode_set_trigger_time(void *dm_void, u32 trigger_time_mu_sec);
  111. void phydm_lamode_trigger_cmd(void *dm_void, char input[][16], u32 *_used,
  112. char *output, u32 *_out_len);
  113. #endif
  114. #endif