18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-or-later */
28c2ecf20Sopenharmony_ci  /*
38c2ecf20Sopenharmony_ci     DVB Driver for Philips tda827x / tda827xa Silicon tuners
48c2ecf20Sopenharmony_ci
58c2ecf20Sopenharmony_ci     (c) 2005 Hartmut Hackmann
68c2ecf20Sopenharmony_ci     (c) 2007 Michael Krufky
78c2ecf20Sopenharmony_ci
88c2ecf20Sopenharmony_ci
98c2ecf20Sopenharmony_ci  */
108c2ecf20Sopenharmony_ci
118c2ecf20Sopenharmony_ci#ifndef __DVB_TDA827X_H__
128c2ecf20Sopenharmony_ci#define __DVB_TDA827X_H__
138c2ecf20Sopenharmony_ci
148c2ecf20Sopenharmony_ci#include <linux/i2c.h>
158c2ecf20Sopenharmony_ci#include <media/dvb_frontend.h>
168c2ecf20Sopenharmony_ci#include "tda8290.h"
178c2ecf20Sopenharmony_ci
188c2ecf20Sopenharmony_cistruct tda827x_config
198c2ecf20Sopenharmony_ci{
208c2ecf20Sopenharmony_ci	/* saa7134 - provided callbacks */
218c2ecf20Sopenharmony_ci	int (*init) (struct dvb_frontend *fe);
228c2ecf20Sopenharmony_ci	int (*sleep) (struct dvb_frontend *fe);
238c2ecf20Sopenharmony_ci
248c2ecf20Sopenharmony_ci	/* interface to tda829x driver */
258c2ecf20Sopenharmony_ci	enum tda8290_lna config;
268c2ecf20Sopenharmony_ci	int	     switch_addr;
278c2ecf20Sopenharmony_ci
288c2ecf20Sopenharmony_ci	void (*agcf)(struct dvb_frontend *fe);
298c2ecf20Sopenharmony_ci};
308c2ecf20Sopenharmony_ci
318c2ecf20Sopenharmony_ci
328c2ecf20Sopenharmony_ci/**
338c2ecf20Sopenharmony_ci * Attach a tda827x tuner to the supplied frontend structure.
348c2ecf20Sopenharmony_ci *
358c2ecf20Sopenharmony_ci * @param fe Frontend to attach to.
368c2ecf20Sopenharmony_ci * @param addr i2c address of the tuner.
378c2ecf20Sopenharmony_ci * @param i2c i2c adapter to use.
388c2ecf20Sopenharmony_ci * @param cfg optional callback function pointers.
398c2ecf20Sopenharmony_ci * @return FE pointer on success, NULL on failure.
408c2ecf20Sopenharmony_ci */
418c2ecf20Sopenharmony_ci#if IS_REACHABLE(CONFIG_MEDIA_TUNER_TDA827X)
428c2ecf20Sopenharmony_ciextern struct dvb_frontend* tda827x_attach(struct dvb_frontend *fe, int addr,
438c2ecf20Sopenharmony_ci					   struct i2c_adapter *i2c,
448c2ecf20Sopenharmony_ci					   struct tda827x_config *cfg);
458c2ecf20Sopenharmony_ci#else
468c2ecf20Sopenharmony_cistatic inline struct dvb_frontend* tda827x_attach(struct dvb_frontend *fe,
478c2ecf20Sopenharmony_ci						  int addr,
488c2ecf20Sopenharmony_ci						  struct i2c_adapter *i2c,
498c2ecf20Sopenharmony_ci						  struct tda827x_config *cfg)
508c2ecf20Sopenharmony_ci{
518c2ecf20Sopenharmony_ci	printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
528c2ecf20Sopenharmony_ci	return NULL;
538c2ecf20Sopenharmony_ci}
548c2ecf20Sopenharmony_ci#endif // CONFIG_MEDIA_TUNER_TDA827X
558c2ecf20Sopenharmony_ci
568c2ecf20Sopenharmony_ci#endif // __DVB_TDA827X_H__
57