tda10071_priv.h (2674B)
1/* SPDX-License-Identifier: GPL-2.0-or-later */ 2/* 3 * NXP TDA10071 + Conexant CX24118A DVB-S/S2 demodulator + tuner driver 4 * 5 * Copyright (C) 2011 Antti Palosaari <crope@iki.fi> 6 */ 7 8#ifndef TDA10071_PRIV 9#define TDA10071_PRIV 10 11#include <media/dvb_frontend.h> 12#include "tda10071.h" 13#include <linux/firmware.h> 14#include <linux/regmap.h> 15 16struct tda10071_dev { 17 struct dvb_frontend fe; 18 struct i2c_client *client; 19 struct regmap *regmap; 20 struct mutex cmd_execute_mutex; 21 u32 clk; 22 u16 i2c_wr_max; 23 u8 ts_mode; 24 bool spec_inv; 25 u8 pll_multiplier; 26 u8 tuner_i2c_addr; 27 28 u8 meas_count; 29 u32 dvbv3_ber; 30 enum fe_status fe_status; 31 enum fe_delivery_system delivery_system; 32 bool warm; /* FW running */ 33 u64 post_bit_error; 34 u64 block_error; 35}; 36 37static struct tda10071_modcod { 38 enum fe_delivery_system delivery_system; 39 enum fe_modulation modulation; 40 enum fe_code_rate fec; 41 u8 val; 42} TDA10071_MODCOD[] = { 43 /* NBC-QPSK */ 44 { SYS_DVBS2, QPSK, FEC_AUTO, 0x00 }, 45 { SYS_DVBS2, QPSK, FEC_1_2, 0x04 }, 46 { SYS_DVBS2, QPSK, FEC_3_5, 0x05 }, 47 { SYS_DVBS2, QPSK, FEC_2_3, 0x06 }, 48 { SYS_DVBS2, QPSK, FEC_3_4, 0x07 }, 49 { SYS_DVBS2, QPSK, FEC_4_5, 0x08 }, 50 { SYS_DVBS2, QPSK, FEC_5_6, 0x09 }, 51 { SYS_DVBS2, QPSK, FEC_8_9, 0x0a }, 52 { SYS_DVBS2, QPSK, FEC_9_10, 0x0b }, 53 /* 8PSK */ 54 { SYS_DVBS2, PSK_8, FEC_AUTO, 0x00 }, 55 { SYS_DVBS2, PSK_8, FEC_3_5, 0x0c }, 56 { SYS_DVBS2, PSK_8, FEC_2_3, 0x0d }, 57 { SYS_DVBS2, PSK_8, FEC_3_4, 0x0e }, 58 { SYS_DVBS2, PSK_8, FEC_5_6, 0x0f }, 59 { SYS_DVBS2, PSK_8, FEC_8_9, 0x10 }, 60 { SYS_DVBS2, PSK_8, FEC_9_10, 0x11 }, 61 /* QPSK */ 62 { SYS_DVBS, QPSK, FEC_AUTO, 0x2d }, 63 { SYS_DVBS, QPSK, FEC_1_2, 0x2e }, 64 { SYS_DVBS, QPSK, FEC_2_3, 0x2f }, 65 { SYS_DVBS, QPSK, FEC_3_4, 0x30 }, 66 { SYS_DVBS, QPSK, FEC_5_6, 0x31 }, 67 { SYS_DVBS, QPSK, FEC_7_8, 0x32 }, 68}; 69 70struct tda10071_reg_val_mask { 71 u8 reg; 72 u8 val; 73 u8 mask; 74}; 75 76/* firmware filename */ 77#define TDA10071_FIRMWARE "dvb-fe-tda10071.fw" 78 79/* firmware commands */ 80#define CMD_DEMOD_INIT 0x10 81#define CMD_CHANGE_CHANNEL 0x11 82#define CMD_MPEG_CONFIG 0x13 83#define CMD_TUNER_INIT 0x15 84#define CMD_GET_AGCACC 0x1a 85 86#define CMD_LNB_CONFIG 0x20 87#define CMD_LNB_SEND_DISEQC 0x21 88#define CMD_LNB_SET_DC_LEVEL 0x22 89#define CMD_LNB_PCB_CONFIG 0x23 90#define CMD_LNB_SEND_TONEBURST 0x24 91#define CMD_LNB_UPDATE_REPLY 0x25 92 93#define CMD_GET_FW_VERSION 0x35 94#define CMD_SET_SLEEP_MODE 0x36 95#define CMD_BER_CONTROL 0x3e 96#define CMD_BER_UPDATE_COUNTERS 0x3f 97 98/* firmware command struct */ 99#define TDA10071_ARGLEN 30 100struct tda10071_cmd { 101 u8 args[TDA10071_ARGLEN]; 102 u8 len; 103}; 104 105 106#endif /* TDA10071_PRIV */