18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-or-later */
28c2ecf20Sopenharmony_ci/*
38c2ecf20Sopenharmony_ci *  mxl111sf-demod.h - driver for the MaxLinear MXL111SF DVB-T demodulator
48c2ecf20Sopenharmony_ci *
58c2ecf20Sopenharmony_ci *  Copyright (C) 2010-2014 Michael Krufky <mkrufky@linuxtv.org>
68c2ecf20Sopenharmony_ci */
78c2ecf20Sopenharmony_ci
88c2ecf20Sopenharmony_ci#ifndef __MXL111SF_DEMOD_H__
98c2ecf20Sopenharmony_ci#define __MXL111SF_DEMOD_H__
108c2ecf20Sopenharmony_ci
118c2ecf20Sopenharmony_ci#include <media/dvb_frontend.h>
128c2ecf20Sopenharmony_ci#include "mxl111sf.h"
138c2ecf20Sopenharmony_ci
148c2ecf20Sopenharmony_cistruct mxl111sf_demod_config {
158c2ecf20Sopenharmony_ci	int (*read_reg)(struct mxl111sf_state *state, u8 addr, u8 *data);
168c2ecf20Sopenharmony_ci	int (*write_reg)(struct mxl111sf_state *state, u8 addr, u8 data);
178c2ecf20Sopenharmony_ci	int (*program_regs)(struct mxl111sf_state *state,
188c2ecf20Sopenharmony_ci			    struct mxl111sf_reg_ctrl_info *ctrl_reg_info);
198c2ecf20Sopenharmony_ci};
208c2ecf20Sopenharmony_ci
218c2ecf20Sopenharmony_ci#if IS_ENABLED(CONFIG_DVB_USB_MXL111SF)
228c2ecf20Sopenharmony_ciextern
238c2ecf20Sopenharmony_cistruct dvb_frontend *mxl111sf_demod_attach(struct mxl111sf_state *mxl_state,
248c2ecf20Sopenharmony_ci				   const struct mxl111sf_demod_config *cfg);
258c2ecf20Sopenharmony_ci#else
268c2ecf20Sopenharmony_cistatic inline
278c2ecf20Sopenharmony_cistruct dvb_frontend *mxl111sf_demod_attach(struct mxl111sf_state *mxl_state,
288c2ecf20Sopenharmony_ci				   const struct mxl111sf_demod_config *cfg)
298c2ecf20Sopenharmony_ci{
308c2ecf20Sopenharmony_ci	printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
318c2ecf20Sopenharmony_ci	return NULL;
328c2ecf20Sopenharmony_ci}
338c2ecf20Sopenharmony_ci#endif /* CONFIG_DVB_USB_MXL111SF */
348c2ecf20Sopenharmony_ci
358c2ecf20Sopenharmony_ci#endif /* __MXL111SF_DEMOD_H__ */
36