1 /* SPDX-License-Identifier: GPL-2.0-or-later */
3 Frontend-driver for TwinHan DST Frontend
5 Copyright (C) 2003 Jamie Honan
6 Copyright (C) 2004, 2005 Manu Abraham (manu@kromtek.com)
13 #include <linux/dvb/frontend.h>
14 #include <linux/device.h>
15 #include <linux/mutex.h>
27 #define DST_TYPE_IS_SAT 0
28 #define DST_TYPE_IS_TERR 1
29 #define DST_TYPE_IS_CABLE 2
30 #define DST_TYPE_IS_ATSC 3
32 #define DST_TYPE_HAS_TS188 1
33 #define DST_TYPE_HAS_TS204 2
34 #define DST_TYPE_HAS_SYMDIV 4
35 #define DST_TYPE_HAS_FW_1 8
36 #define DST_TYPE_HAS_FW_2 16
37 #define DST_TYPE_HAS_FW_3 32
38 #define DST_TYPE_HAS_FW_BUILD 64
39 #define DST_TYPE_HAS_OBS_REGS 128
40 #define DST_TYPE_HAS_INC_COUNT 256
41 #define DST_TYPE_HAS_MULTI_FE 512
42 #define DST_TYPE_HAS_NEWTUNE_2 1024
43 #define DST_TYPE_HAS_DBOARD 2048
44 #define DST_TYPE_HAS_VLF 4096
46 /* Card capability list */
48 #define DST_TYPE_HAS_MAC 1
49 #define DST_TYPE_HAS_DISEQC3 2
50 #define DST_TYPE_HAS_DISEQC4 4
51 #define DST_TYPE_HAS_DISEQC5 8
52 #define DST_TYPE_HAS_MOTO 16
53 #define DST_TYPE_HAS_CA 32
54 #define DST_TYPE_HAS_ANALOG 64 /* Analog inputs */
55 #define DST_TYPE_HAS_SESSION 128
57 #define TUNER_TYPE_MULTI 1
58 #define TUNER_TYPE_UNKNOWN 2
60 #define TUNER_TYPE_L64724 4
61 #define TUNER_TYPE_STV0299 8
62 #define TUNER_TYPE_MB86A15 16
65 #define TUNER_TYPE_TDA10046 32
68 #define TUNER_TYPE_NXT200x 64
71 #define RDC_8820_PIO_0_DISABLE 0
72 #define RDC_8820_PIO_0_ENABLE 1
73 #define RDC_8820_INT 2
74 #define RDC_8820_RESET 4
76 /* DST Communication */
87 struct i2c_adapter
* i2c
;
91 /* configuration settings */
92 const struct dst_config
* config
;
94 struct dvb_frontend frontend
;
96 /* private ASIC data */
103 u32 frequency
; /* intermediate frequency in kHz for QPSK */
104 enum fe_spectral_inversion inversion
;
105 u32 symbol_rate
; /* symbol rate in Symbols per second */
106 enum fe_code_rate fec
;
107 enum fe_sec_voltage voltage
;
108 enum fe_sec_tone_mode tone
;
113 unsigned long cur_jiff
;
118 enum fe_sec_mini_cmd minicmd
;
119 enum fe_modulation modulation
;
128 struct mutex dst_mutex
;
130 struct dvb_device
*dst_ca
;
151 /* the ASIC i2c address */
155 int rdc_reset_state(struct dst_state
*state
);
157 int dst_wait_dst_ready(struct dst_state
*state
, u8 delay_mode
);
158 int dst_pio_disable(struct dst_state
*state
);
159 int dst_error_recovery(struct dst_state
* state
);
160 int dst_error_bailout(struct dst_state
*state
);
161 int dst_comm_init(struct dst_state
* state
);
163 int write_dst(struct dst_state
*state
, u8
* data
, u8 len
);
164 int read_dst(struct dst_state
*state
, u8
* ret
, u8 len
);
165 u8
dst_check_sum(u8
* buf
, u32 len
);
166 struct dst_state
* dst_attach(struct dst_state
* state
, struct dvb_adapter
*dvb_adapter
);
167 struct dvb_device
*dst_ca_attach(struct dst_state
*state
, struct dvb_adapter
*dvb_adapter
);
170 #endif // DST_COMMON_H