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