1 diff -Naur media_build-bst.orig/linux/drivers/media/dvb-frontends/sit2_mod.c media_build-bst/linux/drivers/media/dvb-frontends/sit2_mod.c
2 --- media_build-bst.orig/linux/drivers/media/dvb-frontends/sit2_mod.c 2014-11-06 07:17:41.000000000 +0100
3 +++ media_build-bst/linux/drivers/media/dvb-frontends/sit2_mod.c 2015-10-21 15:19:44.000000000 +0200
5 /*+++ *******************************************************************\
6 * SIT2 - DVB-T2/T/C demodulator and tuner
8 -* ---------------------------------------------------------------
\r
9 -* This software is provided "AS IS" without warranty of any kind,
\r
10 -* either expressed or implied, including but not limited to the
\r
11 -* implied warranties of noninfringement, merchantability and/or
\r
12 -* fitness for a particular purpose.
\r
13 -* ---------------------------------------------------------------
\r
15 +* ---------------------------------------------------------------
16 +* This software is provided "AS IS" without warranty of any kind,
17 +* either expressed or implied, including but not limited to the
18 +* implied warranties of noninfringement, merchantability and/or
19 +* fitness for a particular purpose.
20 +* ---------------------------------------------------------------
22 * Copyright (c) 2013 ShenZhen Bestunar Ltd,Inc.
23 * All rights reserved.
24 -* Max Nibble <nibble.max@gmail.com>
\r
25 +* Max Nibble <nibble.max@gmail.com>
28 \******************************************************************* ---*/
30 #include <linux/kernel.h>
31 #include <linux/module.h>
32 #include <linux/string.h>
33 -//#include <linux/slab.h>
34 #include <asm/div64.h>
35 -//#include "kmem_func.h"
36 #include "dvb_frontend.h"
40 struct sit2_state *state = fe->demodulator_priv;
43 +static void sit2_mod_release(struct dvb_frontend *fe)
45 + struct sit2_mod_state *m_state = fe->demodulator_priv;
49 +static int sit2_mod_init(struct dvb_frontend *fe)
51 + struct sit2_mod_state *m_state = fe->demodulator_priv;
52 + struct sit2_state *state = &m_state->drv_state;
53 + return sit2_drv_init(state);
56 +static int sit2_mod_sleep(struct dvb_frontend *fe)
58 + struct sit2_mod_state *m_state = fe->demodulator_priv;
59 + struct sit2_state *state = &m_state->drv_state;
60 + return sit2_drv_sleep(state);
63 +static int sit2_mod_get_frontend_algo(struct dvb_frontend *fe)
65 + return DVBFE_ALGO_HW;
68 +static int sit2_mod_set_frontend(struct dvb_frontend *fe)
70 + struct dtv_frontend_properties *c = &fe->dtv_property_cache;
71 + struct sit2_mod_state *m_state = fe->demodulator_priv;
72 + struct sit2_state *state = &m_state->drv_state;
74 + return sit2_drv_set_frontend(state, c->delivery_system, c->frequency, c->bandwidth_hz,
75 + c->symbol_rate, c->modulation, c->stream_id);
78 +static int sit2_mod_read_status(struct dvb_frontend *fe, fe_status_t *status)
80 + struct sit2_mod_state *m_state = fe->demodulator_priv;
81 + struct sit2_state *state = &m_state->drv_state;
82 + return sit2_drv_read_status(state, status);
85 +static int sit2_mod_tune(struct dvb_frontend *fe,
87 + unsigned int mode_flags,
88 + unsigned int *delay,
89 + fe_status_t *status)
93 + int ret = sit2_mod_set_frontend(fe);
97 + return sit2_mod_read_status(fe, status);
100 +static int sit2_mod_get_frontend(struct dvb_frontend *fe)
102 + struct dtv_frontend_properties *c = &fe->dtv_property_cache;
103 + struct sit2_mod_state *m_state = fe->demodulator_priv;
104 + struct sit2_state *state = &m_state->drv_state;
106 + return sit2_drv_get_frontend(state, &c->symbol_rate, &c->modulation, &c->transmission_mode,
107 + &c->guard_interval, &c->hierarchy, &c->code_rate_HP, &c->code_rate_LP, &c->inversion, &c->fec_inner);
110 +static int sit2_mod_read_snr(struct dvb_frontend *fe, u16 *snr)
112 + struct sit2_mod_state *m_state = fe->demodulator_priv;
113 + struct sit2_state *state = &m_state->drv_state;
114 + return sit2_drv_read_snr(state, snr);
117 +static int sit2_mod_read_ber(struct dvb_frontend *fe, u32 *ber)
119 + struct sit2_mod_state *m_state = fe->demodulator_priv;
120 + struct sit2_state *state = &m_state->drv_state;
121 + return sit2_drv_read_ber(state, ber);
124 +static int sit2_mod_read_ucblocks(struct dvb_frontend *fe, u32 *ucblocks)
126 + struct sit2_mod_state *m_state = fe->demodulator_priv;
127 + struct sit2_state *state = &m_state->drv_state;
128 + return sit2_drv_read_ucblocks(state, ucblocks);
131 +static int sit2_mod_read_signal_strength(struct dvb_frontend *fe, u16 *strength)
133 + struct sit2_mod_state *m_state = fe->demodulator_priv;
134 + struct sit2_state *state = &m_state->drv_state;
135 + return sit2_drv_read_signal_strength(state, strength);
138 static const struct dvb_frontend_ops sit2_ops = {
140 + /* DVB-T, DVB-T2 and DVB-C */
141 .delsys = { SYS_DVBT, SYS_DVBT2, SYS_DVBC_ANNEX_A },
144 /*.delsys = { SYS_DVBC_ANNEX_A },*/
145 - /* default: DVB-T/T2 */
148 .name = "Sit2 DVB-T2/C",
149 .frequency_stepsize = 62500,
154 - .release = sit2_drv_release,
155 - .init = sit2_drv_init,
156 - .sleep = sit2_drv_sleep,
158 - .tune = sit2_drv_tune,
159 - .set_frontend = sit2_drv_set_frontend,
160 - .get_frontend = sit2_drv_get_frontend,
161 - .get_frontend_algo = sit2_drv_get_frontend_algo,
163 - .read_status = sit2_drv_read_status,
164 - .read_snr = sit2_drv_read_snr,
165 - .read_ber = sit2_drv_read_ber,
166 - .read_ucblocks = sit2_drv_read_ucblocks,
167 - .read_signal_strength = sit2_drv_read_signal_strength,
168 + .release = sit2_mod_release,
169 + .init = sit2_mod_init,
170 + .sleep = sit2_mod_sleep,
172 + .tune = sit2_mod_tune,
173 + .set_frontend = sit2_mod_set_frontend,
174 + .get_frontend = sit2_mod_get_frontend,
175 + .get_frontend_algo = sit2_mod_get_frontend_algo,
177 + .read_status = sit2_mod_read_status,
178 + .read_snr = sit2_mod_read_snr,
179 + .read_ber = sit2_mod_read_ber,
180 + .read_ucblocks = sit2_mod_read_ucblocks,
181 + .read_signal_strength = sit2_mod_read_signal_strength,
184 struct dvb_frontend *sit2_attach(const struct sit2_config *config,
185 struct i2c_adapter *i2c)
187 - struct sit2_state *state = NULL;
188 - state = kzalloc(sizeof(struct sit2_state), GFP_KERNEL);
189 + struct sit2_mod_state *m_state = NULL;
190 + m_state = kzalloc(sizeof(struct sit2_mod_state), GFP_KERNEL);
195 dev_err(&i2c->dev, "%s: kzalloc() failed\n",
200 - sit2_op_attach(state, config, i2c);
201 + sit2_op_attach(&m_state->drv_state, i2c, config->ts_bus_mode, config->ts_clock_mode);
203 - memcpy(&state->frontend.ops, &sit2_ops,
204 + memcpy(&m_state->frontend.ops, &sit2_ops,
205 sizeof(struct dvb_frontend_ops));
206 - state->frontend.demodulator_priv = state;
207 - return &state->frontend;
208 + m_state->frontend.demodulator_priv = m_state;
209 + return &m_state->frontend;
215 EXPORT_SYMBOL(sit2_attach);
216 diff -Naur media_build-bst.orig/linux/drivers/media/dvb-frontends/sit2_op.h media_build-bst/linux/drivers/media/dvb-frontends/sit2_op.h
217 --- media_build-bst.orig/linux/drivers/media/dvb-frontends/sit2_op.h 2014-07-25 17:18:39.000000000 +0200
218 +++ media_build-bst/linux/drivers/media/dvb-frontends/sit2_op.h 2015-03-20 05:07:37.000000000 +0100
223 - struct dvb_frontend frontend;
224 - const struct sit2_config *config;
225 struct i2c_adapter *i2c;
238 + u8 ts_bus_mode; /*1-serial, 2-parallel.*/
239 + u8 ts_clock_mode; /*0-auto, 1-manual.*/
242 +struct sit2_mod_state {
243 + struct dvb_frontend frontend;
244 + const struct sit2_config *config;
245 + struct sit2_state drv_state;
248 -int sit2_drv_init(struct dvb_frontend *fe);
249 -int sit2_drv_sleep(struct dvb_frontend *fe);
250 +int sit2_drv_init(struct sit2_state *state);
251 +int sit2_drv_sleep(struct sit2_state *state);
253 +int sit2_drv_set_frontend(struct sit2_state *state,
254 +fe_delivery_system_t delivery_system, u32 frequency, u32 bandwidth_hz,
255 +u32 symbol_rate, fe_modulation_t modulation, u32 stream_id);
257 +int sit2_drv_get_frontend(struct sit2_state *state,
258 +u32 *symbol_rate, fe_modulation_t *modulation, fe_transmit_mode_t *transmission_mode,
259 +fe_guard_interval_t *guard_interval, fe_hierarchy_t *hierarchy, fe_code_rate_t *code_rate_HP,
260 +fe_code_rate_t *code_rate_LP, fe_spectral_inversion_t *inversion, fe_code_rate_t *fec_inner);
262 -int sit2_drv_tune(struct dvb_frontend *fe,
264 - unsigned int mode_flags,
265 - unsigned int *delay,
266 - fe_status_t *status);
267 -int sit2_drv_set_frontend(struct dvb_frontend *fe);
268 -int sit2_drv_get_frontend(struct dvb_frontend *fe);
269 -int sit2_drv_get_frontend_algo(struct dvb_frontend *fe);
270 -int sit2_drv_read_status(struct dvb_frontend *fe, fe_status_t *status);
271 -int sit2_drv_read_snr(struct dvb_frontend *fe, u16 *snr);
272 -int sit2_drv_read_ber(struct dvb_frontend *fe, u32 *ber);
273 -int sit2_drv_read_ucblocks(struct dvb_frontend *fe, u32 *ucblocks);
274 -int sit2_drv_read_signal_strength(struct dvb_frontend *fe, u16 *strength);
275 -void sit2_op_attach(struct sit2_state *state, const struct sit2_config *config, struct i2c_adapter *i2c);
276 +int sit2_drv_read_status(struct sit2_state *state, fe_status_t *status);
277 +int sit2_drv_read_snr(struct sit2_state *state, u16 *snr);
278 +int sit2_drv_read_ber(struct sit2_state *state, u32 *ber);
279 +int sit2_drv_read_ucblocks(struct sit2_state *state, u32 *ucblocks);
280 +int sit2_drv_read_signal_strength(struct sit2_state *state, u16 *strength);
281 +void sit2_op_attach(struct sit2_state *state, struct i2c_adapter *i2c, u8 ts_bus_mode, u8 ts_clock_mode);
283 #endif /* SIT2_OP_H */