18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * Defines for the Maxlinear MX58x family of tuners/demods 48c2ecf20Sopenharmony_ci * 58c2ecf20Sopenharmony_ci * Copyright (C) 2014 Digital Devices GmbH 68c2ecf20Sopenharmony_ci * 78c2ecf20Sopenharmony_ci * based on code: 88c2ecf20Sopenharmony_ci * Copyright (c) 2011-2013 MaxLinear, Inc. All rights reserved 98c2ecf20Sopenharmony_ci * which was released under GPL V2 108c2ecf20Sopenharmony_ci * 118c2ecf20Sopenharmony_ci * This program is free software; you can redistribute it and/or 128c2ecf20Sopenharmony_ci * modify it under the terms of the GNU General Public License 138c2ecf20Sopenharmony_ci * version 2, as published by the Free Software Foundation. 148c2ecf20Sopenharmony_ci */ 158c2ecf20Sopenharmony_ci 168c2ecf20Sopenharmony_cienum MXL_BOOL_E { 178c2ecf20Sopenharmony_ci MXL_DISABLE = 0, 188c2ecf20Sopenharmony_ci MXL_ENABLE = 1, 198c2ecf20Sopenharmony_ci 208c2ecf20Sopenharmony_ci MXL_FALSE = 0, 218c2ecf20Sopenharmony_ci MXL_TRUE = 1, 228c2ecf20Sopenharmony_ci 238c2ecf20Sopenharmony_ci MXL_INVALID = 0, 248c2ecf20Sopenharmony_ci MXL_VALID = 1, 258c2ecf20Sopenharmony_ci 268c2ecf20Sopenharmony_ci MXL_NO = 0, 278c2ecf20Sopenharmony_ci MXL_YES = 1, 288c2ecf20Sopenharmony_ci 298c2ecf20Sopenharmony_ci MXL_OFF = 0, 308c2ecf20Sopenharmony_ci MXL_ON = 1 318c2ecf20Sopenharmony_ci}; 328c2ecf20Sopenharmony_ci 338c2ecf20Sopenharmony_ci/* Firmware-Host Command IDs */ 348c2ecf20Sopenharmony_cienum MXL_HYDRA_HOST_CMD_ID_E { 358c2ecf20Sopenharmony_ci /* --Device command IDs-- */ 368c2ecf20Sopenharmony_ci MXL_HYDRA_DEV_NO_OP_CMD = 0, /* No OP */ 378c2ecf20Sopenharmony_ci 388c2ecf20Sopenharmony_ci MXL_HYDRA_DEV_SET_POWER_MODE_CMD = 1, 398c2ecf20Sopenharmony_ci MXL_HYDRA_DEV_SET_OVERWRITE_DEF_CMD = 2, 408c2ecf20Sopenharmony_ci 418c2ecf20Sopenharmony_ci /* Host-used CMD, not used by firmware */ 428c2ecf20Sopenharmony_ci MXL_HYDRA_DEV_FIRMWARE_DOWNLOAD_CMD = 3, 438c2ecf20Sopenharmony_ci 448c2ecf20Sopenharmony_ci /* Additional CONTROL types from DTV */ 458c2ecf20Sopenharmony_ci MXL_HYDRA_DEV_SET_BROADCAST_PID_STB_ID_CMD = 4, 468c2ecf20Sopenharmony_ci MXL_HYDRA_DEV_GET_PMM_SLEEP_CMD = 5, 478c2ecf20Sopenharmony_ci 488c2ecf20Sopenharmony_ci /* --Tuner command IDs-- */ 498c2ecf20Sopenharmony_ci MXL_HYDRA_TUNER_TUNE_CMD = 6, 508c2ecf20Sopenharmony_ci MXL_HYDRA_TUNER_GET_STATUS_CMD = 7, 518c2ecf20Sopenharmony_ci 528c2ecf20Sopenharmony_ci /* --Demod command IDs-- */ 538c2ecf20Sopenharmony_ci MXL_HYDRA_DEMOD_SET_PARAM_CMD = 8, 548c2ecf20Sopenharmony_ci MXL_HYDRA_DEMOD_GET_STATUS_CMD = 9, 558c2ecf20Sopenharmony_ci 568c2ecf20Sopenharmony_ci MXL_HYDRA_DEMOD_RESET_FEC_COUNTER_CMD = 10, 578c2ecf20Sopenharmony_ci 588c2ecf20Sopenharmony_ci MXL_HYDRA_DEMOD_SET_PKT_NUM_CMD = 11, 598c2ecf20Sopenharmony_ci 608c2ecf20Sopenharmony_ci MXL_HYDRA_DEMOD_SET_IQ_SOURCE_CMD = 12, 618c2ecf20Sopenharmony_ci MXL_HYDRA_DEMOD_GET_IQ_DATA_CMD = 13, 628c2ecf20Sopenharmony_ci 638c2ecf20Sopenharmony_ci MXL_HYDRA_DEMOD_GET_M68HC05_VER_CMD = 14, 648c2ecf20Sopenharmony_ci 658c2ecf20Sopenharmony_ci MXL_HYDRA_DEMOD_SET_ERROR_COUNTER_MODE_CMD = 15, 668c2ecf20Sopenharmony_ci 678c2ecf20Sopenharmony_ci /* --- ABORT channel tune */ 688c2ecf20Sopenharmony_ci MXL_HYDRA_ABORT_TUNE_CMD = 16, /* Abort current tune command. */ 698c2ecf20Sopenharmony_ci 708c2ecf20Sopenharmony_ci /* --SWM/FSK command IDs-- */ 718c2ecf20Sopenharmony_ci MXL_HYDRA_FSK_RESET_CMD = 17, 728c2ecf20Sopenharmony_ci MXL_HYDRA_FSK_MSG_CMD = 18, 738c2ecf20Sopenharmony_ci MXL_HYDRA_FSK_SET_OP_MODE_CMD = 19, 748c2ecf20Sopenharmony_ci 758c2ecf20Sopenharmony_ci /* --DiSeqC command IDs-- */ 768c2ecf20Sopenharmony_ci MXL_HYDRA_DISEQC_MSG_CMD = 20, 778c2ecf20Sopenharmony_ci MXL_HYDRA_DISEQC_COPY_MSG_TO_MAILBOX = 21, 788c2ecf20Sopenharmony_ci MXL_HYDRA_DISEQC_CFG_MSG_CMD = 22, 798c2ecf20Sopenharmony_ci 808c2ecf20Sopenharmony_ci /* --- FFT Debug Command IDs-- */ 818c2ecf20Sopenharmony_ci MXL_HYDRA_REQ_FFT_SPECTRUM_CMD = 23, 828c2ecf20Sopenharmony_ci 838c2ecf20Sopenharmony_ci /* -- Demod scramblle code */ 848c2ecf20Sopenharmony_ci MXL_HYDRA_DEMOD_SCRAMBLE_CODE_CMD = 24, 858c2ecf20Sopenharmony_ci 868c2ecf20Sopenharmony_ci /* ---For host to know how many commands in total */ 878c2ecf20Sopenharmony_ci MXL_HYDRA_LAST_HOST_CMD = 25, 888c2ecf20Sopenharmony_ci 898c2ecf20Sopenharmony_ci MXL_HYDRA_DEMOD_INTR_TYPE_CMD = 47, 908c2ecf20Sopenharmony_ci MXL_HYDRA_DEV_INTR_CLEAR_CMD = 48, 918c2ecf20Sopenharmony_ci MXL_HYDRA_TUNER_SPECTRUM_REQ_CMD = 53, 928c2ecf20Sopenharmony_ci MXL_HYDRA_TUNER_ACTIVATE_CMD = 55, 938c2ecf20Sopenharmony_ci MXL_HYDRA_DEV_CFG_POWER_MODE_CMD = 56, 948c2ecf20Sopenharmony_ci MXL_HYDRA_DEV_XTAL_CAP_CMD = 57, 958c2ecf20Sopenharmony_ci MXL_HYDRA_DEV_CFG_SKU_CMD = 58, 968c2ecf20Sopenharmony_ci MXL_HYDRA_TUNER_SPECTRUM_MIN_GAIN_CMD = 59, 978c2ecf20Sopenharmony_ci MXL_HYDRA_DISEQC_CONT_TONE_CFG = 60, 988c2ecf20Sopenharmony_ci MXL_HYDRA_DEV_RF_WAKE_UP_CMD = 61, 998c2ecf20Sopenharmony_ci MXL_HYDRA_DEMOD_CFG_EQ_CTRL_PARAM_CMD = 62, 1008c2ecf20Sopenharmony_ci MXL_HYDRA_DEMOD_FREQ_OFFSET_SEARCH_RANGE_CMD = 63, 1018c2ecf20Sopenharmony_ci MXL_HYDRA_DEV_REQ_PWR_FROM_ADCRSSI_CMD = 64, 1028c2ecf20Sopenharmony_ci 1038c2ecf20Sopenharmony_ci MXL_XCPU_PID_FLT_CFG_CMD = 65, 1048c2ecf20Sopenharmony_ci MXL_XCPU_SHMEM_TEST_CMD = 66, 1058c2ecf20Sopenharmony_ci MXL_XCPU_ABORT_TUNE_CMD = 67, 1068c2ecf20Sopenharmony_ci MXL_XCPU_CHAN_TUNE_CMD = 68, 1078c2ecf20Sopenharmony_ci MXL_XCPU_FLT_BOND_HDRS_CMD = 69, 1088c2ecf20Sopenharmony_ci 1098c2ecf20Sopenharmony_ci MXL_HYDRA_DEV_BROADCAST_WAKE_UP_CMD = 70, 1108c2ecf20Sopenharmony_ci MXL_HYDRA_FSK_CFG_FSK_FREQ_CMD = 71, 1118c2ecf20Sopenharmony_ci MXL_HYDRA_FSK_POWER_DOWN_CMD = 72, 1128c2ecf20Sopenharmony_ci MXL_XCPU_CLEAR_CB_STATS_CMD = 73, 1138c2ecf20Sopenharmony_ci MXL_XCPU_CHAN_BOND_RESTART_CMD = 74 1148c2ecf20Sopenharmony_ci}; 1158c2ecf20Sopenharmony_ci 1168c2ecf20Sopenharmony_ci#define MXL_ENABLE_BIG_ENDIAN (0) 1178c2ecf20Sopenharmony_ci 1188c2ecf20Sopenharmony_ci#define MXL_HYDRA_OEM_MAX_BLOCK_WRITE_LENGTH 248 1198c2ecf20Sopenharmony_ci 1208c2ecf20Sopenharmony_ci#define MXL_HYDRA_OEM_MAX_CMD_BUFF_LEN (248) 1218c2ecf20Sopenharmony_ci 1228c2ecf20Sopenharmony_ci#define MXL_HYDRA_CAP_MIN 10 1238c2ecf20Sopenharmony_ci#define MXL_HYDRA_CAP_MAX 33 1248c2ecf20Sopenharmony_ci 1258c2ecf20Sopenharmony_ci#define MXL_HYDRA_PLID_REG_READ 0xFB /* Read register PLID */ 1268c2ecf20Sopenharmony_ci#define MXL_HYDRA_PLID_REG_WRITE 0xFC /* Write register PLID */ 1278c2ecf20Sopenharmony_ci 1288c2ecf20Sopenharmony_ci#define MXL_HYDRA_PLID_CMD_READ 0xFD /* Command Read PLID */ 1298c2ecf20Sopenharmony_ci#define MXL_HYDRA_PLID_CMD_WRITE 0xFE /* Command Write PLID */ 1308c2ecf20Sopenharmony_ci 1318c2ecf20Sopenharmony_ci#define MXL_HYDRA_REG_SIZE_IN_BYTES 4 /* Hydra register size in bytes */ 1328c2ecf20Sopenharmony_ci#define MXL_HYDRA_I2C_HDR_SIZE (2 * sizeof(u8)) /* PLID + LEN(0xFF) */ 1338c2ecf20Sopenharmony_ci#define MXL_HYDRA_CMD_HEADER_SIZE (MXL_HYDRA_REG_SIZE_IN_BYTES + MXL_HYDRA_I2C_HDR_SIZE) 1348c2ecf20Sopenharmony_ci 1358c2ecf20Sopenharmony_ci#define MXL_HYDRA_SKU_ID_581 0 1368c2ecf20Sopenharmony_ci#define MXL_HYDRA_SKU_ID_584 1 1378c2ecf20Sopenharmony_ci#define MXL_HYDRA_SKU_ID_585 2 1388c2ecf20Sopenharmony_ci#define MXL_HYDRA_SKU_ID_544 3 1398c2ecf20Sopenharmony_ci#define MXL_HYDRA_SKU_ID_561 4 1408c2ecf20Sopenharmony_ci#define MXL_HYDRA_SKU_ID_582 5 1418c2ecf20Sopenharmony_ci#define MXL_HYDRA_SKU_ID_568 6 1428c2ecf20Sopenharmony_ci 1438c2ecf20Sopenharmony_ci/* macro for register write data buffer size 1448c2ecf20Sopenharmony_ci * (PLID + LEN (0xFF) + RegAddr + RegData) 1458c2ecf20Sopenharmony_ci */ 1468c2ecf20Sopenharmony_ci#define MXL_HYDRA_REG_WRITE_LEN (MXL_HYDRA_I2C_HDR_SIZE + (2 * MXL_HYDRA_REG_SIZE_IN_BYTES)) 1478c2ecf20Sopenharmony_ci 1488c2ecf20Sopenharmony_ci/* macro to extract a single byte from 4-byte(32-bit) data */ 1498c2ecf20Sopenharmony_ci#define GET_BYTE(x, n) (((x) >> (8*(n))) & 0xFF) 1508c2ecf20Sopenharmony_ci 1518c2ecf20Sopenharmony_ci#define MAX_CMD_DATA 512 1528c2ecf20Sopenharmony_ci 1538c2ecf20Sopenharmony_ci#define MXL_GET_REG_MASK_32(lsb_loc, num_of_bits) ((0xFFFFFFFF >> (32 - (num_of_bits))) << (lsb_loc)) 1548c2ecf20Sopenharmony_ci 1558c2ecf20Sopenharmony_ci#define FW_DL_SIGN (0xDEADBEEF) 1568c2ecf20Sopenharmony_ci 1578c2ecf20Sopenharmony_ci#define MBIN_FORMAT_VERSION '1' 1588c2ecf20Sopenharmony_ci#define MBIN_FILE_HEADER_ID 'M' 1598c2ecf20Sopenharmony_ci#define MBIN_SEGMENT_HEADER_ID 'S' 1608c2ecf20Sopenharmony_ci#define MBIN_MAX_FILE_LENGTH (1<<23) 1618c2ecf20Sopenharmony_ci 1628c2ecf20Sopenharmony_cistruct MBIN_FILE_HEADER_T { 1638c2ecf20Sopenharmony_ci u8 id; 1648c2ecf20Sopenharmony_ci u8 fmt_version; 1658c2ecf20Sopenharmony_ci u8 header_len; 1668c2ecf20Sopenharmony_ci u8 num_segments; 1678c2ecf20Sopenharmony_ci u8 entry_address[4]; 1688c2ecf20Sopenharmony_ci u8 image_size24[3]; 1698c2ecf20Sopenharmony_ci u8 image_checksum; 1708c2ecf20Sopenharmony_ci u8 reserved[4]; 1718c2ecf20Sopenharmony_ci}; 1728c2ecf20Sopenharmony_ci 1738c2ecf20Sopenharmony_cistruct MBIN_FILE_T { 1748c2ecf20Sopenharmony_ci struct MBIN_FILE_HEADER_T header; 1758c2ecf20Sopenharmony_ci u8 data[1]; 1768c2ecf20Sopenharmony_ci}; 1778c2ecf20Sopenharmony_ci 1788c2ecf20Sopenharmony_cistruct MBIN_SEGMENT_HEADER_T { 1798c2ecf20Sopenharmony_ci u8 id; 1808c2ecf20Sopenharmony_ci u8 len24[3]; 1818c2ecf20Sopenharmony_ci u8 address[4]; 1828c2ecf20Sopenharmony_ci}; 1838c2ecf20Sopenharmony_ci 1848c2ecf20Sopenharmony_cistruct MBIN_SEGMENT_T { 1858c2ecf20Sopenharmony_ci struct MBIN_SEGMENT_HEADER_T header; 1868c2ecf20Sopenharmony_ci u8 data[1]; 1878c2ecf20Sopenharmony_ci}; 1888c2ecf20Sopenharmony_ci 1898c2ecf20Sopenharmony_cienum MXL_CMD_TYPE_E { MXL_CMD_WRITE = 0, MXL_CMD_READ }; 1908c2ecf20Sopenharmony_ci 1918c2ecf20Sopenharmony_ci#define BUILD_HYDRA_CMD(cmd_id, req_type, size, data_ptr, cmd_buff) \ 1928c2ecf20Sopenharmony_ci do { \ 1938c2ecf20Sopenharmony_ci cmd_buff[0] = ((req_type == MXL_CMD_WRITE) ? MXL_HYDRA_PLID_CMD_WRITE : MXL_HYDRA_PLID_CMD_READ); \ 1948c2ecf20Sopenharmony_ci cmd_buff[1] = (size > 251) ? 0xff : (u8) (size + 4); \ 1958c2ecf20Sopenharmony_ci cmd_buff[2] = size; \ 1968c2ecf20Sopenharmony_ci cmd_buff[3] = cmd_id; \ 1978c2ecf20Sopenharmony_ci cmd_buff[4] = 0x00; \ 1988c2ecf20Sopenharmony_ci cmd_buff[5] = 0x00; \ 1998c2ecf20Sopenharmony_ci convert_endian(MXL_ENABLE_BIG_ENDIAN, size, (u8 *)data_ptr); \ 2008c2ecf20Sopenharmony_ci memcpy((void *)&cmd_buff[6], data_ptr, size); \ 2018c2ecf20Sopenharmony_ci } while (0) 2028c2ecf20Sopenharmony_ci 2038c2ecf20Sopenharmony_cistruct MXL_REG_FIELD_T { 2048c2ecf20Sopenharmony_ci u32 reg_addr; 2058c2ecf20Sopenharmony_ci u8 lsb_pos; 2068c2ecf20Sopenharmony_ci u8 num_of_bits; 2078c2ecf20Sopenharmony_ci}; 2088c2ecf20Sopenharmony_ci 2098c2ecf20Sopenharmony_cistruct MXL_DEV_CMD_DATA_T { 2108c2ecf20Sopenharmony_ci u32 data_size; 2118c2ecf20Sopenharmony_ci u8 data[MAX_CMD_DATA]; 2128c2ecf20Sopenharmony_ci}; 2138c2ecf20Sopenharmony_ci 2148c2ecf20Sopenharmony_cienum MXL_HYDRA_SKU_TYPE_E { 2158c2ecf20Sopenharmony_ci MXL_HYDRA_SKU_TYPE_MIN = 0x00, 2168c2ecf20Sopenharmony_ci MXL_HYDRA_SKU_TYPE_581 = 0x00, 2178c2ecf20Sopenharmony_ci MXL_HYDRA_SKU_TYPE_584 = 0x01, 2188c2ecf20Sopenharmony_ci MXL_HYDRA_SKU_TYPE_585 = 0x02, 2198c2ecf20Sopenharmony_ci MXL_HYDRA_SKU_TYPE_544 = 0x03, 2208c2ecf20Sopenharmony_ci MXL_HYDRA_SKU_TYPE_561 = 0x04, 2218c2ecf20Sopenharmony_ci MXL_HYDRA_SKU_TYPE_5XX = 0x05, 2228c2ecf20Sopenharmony_ci MXL_HYDRA_SKU_TYPE_5YY = 0x06, 2238c2ecf20Sopenharmony_ci MXL_HYDRA_SKU_TYPE_511 = 0x07, 2248c2ecf20Sopenharmony_ci MXL_HYDRA_SKU_TYPE_561_DE = 0x08, 2258c2ecf20Sopenharmony_ci MXL_HYDRA_SKU_TYPE_582 = 0x09, 2268c2ecf20Sopenharmony_ci MXL_HYDRA_SKU_TYPE_541 = 0x0A, 2278c2ecf20Sopenharmony_ci MXL_HYDRA_SKU_TYPE_568 = 0x0B, 2288c2ecf20Sopenharmony_ci MXL_HYDRA_SKU_TYPE_542 = 0x0C, 2298c2ecf20Sopenharmony_ci MXL_HYDRA_SKU_TYPE_MAX = 0x0D, 2308c2ecf20Sopenharmony_ci}; 2318c2ecf20Sopenharmony_ci 2328c2ecf20Sopenharmony_cistruct MXL_HYDRA_SKU_COMMAND_T { 2338c2ecf20Sopenharmony_ci enum MXL_HYDRA_SKU_TYPE_E sku_type; 2348c2ecf20Sopenharmony_ci}; 2358c2ecf20Sopenharmony_ci 2368c2ecf20Sopenharmony_cienum MXL_HYDRA_DEMOD_ID_E { 2378c2ecf20Sopenharmony_ci MXL_HYDRA_DEMOD_ID_0 = 0, 2388c2ecf20Sopenharmony_ci MXL_HYDRA_DEMOD_ID_1, 2398c2ecf20Sopenharmony_ci MXL_HYDRA_DEMOD_ID_2, 2408c2ecf20Sopenharmony_ci MXL_HYDRA_DEMOD_ID_3, 2418c2ecf20Sopenharmony_ci MXL_HYDRA_DEMOD_ID_4, 2428c2ecf20Sopenharmony_ci MXL_HYDRA_DEMOD_ID_5, 2438c2ecf20Sopenharmony_ci MXL_HYDRA_DEMOD_ID_6, 2448c2ecf20Sopenharmony_ci MXL_HYDRA_DEMOD_ID_7, 2458c2ecf20Sopenharmony_ci MXL_HYDRA_DEMOD_MAX 2468c2ecf20Sopenharmony_ci}; 2478c2ecf20Sopenharmony_ci 2488c2ecf20Sopenharmony_ci#define MXL_DEMOD_SCRAMBLE_SEQ_LEN 12 2498c2ecf20Sopenharmony_ci 2508c2ecf20Sopenharmony_ci#define MAX_STEP_SIZE_24_XTAL_102_05_KHZ 195 2518c2ecf20Sopenharmony_ci#define MAX_STEP_SIZE_24_XTAL_204_10_KHZ 215 2528c2ecf20Sopenharmony_ci#define MAX_STEP_SIZE_24_XTAL_306_15_KHZ 203 2538c2ecf20Sopenharmony_ci#define MAX_STEP_SIZE_24_XTAL_408_20_KHZ 177 2548c2ecf20Sopenharmony_ci 2558c2ecf20Sopenharmony_ci#define MAX_STEP_SIZE_27_XTAL_102_05_KHZ 195 2568c2ecf20Sopenharmony_ci#define MAX_STEP_SIZE_27_XTAL_204_10_KHZ 215 2578c2ecf20Sopenharmony_ci#define MAX_STEP_SIZE_27_XTAL_306_15_KHZ 203 2588c2ecf20Sopenharmony_ci#define MAX_STEP_SIZE_27_XTAL_408_20_KHZ 177 2598c2ecf20Sopenharmony_ci 2608c2ecf20Sopenharmony_ci#define MXL_HYDRA_SPECTRUM_MIN_FREQ_KHZ 300000 2618c2ecf20Sopenharmony_ci#define MXL_HYDRA_SPECTRUM_MAX_FREQ_KHZ 2350000 2628c2ecf20Sopenharmony_ci 2638c2ecf20Sopenharmony_cienum MXL_DEMOD_CHAN_PARAMS_OFFSET_E { 2648c2ecf20Sopenharmony_ci DMD_STANDARD_ADDR = 0, 2658c2ecf20Sopenharmony_ci DMD_SPECTRUM_INVERSION_ADDR, 2668c2ecf20Sopenharmony_ci DMD_SPECTRUM_ROLL_OFF_ADDR, 2678c2ecf20Sopenharmony_ci DMD_SYMBOL_RATE_ADDR, 2688c2ecf20Sopenharmony_ci DMD_MODULATION_SCHEME_ADDR, 2698c2ecf20Sopenharmony_ci DMD_FEC_CODE_RATE_ADDR, 2708c2ecf20Sopenharmony_ci DMD_SNR_ADDR, 2718c2ecf20Sopenharmony_ci DMD_FREQ_OFFSET_ADDR, 2728c2ecf20Sopenharmony_ci DMD_CTL_FREQ_OFFSET_ADDR, 2738c2ecf20Sopenharmony_ci DMD_STR_FREQ_OFFSET_ADDR, 2748c2ecf20Sopenharmony_ci DMD_FTL_FREQ_OFFSET_ADDR, 2758c2ecf20Sopenharmony_ci DMD_STR_NBC_SYNC_LOCK_ADDR, 2768c2ecf20Sopenharmony_ci DMD_CYCLE_SLIP_COUNT_ADDR, 2778c2ecf20Sopenharmony_ci DMD_DISPLAY_IQ_ADDR, 2788c2ecf20Sopenharmony_ci DMD_DVBS2_CRC_ERRORS_ADDR, 2798c2ecf20Sopenharmony_ci DMD_DVBS2_PER_COUNT_ADDR, 2808c2ecf20Sopenharmony_ci DMD_DVBS2_PER_WINDOW_ADDR, 2818c2ecf20Sopenharmony_ci DMD_DVBS_CORR_RS_ERRORS_ADDR, 2828c2ecf20Sopenharmony_ci DMD_DVBS_UNCORR_RS_ERRORS_ADDR, 2838c2ecf20Sopenharmony_ci DMD_DVBS_BER_COUNT_ADDR, 2848c2ecf20Sopenharmony_ci DMD_DVBS_BER_WINDOW_ADDR, 2858c2ecf20Sopenharmony_ci DMD_TUNER_ID_ADDR, 2868c2ecf20Sopenharmony_ci DMD_DVBS2_PILOT_ON_OFF_ADDR, 2878c2ecf20Sopenharmony_ci DMD_FREQ_SEARCH_RANGE_IN_KHZ_ADDR, 2888c2ecf20Sopenharmony_ci 2898c2ecf20Sopenharmony_ci MXL_DEMOD_CHAN_PARAMS_BUFF_SIZE, 2908c2ecf20Sopenharmony_ci}; 2918c2ecf20Sopenharmony_ci 2928c2ecf20Sopenharmony_cienum MXL_HYDRA_TUNER_ID_E { 2938c2ecf20Sopenharmony_ci MXL_HYDRA_TUNER_ID_0 = 0, 2948c2ecf20Sopenharmony_ci MXL_HYDRA_TUNER_ID_1, 2958c2ecf20Sopenharmony_ci MXL_HYDRA_TUNER_ID_2, 2968c2ecf20Sopenharmony_ci MXL_HYDRA_TUNER_ID_3, 2978c2ecf20Sopenharmony_ci MXL_HYDRA_TUNER_MAX 2988c2ecf20Sopenharmony_ci}; 2998c2ecf20Sopenharmony_ci 3008c2ecf20Sopenharmony_cienum MXL_HYDRA_BCAST_STD_E { 3018c2ecf20Sopenharmony_ci MXL_HYDRA_DSS = 0, 3028c2ecf20Sopenharmony_ci MXL_HYDRA_DVBS, 3038c2ecf20Sopenharmony_ci MXL_HYDRA_DVBS2, 3048c2ecf20Sopenharmony_ci}; 3058c2ecf20Sopenharmony_ci 3068c2ecf20Sopenharmony_cienum MXL_HYDRA_FEC_E { 3078c2ecf20Sopenharmony_ci MXL_HYDRA_FEC_AUTO = 0, 3088c2ecf20Sopenharmony_ci MXL_HYDRA_FEC_1_2, 3098c2ecf20Sopenharmony_ci MXL_HYDRA_FEC_3_5, 3108c2ecf20Sopenharmony_ci MXL_HYDRA_FEC_2_3, 3118c2ecf20Sopenharmony_ci MXL_HYDRA_FEC_3_4, 3128c2ecf20Sopenharmony_ci MXL_HYDRA_FEC_4_5, 3138c2ecf20Sopenharmony_ci MXL_HYDRA_FEC_5_6, 3148c2ecf20Sopenharmony_ci MXL_HYDRA_FEC_6_7, 3158c2ecf20Sopenharmony_ci MXL_HYDRA_FEC_7_8, 3168c2ecf20Sopenharmony_ci MXL_HYDRA_FEC_8_9, 3178c2ecf20Sopenharmony_ci MXL_HYDRA_FEC_9_10, 3188c2ecf20Sopenharmony_ci}; 3198c2ecf20Sopenharmony_ci 3208c2ecf20Sopenharmony_cienum MXL_HYDRA_MODULATION_E { 3218c2ecf20Sopenharmony_ci MXL_HYDRA_MOD_AUTO = 0, 3228c2ecf20Sopenharmony_ci MXL_HYDRA_MOD_QPSK, 3238c2ecf20Sopenharmony_ci MXL_HYDRA_MOD_8PSK 3248c2ecf20Sopenharmony_ci}; 3258c2ecf20Sopenharmony_ci 3268c2ecf20Sopenharmony_cienum MXL_HYDRA_SPECTRUM_E { 3278c2ecf20Sopenharmony_ci MXL_HYDRA_SPECTRUM_AUTO = 0, 3288c2ecf20Sopenharmony_ci MXL_HYDRA_SPECTRUM_INVERTED, 3298c2ecf20Sopenharmony_ci MXL_HYDRA_SPECTRUM_NON_INVERTED, 3308c2ecf20Sopenharmony_ci}; 3318c2ecf20Sopenharmony_ci 3328c2ecf20Sopenharmony_cienum MXL_HYDRA_ROLLOFF_E { 3338c2ecf20Sopenharmony_ci MXL_HYDRA_ROLLOFF_AUTO = 0, 3348c2ecf20Sopenharmony_ci MXL_HYDRA_ROLLOFF_0_20, 3358c2ecf20Sopenharmony_ci MXL_HYDRA_ROLLOFF_0_25, 3368c2ecf20Sopenharmony_ci MXL_HYDRA_ROLLOFF_0_35 3378c2ecf20Sopenharmony_ci}; 3388c2ecf20Sopenharmony_ci 3398c2ecf20Sopenharmony_cienum MXL_HYDRA_PILOTS_E { 3408c2ecf20Sopenharmony_ci MXL_HYDRA_PILOTS_OFF = 0, 3418c2ecf20Sopenharmony_ci MXL_HYDRA_PILOTS_ON, 3428c2ecf20Sopenharmony_ci MXL_HYDRA_PILOTS_AUTO 3438c2ecf20Sopenharmony_ci}; 3448c2ecf20Sopenharmony_ci 3458c2ecf20Sopenharmony_cienum MXL_HYDRA_CONSTELLATION_SRC_E { 3468c2ecf20Sopenharmony_ci MXL_HYDRA_FORMATTER = 0, 3478c2ecf20Sopenharmony_ci MXL_HYDRA_LEGACY_FEC, 3488c2ecf20Sopenharmony_ci MXL_HYDRA_FREQ_RECOVERY, 3498c2ecf20Sopenharmony_ci MXL_HYDRA_NBC, 3508c2ecf20Sopenharmony_ci MXL_HYDRA_CTL, 3518c2ecf20Sopenharmony_ci MXL_HYDRA_EQ, 3528c2ecf20Sopenharmony_ci}; 3538c2ecf20Sopenharmony_ci 3548c2ecf20Sopenharmony_cistruct MXL_HYDRA_DEMOD_LOCK_T { 3558c2ecf20Sopenharmony_ci int agc_lock; /* AGC lock info */ 3568c2ecf20Sopenharmony_ci int fec_lock; /* Demod FEC block lock info */ 3578c2ecf20Sopenharmony_ci}; 3588c2ecf20Sopenharmony_ci 3598c2ecf20Sopenharmony_cistruct MXL_HYDRA_DEMOD_STATUS_DVBS_T { 3608c2ecf20Sopenharmony_ci u32 rs_errors; /* RS decoder err counter */ 3618c2ecf20Sopenharmony_ci u32 ber_window; /* Ber Windows */ 3628c2ecf20Sopenharmony_ci u32 ber_count; /* BER count */ 3638c2ecf20Sopenharmony_ci u32 ber_window_iter1; /* Ber Windows - post viterbi */ 3648c2ecf20Sopenharmony_ci u32 ber_count_iter1; /* BER count - post viterbi */ 3658c2ecf20Sopenharmony_ci}; 3668c2ecf20Sopenharmony_ci 3678c2ecf20Sopenharmony_cistruct MXL_HYDRA_DEMOD_STATUS_DSS_T { 3688c2ecf20Sopenharmony_ci u32 rs_errors; /* RS decoder err counter */ 3698c2ecf20Sopenharmony_ci u32 ber_window; /* Ber Windows */ 3708c2ecf20Sopenharmony_ci u32 ber_count; /* BER count */ 3718c2ecf20Sopenharmony_ci}; 3728c2ecf20Sopenharmony_ci 3738c2ecf20Sopenharmony_cistruct MXL_HYDRA_DEMOD_STATUS_DVBS2_T { 3748c2ecf20Sopenharmony_ci u32 crc_errors; /* CRC error counter */ 3758c2ecf20Sopenharmony_ci u32 packet_error_count; /* Number of packet errors */ 3768c2ecf20Sopenharmony_ci u32 total_packets; /* Total packets */ 3778c2ecf20Sopenharmony_ci}; 3788c2ecf20Sopenharmony_ci 3798c2ecf20Sopenharmony_cistruct MXL_HYDRA_DEMOD_STATUS_T { 3808c2ecf20Sopenharmony_ci enum MXL_HYDRA_BCAST_STD_E standard_mask; /* Standard DVB-S, DVB-S2 or DSS */ 3818c2ecf20Sopenharmony_ci 3828c2ecf20Sopenharmony_ci union { 3838c2ecf20Sopenharmony_ci struct MXL_HYDRA_DEMOD_STATUS_DVBS_T demod_status_dvbs; /* DVB-S demod status */ 3848c2ecf20Sopenharmony_ci struct MXL_HYDRA_DEMOD_STATUS_DVBS2_T demod_status_dvbs2; /* DVB-S2 demod status */ 3858c2ecf20Sopenharmony_ci struct MXL_HYDRA_DEMOD_STATUS_DSS_T demod_status_dss; /* DSS demod status */ 3868c2ecf20Sopenharmony_ci } u; 3878c2ecf20Sopenharmony_ci}; 3888c2ecf20Sopenharmony_ci 3898c2ecf20Sopenharmony_cistruct MXL_HYDRA_DEMOD_SIG_OFFSET_INFO_T { 3908c2ecf20Sopenharmony_ci s32 carrier_offset_in_hz; /* CRL offset info */ 3918c2ecf20Sopenharmony_ci s32 symbol_offset_in_symbol; /* SRL offset info */ 3928c2ecf20Sopenharmony_ci}; 3938c2ecf20Sopenharmony_ci 3948c2ecf20Sopenharmony_cistruct MXL_HYDRA_DEMOD_SCRAMBLE_INFO_T { 3958c2ecf20Sopenharmony_ci u8 scramble_sequence[MXL_DEMOD_SCRAMBLE_SEQ_LEN]; /* scramble sequence */ 3968c2ecf20Sopenharmony_ci u32 scramble_code; /* scramble gold code */ 3978c2ecf20Sopenharmony_ci}; 3988c2ecf20Sopenharmony_ci 3998c2ecf20Sopenharmony_cienum MXL_HYDRA_SPECTRUM_STEP_SIZE_E { 4008c2ecf20Sopenharmony_ci MXL_HYDRA_STEP_SIZE_24_XTAL_102_05KHZ, /* 102.05 KHz for 24 MHz XTAL */ 4018c2ecf20Sopenharmony_ci MXL_HYDRA_STEP_SIZE_24_XTAL_204_10KHZ, /* 204.10 KHz for 24 MHz XTAL */ 4028c2ecf20Sopenharmony_ci MXL_HYDRA_STEP_SIZE_24_XTAL_306_15KHZ, /* 306.15 KHz for 24 MHz XTAL */ 4038c2ecf20Sopenharmony_ci MXL_HYDRA_STEP_SIZE_24_XTAL_408_20KHZ, /* 408.20 KHz for 24 MHz XTAL */ 4048c2ecf20Sopenharmony_ci 4058c2ecf20Sopenharmony_ci MXL_HYDRA_STEP_SIZE_27_XTAL_102_05KHZ, /* 102.05 KHz for 27 MHz XTAL */ 4068c2ecf20Sopenharmony_ci MXL_HYDRA_STEP_SIZE_27_XTAL_204_35KHZ, /* 204.35 KHz for 27 MHz XTAL */ 4078c2ecf20Sopenharmony_ci MXL_HYDRA_STEP_SIZE_27_XTAL_306_52KHZ, /* 306.52 KHz for 27 MHz XTAL */ 4088c2ecf20Sopenharmony_ci MXL_HYDRA_STEP_SIZE_27_XTAL_408_69KHZ, /* 408.69 KHz for 27 MHz XTAL */ 4098c2ecf20Sopenharmony_ci}; 4108c2ecf20Sopenharmony_ci 4118c2ecf20Sopenharmony_cienum MXL_HYDRA_SPECTRUM_RESOLUTION_E { 4128c2ecf20Sopenharmony_ci MXL_HYDRA_SPECTRUM_RESOLUTION_00_1_DB, /* 0.1 dB */ 4138c2ecf20Sopenharmony_ci MXL_HYDRA_SPECTRUM_RESOLUTION_01_0_DB, /* 1.0 dB */ 4148c2ecf20Sopenharmony_ci MXL_HYDRA_SPECTRUM_RESOLUTION_05_0_DB, /* 5.0 dB */ 4158c2ecf20Sopenharmony_ci MXL_HYDRA_SPECTRUM_RESOLUTION_10_0_DB, /* 10 dB */ 4168c2ecf20Sopenharmony_ci}; 4178c2ecf20Sopenharmony_ci 4188c2ecf20Sopenharmony_cienum MXL_HYDRA_SPECTRUM_ERROR_CODE_E { 4198c2ecf20Sopenharmony_ci MXL_SPECTRUM_NO_ERROR, 4208c2ecf20Sopenharmony_ci MXL_SPECTRUM_INVALID_PARAMETER, 4218c2ecf20Sopenharmony_ci MXL_SPECTRUM_INVALID_STEP_SIZE, 4228c2ecf20Sopenharmony_ci MXL_SPECTRUM_BW_CANNOT_BE_COVERED, 4238c2ecf20Sopenharmony_ci MXL_SPECTRUM_DEMOD_BUSY, 4248c2ecf20Sopenharmony_ci MXL_SPECTRUM_TUNER_NOT_ENABLED, 4258c2ecf20Sopenharmony_ci}; 4268c2ecf20Sopenharmony_ci 4278c2ecf20Sopenharmony_cistruct MXL_HYDRA_SPECTRUM_REQ_T { 4288c2ecf20Sopenharmony_ci u32 tuner_index; /* TUNER Ctrl: one of MXL58x_TUNER_ID_E */ 4298c2ecf20Sopenharmony_ci u32 demod_index; /* DEMOD Ctrl: one of MXL58x_DEMOD_ID_E */ 4308c2ecf20Sopenharmony_ci enum MXL_HYDRA_SPECTRUM_STEP_SIZE_E step_size_in_khz; 4318c2ecf20Sopenharmony_ci u32 starting_freq_ink_hz; 4328c2ecf20Sopenharmony_ci u32 total_steps; 4338c2ecf20Sopenharmony_ci enum MXL_HYDRA_SPECTRUM_RESOLUTION_E spectrum_division; 4348c2ecf20Sopenharmony_ci}; 4358c2ecf20Sopenharmony_ci 4368c2ecf20Sopenharmony_cienum MXL_HYDRA_SEARCH_FREQ_OFFSET_TYPE_E { 4378c2ecf20Sopenharmony_ci MXL_HYDRA_SEARCH_MAX_OFFSET = 0, /* DMD searches for max freq offset (i.e. 5MHz) */ 4388c2ecf20Sopenharmony_ci MXL_HYDRA_SEARCH_BW_PLUS_ROLLOFF, /* DMD searches for BW + ROLLOFF/2 */ 4398c2ecf20Sopenharmony_ci}; 4408c2ecf20Sopenharmony_ci 4418c2ecf20Sopenharmony_cistruct MXL58X_CFG_FREQ_OFF_SEARCH_RANGE_T { 4428c2ecf20Sopenharmony_ci u32 demod_index; 4438c2ecf20Sopenharmony_ci enum MXL_HYDRA_SEARCH_FREQ_OFFSET_TYPE_E search_type; 4448c2ecf20Sopenharmony_ci}; 4458c2ecf20Sopenharmony_ci 4468c2ecf20Sopenharmony_ci/* there are two slices 4478c2ecf20Sopenharmony_ci * slice0 - TS0, TS1, TS2 & TS3 4488c2ecf20Sopenharmony_ci * slice1 - TS4, TS5, TS6 & TS7 4498c2ecf20Sopenharmony_ci */ 4508c2ecf20Sopenharmony_ci#define MXL_HYDRA_TS_SLICE_MAX 2 4518c2ecf20Sopenharmony_ci 4528c2ecf20Sopenharmony_ci#define MAX_FIXED_PID_NUM 32 4538c2ecf20Sopenharmony_ci 4548c2ecf20Sopenharmony_ci#define MXL_HYDRA_NCO_CLK 418 /* 418 MHz */ 4558c2ecf20Sopenharmony_ci 4568c2ecf20Sopenharmony_ci#define MXL_HYDRA_MAX_TS_CLOCK 139 /* 139 MHz */ 4578c2ecf20Sopenharmony_ci 4588c2ecf20Sopenharmony_ci#define MXL_HYDRA_TS_FIXED_PID_FILT_SIZE 32 4598c2ecf20Sopenharmony_ci 4608c2ecf20Sopenharmony_ci#define MXL_HYDRA_SHARED_PID_FILT_SIZE_DEFAULT 33 /* Shared PID filter size in 1-1 mux mode */ 4618c2ecf20Sopenharmony_ci#define MXL_HYDRA_SHARED_PID_FILT_SIZE_2_TO_1 66 /* Shared PID filter size in 2-1 mux mode */ 4628c2ecf20Sopenharmony_ci#define MXL_HYDRA_SHARED_PID_FILT_SIZE_4_TO_1 132 /* Shared PID filter size in 4-1 mux mode */ 4638c2ecf20Sopenharmony_ci 4648c2ecf20Sopenharmony_cienum MXL_HYDRA_PID_BANK_TYPE_E { 4658c2ecf20Sopenharmony_ci MXL_HYDRA_SOFTWARE_PID_BANK = 0, 4668c2ecf20Sopenharmony_ci MXL_HYDRA_HARDWARE_PID_BANK, 4678c2ecf20Sopenharmony_ci}; 4688c2ecf20Sopenharmony_ci 4698c2ecf20Sopenharmony_cienum MXL_HYDRA_TS_MUX_MODE_E { 4708c2ecf20Sopenharmony_ci MXL_HYDRA_TS_MUX_PID_REMAP = 0, 4718c2ecf20Sopenharmony_ci MXL_HYDRA_TS_MUX_PREFIX_EXTRA_HEADER = 1, 4728c2ecf20Sopenharmony_ci}; 4738c2ecf20Sopenharmony_ci 4748c2ecf20Sopenharmony_cienum MXL_HYDRA_TS_MUX_TYPE_E { 4758c2ecf20Sopenharmony_ci MXL_HYDRA_TS_MUX_DISABLE = 0, /* No Mux ( 1 TSIF to 1 TSIF) */ 4768c2ecf20Sopenharmony_ci MXL_HYDRA_TS_MUX_2_TO_1, /* Mux 2 TSIF to 1 TSIF */ 4778c2ecf20Sopenharmony_ci MXL_HYDRA_TS_MUX_4_TO_1, /* Mux 4 TSIF to 1 TSIF */ 4788c2ecf20Sopenharmony_ci}; 4798c2ecf20Sopenharmony_ci 4808c2ecf20Sopenharmony_cienum MXL_HYDRA_TS_GROUP_E { 4818c2ecf20Sopenharmony_ci MXL_HYDRA_TS_GROUP_0_3 = 0, /* TS group 0 to 3 (TS0, TS1, TS2 & TS3) */ 4828c2ecf20Sopenharmony_ci MXL_HYDRA_TS_GROUP_4_7, /* TS group 0 to 3 (TS4, TS5, TS6 & TS7) */ 4838c2ecf20Sopenharmony_ci}; 4848c2ecf20Sopenharmony_ci 4858c2ecf20Sopenharmony_cienum MXL_HYDRA_TS_PID_FLT_CTRL_E { 4868c2ecf20Sopenharmony_ci MXL_HYDRA_TS_PIDS_ALLOW_ALL = 0, /* Allow all pids */ 4878c2ecf20Sopenharmony_ci MXL_HYDRA_TS_PIDS_DROP_ALL, /* Drop all pids */ 4888c2ecf20Sopenharmony_ci MXL_HYDRA_TS_INVALIDATE_PID_FILTER, /* Delete current PD filter in the device */ 4898c2ecf20Sopenharmony_ci}; 4908c2ecf20Sopenharmony_ci 4918c2ecf20Sopenharmony_cienum MXL_HYDRA_TS_PID_TYPE_E { 4928c2ecf20Sopenharmony_ci MXL_HYDRA_TS_PID_FIXED = 0, 4938c2ecf20Sopenharmony_ci MXL_HYDRA_TS_PID_REGULAR, 4948c2ecf20Sopenharmony_ci}; 4958c2ecf20Sopenharmony_ci 4968c2ecf20Sopenharmony_cistruct MXL_HYDRA_TS_PID_T { 4978c2ecf20Sopenharmony_ci u16 original_pid; /* pid from TS */ 4988c2ecf20Sopenharmony_ci u16 remapped_pid; /* remapped pid */ 4998c2ecf20Sopenharmony_ci enum MXL_BOOL_E enable; /* enable or disable pid */ 5008c2ecf20Sopenharmony_ci enum MXL_BOOL_E allow_or_drop; /* allow or drop pid */ 5018c2ecf20Sopenharmony_ci enum MXL_BOOL_E enable_pid_remap; /* enable or disable pid remap */ 5028c2ecf20Sopenharmony_ci u8 bond_id; /* Bond ID in A0 always 0 - Only for 568 Sku */ 5038c2ecf20Sopenharmony_ci u8 dest_id; /* Output port ID for the PID - Only for 568 Sku */ 5048c2ecf20Sopenharmony_ci}; 5058c2ecf20Sopenharmony_ci 5068c2ecf20Sopenharmony_cistruct MXL_HYDRA_TS_MUX_PREFIX_HEADER_T { 5078c2ecf20Sopenharmony_ci enum MXL_BOOL_E enable; 5088c2ecf20Sopenharmony_ci u8 num_byte; 5098c2ecf20Sopenharmony_ci u8 header[12]; 5108c2ecf20Sopenharmony_ci}; 5118c2ecf20Sopenharmony_ci 5128c2ecf20Sopenharmony_cienum MXL_HYDRA_PID_FILTER_BANK_E { 5138c2ecf20Sopenharmony_ci MXL_HYDRA_PID_BANK_A = 0, 5148c2ecf20Sopenharmony_ci MXL_HYDRA_PID_BANK_B, 5158c2ecf20Sopenharmony_ci}; 5168c2ecf20Sopenharmony_ci 5178c2ecf20Sopenharmony_cienum MXL_HYDRA_MPEG_DATA_FMT_E { 5188c2ecf20Sopenharmony_ci MXL_HYDRA_MPEG_SERIAL_MSB_1ST = 0, 5198c2ecf20Sopenharmony_ci MXL_HYDRA_MPEG_SERIAL_LSB_1ST, 5208c2ecf20Sopenharmony_ci 5218c2ecf20Sopenharmony_ci MXL_HYDRA_MPEG_SYNC_WIDTH_BIT = 0, 5228c2ecf20Sopenharmony_ci MXL_HYDRA_MPEG_SYNC_WIDTH_BYTE 5238c2ecf20Sopenharmony_ci}; 5248c2ecf20Sopenharmony_ci 5258c2ecf20Sopenharmony_cienum MXL_HYDRA_MPEG_MODE_E { 5268c2ecf20Sopenharmony_ci MXL_HYDRA_MPEG_MODE_SERIAL_4_WIRE = 0, /* MPEG 4 Wire serial mode */ 5278c2ecf20Sopenharmony_ci MXL_HYDRA_MPEG_MODE_SERIAL_3_WIRE, /* MPEG 3 Wire serial mode */ 5288c2ecf20Sopenharmony_ci MXL_HYDRA_MPEG_MODE_SERIAL_2_WIRE, /* MPEG 2 Wire serial mode */ 5298c2ecf20Sopenharmony_ci MXL_HYDRA_MPEG_MODE_PARALLEL /* MPEG parallel mode - valid only for MxL581 */ 5308c2ecf20Sopenharmony_ci}; 5318c2ecf20Sopenharmony_ci 5328c2ecf20Sopenharmony_cienum MXL_HYDRA_MPEG_CLK_TYPE_E { 5338c2ecf20Sopenharmony_ci MXL_HYDRA_MPEG_CLK_CONTINUOUS = 0, /* Continuous MPEG clock */ 5348c2ecf20Sopenharmony_ci MXL_HYDRA_MPEG_CLK_GAPPED, /* Gapped (gated) MPEG clock */ 5358c2ecf20Sopenharmony_ci}; 5368c2ecf20Sopenharmony_ci 5378c2ecf20Sopenharmony_cienum MXL_HYDRA_MPEG_CLK_FMT_E { 5388c2ecf20Sopenharmony_ci MXL_HYDRA_MPEG_ACTIVE_LOW = 0, 5398c2ecf20Sopenharmony_ci MXL_HYDRA_MPEG_ACTIVE_HIGH, 5408c2ecf20Sopenharmony_ci 5418c2ecf20Sopenharmony_ci MXL_HYDRA_MPEG_CLK_NEGATIVE = 0, 5428c2ecf20Sopenharmony_ci MXL_HYDRA_MPEG_CLK_POSITIVE, 5438c2ecf20Sopenharmony_ci 5448c2ecf20Sopenharmony_ci MXL_HYDRA_MPEG_CLK_IN_PHASE = 0, 5458c2ecf20Sopenharmony_ci MXL_HYDRA_MPEG_CLK_INVERTED, 5468c2ecf20Sopenharmony_ci}; 5478c2ecf20Sopenharmony_ci 5488c2ecf20Sopenharmony_cienum MXL_HYDRA_MPEG_CLK_PHASE_E { 5498c2ecf20Sopenharmony_ci MXL_HYDRA_MPEG_CLK_PHASE_SHIFT_0_DEG = 0, 5508c2ecf20Sopenharmony_ci MXL_HYDRA_MPEG_CLK_PHASE_SHIFT_90_DEG, 5518c2ecf20Sopenharmony_ci MXL_HYDRA_MPEG_CLK_PHASE_SHIFT_180_DEG, 5528c2ecf20Sopenharmony_ci MXL_HYDRA_MPEG_CLK_PHASE_SHIFT_270_DEG 5538c2ecf20Sopenharmony_ci}; 5548c2ecf20Sopenharmony_ci 5558c2ecf20Sopenharmony_cienum MXL_HYDRA_MPEG_ERR_INDICATION_E { 5568c2ecf20Sopenharmony_ci MXL_HYDRA_MPEG_ERR_REPLACE_SYNC = 0, 5578c2ecf20Sopenharmony_ci MXL_HYDRA_MPEG_ERR_REPLACE_VALID, 5588c2ecf20Sopenharmony_ci MXL_HYDRA_MPEG_ERR_INDICATION_DISABLED 5598c2ecf20Sopenharmony_ci}; 5608c2ecf20Sopenharmony_ci 5618c2ecf20Sopenharmony_cistruct MXL_HYDRA_MPEGOUT_PARAM_T { 5628c2ecf20Sopenharmony_ci int enable; /* Enable or Disable MPEG OUT */ 5638c2ecf20Sopenharmony_ci enum MXL_HYDRA_MPEG_CLK_TYPE_E mpeg_clk_type; /* Continuous or gapped */ 5648c2ecf20Sopenharmony_ci enum MXL_HYDRA_MPEG_CLK_FMT_E mpeg_clk_pol; /* MPEG Clk polarity */ 5658c2ecf20Sopenharmony_ci u8 max_mpeg_clk_rate; /* Max MPEG Clk rate (0 - 104 MHz, 139 MHz) */ 5668c2ecf20Sopenharmony_ci enum MXL_HYDRA_MPEG_CLK_PHASE_E mpeg_clk_phase; /* MPEG Clk phase */ 5678c2ecf20Sopenharmony_ci enum MXL_HYDRA_MPEG_DATA_FMT_E lsb_or_msb_first; /* LSB first or MSB first in TS transmission */ 5688c2ecf20Sopenharmony_ci enum MXL_HYDRA_MPEG_DATA_FMT_E mpeg_sync_pulse_width; /* MPEG SYNC pulse width (1-bit or 1-byte) */ 5698c2ecf20Sopenharmony_ci enum MXL_HYDRA_MPEG_CLK_FMT_E mpeg_valid_pol; /* MPEG VALID polarity */ 5708c2ecf20Sopenharmony_ci enum MXL_HYDRA_MPEG_CLK_FMT_E mpeg_sync_pol; /* MPEG SYNC polarity */ 5718c2ecf20Sopenharmony_ci enum MXL_HYDRA_MPEG_MODE_E mpeg_mode; /* config 4/3/2-wire serial or parallel TS out */ 5728c2ecf20Sopenharmony_ci enum MXL_HYDRA_MPEG_ERR_INDICATION_E mpeg_error_indication; /* Enable or Disable MPEG error indication */ 5738c2ecf20Sopenharmony_ci}; 5748c2ecf20Sopenharmony_ci 5758c2ecf20Sopenharmony_cienum MXL_HYDRA_EXT_TS_IN_ID_E { 5768c2ecf20Sopenharmony_ci MXL_HYDRA_EXT_TS_IN_0 = 0, 5778c2ecf20Sopenharmony_ci MXL_HYDRA_EXT_TS_IN_1, 5788c2ecf20Sopenharmony_ci MXL_HYDRA_EXT_TS_IN_2, 5798c2ecf20Sopenharmony_ci MXL_HYDRA_EXT_TS_IN_3, 5808c2ecf20Sopenharmony_ci MXL_HYDRA_EXT_TS_IN_MAX 5818c2ecf20Sopenharmony_ci}; 5828c2ecf20Sopenharmony_ci 5838c2ecf20Sopenharmony_cienum MXL_HYDRA_TS_OUT_ID_E { 5848c2ecf20Sopenharmony_ci MXL_HYDRA_TS_OUT_0 = 0, 5858c2ecf20Sopenharmony_ci MXL_HYDRA_TS_OUT_1, 5868c2ecf20Sopenharmony_ci MXL_HYDRA_TS_OUT_2, 5878c2ecf20Sopenharmony_ci MXL_HYDRA_TS_OUT_3, 5888c2ecf20Sopenharmony_ci MXL_HYDRA_TS_OUT_4, 5898c2ecf20Sopenharmony_ci MXL_HYDRA_TS_OUT_5, 5908c2ecf20Sopenharmony_ci MXL_HYDRA_TS_OUT_6, 5918c2ecf20Sopenharmony_ci MXL_HYDRA_TS_OUT_7, 5928c2ecf20Sopenharmony_ci MXL_HYDRA_TS_OUT_MAX 5938c2ecf20Sopenharmony_ci}; 5948c2ecf20Sopenharmony_ci 5958c2ecf20Sopenharmony_cienum MXL_HYDRA_TS_DRIVE_STRENGTH_E { 5968c2ecf20Sopenharmony_ci MXL_HYDRA_TS_DRIVE_STRENGTH_1X = 0, 5978c2ecf20Sopenharmony_ci MXL_HYDRA_TS_DRIVE_STRENGTH_2X, 5988c2ecf20Sopenharmony_ci MXL_HYDRA_TS_DRIVE_STRENGTH_3X, 5998c2ecf20Sopenharmony_ci MXL_HYDRA_TS_DRIVE_STRENGTH_4X, 6008c2ecf20Sopenharmony_ci MXL_HYDRA_TS_DRIVE_STRENGTH_5X, 6018c2ecf20Sopenharmony_ci MXL_HYDRA_TS_DRIVE_STRENGTH_6X, 6028c2ecf20Sopenharmony_ci MXL_HYDRA_TS_DRIVE_STRENGTH_7X, 6038c2ecf20Sopenharmony_ci MXL_HYDRA_TS_DRIVE_STRENGTH_8X 6048c2ecf20Sopenharmony_ci}; 6058c2ecf20Sopenharmony_ci 6068c2ecf20Sopenharmony_cienum MXL_HYDRA_DEVICE_E { 6078c2ecf20Sopenharmony_ci MXL_HYDRA_DEVICE_581 = 0, 6088c2ecf20Sopenharmony_ci MXL_HYDRA_DEVICE_584, 6098c2ecf20Sopenharmony_ci MXL_HYDRA_DEVICE_585, 6108c2ecf20Sopenharmony_ci MXL_HYDRA_DEVICE_544, 6118c2ecf20Sopenharmony_ci MXL_HYDRA_DEVICE_561, 6128c2ecf20Sopenharmony_ci MXL_HYDRA_DEVICE_TEST, 6138c2ecf20Sopenharmony_ci MXL_HYDRA_DEVICE_582, 6148c2ecf20Sopenharmony_ci MXL_HYDRA_DEVICE_541, 6158c2ecf20Sopenharmony_ci MXL_HYDRA_DEVICE_568, 6168c2ecf20Sopenharmony_ci MXL_HYDRA_DEVICE_542, 6178c2ecf20Sopenharmony_ci MXL_HYDRA_DEVICE_541S, 6188c2ecf20Sopenharmony_ci MXL_HYDRA_DEVICE_561S, 6198c2ecf20Sopenharmony_ci MXL_HYDRA_DEVICE_581S, 6208c2ecf20Sopenharmony_ci MXL_HYDRA_DEVICE_MAX 6218c2ecf20Sopenharmony_ci}; 6228c2ecf20Sopenharmony_ci 6238c2ecf20Sopenharmony_ci/* Demod IQ data */ 6248c2ecf20Sopenharmony_cistruct MXL_HYDRA_DEMOD_IQ_SRC_T { 6258c2ecf20Sopenharmony_ci u32 demod_id; 6268c2ecf20Sopenharmony_ci u32 source_of_iq; /* == 0, it means I/Q comes from Formatter 6278c2ecf20Sopenharmony_ci * == 1, Legacy FEC 6288c2ecf20Sopenharmony_ci * == 2, Frequency Recovery 6298c2ecf20Sopenharmony_ci * == 3, NBC 6308c2ecf20Sopenharmony_ci * == 4, CTL 6318c2ecf20Sopenharmony_ci * == 5, EQ 6328c2ecf20Sopenharmony_ci * == 6, FPGA 6338c2ecf20Sopenharmony_ci */ 6348c2ecf20Sopenharmony_ci}; 6358c2ecf20Sopenharmony_ci 6368c2ecf20Sopenharmony_cistruct MXL_HYDRA_DEMOD_ABORT_TUNE_T { 6378c2ecf20Sopenharmony_ci u32 demod_id; 6388c2ecf20Sopenharmony_ci}; 6398c2ecf20Sopenharmony_ci 6408c2ecf20Sopenharmony_cistruct MXL_HYDRA_TUNER_CMD { 6418c2ecf20Sopenharmony_ci u8 tuner_id; 6428c2ecf20Sopenharmony_ci u8 enable; 6438c2ecf20Sopenharmony_ci}; 6448c2ecf20Sopenharmony_ci 6458c2ecf20Sopenharmony_ci/* Demod Para for Channel Tune */ 6468c2ecf20Sopenharmony_cistruct MXL_HYDRA_DEMOD_PARAM_T { 6478c2ecf20Sopenharmony_ci u32 tuner_index; 6488c2ecf20Sopenharmony_ci u32 demod_index; 6498c2ecf20Sopenharmony_ci u32 frequency_in_hz; /* Frequency */ 6508c2ecf20Sopenharmony_ci u32 standard; /* one of MXL_HYDRA_BCAST_STD_E */ 6518c2ecf20Sopenharmony_ci u32 spectrum_inversion; /* Input : Spectrum inversion. */ 6528c2ecf20Sopenharmony_ci u32 roll_off; /* rollOff (alpha) factor */ 6538c2ecf20Sopenharmony_ci u32 symbol_rate_in_hz; /* Symbol rate */ 6548c2ecf20Sopenharmony_ci u32 pilots; /* TRUE = pilots enabled */ 6558c2ecf20Sopenharmony_ci u32 modulation_scheme; /* Input : Modulation Scheme is one of MXL_HYDRA_MODULATION_E */ 6568c2ecf20Sopenharmony_ci u32 fec_code_rate; /* Input : Forward error correction rate. Is one of MXL_HYDRA_FEC_E */ 6578c2ecf20Sopenharmony_ci u32 max_carrier_offset_in_mhz; /* Maximum carrier freq offset in MHz. Same as freqSearchRangeKHz, but in unit of MHz. */ 6588c2ecf20Sopenharmony_ci}; 6598c2ecf20Sopenharmony_ci 6608c2ecf20Sopenharmony_cistruct MXL_HYDRA_DEMOD_SCRAMBLE_CODE_T { 6618c2ecf20Sopenharmony_ci u32 demod_index; 6628c2ecf20Sopenharmony_ci u8 scramble_sequence[12]; /* scramble sequence */ 6638c2ecf20Sopenharmony_ci u32 scramble_code; /* scramble gold code */ 6648c2ecf20Sopenharmony_ci}; 6658c2ecf20Sopenharmony_ci 6668c2ecf20Sopenharmony_cistruct MXL_INTR_CFG_T { 6678c2ecf20Sopenharmony_ci u32 intr_type; 6688c2ecf20Sopenharmony_ci u32 intr_duration_in_nano_secs; 6698c2ecf20Sopenharmony_ci u32 intr_mask; 6708c2ecf20Sopenharmony_ci}; 6718c2ecf20Sopenharmony_ci 6728c2ecf20Sopenharmony_cistruct MXL_HYDRA_POWER_MODE_CMD { 6738c2ecf20Sopenharmony_ci u8 power_mode; /* enumeration values are defined in MXL_HYDRA_PWR_MODE_E (device API.h) */ 6748c2ecf20Sopenharmony_ci}; 6758c2ecf20Sopenharmony_ci 6768c2ecf20Sopenharmony_cistruct MXL_HYDRA_RF_WAKEUP_PARAM_T { 6778c2ecf20Sopenharmony_ci u32 time_interval_in_seconds; /* in seconds */ 6788c2ecf20Sopenharmony_ci u32 tuner_index; 6798c2ecf20Sopenharmony_ci s32 rssi_threshold; 6808c2ecf20Sopenharmony_ci}; 6818c2ecf20Sopenharmony_ci 6828c2ecf20Sopenharmony_cistruct MXL_HYDRA_RF_WAKEUP_CFG_T { 6838c2ecf20Sopenharmony_ci u32 tuner_count; 6848c2ecf20Sopenharmony_ci struct MXL_HYDRA_RF_WAKEUP_PARAM_T params; 6858c2ecf20Sopenharmony_ci}; 6868c2ecf20Sopenharmony_ci 6878c2ecf20Sopenharmony_cienum MXL_HYDRA_AUX_CTRL_MODE_E { 6888c2ecf20Sopenharmony_ci MXL_HYDRA_AUX_CTRL_MODE_FSK = 0, /* Select FSK controller */ 6898c2ecf20Sopenharmony_ci MXL_HYDRA_AUX_CTRL_MODE_DISEQC, /* Select DiSEqC controller */ 6908c2ecf20Sopenharmony_ci}; 6918c2ecf20Sopenharmony_ci 6928c2ecf20Sopenharmony_cienum MXL_HYDRA_DISEQC_OPMODE_E { 6938c2ecf20Sopenharmony_ci MXL_HYDRA_DISEQC_ENVELOPE_MODE = 0, 6948c2ecf20Sopenharmony_ci MXL_HYDRA_DISEQC_TONE_MODE, 6958c2ecf20Sopenharmony_ci}; 6968c2ecf20Sopenharmony_ci 6978c2ecf20Sopenharmony_cienum MXL_HYDRA_DISEQC_VER_E { 6988c2ecf20Sopenharmony_ci MXL_HYDRA_DISEQC_1_X = 0, /* Config DiSEqC 1.x mode */ 6998c2ecf20Sopenharmony_ci MXL_HYDRA_DISEQC_2_X, /* Config DiSEqC 2.x mode */ 7008c2ecf20Sopenharmony_ci MXL_HYDRA_DISEQC_DISABLE /* Disable DiSEqC */ 7018c2ecf20Sopenharmony_ci}; 7028c2ecf20Sopenharmony_ci 7038c2ecf20Sopenharmony_cienum MXL_HYDRA_DISEQC_CARRIER_FREQ_E { 7048c2ecf20Sopenharmony_ci MXL_HYDRA_DISEQC_CARRIER_FREQ_22KHZ = 0, /* DiSEqC signal frequency of 22 KHz */ 7058c2ecf20Sopenharmony_ci MXL_HYDRA_DISEQC_CARRIER_FREQ_33KHZ, /* DiSEqC signal frequency of 33 KHz */ 7068c2ecf20Sopenharmony_ci MXL_HYDRA_DISEQC_CARRIER_FREQ_44KHZ /* DiSEqC signal frequency of 44 KHz */ 7078c2ecf20Sopenharmony_ci}; 7088c2ecf20Sopenharmony_ci 7098c2ecf20Sopenharmony_cienum MXL_HYDRA_DISEQC_ID_E { 7108c2ecf20Sopenharmony_ci MXL_HYDRA_DISEQC_ID_0 = 0, 7118c2ecf20Sopenharmony_ci MXL_HYDRA_DISEQC_ID_1, 7128c2ecf20Sopenharmony_ci MXL_HYDRA_DISEQC_ID_2, 7138c2ecf20Sopenharmony_ci MXL_HYDRA_DISEQC_ID_3 7148c2ecf20Sopenharmony_ci}; 7158c2ecf20Sopenharmony_ci 7168c2ecf20Sopenharmony_cienum MXL_HYDRA_FSK_OP_MODE_E { 7178c2ecf20Sopenharmony_ci MXL_HYDRA_FSK_CFG_TYPE_39KPBS = 0, /* 39.0kbps */ 7188c2ecf20Sopenharmony_ci MXL_HYDRA_FSK_CFG_TYPE_39_017KPBS, /* 39.017kbps */ 7198c2ecf20Sopenharmony_ci MXL_HYDRA_FSK_CFG_TYPE_115_2KPBS /* 115.2kbps */ 7208c2ecf20Sopenharmony_ci}; 7218c2ecf20Sopenharmony_ci 7228c2ecf20Sopenharmony_cistruct MXL58X_DSQ_OP_MODE_T { 7238c2ecf20Sopenharmony_ci u32 diseqc_id; /* DSQ 0, 1, 2 or 3 */ 7248c2ecf20Sopenharmony_ci u32 op_mode; /* Envelope mode (0) or internal tone mode (1) */ 7258c2ecf20Sopenharmony_ci u32 version; /* 0: 1.0, 1: 1.1, 2: Disable */ 7268c2ecf20Sopenharmony_ci u32 center_freq; /* 0: 22KHz, 1: 33KHz and 2: 44 KHz */ 7278c2ecf20Sopenharmony_ci}; 7288c2ecf20Sopenharmony_ci 7298c2ecf20Sopenharmony_cistruct MXL_HYDRA_DISEQC_CFG_CONT_TONE_T { 7308c2ecf20Sopenharmony_ci u32 diseqc_id; 7318c2ecf20Sopenharmony_ci u32 cont_tone_flag; /* 1: Enable , 0: Disable */ 7328c2ecf20Sopenharmony_ci}; 733