18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */
28c2ecf20Sopenharmony_ci/*
38c2ecf20Sopenharmony_ci * public header file of the frontend drivers for mobile DVB-T demodulators
48c2ecf20Sopenharmony_ci * DiBcom 3000M-B and DiBcom 3000P/M-C (http://www.dibcom.fr/)
58c2ecf20Sopenharmony_ci *
68c2ecf20Sopenharmony_ci * Copyright (C) 2004-5 Patrick Boettcher (patrick.boettcher@posteo.de)
78c2ecf20Sopenharmony_ci *
88c2ecf20Sopenharmony_ci * based on GPL code from DibCom, which has
98c2ecf20Sopenharmony_ci *
108c2ecf20Sopenharmony_ci * Copyright (C) 2004 Amaury Demol for DiBcom
118c2ecf20Sopenharmony_ci *
128c2ecf20Sopenharmony_ci * Acknowledgements
138c2ecf20Sopenharmony_ci *
148c2ecf20Sopenharmony_ci *  Amaury Demol from DiBcom for providing specs and driver
158c2ecf20Sopenharmony_ci *  sources, on which this driver (and the dvb-dibusb) are based.
168c2ecf20Sopenharmony_ci *
178c2ecf20Sopenharmony_ci * see Documentation/driver-api/media/drivers/dvb-usb.rst for more information
188c2ecf20Sopenharmony_ci */
198c2ecf20Sopenharmony_ci
208c2ecf20Sopenharmony_ci#ifndef DIB3000_H
218c2ecf20Sopenharmony_ci#define DIB3000_H
228c2ecf20Sopenharmony_ci
238c2ecf20Sopenharmony_ci#include <linux/dvb/frontend.h>
248c2ecf20Sopenharmony_ci
258c2ecf20Sopenharmony_cistruct dib3000_config
268c2ecf20Sopenharmony_ci{
278c2ecf20Sopenharmony_ci	/* the demodulator's i2c address */
288c2ecf20Sopenharmony_ci	u8 demod_address;
298c2ecf20Sopenharmony_ci};
308c2ecf20Sopenharmony_ci
318c2ecf20Sopenharmony_cistruct dib_fe_xfer_ops
328c2ecf20Sopenharmony_ci{
338c2ecf20Sopenharmony_ci	/* pid and transfer handling is done in the demodulator */
348c2ecf20Sopenharmony_ci	int (*pid_parse)(struct dvb_frontend *fe, int onoff);
358c2ecf20Sopenharmony_ci	int (*fifo_ctrl)(struct dvb_frontend *fe, int onoff);
368c2ecf20Sopenharmony_ci	int (*pid_ctrl)(struct dvb_frontend *fe, int index, int pid, int onoff);
378c2ecf20Sopenharmony_ci	int (*tuner_pass_ctrl)(struct dvb_frontend *fe, int onoff, u8 pll_ctrl);
388c2ecf20Sopenharmony_ci};
398c2ecf20Sopenharmony_ci
408c2ecf20Sopenharmony_ci#if IS_REACHABLE(CONFIG_DVB_DIB3000MB)
418c2ecf20Sopenharmony_ciextern struct dvb_frontend* dib3000mb_attach(const struct dib3000_config* config,
428c2ecf20Sopenharmony_ci					     struct i2c_adapter* i2c, struct dib_fe_xfer_ops *xfer_ops);
438c2ecf20Sopenharmony_ci#else
448c2ecf20Sopenharmony_cistatic inline struct dvb_frontend* dib3000mb_attach(const struct dib3000_config* config,
458c2ecf20Sopenharmony_ci					     struct i2c_adapter* i2c, struct dib_fe_xfer_ops *xfer_ops)
468c2ecf20Sopenharmony_ci{
478c2ecf20Sopenharmony_ci	printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
488c2ecf20Sopenharmony_ci	return NULL;
498c2ecf20Sopenharmony_ci}
508c2ecf20Sopenharmony_ci#endif // CONFIG_DVB_DIB3000MB
518c2ecf20Sopenharmony_ci
528c2ecf20Sopenharmony_ci#endif // DIB3000_H
53