linux/drivers/staging/media/as102/as10x_types.h
<<
>>
Prefs
   1/*
   2 * Abilis Systems Single DVB-T Receiver
   3 * Copyright (C) 2008 Pierrick Hascoet <pierrick.hascoet@abilis.com>
   4 *
   5 * This program is free software; you can redistribute it and/or modify
   6 * it under the terms of the GNU General Public License as published by
   7 * the Free Software Foundation; either version 2, or (at your option)
   8 * any later version.
   9 *
  10 * This program is distributed in the hope that it will be useful,
  11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
  12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13 * GNU General Public License for more details.
  14 *
  15 * You should have received a copy of the GNU General Public License
  16 * along with this program; if not, write to the Free Software
  17 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  18 */
  19#ifndef _AS10X_TYPES_H_
  20#define _AS10X_TYPES_H_
  21
  22#include "as10x_handle.h"
  23
  24/*********************************/
  25/*       MACRO DEFINITIONS       */
  26/*********************************/
  27
  28/* bandwidth constant values */
  29#define BW_5_MHZ                0x00
  30#define BW_6_MHZ                0x01
  31#define BW_7_MHZ                0x02
  32#define BW_8_MHZ                0x03
  33
  34/* hierarchy priority selection values */
  35#define HIER_NO_PRIORITY        0x00
  36#define HIER_LOW_PRIORITY       0x01
  37#define HIER_HIGH_PRIORITY      0x02
  38
  39/* constellation available values */
  40#define CONST_QPSK              0x00
  41#define CONST_QAM16             0x01
  42#define CONST_QAM64             0x02
  43#define CONST_UNKNOWN           0xFF
  44
  45/* hierarchy available values */
  46#define HIER_NONE               0x00
  47#define HIER_ALPHA_1            0x01
  48#define HIER_ALPHA_2            0x02
  49#define HIER_ALPHA_4            0x03
  50#define HIER_UNKNOWN            0xFF
  51
  52/* interleaving available values */
  53#define INTLV_NATIVE            0x00
  54#define INTLV_IN_DEPTH          0x01
  55#define INTLV_UNKNOWN           0xFF
  56
  57/* code rate available values */
  58#define CODE_RATE_1_2           0x00
  59#define CODE_RATE_2_3           0x01
  60#define CODE_RATE_3_4           0x02
  61#define CODE_RATE_5_6           0x03
  62#define CODE_RATE_7_8           0x04
  63#define CODE_RATE_UNKNOWN       0xFF
  64
  65/* guard interval available values */
  66#define GUARD_INT_1_32          0x00
  67#define GUARD_INT_1_16          0x01
  68#define GUARD_INT_1_8           0x02
  69#define GUARD_INT_1_4           0x03
  70#define GUARD_UNKNOWN           0xFF
  71
  72/* transmission mode available values */
  73#define TRANS_MODE_2K           0x00
  74#define TRANS_MODE_8K           0x01
  75#define TRANS_MODE_4K           0x02
  76#define TRANS_MODE_UNKNOWN      0xFF
  77
  78/* DVBH signalling available values */
  79#define TIMESLICING_PRESENT     0x01
  80#define MPE_FEC_PRESENT         0x02
  81
  82/* tune state available */
  83#define TUNE_STATUS_NOT_TUNED           0x00
  84#define TUNE_STATUS_IDLE                0x01
  85#define TUNE_STATUS_LOCKING             0x02
  86#define TUNE_STATUS_SIGNAL_DVB_OK       0x03
  87#define TUNE_STATUS_STREAM_DETECTED     0x04
  88#define TUNE_STATUS_STREAM_TUNED        0x05
  89#define TUNE_STATUS_ERROR               0xFF
  90
  91/* available TS FID filter types */
  92#define TS_PID_TYPE_TS          0
  93#define TS_PID_TYPE_PSI_SI      1
  94#define TS_PID_TYPE_MPE         2
  95
  96/* number of echos available */
  97#define MAX_ECHOS       15
  98
  99/* Context types */
 100#define CONTEXT_LNA                     1010
 101#define CONTEXT_ELNA_HYSTERESIS         4003
 102#define CONTEXT_ELNA_GAIN               4004
 103#define CONTEXT_MER_THRESHOLD           5005
 104#define CONTEXT_MER_OFFSET              5006
 105#define CONTEXT_IR_STATE                7000
 106#define CONTEXT_TSOUT_MSB_FIRST         7004
 107#define CONTEXT_TSOUT_FALLING_EDGE      7005
 108
 109/* Configuration modes */
 110#define CFG_MODE_ON     0
 111#define CFG_MODE_OFF    1
 112#define CFG_MODE_AUTO   2
 113
 114struct as10x_tps {
 115        uint8_t modulation;
 116        uint8_t hierarchy;
 117        uint8_t interleaving_mode;
 118        uint8_t code_rate_HP;
 119        uint8_t code_rate_LP;
 120        uint8_t guard_interval;
 121        uint8_t transmission_mode;
 122        uint8_t DVBH_mask_HP;
 123        uint8_t DVBH_mask_LP;
 124        uint16_t cell_ID;
 125} __packed;
 126
 127struct as10x_tune_args {
 128        /* frequency */
 129        uint32_t freq;
 130        /* bandwidth */
 131        uint8_t bandwidth;
 132        /* hierarchy selection */
 133        uint8_t hier_select;
 134        /* constellation */
 135        uint8_t modulation;
 136        /* hierarchy */
 137        uint8_t hierarchy;
 138        /* interleaving mode */
 139        uint8_t interleaving_mode;
 140        /* code rate */
 141        uint8_t code_rate;
 142        /* guard interval */
 143        uint8_t guard_interval;
 144        /* transmission mode */
 145        uint8_t transmission_mode;
 146} __packed;
 147
 148struct as10x_tune_status {
 149        /* tune status */
 150        uint8_t tune_state;
 151        /* signal strength */
 152        int16_t signal_strength;
 153        /* packet error rate 10^-4 */
 154        uint16_t PER;
 155        /* bit error rate 10^-4 */
 156        uint16_t BER;
 157} __packed;
 158
 159struct as10x_demod_stats {
 160        /* frame counter */
 161        uint32_t frame_count;
 162        /* Bad frame counter */
 163        uint32_t bad_frame_count;
 164        /* Number of wrong bytes fixed by Reed-Solomon */
 165        uint32_t bytes_fixed_by_rs;
 166        /* Averaged MER */
 167        uint16_t mer;
 168        /* statistics calculation state indicator (started or not) */
 169        uint8_t has_started;
 170} __packed;
 171
 172struct as10x_ts_filter {
 173        uint16_t pid;  /* valid PID value 0x00 : 0x2000 */
 174        uint8_t  type; /* Red TS_PID_TYPE_<N> values */
 175        uint8_t  idx;  /* index in filtering table */
 176} __packed;
 177
 178struct as10x_register_value {
 179        uint8_t mode;
 180        union {
 181                uint8_t  value8;   /* 8 bit value */
 182                uint16_t value16;  /* 16 bit value */
 183                uint32_t value32;  /* 32 bit value */
 184        } __packed u;
 185} __packed;
 186
 187struct as10x_register_addr {
 188        /* register addr */
 189        uint32_t addr;
 190        /* register mode access */
 191        uint8_t mode;
 192};
 193
 194#endif
 195