18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-or-later */
28c2ecf20Sopenharmony_ci/*
38c2ecf20Sopenharmony_ci * horus3a.h
48c2ecf20Sopenharmony_ci *
58c2ecf20Sopenharmony_ci * Sony Horus3A DVB-S/S2 tuner driver
68c2ecf20Sopenharmony_ci *
78c2ecf20Sopenharmony_ci * Copyright 2012 Sony Corporation
88c2ecf20Sopenharmony_ci * Copyright (C) 2014 NetUP Inc.
98c2ecf20Sopenharmony_ci * Copyright (C) 2014 Sergey Kozlov <serjk@netup.ru>
108c2ecf20Sopenharmony_ci * Copyright (C) 2014 Abylay Ospan <aospan@netup.ru>
118c2ecf20Sopenharmony_ci  */
128c2ecf20Sopenharmony_ci
138c2ecf20Sopenharmony_ci#ifndef __DVB_HORUS3A_H__
148c2ecf20Sopenharmony_ci#define __DVB_HORUS3A_H__
158c2ecf20Sopenharmony_ci
168c2ecf20Sopenharmony_ci#include <linux/dvb/frontend.h>
178c2ecf20Sopenharmony_ci#include <linux/i2c.h>
188c2ecf20Sopenharmony_ci
198c2ecf20Sopenharmony_ci/**
208c2ecf20Sopenharmony_ci * struct horus3a_config - the configuration of Horus3A tuner driver
218c2ecf20Sopenharmony_ci * @i2c_address:    I2C address of the tuner
228c2ecf20Sopenharmony_ci * @xtal_freq_mhz:  Oscillator frequency, MHz
238c2ecf20Sopenharmony_ci * @set_tuner_priv: Callback function private context
248c2ecf20Sopenharmony_ci * @set_tuner_callback: Callback function that notifies the parent driver
258c2ecf20Sopenharmony_ci *          which tuner is active now
268c2ecf20Sopenharmony_ci */
278c2ecf20Sopenharmony_cistruct horus3a_config {
288c2ecf20Sopenharmony_ci	u8	i2c_address;
298c2ecf20Sopenharmony_ci	u8	xtal_freq_mhz;
308c2ecf20Sopenharmony_ci	void	*set_tuner_priv;
318c2ecf20Sopenharmony_ci	int	(*set_tuner_callback)(void *, int);
328c2ecf20Sopenharmony_ci};
338c2ecf20Sopenharmony_ci
348c2ecf20Sopenharmony_ci#if IS_REACHABLE(CONFIG_DVB_HORUS3A)
358c2ecf20Sopenharmony_ci/**
368c2ecf20Sopenharmony_ci * Attach a horus3a tuner
378c2ecf20Sopenharmony_ci *
388c2ecf20Sopenharmony_ci * @fe: frontend to be attached
398c2ecf20Sopenharmony_ci * @config: pointer to &struct helene_config with tuner configuration.
408c2ecf20Sopenharmony_ci * @i2c: i2c adapter to use.
418c2ecf20Sopenharmony_ci *
428c2ecf20Sopenharmony_ci * return: FE pointer on success, NULL on failure.
438c2ecf20Sopenharmony_ci */
448c2ecf20Sopenharmony_ciextern struct dvb_frontend *horus3a_attach(struct dvb_frontend *fe,
458c2ecf20Sopenharmony_ci					const struct horus3a_config *config,
468c2ecf20Sopenharmony_ci					struct i2c_adapter *i2c);
478c2ecf20Sopenharmony_ci#else
488c2ecf20Sopenharmony_cistatic inline struct dvb_frontend *horus3a_attach(struct dvb_frontend *fe,
498c2ecf20Sopenharmony_ci					const struct horus3a_config *config,
508c2ecf20Sopenharmony_ci					struct i2c_adapter *i2c)
518c2ecf20Sopenharmony_ci{
528c2ecf20Sopenharmony_ci	printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
538c2ecf20Sopenharmony_ci	return NULL;
548c2ecf20Sopenharmony_ci}
558c2ecf20Sopenharmony_ci#endif
568c2ecf20Sopenharmony_ci
578c2ecf20Sopenharmony_ci#endif
58