1c942fddfSThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-or-later */ 22dc1ed4eSAbylay Ospan /* 32dc1ed4eSAbylay Ospan * helene.h 42dc1ed4eSAbylay Ospan * 52dc1ed4eSAbylay Ospan * Sony HELENE DVB-S/S2/T/T2/C/C2/ISDB-T/S tuner driver (CXD2858ER) 62dc1ed4eSAbylay Ospan * 72dc1ed4eSAbylay Ospan * Copyright 2012 Sony Corporation 82dc1ed4eSAbylay Ospan * Copyright (C) 2014 NetUP Inc. 92dc1ed4eSAbylay Ospan * Copyright (C) 2014 Abylay Ospan <aospan@netup.ru> 102dc1ed4eSAbylay Ospan */ 112dc1ed4eSAbylay Ospan 122dc1ed4eSAbylay Ospan #ifndef __DVB_HELENE_H__ 132dc1ed4eSAbylay Ospan #define __DVB_HELENE_H__ 142dc1ed4eSAbylay Ospan 152dc1ed4eSAbylay Ospan #include <linux/dvb/frontend.h> 162dc1ed4eSAbylay Ospan #include <linux/i2c.h> 172dc1ed4eSAbylay Ospan 182dc1ed4eSAbylay Ospan enum helene_xtal { 192dc1ed4eSAbylay Ospan SONY_HELENE_XTAL_16000, /* 16 MHz */ 202dc1ed4eSAbylay Ospan SONY_HELENE_XTAL_20500, /* 20.5 MHz */ 212dc1ed4eSAbylay Ospan SONY_HELENE_XTAL_24000, /* 24 MHz */ 222dc1ed4eSAbylay Ospan SONY_HELENE_XTAL_41000 /* 41 MHz */ 232dc1ed4eSAbylay Ospan }; 242dc1ed4eSAbylay Ospan 252dc1ed4eSAbylay Ospan /** 262dc1ed4eSAbylay Ospan * struct helene_config - the configuration of 'Helene' tuner driver 272dc1ed4eSAbylay Ospan * @i2c_address: I2C address of the tuner 282dc1ed4eSAbylay Ospan * @xtal_freq_mhz: Oscillator frequency, MHz 292dc1ed4eSAbylay Ospan * @set_tuner_priv: Callback function private context 302dc1ed4eSAbylay Ospan * @set_tuner_callback: Callback function that notifies the parent driver 312dc1ed4eSAbylay Ospan * which tuner is active now 32b95b0c98SMauro Carvalho Chehab * @xtal: Cristal frequency as described by &enum helene_xtal 33817dc4b5SKatsuhiro Suzuki * @fe: Frontend for which connects this tuner 342dc1ed4eSAbylay Ospan */ 352dc1ed4eSAbylay Ospan struct helene_config { 362dc1ed4eSAbylay Ospan u8 i2c_address; 372dc1ed4eSAbylay Ospan u8 xtal_freq_mhz; 382dc1ed4eSAbylay Ospan void *set_tuner_priv; 392dc1ed4eSAbylay Ospan int (*set_tuner_callback)(void *, int); 402dc1ed4eSAbylay Ospan enum helene_xtal xtal; 41817dc4b5SKatsuhiro Suzuki 42817dc4b5SKatsuhiro Suzuki struct dvb_frontend *fe; 432dc1ed4eSAbylay Ospan }; 442dc1ed4eSAbylay Ospan 452dc1ed4eSAbylay Ospan #if IS_REACHABLE(CONFIG_DVB_HELENE) 46be9b53c8SMauro Carvalho Chehab /** 47*b0649455SMauro Carvalho Chehab * helene_attach - Attach a helene tuner (terrestrial and cable standards) 48be9b53c8SMauro Carvalho Chehab * 49be9b53c8SMauro Carvalho Chehab * @fe: frontend to be attached 50be9b53c8SMauro Carvalho Chehab * @config: pointer to &struct helene_config with tuner configuration. 51be9b53c8SMauro Carvalho Chehab * @i2c: i2c adapter to use. 52be9b53c8SMauro Carvalho Chehab * 53be9b53c8SMauro Carvalho Chehab * return: FE pointer on success, NULL on failure. 54be9b53c8SMauro Carvalho Chehab */ 552dc1ed4eSAbylay Ospan extern struct dvb_frontend *helene_attach(struct dvb_frontend *fe, 562dc1ed4eSAbylay Ospan const struct helene_config *config, 572dc1ed4eSAbylay Ospan struct i2c_adapter *i2c); 58be9b53c8SMauro Carvalho Chehab 59be9b53c8SMauro Carvalho Chehab /** 60*b0649455SMauro Carvalho Chehab * helene_attach_s - Attach a helene tuner (satellite standards) 61be9b53c8SMauro Carvalho Chehab * 62be9b53c8SMauro Carvalho Chehab * @fe: frontend to be attached 63be9b53c8SMauro Carvalho Chehab * @config: pointer to &struct helene_config with tuner configuration. 64be9b53c8SMauro Carvalho Chehab * @i2c: i2c adapter to use. 65be9b53c8SMauro Carvalho Chehab * 66be9b53c8SMauro Carvalho Chehab * return: FE pointer on success, NULL on failure. 67be9b53c8SMauro Carvalho Chehab */ 68be9b53c8SMauro Carvalho Chehab extern struct dvb_frontend *helene_attach_s(struct dvb_frontend *fe, 69be9b53c8SMauro Carvalho Chehab const struct helene_config *config, 70be9b53c8SMauro Carvalho Chehab struct i2c_adapter *i2c); 712dc1ed4eSAbylay Ospan #else 722dc1ed4eSAbylay Ospan static inline struct dvb_frontend *helene_attach(struct dvb_frontend *fe, 732dc1ed4eSAbylay Ospan const struct helene_config *config, 742dc1ed4eSAbylay Ospan struct i2c_adapter *i2c) 752dc1ed4eSAbylay Ospan { 762dc1ed4eSAbylay Ospan pr_warn("%s: driver disabled by Kconfig\n", __func__); 772dc1ed4eSAbylay Ospan return NULL; 782dc1ed4eSAbylay Ospan } 792dc1ed4eSAbylay Ospan static inline struct dvb_frontend *helene_attach_s(struct dvb_frontend *fe, 802dc1ed4eSAbylay Ospan const struct helene_config *config, 812dc1ed4eSAbylay Ospan struct i2c_adapter *i2c) 822dc1ed4eSAbylay Ospan { 832dc1ed4eSAbylay Ospan pr_warn("%s: driver disabled by Kconfig\n", __func__); 842dc1ed4eSAbylay Ospan return NULL; 852dc1ed4eSAbylay Ospan } 862dc1ed4eSAbylay Ospan #endif 872dc1ed4eSAbylay Ospan 882dc1ed4eSAbylay Ospan #endif 89