18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-or-later */ 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci cx24110 - Single Chip Satellite Channel Receiver driver module 48c2ecf20Sopenharmony_ci 58c2ecf20Sopenharmony_ci Copyright (C) 2002 Peter Hettkamp <peter.hettkamp@htp-tel.de> based on 68c2ecf20Sopenharmony_ci work 78c2ecf20Sopenharmony_ci Copyright (C) 1999 Convergence Integrated Media GmbH <ralph@convergence.de> 88c2ecf20Sopenharmony_ci 98c2ecf20Sopenharmony_ci 108c2ecf20Sopenharmony_ci*/ 118c2ecf20Sopenharmony_ci 128c2ecf20Sopenharmony_ci#ifndef CX24110_H 138c2ecf20Sopenharmony_ci#define CX24110_H 148c2ecf20Sopenharmony_ci 158c2ecf20Sopenharmony_ci#include <linux/dvb/frontend.h> 168c2ecf20Sopenharmony_ci 178c2ecf20Sopenharmony_cistruct cx24110_config 188c2ecf20Sopenharmony_ci{ 198c2ecf20Sopenharmony_ci /* the demodulator's i2c address */ 208c2ecf20Sopenharmony_ci u8 demod_address; 218c2ecf20Sopenharmony_ci}; 228c2ecf20Sopenharmony_ci 238c2ecf20Sopenharmony_cistatic inline int cx24110_pll_write(struct dvb_frontend *fe, u32 val) 248c2ecf20Sopenharmony_ci{ 258c2ecf20Sopenharmony_ci u8 buf[] = { 268c2ecf20Sopenharmony_ci (u8)((val >> 24) & 0xff), 278c2ecf20Sopenharmony_ci (u8)((val >> 16) & 0xff), 288c2ecf20Sopenharmony_ci (u8)((val >> 8) & 0xff) 298c2ecf20Sopenharmony_ci }; 308c2ecf20Sopenharmony_ci 318c2ecf20Sopenharmony_ci if (fe->ops.write) 328c2ecf20Sopenharmony_ci return fe->ops.write(fe, buf, 3); 338c2ecf20Sopenharmony_ci return 0; 348c2ecf20Sopenharmony_ci} 358c2ecf20Sopenharmony_ci 368c2ecf20Sopenharmony_ci#if IS_REACHABLE(CONFIG_DVB_CX24110) 378c2ecf20Sopenharmony_ciextern struct dvb_frontend* cx24110_attach(const struct cx24110_config* config, 388c2ecf20Sopenharmony_ci struct i2c_adapter* i2c); 398c2ecf20Sopenharmony_ci#else 408c2ecf20Sopenharmony_cistatic inline struct dvb_frontend* cx24110_attach(const struct cx24110_config* config, 418c2ecf20Sopenharmony_ci struct i2c_adapter* i2c) 428c2ecf20Sopenharmony_ci{ 438c2ecf20Sopenharmony_ci printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__); 448c2ecf20Sopenharmony_ci return NULL; 458c2ecf20Sopenharmony_ci} 468c2ecf20Sopenharmony_ci#endif // CONFIG_DVB_CX24110 478c2ecf20Sopenharmony_ci 488c2ecf20Sopenharmony_ci#endif // CX24110_H 49