1/* SPDX-License-Identifier: GPL-2.0-or-later */
2/*
3*/
4
5#ifndef __TEA5767_H__
6#define __TEA5767_H__
7
8#include <linux/i2c.h>
9#include <media/dvb_frontend.h>
10
11enum tea5767_xtal {
12	TEA5767_LOW_LO_32768    = 0,
13	TEA5767_HIGH_LO_32768   = 1,
14	TEA5767_LOW_LO_13MHz    = 2,
15	TEA5767_HIGH_LO_13MHz   = 3,
16};
17
18struct tea5767_ctrl {
19	unsigned int		port1:1;
20	unsigned int		port2:1;
21	unsigned int		high_cut:1;
22	unsigned int		st_noise:1;
23	unsigned int		soft_mute:1;
24	unsigned int		japan_band:1;
25	unsigned int		deemph_75:1;
26	unsigned int		pllref:1;
27	enum tea5767_xtal	xtal_freq;
28};
29
30#if IS_REACHABLE(CONFIG_MEDIA_TUNER_TEA5767)
31extern int tea5767_autodetection(struct i2c_adapter* i2c_adap, u8 i2c_addr);
32
33extern struct dvb_frontend *tea5767_attach(struct dvb_frontend *fe,
34					   struct i2c_adapter* i2c_adap,
35					   u8 i2c_addr);
36#else
37static inline int tea5767_autodetection(struct i2c_adapter* i2c_adap,
38					u8 i2c_addr)
39{
40	printk(KERN_INFO "%s: not probed - driver disabled by Kconfig\n",
41	       __func__);
42	return -EINVAL;
43}
44
45static inline struct dvb_frontend *tea5767_attach(struct dvb_frontend *fe,
46						   struct i2c_adapter* i2c_adap,
47						   u8 i2c_addr)
48{
49	printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
50	return NULL;
51}
52#endif
53
54#endif /* __TEA5767_H__ */
55