18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-or-later */
28c2ecf20Sopenharmony_ci/*
38c2ecf20Sopenharmony_ci * Conexant CX24120/CX24118 - DVB-S/S2 demod/tuner driver
48c2ecf20Sopenharmony_ci *
58c2ecf20Sopenharmony_ci * Copyright (C) 2008 Patrick Boettcher <pb@linuxtv.org>
68c2ecf20Sopenharmony_ci * Copyright (C) 2009 Sergey Tyurin <forum.free-x.de>
78c2ecf20Sopenharmony_ci * Updated 2012 by Jannis Achstetter <jannis_achstetter@web.de>
88c2ecf20Sopenharmony_ci * Copyright (C) 2015 Jemma Denson <jdenson@gmail.com>
98c2ecf20Sopenharmony_ci */
108c2ecf20Sopenharmony_ci
118c2ecf20Sopenharmony_ci#ifndef CX24120_H
128c2ecf20Sopenharmony_ci#define CX24120_H
138c2ecf20Sopenharmony_ci
148c2ecf20Sopenharmony_ci#include <linux/dvb/frontend.h>
158c2ecf20Sopenharmony_ci#include <linux/firmware.h>
168c2ecf20Sopenharmony_ci
178c2ecf20Sopenharmony_cistruct cx24120_initial_mpeg_config {
188c2ecf20Sopenharmony_ci	u8 x1;
198c2ecf20Sopenharmony_ci	u8 x2;
208c2ecf20Sopenharmony_ci	u8 x3;
218c2ecf20Sopenharmony_ci};
228c2ecf20Sopenharmony_ci
238c2ecf20Sopenharmony_cistruct cx24120_config {
248c2ecf20Sopenharmony_ci	u8 i2c_addr;
258c2ecf20Sopenharmony_ci	u32 xtal_khz;
268c2ecf20Sopenharmony_ci	struct cx24120_initial_mpeg_config initial_mpeg_config;
278c2ecf20Sopenharmony_ci
288c2ecf20Sopenharmony_ci	int (*request_firmware)(struct dvb_frontend *fe,
298c2ecf20Sopenharmony_ci				const struct firmware **fw, char *name);
308c2ecf20Sopenharmony_ci
318c2ecf20Sopenharmony_ci	/* max bytes I2C provider can write at once */
328c2ecf20Sopenharmony_ci	u16 i2c_wr_max;
338c2ecf20Sopenharmony_ci};
348c2ecf20Sopenharmony_ci
358c2ecf20Sopenharmony_ci#if IS_REACHABLE(CONFIG_DVB_CX24120)
368c2ecf20Sopenharmony_cistruct dvb_frontend *cx24120_attach(const struct cx24120_config *config,
378c2ecf20Sopenharmony_ci				    struct i2c_adapter *i2c);
388c2ecf20Sopenharmony_ci#else
398c2ecf20Sopenharmony_cistatic inline
408c2ecf20Sopenharmony_cistruct dvb_frontend *cx24120_attach(const struct cx24120_config *config,
418c2ecf20Sopenharmony_ci				    struct i2c_adapter *i2c)
428c2ecf20Sopenharmony_ci{
438c2ecf20Sopenharmony_ci	pr_warn("%s: driver disabled by Kconfig\n", __func__);
448c2ecf20Sopenharmony_ci	return NULL;
458c2ecf20Sopenharmony_ci}
468c2ecf20Sopenharmony_ci#endif
478c2ecf20Sopenharmony_ci
488c2ecf20Sopenharmony_ci#endif /* CX24120_H */
49