brintos

brintos / linux-shallow public Read only

0
0
Text · 2.4 KiB · 4f97c3d Raw
107 lines · c
1/* SPDX-License-Identifier: GPL-2.0-or-later */2/*3    Driver for ST STV0299 demodulator4 5    Copyright (C) 2001-2002 Convergence Integrated Media GmbH6	<ralph@convergence.de>,7	<holger@convergence.de>,8	<js@convergence.de>9 10 11    Philips SU1278/SH12 13    Copyright (C) 2002 by Peter Schildmann <peter.schildmann@web.de>14 15 16    LG TDQF-S001F17 18    Copyright (C) 2002 Felix Domke <tmbinc@elitedvb.net>19		     & Andreas Oberritter <obi@linuxtv.org>20 21 22    Support for Samsung TBMU24112IMB used on Technisat SkyStar2 rev. 2.6B23 24    Copyright (C) 2003 Vadim Catana <skystar@moldova.cc>:25 26    Support for Philips SU1278 on Technotrend hardware27 28    Copyright (C) 2004 Andrew de Quincey <adq_dvb@lidskialf.net>29 30 31*/32 33#ifndef STV0299_H34#define STV0299_H35 36#include <linux/dvb/frontend.h>37#include <media/dvb_frontend.h>38 39#define STV0299_LOCKOUTPUT_0  040#define STV0299_LOCKOUTPUT_1  141#define STV0299_LOCKOUTPUT_CF 242#define STV0299_LOCKOUTPUT_LK 343 44#define STV0299_VOLT13_OP0 045#define STV0299_VOLT13_OP1 146 47struct stv0299_config48{49	/* the demodulator's i2c address */50	u8 demod_address;51 52	/* inittab - array of pairs of values.53	 * First of each pair is the register, second is the value.54	 * List should be terminated with an 0xff, 0xff pair.55	 */56	const u8* inittab;57 58	/* master clock to use */59	u32 mclk;60 61	/* does the inversion require inversion? */62	u8 invert:1;63 64	/* Skip reinitialisation? */65	u8 skip_reinit:1;66 67	/* LOCK OUTPUT setting */68	u8 lock_output:2;69 70	/* Is 13v controlled by OP0 or OP1? */71	u8 volt13_op0_op1:1;72 73	/* Turn-off OP0? */74	u8 op0_off:1;75 76	/* minimum delay before retuning */77	int min_delay_ms;78 79	/* Set the symbol rate */80	int (*set_symbol_rate)(struct dvb_frontend *fe, u32 srate, u32 ratio);81 82	/* Set device param to start dma */83	int (*set_ts_params)(struct dvb_frontend *fe, int is_punctured);84};85 86#if IS_REACHABLE(CONFIG_DVB_STV0299)87extern struct dvb_frontend *stv0299_attach(const struct stv0299_config *config,88					   struct i2c_adapter *i2c);89#else90static inline struct dvb_frontend *stv0299_attach(const struct stv0299_config *config,91					   struct i2c_adapter *i2c)92{93	printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);94	return NULL;95}96#endif // CONFIG_DVB_STV029997 98static inline int stv0299_writereg(struct dvb_frontend *fe, u8 reg, u8 val) {99	int r = 0;100	u8 buf[] = {reg, val};101	if (fe->ops.write)102		r = fe->ops.write(fe, buf, 2);103	return r;104}105 106#endif // STV0299_H107