as102_fe_types.h 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. /* SPDX-License-Identifier: GPL-2.0-or-later */
  2. /*
  3. * Abilis Systems Single DVB-T Receiver
  4. * Copyright (C) 2008 Pierrick Hascoet <pierrick.hascoet@abilis.com>
  5. */
  6. #ifndef _AS10X_TYPES_H_
  7. #define _AS10X_TYPES_H_
  8. /*********************************/
  9. /* MACRO DEFINITIONS */
  10. /*********************************/
  11. /* bandwidth constant values */
  12. #define BW_5_MHZ 0x00
  13. #define BW_6_MHZ 0x01
  14. #define BW_7_MHZ 0x02
  15. #define BW_8_MHZ 0x03
  16. /* hierarchy priority selection values */
  17. #define HIER_NO_PRIORITY 0x00
  18. #define HIER_LOW_PRIORITY 0x01
  19. #define HIER_HIGH_PRIORITY 0x02
  20. /* constellation available values */
  21. #define CONST_QPSK 0x00
  22. #define CONST_QAM16 0x01
  23. #define CONST_QAM64 0x02
  24. #define CONST_UNKNOWN 0xFF
  25. /* hierarchy available values */
  26. #define HIER_NONE 0x00
  27. #define HIER_ALPHA_1 0x01
  28. #define HIER_ALPHA_2 0x02
  29. #define HIER_ALPHA_4 0x03
  30. #define HIER_UNKNOWN 0xFF
  31. /* interleaving available values */
  32. #define INTLV_NATIVE 0x00
  33. #define INTLV_IN_DEPTH 0x01
  34. #define INTLV_UNKNOWN 0xFF
  35. /* code rate available values */
  36. #define CODE_RATE_1_2 0x00
  37. #define CODE_RATE_2_3 0x01
  38. #define CODE_RATE_3_4 0x02
  39. #define CODE_RATE_5_6 0x03
  40. #define CODE_RATE_7_8 0x04
  41. #define CODE_RATE_UNKNOWN 0xFF
  42. /* guard interval available values */
  43. #define GUARD_INT_1_32 0x00
  44. #define GUARD_INT_1_16 0x01
  45. #define GUARD_INT_1_8 0x02
  46. #define GUARD_INT_1_4 0x03
  47. #define GUARD_UNKNOWN 0xFF
  48. /* transmission mode available values */
  49. #define TRANS_MODE_2K 0x00
  50. #define TRANS_MODE_8K 0x01
  51. #define TRANS_MODE_4K 0x02
  52. #define TRANS_MODE_UNKNOWN 0xFF
  53. /* DVBH signalling available values */
  54. #define TIMESLICING_PRESENT 0x01
  55. #define MPE_FEC_PRESENT 0x02
  56. /* tune state available */
  57. #define TUNE_STATUS_NOT_TUNED 0x00
  58. #define TUNE_STATUS_IDLE 0x01
  59. #define TUNE_STATUS_LOCKING 0x02
  60. #define TUNE_STATUS_SIGNAL_DVB_OK 0x03
  61. #define TUNE_STATUS_STREAM_DETECTED 0x04
  62. #define TUNE_STATUS_STREAM_TUNED 0x05
  63. #define TUNE_STATUS_ERROR 0xFF
  64. /* available TS FID filter types */
  65. #define TS_PID_TYPE_TS 0
  66. #define TS_PID_TYPE_PSI_SI 1
  67. #define TS_PID_TYPE_MPE 2
  68. /* number of echos available */
  69. #define MAX_ECHOS 15
  70. /* Context types */
  71. #define CONTEXT_LNA 1010
  72. #define CONTEXT_ELNA_HYSTERESIS 4003
  73. #define CONTEXT_ELNA_GAIN 4004
  74. #define CONTEXT_MER_THRESHOLD 5005
  75. #define CONTEXT_MER_OFFSET 5006
  76. #define CONTEXT_IR_STATE 7000
  77. #define CONTEXT_TSOUT_MSB_FIRST 7004
  78. #define CONTEXT_TSOUT_FALLING_EDGE 7005
  79. /* Configuration modes */
  80. #define CFG_MODE_ON 0
  81. #define CFG_MODE_OFF 1
  82. #define CFG_MODE_AUTO 2
  83. struct as10x_tps {
  84. uint8_t modulation;
  85. uint8_t hierarchy;
  86. uint8_t interleaving_mode;
  87. uint8_t code_rate_HP;
  88. uint8_t code_rate_LP;
  89. uint8_t guard_interval;
  90. uint8_t transmission_mode;
  91. uint8_t DVBH_mask_HP;
  92. uint8_t DVBH_mask_LP;
  93. uint16_t cell_ID;
  94. } __packed;
  95. struct as10x_tune_args {
  96. /* frequency */
  97. uint32_t freq;
  98. /* bandwidth */
  99. uint8_t bandwidth;
  100. /* hierarchy selection */
  101. uint8_t hier_select;
  102. /* constellation */
  103. uint8_t modulation;
  104. /* hierarchy */
  105. uint8_t hierarchy;
  106. /* interleaving mode */
  107. uint8_t interleaving_mode;
  108. /* code rate */
  109. uint8_t code_rate;
  110. /* guard interval */
  111. uint8_t guard_interval;
  112. /* transmission mode */
  113. uint8_t transmission_mode;
  114. } __packed;
  115. struct as10x_tune_status {
  116. /* tune status */
  117. uint8_t tune_state;
  118. /* signal strength */
  119. int16_t signal_strength;
  120. /* packet error rate 10^-4 */
  121. uint16_t PER;
  122. /* bit error rate 10^-4 */
  123. uint16_t BER;
  124. } __packed;
  125. struct as10x_demod_stats {
  126. /* frame counter */
  127. uint32_t frame_count;
  128. /* Bad frame counter */
  129. uint32_t bad_frame_count;
  130. /* Number of wrong bytes fixed by Reed-Solomon */
  131. uint32_t bytes_fixed_by_rs;
  132. /* Averaged MER */
  133. uint16_t mer;
  134. /* statistics calculation state indicator (started or not) */
  135. uint8_t has_started;
  136. } __packed;
  137. struct as10x_ts_filter {
  138. uint16_t pid; /* valid PID value 0x00 : 0x2000 */
  139. uint8_t type; /* Red TS_PID_TYPE_<N> values */
  140. uint8_t idx; /* index in filtering table */
  141. } __packed;
  142. struct as10x_register_value {
  143. uint8_t mode;
  144. union {
  145. uint8_t value8; /* 8 bit value */
  146. uint16_t value16; /* 16 bit value */
  147. uint32_t value32; /* 32 bit value */
  148. } __packed u;
  149. } __packed;
  150. struct as10x_register_addr {
  151. /* register addr */
  152. uint32_t addr;
  153. /* register mode access */
  154. uint8_t mode;
  155. };
  156. #endif