18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-or-later */
28c2ecf20Sopenharmony_ci/*
38c2ecf20Sopenharmony_ci * Elonics R820T silicon tuner driver
48c2ecf20Sopenharmony_ci *
58c2ecf20Sopenharmony_ci * Copyright (C) 2012 Antti Palosaari <crope@iki.fi>
68c2ecf20Sopenharmony_ci */
78c2ecf20Sopenharmony_ci
88c2ecf20Sopenharmony_ci#ifndef R820T_H
98c2ecf20Sopenharmony_ci#define R820T_H
108c2ecf20Sopenharmony_ci
118c2ecf20Sopenharmony_ci#include <media/dvb_frontend.h>
128c2ecf20Sopenharmony_ci
138c2ecf20Sopenharmony_cienum r820t_chip {
148c2ecf20Sopenharmony_ci	CHIP_R820T,
158c2ecf20Sopenharmony_ci	CHIP_R620D,
168c2ecf20Sopenharmony_ci	CHIP_R828D,
178c2ecf20Sopenharmony_ci	CHIP_R828,
188c2ecf20Sopenharmony_ci	CHIP_R828S,
198c2ecf20Sopenharmony_ci	CHIP_R820C,
208c2ecf20Sopenharmony_ci};
218c2ecf20Sopenharmony_ci
228c2ecf20Sopenharmony_cistruct r820t_config {
238c2ecf20Sopenharmony_ci	u8 i2c_addr;		/* 0x34 */
248c2ecf20Sopenharmony_ci	u32 xtal;
258c2ecf20Sopenharmony_ci	enum r820t_chip rafael_chip;
268c2ecf20Sopenharmony_ci	unsigned max_i2c_msg_len;
278c2ecf20Sopenharmony_ci	bool use_diplexer;
288c2ecf20Sopenharmony_ci	bool use_predetect;
298c2ecf20Sopenharmony_ci};
308c2ecf20Sopenharmony_ci
318c2ecf20Sopenharmony_ci#if IS_REACHABLE(CONFIG_MEDIA_TUNER_R820T)
328c2ecf20Sopenharmony_cistruct dvb_frontend *r820t_attach(struct dvb_frontend *fe,
338c2ecf20Sopenharmony_ci				  struct i2c_adapter *i2c,
348c2ecf20Sopenharmony_ci				  const struct r820t_config *cfg);
358c2ecf20Sopenharmony_ci#else
368c2ecf20Sopenharmony_cistatic inline struct dvb_frontend *r820t_attach(struct dvb_frontend *fe,
378c2ecf20Sopenharmony_ci						struct i2c_adapter *i2c,
388c2ecf20Sopenharmony_ci						const struct r820t_config *cfg)
398c2ecf20Sopenharmony_ci{
408c2ecf20Sopenharmony_ci	pr_warn("%s: driver disabled by Kconfig\n", __func__);
418c2ecf20Sopenharmony_ci	return NULL;
428c2ecf20Sopenharmony_ci}
438c2ecf20Sopenharmony_ci#endif
448c2ecf20Sopenharmony_ci
458c2ecf20Sopenharmony_ci#endif
46