0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012 enum MXL_BOOL_E {
0013 MXL_DISABLE = 0,
0014 MXL_ENABLE = 1,
0015
0016 MXL_FALSE = 0,
0017 MXL_TRUE = 1,
0018
0019 MXL_INVALID = 0,
0020 MXL_VALID = 1,
0021
0022 MXL_NO = 0,
0023 MXL_YES = 1,
0024
0025 MXL_OFF = 0,
0026 MXL_ON = 1
0027 };
0028
0029
0030 enum MXL_HYDRA_HOST_CMD_ID_E {
0031
0032 MXL_HYDRA_DEV_NO_OP_CMD = 0,
0033
0034 MXL_HYDRA_DEV_SET_POWER_MODE_CMD = 1,
0035 MXL_HYDRA_DEV_SET_OVERWRITE_DEF_CMD = 2,
0036
0037
0038 MXL_HYDRA_DEV_FIRMWARE_DOWNLOAD_CMD = 3,
0039
0040
0041 MXL_HYDRA_DEV_SET_BROADCAST_PID_STB_ID_CMD = 4,
0042 MXL_HYDRA_DEV_GET_PMM_SLEEP_CMD = 5,
0043
0044
0045 MXL_HYDRA_TUNER_TUNE_CMD = 6,
0046 MXL_HYDRA_TUNER_GET_STATUS_CMD = 7,
0047
0048
0049 MXL_HYDRA_DEMOD_SET_PARAM_CMD = 8,
0050 MXL_HYDRA_DEMOD_GET_STATUS_CMD = 9,
0051
0052 MXL_HYDRA_DEMOD_RESET_FEC_COUNTER_CMD = 10,
0053
0054 MXL_HYDRA_DEMOD_SET_PKT_NUM_CMD = 11,
0055
0056 MXL_HYDRA_DEMOD_SET_IQ_SOURCE_CMD = 12,
0057 MXL_HYDRA_DEMOD_GET_IQ_DATA_CMD = 13,
0058
0059 MXL_HYDRA_DEMOD_GET_M68HC05_VER_CMD = 14,
0060
0061 MXL_HYDRA_DEMOD_SET_ERROR_COUNTER_MODE_CMD = 15,
0062
0063
0064 MXL_HYDRA_ABORT_TUNE_CMD = 16,
0065
0066
0067 MXL_HYDRA_FSK_RESET_CMD = 17,
0068 MXL_HYDRA_FSK_MSG_CMD = 18,
0069 MXL_HYDRA_FSK_SET_OP_MODE_CMD = 19,
0070
0071
0072 MXL_HYDRA_DISEQC_MSG_CMD = 20,
0073 MXL_HYDRA_DISEQC_COPY_MSG_TO_MAILBOX = 21,
0074 MXL_HYDRA_DISEQC_CFG_MSG_CMD = 22,
0075
0076
0077 MXL_HYDRA_REQ_FFT_SPECTRUM_CMD = 23,
0078
0079
0080 MXL_HYDRA_DEMOD_SCRAMBLE_CODE_CMD = 24,
0081
0082
0083 MXL_HYDRA_LAST_HOST_CMD = 25,
0084
0085 MXL_HYDRA_DEMOD_INTR_TYPE_CMD = 47,
0086 MXL_HYDRA_DEV_INTR_CLEAR_CMD = 48,
0087 MXL_HYDRA_TUNER_SPECTRUM_REQ_CMD = 53,
0088 MXL_HYDRA_TUNER_ACTIVATE_CMD = 55,
0089 MXL_HYDRA_DEV_CFG_POWER_MODE_CMD = 56,
0090 MXL_HYDRA_DEV_XTAL_CAP_CMD = 57,
0091 MXL_HYDRA_DEV_CFG_SKU_CMD = 58,
0092 MXL_HYDRA_TUNER_SPECTRUM_MIN_GAIN_CMD = 59,
0093 MXL_HYDRA_DISEQC_CONT_TONE_CFG = 60,
0094 MXL_HYDRA_DEV_RF_WAKE_UP_CMD = 61,
0095 MXL_HYDRA_DEMOD_CFG_EQ_CTRL_PARAM_CMD = 62,
0096 MXL_HYDRA_DEMOD_FREQ_OFFSET_SEARCH_RANGE_CMD = 63,
0097 MXL_HYDRA_DEV_REQ_PWR_FROM_ADCRSSI_CMD = 64,
0098
0099 MXL_XCPU_PID_FLT_CFG_CMD = 65,
0100 MXL_XCPU_SHMEM_TEST_CMD = 66,
0101 MXL_XCPU_ABORT_TUNE_CMD = 67,
0102 MXL_XCPU_CHAN_TUNE_CMD = 68,
0103 MXL_XCPU_FLT_BOND_HDRS_CMD = 69,
0104
0105 MXL_HYDRA_DEV_BROADCAST_WAKE_UP_CMD = 70,
0106 MXL_HYDRA_FSK_CFG_FSK_FREQ_CMD = 71,
0107 MXL_HYDRA_FSK_POWER_DOWN_CMD = 72,
0108 MXL_XCPU_CLEAR_CB_STATS_CMD = 73,
0109 MXL_XCPU_CHAN_BOND_RESTART_CMD = 74
0110 };
0111
0112 #define MXL_ENABLE_BIG_ENDIAN (0)
0113
0114 #define MXL_HYDRA_OEM_MAX_BLOCK_WRITE_LENGTH 248
0115
0116 #define MXL_HYDRA_OEM_MAX_CMD_BUFF_LEN (248)
0117
0118 #define MXL_HYDRA_CAP_MIN 10
0119 #define MXL_HYDRA_CAP_MAX 33
0120
0121 #define MXL_HYDRA_PLID_REG_READ 0xFB
0122 #define MXL_HYDRA_PLID_REG_WRITE 0xFC
0123
0124 #define MXL_HYDRA_PLID_CMD_READ 0xFD
0125 #define MXL_HYDRA_PLID_CMD_WRITE 0xFE
0126
0127 #define MXL_HYDRA_REG_SIZE_IN_BYTES 4
0128 #define MXL_HYDRA_I2C_HDR_SIZE (2 * sizeof(u8))
0129 #define MXL_HYDRA_CMD_HEADER_SIZE (MXL_HYDRA_REG_SIZE_IN_BYTES + MXL_HYDRA_I2C_HDR_SIZE)
0130
0131 #define MXL_HYDRA_SKU_ID_581 0
0132 #define MXL_HYDRA_SKU_ID_584 1
0133 #define MXL_HYDRA_SKU_ID_585 2
0134 #define MXL_HYDRA_SKU_ID_544 3
0135 #define MXL_HYDRA_SKU_ID_561 4
0136 #define MXL_HYDRA_SKU_ID_582 5
0137 #define MXL_HYDRA_SKU_ID_568 6
0138
0139
0140
0141
0142 #define MXL_HYDRA_REG_WRITE_LEN (MXL_HYDRA_I2C_HDR_SIZE + (2 * MXL_HYDRA_REG_SIZE_IN_BYTES))
0143
0144
0145 #define GET_BYTE(x, n) (((x) >> (8*(n))) & 0xFF)
0146
0147 #define MAX_CMD_DATA 512
0148
0149 #define MXL_GET_REG_MASK_32(lsb_loc, num_of_bits) ((0xFFFFFFFF >> (32 - (num_of_bits))) << (lsb_loc))
0150
0151 #define FW_DL_SIGN (0xDEADBEEF)
0152
0153 #define MBIN_FORMAT_VERSION '1'
0154 #define MBIN_FILE_HEADER_ID 'M'
0155 #define MBIN_SEGMENT_HEADER_ID 'S'
0156 #define MBIN_MAX_FILE_LENGTH (1<<23)
0157
0158 struct MBIN_FILE_HEADER_T {
0159 u8 id;
0160 u8 fmt_version;
0161 u8 header_len;
0162 u8 num_segments;
0163 u8 entry_address[4];
0164 u8 image_size24[3];
0165 u8 image_checksum;
0166 u8 reserved[4];
0167 };
0168
0169 struct MBIN_FILE_T {
0170 struct MBIN_FILE_HEADER_T header;
0171 u8 data[1];
0172 };
0173
0174 struct MBIN_SEGMENT_HEADER_T {
0175 u8 id;
0176 u8 len24[3];
0177 u8 address[4];
0178 };
0179
0180 struct MBIN_SEGMENT_T {
0181 struct MBIN_SEGMENT_HEADER_T header;
0182 u8 data[1];
0183 };
0184
0185 enum MXL_CMD_TYPE_E { MXL_CMD_WRITE = 0, MXL_CMD_READ };
0186
0187 #define BUILD_HYDRA_CMD(cmd_id, req_type, size, data_ptr, cmd_buff) \
0188 do { \
0189 cmd_buff[0] = ((req_type == MXL_CMD_WRITE) ? MXL_HYDRA_PLID_CMD_WRITE : MXL_HYDRA_PLID_CMD_READ); \
0190 cmd_buff[1] = (size > 251) ? 0xff : (u8) (size + 4); \
0191 cmd_buff[2] = size; \
0192 cmd_buff[3] = cmd_id; \
0193 cmd_buff[4] = 0x00; \
0194 cmd_buff[5] = 0x00; \
0195 convert_endian(MXL_ENABLE_BIG_ENDIAN, size, (u8 *)data_ptr); \
0196 memcpy((void *)&cmd_buff[6], data_ptr, size); \
0197 } while (0)
0198
0199 struct MXL_REG_FIELD_T {
0200 u32 reg_addr;
0201 u8 lsb_pos;
0202 u8 num_of_bits;
0203 };
0204
0205 struct MXL_DEV_CMD_DATA_T {
0206 u32 data_size;
0207 u8 data[MAX_CMD_DATA];
0208 };
0209
0210 enum MXL_HYDRA_SKU_TYPE_E {
0211 MXL_HYDRA_SKU_TYPE_MIN = 0x00,
0212 MXL_HYDRA_SKU_TYPE_581 = 0x00,
0213 MXL_HYDRA_SKU_TYPE_584 = 0x01,
0214 MXL_HYDRA_SKU_TYPE_585 = 0x02,
0215 MXL_HYDRA_SKU_TYPE_544 = 0x03,
0216 MXL_HYDRA_SKU_TYPE_561 = 0x04,
0217 MXL_HYDRA_SKU_TYPE_5XX = 0x05,
0218 MXL_HYDRA_SKU_TYPE_5YY = 0x06,
0219 MXL_HYDRA_SKU_TYPE_511 = 0x07,
0220 MXL_HYDRA_SKU_TYPE_561_DE = 0x08,
0221 MXL_HYDRA_SKU_TYPE_582 = 0x09,
0222 MXL_HYDRA_SKU_TYPE_541 = 0x0A,
0223 MXL_HYDRA_SKU_TYPE_568 = 0x0B,
0224 MXL_HYDRA_SKU_TYPE_542 = 0x0C,
0225 MXL_HYDRA_SKU_TYPE_MAX = 0x0D,
0226 };
0227
0228 struct MXL_HYDRA_SKU_COMMAND_T {
0229 enum MXL_HYDRA_SKU_TYPE_E sku_type;
0230 };
0231
0232 enum MXL_HYDRA_DEMOD_ID_E {
0233 MXL_HYDRA_DEMOD_ID_0 = 0,
0234 MXL_HYDRA_DEMOD_ID_1,
0235 MXL_HYDRA_DEMOD_ID_2,
0236 MXL_HYDRA_DEMOD_ID_3,
0237 MXL_HYDRA_DEMOD_ID_4,
0238 MXL_HYDRA_DEMOD_ID_5,
0239 MXL_HYDRA_DEMOD_ID_6,
0240 MXL_HYDRA_DEMOD_ID_7,
0241 MXL_HYDRA_DEMOD_MAX
0242 };
0243
0244 #define MXL_DEMOD_SCRAMBLE_SEQ_LEN 12
0245
0246 #define MAX_STEP_SIZE_24_XTAL_102_05_KHZ 195
0247 #define MAX_STEP_SIZE_24_XTAL_204_10_KHZ 215
0248 #define MAX_STEP_SIZE_24_XTAL_306_15_KHZ 203
0249 #define MAX_STEP_SIZE_24_XTAL_408_20_KHZ 177
0250
0251 #define MAX_STEP_SIZE_27_XTAL_102_05_KHZ 195
0252 #define MAX_STEP_SIZE_27_XTAL_204_10_KHZ 215
0253 #define MAX_STEP_SIZE_27_XTAL_306_15_KHZ 203
0254 #define MAX_STEP_SIZE_27_XTAL_408_20_KHZ 177
0255
0256 #define MXL_HYDRA_SPECTRUM_MIN_FREQ_KHZ 300000
0257 #define MXL_HYDRA_SPECTRUM_MAX_FREQ_KHZ 2350000
0258
0259 enum MXL_DEMOD_CHAN_PARAMS_OFFSET_E {
0260 DMD_STANDARD_ADDR = 0,
0261 DMD_SPECTRUM_INVERSION_ADDR,
0262 DMD_SPECTRUM_ROLL_OFF_ADDR,
0263 DMD_SYMBOL_RATE_ADDR,
0264 DMD_MODULATION_SCHEME_ADDR,
0265 DMD_FEC_CODE_RATE_ADDR,
0266 DMD_SNR_ADDR,
0267 DMD_FREQ_OFFSET_ADDR,
0268 DMD_CTL_FREQ_OFFSET_ADDR,
0269 DMD_STR_FREQ_OFFSET_ADDR,
0270 DMD_FTL_FREQ_OFFSET_ADDR,
0271 DMD_STR_NBC_SYNC_LOCK_ADDR,
0272 DMD_CYCLE_SLIP_COUNT_ADDR,
0273 DMD_DISPLAY_IQ_ADDR,
0274 DMD_DVBS2_CRC_ERRORS_ADDR,
0275 DMD_DVBS2_PER_COUNT_ADDR,
0276 DMD_DVBS2_PER_WINDOW_ADDR,
0277 DMD_DVBS_CORR_RS_ERRORS_ADDR,
0278 DMD_DVBS_UNCORR_RS_ERRORS_ADDR,
0279 DMD_DVBS_BER_COUNT_ADDR,
0280 DMD_DVBS_BER_WINDOW_ADDR,
0281 DMD_TUNER_ID_ADDR,
0282 DMD_DVBS2_PILOT_ON_OFF_ADDR,
0283 DMD_FREQ_SEARCH_RANGE_IN_KHZ_ADDR,
0284
0285 MXL_DEMOD_CHAN_PARAMS_BUFF_SIZE,
0286 };
0287
0288 enum MXL_HYDRA_TUNER_ID_E {
0289 MXL_HYDRA_TUNER_ID_0 = 0,
0290 MXL_HYDRA_TUNER_ID_1,
0291 MXL_HYDRA_TUNER_ID_2,
0292 MXL_HYDRA_TUNER_ID_3,
0293 MXL_HYDRA_TUNER_MAX
0294 };
0295
0296 enum MXL_HYDRA_BCAST_STD_E {
0297 MXL_HYDRA_DSS = 0,
0298 MXL_HYDRA_DVBS,
0299 MXL_HYDRA_DVBS2,
0300 };
0301
0302 enum MXL_HYDRA_FEC_E {
0303 MXL_HYDRA_FEC_AUTO = 0,
0304 MXL_HYDRA_FEC_1_2,
0305 MXL_HYDRA_FEC_3_5,
0306 MXL_HYDRA_FEC_2_3,
0307 MXL_HYDRA_FEC_3_4,
0308 MXL_HYDRA_FEC_4_5,
0309 MXL_HYDRA_FEC_5_6,
0310 MXL_HYDRA_FEC_6_7,
0311 MXL_HYDRA_FEC_7_8,
0312 MXL_HYDRA_FEC_8_9,
0313 MXL_HYDRA_FEC_9_10,
0314 };
0315
0316 enum MXL_HYDRA_MODULATION_E {
0317 MXL_HYDRA_MOD_AUTO = 0,
0318 MXL_HYDRA_MOD_QPSK,
0319 MXL_HYDRA_MOD_8PSK
0320 };
0321
0322 enum MXL_HYDRA_SPECTRUM_E {
0323 MXL_HYDRA_SPECTRUM_AUTO = 0,
0324 MXL_HYDRA_SPECTRUM_INVERTED,
0325 MXL_HYDRA_SPECTRUM_NON_INVERTED,
0326 };
0327
0328 enum MXL_HYDRA_ROLLOFF_E {
0329 MXL_HYDRA_ROLLOFF_AUTO = 0,
0330 MXL_HYDRA_ROLLOFF_0_20,
0331 MXL_HYDRA_ROLLOFF_0_25,
0332 MXL_HYDRA_ROLLOFF_0_35
0333 };
0334
0335 enum MXL_HYDRA_PILOTS_E {
0336 MXL_HYDRA_PILOTS_OFF = 0,
0337 MXL_HYDRA_PILOTS_ON,
0338 MXL_HYDRA_PILOTS_AUTO
0339 };
0340
0341 enum MXL_HYDRA_CONSTELLATION_SRC_E {
0342 MXL_HYDRA_FORMATTER = 0,
0343 MXL_HYDRA_LEGACY_FEC,
0344 MXL_HYDRA_FREQ_RECOVERY,
0345 MXL_HYDRA_NBC,
0346 MXL_HYDRA_CTL,
0347 MXL_HYDRA_EQ,
0348 };
0349
0350 struct MXL_HYDRA_DEMOD_LOCK_T {
0351 int agc_lock;
0352 int fec_lock;
0353 };
0354
0355 struct MXL_HYDRA_DEMOD_STATUS_DVBS_T {
0356 u32 rs_errors;
0357 u32 ber_window;
0358 u32 ber_count;
0359 u32 ber_window_iter1;
0360 u32 ber_count_iter1;
0361 };
0362
0363 struct MXL_HYDRA_DEMOD_STATUS_DSS_T {
0364 u32 rs_errors;
0365 u32 ber_window;
0366 u32 ber_count;
0367 };
0368
0369 struct MXL_HYDRA_DEMOD_STATUS_DVBS2_T {
0370 u32 crc_errors;
0371 u32 packet_error_count;
0372 u32 total_packets;
0373 };
0374
0375 struct MXL_HYDRA_DEMOD_STATUS_T {
0376 enum MXL_HYDRA_BCAST_STD_E standard_mask;
0377
0378 union {
0379 struct MXL_HYDRA_DEMOD_STATUS_DVBS_T demod_status_dvbs;
0380 struct MXL_HYDRA_DEMOD_STATUS_DVBS2_T demod_status_dvbs2;
0381 struct MXL_HYDRA_DEMOD_STATUS_DSS_T demod_status_dss;
0382 } u;
0383 };
0384
0385 struct MXL_HYDRA_DEMOD_SIG_OFFSET_INFO_T {
0386 s32 carrier_offset_in_hz;
0387 s32 symbol_offset_in_symbol;
0388 };
0389
0390 struct MXL_HYDRA_DEMOD_SCRAMBLE_INFO_T {
0391 u8 scramble_sequence[MXL_DEMOD_SCRAMBLE_SEQ_LEN];
0392 u32 scramble_code;
0393 };
0394
0395 enum MXL_HYDRA_SPECTRUM_STEP_SIZE_E {
0396 MXL_HYDRA_STEP_SIZE_24_XTAL_102_05KHZ,
0397 MXL_HYDRA_STEP_SIZE_24_XTAL_204_10KHZ,
0398 MXL_HYDRA_STEP_SIZE_24_XTAL_306_15KHZ,
0399 MXL_HYDRA_STEP_SIZE_24_XTAL_408_20KHZ,
0400
0401 MXL_HYDRA_STEP_SIZE_27_XTAL_102_05KHZ,
0402 MXL_HYDRA_STEP_SIZE_27_XTAL_204_35KHZ,
0403 MXL_HYDRA_STEP_SIZE_27_XTAL_306_52KHZ,
0404 MXL_HYDRA_STEP_SIZE_27_XTAL_408_69KHZ,
0405 };
0406
0407 enum MXL_HYDRA_SPECTRUM_RESOLUTION_E {
0408 MXL_HYDRA_SPECTRUM_RESOLUTION_00_1_DB,
0409 MXL_HYDRA_SPECTRUM_RESOLUTION_01_0_DB,
0410 MXL_HYDRA_SPECTRUM_RESOLUTION_05_0_DB,
0411 MXL_HYDRA_SPECTRUM_RESOLUTION_10_0_DB,
0412 };
0413
0414 enum MXL_HYDRA_SPECTRUM_ERROR_CODE_E {
0415 MXL_SPECTRUM_NO_ERROR,
0416 MXL_SPECTRUM_INVALID_PARAMETER,
0417 MXL_SPECTRUM_INVALID_STEP_SIZE,
0418 MXL_SPECTRUM_BW_CANNOT_BE_COVERED,
0419 MXL_SPECTRUM_DEMOD_BUSY,
0420 MXL_SPECTRUM_TUNER_NOT_ENABLED,
0421 };
0422
0423 struct MXL_HYDRA_SPECTRUM_REQ_T {
0424 u32 tuner_index;
0425 u32 demod_index;
0426 enum MXL_HYDRA_SPECTRUM_STEP_SIZE_E step_size_in_khz;
0427 u32 starting_freq_ink_hz;
0428 u32 total_steps;
0429 enum MXL_HYDRA_SPECTRUM_RESOLUTION_E spectrum_division;
0430 };
0431
0432 enum MXL_HYDRA_SEARCH_FREQ_OFFSET_TYPE_E {
0433 MXL_HYDRA_SEARCH_MAX_OFFSET = 0,
0434 MXL_HYDRA_SEARCH_BW_PLUS_ROLLOFF,
0435 };
0436
0437 struct MXL58X_CFG_FREQ_OFF_SEARCH_RANGE_T {
0438 u32 demod_index;
0439 enum MXL_HYDRA_SEARCH_FREQ_OFFSET_TYPE_E search_type;
0440 };
0441
0442
0443
0444
0445
0446 #define MXL_HYDRA_TS_SLICE_MAX 2
0447
0448 #define MAX_FIXED_PID_NUM 32
0449
0450 #define MXL_HYDRA_NCO_CLK 418
0451
0452 #define MXL_HYDRA_MAX_TS_CLOCK 139
0453
0454 #define MXL_HYDRA_TS_FIXED_PID_FILT_SIZE 32
0455
0456 #define MXL_HYDRA_SHARED_PID_FILT_SIZE_DEFAULT 33
0457 #define MXL_HYDRA_SHARED_PID_FILT_SIZE_2_TO_1 66
0458 #define MXL_HYDRA_SHARED_PID_FILT_SIZE_4_TO_1 132
0459
0460 enum MXL_HYDRA_PID_BANK_TYPE_E {
0461 MXL_HYDRA_SOFTWARE_PID_BANK = 0,
0462 MXL_HYDRA_HARDWARE_PID_BANK,
0463 };
0464
0465 enum MXL_HYDRA_TS_MUX_MODE_E {
0466 MXL_HYDRA_TS_MUX_PID_REMAP = 0,
0467 MXL_HYDRA_TS_MUX_PREFIX_EXTRA_HEADER = 1,
0468 };
0469
0470 enum MXL_HYDRA_TS_MUX_TYPE_E {
0471 MXL_HYDRA_TS_MUX_DISABLE = 0,
0472 MXL_HYDRA_TS_MUX_2_TO_1,
0473 MXL_HYDRA_TS_MUX_4_TO_1,
0474 };
0475
0476 enum MXL_HYDRA_TS_GROUP_E {
0477 MXL_HYDRA_TS_GROUP_0_3 = 0,
0478 MXL_HYDRA_TS_GROUP_4_7,
0479 };
0480
0481 enum MXL_HYDRA_TS_PID_FLT_CTRL_E {
0482 MXL_HYDRA_TS_PIDS_ALLOW_ALL = 0,
0483 MXL_HYDRA_TS_PIDS_DROP_ALL,
0484 MXL_HYDRA_TS_INVALIDATE_PID_FILTER,
0485 };
0486
0487 enum MXL_HYDRA_TS_PID_TYPE_E {
0488 MXL_HYDRA_TS_PID_FIXED = 0,
0489 MXL_HYDRA_TS_PID_REGULAR,
0490 };
0491
0492 struct MXL_HYDRA_TS_PID_T {
0493 u16 original_pid;
0494 u16 remapped_pid;
0495 enum MXL_BOOL_E enable;
0496 enum MXL_BOOL_E allow_or_drop;
0497 enum MXL_BOOL_E enable_pid_remap;
0498 u8 bond_id;
0499 u8 dest_id;
0500 };
0501
0502 struct MXL_HYDRA_TS_MUX_PREFIX_HEADER_T {
0503 enum MXL_BOOL_E enable;
0504 u8 num_byte;
0505 u8 header[12];
0506 };
0507
0508 enum MXL_HYDRA_PID_FILTER_BANK_E {
0509 MXL_HYDRA_PID_BANK_A = 0,
0510 MXL_HYDRA_PID_BANK_B,
0511 };
0512
0513 enum MXL_HYDRA_MPEG_DATA_FMT_E {
0514 MXL_HYDRA_MPEG_SERIAL_MSB_1ST = 0,
0515 MXL_HYDRA_MPEG_SERIAL_LSB_1ST,
0516
0517 MXL_HYDRA_MPEG_SYNC_WIDTH_BIT = 0,
0518 MXL_HYDRA_MPEG_SYNC_WIDTH_BYTE
0519 };
0520
0521 enum MXL_HYDRA_MPEG_MODE_E {
0522 MXL_HYDRA_MPEG_MODE_SERIAL_4_WIRE = 0,
0523 MXL_HYDRA_MPEG_MODE_SERIAL_3_WIRE,
0524 MXL_HYDRA_MPEG_MODE_SERIAL_2_WIRE,
0525 MXL_HYDRA_MPEG_MODE_PARALLEL
0526 };
0527
0528 enum MXL_HYDRA_MPEG_CLK_TYPE_E {
0529 MXL_HYDRA_MPEG_CLK_CONTINUOUS = 0,
0530 MXL_HYDRA_MPEG_CLK_GAPPED,
0531 };
0532
0533 enum MXL_HYDRA_MPEG_CLK_FMT_E {
0534 MXL_HYDRA_MPEG_ACTIVE_LOW = 0,
0535 MXL_HYDRA_MPEG_ACTIVE_HIGH,
0536
0537 MXL_HYDRA_MPEG_CLK_NEGATIVE = 0,
0538 MXL_HYDRA_MPEG_CLK_POSITIVE,
0539
0540 MXL_HYDRA_MPEG_CLK_IN_PHASE = 0,
0541 MXL_HYDRA_MPEG_CLK_INVERTED,
0542 };
0543
0544 enum MXL_HYDRA_MPEG_CLK_PHASE_E {
0545 MXL_HYDRA_MPEG_CLK_PHASE_SHIFT_0_DEG = 0,
0546 MXL_HYDRA_MPEG_CLK_PHASE_SHIFT_90_DEG,
0547 MXL_HYDRA_MPEG_CLK_PHASE_SHIFT_180_DEG,
0548 MXL_HYDRA_MPEG_CLK_PHASE_SHIFT_270_DEG
0549 };
0550
0551 enum MXL_HYDRA_MPEG_ERR_INDICATION_E {
0552 MXL_HYDRA_MPEG_ERR_REPLACE_SYNC = 0,
0553 MXL_HYDRA_MPEG_ERR_REPLACE_VALID,
0554 MXL_HYDRA_MPEG_ERR_INDICATION_DISABLED
0555 };
0556
0557 struct MXL_HYDRA_MPEGOUT_PARAM_T {
0558 int enable;
0559 enum MXL_HYDRA_MPEG_CLK_TYPE_E mpeg_clk_type;
0560 enum MXL_HYDRA_MPEG_CLK_FMT_E mpeg_clk_pol;
0561 u8 max_mpeg_clk_rate;
0562 enum MXL_HYDRA_MPEG_CLK_PHASE_E mpeg_clk_phase;
0563 enum MXL_HYDRA_MPEG_DATA_FMT_E lsb_or_msb_first;
0564 enum MXL_HYDRA_MPEG_DATA_FMT_E mpeg_sync_pulse_width;
0565 enum MXL_HYDRA_MPEG_CLK_FMT_E mpeg_valid_pol;
0566 enum MXL_HYDRA_MPEG_CLK_FMT_E mpeg_sync_pol;
0567 enum MXL_HYDRA_MPEG_MODE_E mpeg_mode;
0568 enum MXL_HYDRA_MPEG_ERR_INDICATION_E mpeg_error_indication;
0569 };
0570
0571 enum MXL_HYDRA_EXT_TS_IN_ID_E {
0572 MXL_HYDRA_EXT_TS_IN_0 = 0,
0573 MXL_HYDRA_EXT_TS_IN_1,
0574 MXL_HYDRA_EXT_TS_IN_2,
0575 MXL_HYDRA_EXT_TS_IN_3,
0576 MXL_HYDRA_EXT_TS_IN_MAX
0577 };
0578
0579 enum MXL_HYDRA_TS_OUT_ID_E {
0580 MXL_HYDRA_TS_OUT_0 = 0,
0581 MXL_HYDRA_TS_OUT_1,
0582 MXL_HYDRA_TS_OUT_2,
0583 MXL_HYDRA_TS_OUT_3,
0584 MXL_HYDRA_TS_OUT_4,
0585 MXL_HYDRA_TS_OUT_5,
0586 MXL_HYDRA_TS_OUT_6,
0587 MXL_HYDRA_TS_OUT_7,
0588 MXL_HYDRA_TS_OUT_MAX
0589 };
0590
0591 enum MXL_HYDRA_TS_DRIVE_STRENGTH_E {
0592 MXL_HYDRA_TS_DRIVE_STRENGTH_1X = 0,
0593 MXL_HYDRA_TS_DRIVE_STRENGTH_2X,
0594 MXL_HYDRA_TS_DRIVE_STRENGTH_3X,
0595 MXL_HYDRA_TS_DRIVE_STRENGTH_4X,
0596 MXL_HYDRA_TS_DRIVE_STRENGTH_5X,
0597 MXL_HYDRA_TS_DRIVE_STRENGTH_6X,
0598 MXL_HYDRA_TS_DRIVE_STRENGTH_7X,
0599 MXL_HYDRA_TS_DRIVE_STRENGTH_8X
0600 };
0601
0602 enum MXL_HYDRA_DEVICE_E {
0603 MXL_HYDRA_DEVICE_581 = 0,
0604 MXL_HYDRA_DEVICE_584,
0605 MXL_HYDRA_DEVICE_585,
0606 MXL_HYDRA_DEVICE_544,
0607 MXL_HYDRA_DEVICE_561,
0608 MXL_HYDRA_DEVICE_TEST,
0609 MXL_HYDRA_DEVICE_582,
0610 MXL_HYDRA_DEVICE_541,
0611 MXL_HYDRA_DEVICE_568,
0612 MXL_HYDRA_DEVICE_542,
0613 MXL_HYDRA_DEVICE_541S,
0614 MXL_HYDRA_DEVICE_561S,
0615 MXL_HYDRA_DEVICE_581S,
0616 MXL_HYDRA_DEVICE_MAX
0617 };
0618
0619
0620 struct MXL_HYDRA_DEMOD_IQ_SRC_T {
0621 u32 demod_id;
0622 u32 source_of_iq;
0623
0624
0625
0626
0627
0628
0629
0630 };
0631
0632 struct MXL_HYDRA_DEMOD_ABORT_TUNE_T {
0633 u32 demod_id;
0634 };
0635
0636 struct MXL_HYDRA_TUNER_CMD {
0637 u8 tuner_id;
0638 u8 enable;
0639 };
0640
0641
0642 struct MXL_HYDRA_DEMOD_PARAM_T {
0643 u32 tuner_index;
0644 u32 demod_index;
0645 u32 frequency_in_hz;
0646 u32 standard;
0647 u32 spectrum_inversion;
0648 u32 roll_off;
0649 u32 symbol_rate_in_hz;
0650 u32 pilots;
0651 u32 modulation_scheme;
0652 u32 fec_code_rate;
0653 u32 max_carrier_offset_in_mhz;
0654 };
0655
0656 struct MXL_HYDRA_DEMOD_SCRAMBLE_CODE_T {
0657 u32 demod_index;
0658 u8 scramble_sequence[12];
0659 u32 scramble_code;
0660 };
0661
0662 struct MXL_INTR_CFG_T {
0663 u32 intr_type;
0664 u32 intr_duration_in_nano_secs;
0665 u32 intr_mask;
0666 };
0667
0668 struct MXL_HYDRA_POWER_MODE_CMD {
0669 u8 power_mode;
0670 };
0671
0672 struct MXL_HYDRA_RF_WAKEUP_PARAM_T {
0673 u32 time_interval_in_seconds;
0674 u32 tuner_index;
0675 s32 rssi_threshold;
0676 };
0677
0678 struct MXL_HYDRA_RF_WAKEUP_CFG_T {
0679 u32 tuner_count;
0680 struct MXL_HYDRA_RF_WAKEUP_PARAM_T params;
0681 };
0682
0683 enum MXL_HYDRA_AUX_CTRL_MODE_E {
0684 MXL_HYDRA_AUX_CTRL_MODE_FSK = 0,
0685 MXL_HYDRA_AUX_CTRL_MODE_DISEQC,
0686 };
0687
0688 enum MXL_HYDRA_DISEQC_OPMODE_E {
0689 MXL_HYDRA_DISEQC_ENVELOPE_MODE = 0,
0690 MXL_HYDRA_DISEQC_TONE_MODE,
0691 };
0692
0693 enum MXL_HYDRA_DISEQC_VER_E {
0694 MXL_HYDRA_DISEQC_1_X = 0,
0695 MXL_HYDRA_DISEQC_2_X,
0696 MXL_HYDRA_DISEQC_DISABLE
0697 };
0698
0699 enum MXL_HYDRA_DISEQC_CARRIER_FREQ_E {
0700 MXL_HYDRA_DISEQC_CARRIER_FREQ_22KHZ = 0,
0701 MXL_HYDRA_DISEQC_CARRIER_FREQ_33KHZ,
0702 MXL_HYDRA_DISEQC_CARRIER_FREQ_44KHZ
0703 };
0704
0705 enum MXL_HYDRA_DISEQC_ID_E {
0706 MXL_HYDRA_DISEQC_ID_0 = 0,
0707 MXL_HYDRA_DISEQC_ID_1,
0708 MXL_HYDRA_DISEQC_ID_2,
0709 MXL_HYDRA_DISEQC_ID_3
0710 };
0711
0712 enum MXL_HYDRA_FSK_OP_MODE_E {
0713 MXL_HYDRA_FSK_CFG_TYPE_39KPBS = 0,
0714 MXL_HYDRA_FSK_CFG_TYPE_39_017KPBS,
0715 MXL_HYDRA_FSK_CFG_TYPE_115_2KPBS
0716 };
0717
0718 struct MXL58X_DSQ_OP_MODE_T {
0719 u32 diseqc_id;
0720 u32 op_mode;
0721 u32 version;
0722 u32 center_freq;
0723 };
0724
0725 struct MXL_HYDRA_DISEQC_CFG_CONT_TONE_T {
0726 u32 diseqc_id;
0727 u32 cont_tone_flag;
0728 };