1 /* SPDX-License-Identifier: GPL-2.0 */ 2 /* 3 * Driver for the MaxLinear MxL5xx family of tuners/demods 4 * 5 * Copyright (C) 2014-2015 Ralph Metzler <rjkm@metzlerbros.de> 6 * Marcus Metzler <mocm@metzlerbros.de> 7 * developed for Digital Devices GmbH 8 * 9 * based on code: 10 * Copyright (c) 2011-2013 MaxLinear, Inc. All rights reserved 11 * which was released under GPL V2 12 * 13 * This program is free software; you can redistribute it and/or 14 * modify it under the terms of the GNU General Public License 15 * version 2, as published by the Free Software Foundation. 16 * 17 * This program is distributed in the hope that it will be useful, 18 * but WITHOUT ANY WARRANTY; without even the implied warranty of 19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 20 * GNU General Public License for more details. 21 */ 22 23 #ifndef _MXL5XX_H_ 24 #define _MXL5XX_H_ 25 26 #include <linux/types.h> 27 #include <linux/i2c.h> 28 29 #include <media/dvb_frontend.h> 30 31 struct mxl5xx_cfg { 32 u8 adr; 33 u8 type; 34 u32 cap; 35 u32 clk; 36 u32 ts_clk; 37 38 u8 *fw; 39 u32 fw_len; 40 41 int (*fw_read)(void *priv, u8 *buf, u32 len); 42 void *fw_priv; 43 }; 44 45 #if IS_REACHABLE(CONFIG_DVB_MXL5XX) 46 47 extern struct dvb_frontend *mxl5xx_attach(struct i2c_adapter *i2c, 48 struct mxl5xx_cfg *cfg, u32 demod, u32 tuner, 49 int (**fn_set_input)(struct dvb_frontend *, int)); 50 51 #else 52 53 static inline struct dvb_frontend *mxl5xx_attach(struct i2c_adapter *i2c, 54 struct mxl5xx_cfg *cfg, u32 demod, u32 tuner, 55 int (**fn_set_input)(struct dvb_frontend *, int)) 56 { 57 pr_warn("%s: driver disabled by Kconfig\n", __func__); 58 return NULL; 59 } 60 61 #endif /* CONFIG_DVB_MXL5XX */ 62 63 #endif /* _MXL5XX_H_ */ 64