1/*
2 *   Fujitsu mb86a20s driver
3 *
4 *   Copyright (C) 2010 Mauro Carvalho Chehab
5 *
6 *   This program is free software; you can redistribute it and/or
7 *   modify it under the terms of the GNU General Public License as
8 *   published by the Free Software Foundation version 2.
9 *
10 *   This program is distributed in the hope that it will be useful,
11 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
12 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13 *   General Public License for more details.
14 */
15
16#ifndef MB86A20S_H
17#define MB86A20S_H
18
19#include <linux/kconfig.h>
20#include <linux/dvb/frontend.h>
21
22/**
23 * struct mb86a20s_config - Define the per-device attributes of the frontend
24 *
25 * @fclk:		Clock frequency. If zero, assumes the default
26 *			(32.57142 Mhz)
27 * @demod_address:	the demodulator's i2c address
28 * @is_serial:		if true, TS is serial. Otherwise, TS is parallel
29 */
30
31struct mb86a20s_config {
32	u32	fclk;
33	u8	demod_address;
34	bool	is_serial;
35};
36
37#if IS_REACHABLE(CONFIG_DVB_MB86A20S)
38extern struct dvb_frontend *mb86a20s_attach(const struct mb86a20s_config *config,
39					   struct i2c_adapter *i2c);
40extern struct i2c_adapter *mb86a20s_get_tuner_i2c_adapter(struct dvb_frontend *);
41#else
42static inline struct dvb_frontend *mb86a20s_attach(
43	const struct mb86a20s_config *config, struct i2c_adapter *i2c)
44{
45	printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
46	return NULL;
47}
48static inline struct i2c_adapter *
49	mb86a20s_get_tuner_i2c_adapter(struct dvb_frontend *fe)
50{
51	printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
52	return NULL;
53}
54#endif
55
56#endif /* MB86A20S */
57