1c942fddfSThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-or-later */
2a5d32b35SKozlov Sergey /*
3a5d32b35SKozlov Sergey * horus3a.h
4a5d32b35SKozlov Sergey *
5a5d32b35SKozlov Sergey * Sony Horus3A DVB-S/S2 tuner driver
6a5d32b35SKozlov Sergey *
7a5d32b35SKozlov Sergey * Copyright 2012 Sony Corporation
8a5d32b35SKozlov Sergey * Copyright (C) 2014 NetUP Inc.
9a5d32b35SKozlov Sergey * Copyright (C) 2014 Sergey Kozlov <serjk@netup.ru>
10a5d32b35SKozlov Sergey * Copyright (C) 2014 Abylay Ospan <aospan@netup.ru>
11a5d32b35SKozlov Sergey */
12a5d32b35SKozlov Sergey
13a5d32b35SKozlov Sergey #ifndef __DVB_HORUS3A_H__
14a5d32b35SKozlov Sergey #define __DVB_HORUS3A_H__
15a5d32b35SKozlov Sergey
16a5d32b35SKozlov Sergey #include <linux/dvb/frontend.h>
17a5d32b35SKozlov Sergey #include <linux/i2c.h>
18a5d32b35SKozlov Sergey
19a5d32b35SKozlov Sergey /**
20a5d32b35SKozlov Sergey * struct horus3a_config - the configuration of Horus3A tuner driver
21a5d32b35SKozlov Sergey * @i2c_address: I2C address of the tuner
22a5d32b35SKozlov Sergey * @xtal_freq_mhz: Oscillator frequency, MHz
23a5d32b35SKozlov Sergey * @set_tuner_priv: Callback function private context
24a5d32b35SKozlov Sergey * @set_tuner_callback: Callback function that notifies the parent driver
25a5d32b35SKozlov Sergey * which tuner is active now
26a5d32b35SKozlov Sergey */
27a5d32b35SKozlov Sergey struct horus3a_config {
28a5d32b35SKozlov Sergey u8 i2c_address;
29a5d32b35SKozlov Sergey u8 xtal_freq_mhz;
30a5d32b35SKozlov Sergey void *set_tuner_priv;
31a5d32b35SKozlov Sergey int (*set_tuner_callback)(void *, int);
32a5d32b35SKozlov Sergey };
33a5d32b35SKozlov Sergey
34a5d32b35SKozlov Sergey #if IS_REACHABLE(CONFIG_DVB_HORUS3A)
35be9b53c8SMauro Carvalho Chehab /**
36*b0649455SMauro Carvalho Chehab * horus3a_attach - Attach a horus3a tuner
37be9b53c8SMauro Carvalho Chehab *
38be9b53c8SMauro Carvalho Chehab * @fe: frontend to be attached
39be9b53c8SMauro Carvalho Chehab * @config: pointer to &struct helene_config with tuner configuration.
40be9b53c8SMauro Carvalho Chehab * @i2c: i2c adapter to use.
41be9b53c8SMauro Carvalho Chehab *
42be9b53c8SMauro Carvalho Chehab * return: FE pointer on success, NULL on failure.
43be9b53c8SMauro Carvalho Chehab */
44a5d32b35SKozlov Sergey extern struct dvb_frontend *horus3a_attach(struct dvb_frontend *fe,
45a5d32b35SKozlov Sergey const struct horus3a_config *config,
46a5d32b35SKozlov Sergey struct i2c_adapter *i2c);
47a5d32b35SKozlov Sergey #else
horus3a_attach(struct dvb_frontend * fe,const struct horus3a_config * config,struct i2c_adapter * i2c)48ebdd4b7eSJavier Martinez Canillas static inline struct dvb_frontend *horus3a_attach(struct dvb_frontend *fe,
49ebdd4b7eSJavier Martinez Canillas const struct horus3a_config *config,
50a5d32b35SKozlov Sergey struct i2c_adapter *i2c)
51a5d32b35SKozlov Sergey {
52a5d32b35SKozlov Sergey printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
53a5d32b35SKozlov Sergey return NULL;
54a5d32b35SKozlov Sergey }
55a5d32b35SKozlov Sergey #endif
56a5d32b35SKozlov Sergey
57a5d32b35SKozlov Sergey #endif
58