2018-06-19 14:50:12 -04:00
/* SPDX-License-Identifier: GPL-2.0 */
2018-06-19 14:50:11 -04:00
/*
* Driver for the MaxLinear MxL5xx family of tuners / demods
*
* Copyright ( C ) 2014 - 2015 Ralph Metzler < rjkm @ metzlerbros . de >
* Marcus Metzler < mocm @ metzlerbros . de >
* developed for Digital Devices GmbH
*
* based on code :
* Copyright ( c ) 2011 - 2013 MaxLinear , Inc . All rights reserved
* which was released under GPL V2
*
* This program is free software ; you can redistribute it and / or
* modify it under the terms of the GNU General Public License
* version 2 , as published by the Free Software Foundation .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*/
2017-07-09 15:42:43 -04:00
# ifndef _MXL5XX_H_
# define _MXL5XX_H_
# include <linux/types.h>
# include <linux/i2c.h>
2017-12-28 13:03:51 -05:00
# include <media/dvb_frontend.h>
2017-07-09 15:42:43 -04:00
struct mxl5xx_cfg {
u8 adr ;
u8 type ;
u32 cap ;
u32 clk ;
u32 ts_clk ;
u8 * fw ;
u32 fw_len ;
int ( * fw_read ) ( void * priv , u8 * buf , u32 len ) ;
void * fw_priv ;
} ;
# if IS_REACHABLE(CONFIG_DVB_MXL5XX)
extern struct dvb_frontend * mxl5xx_attach ( struct i2c_adapter * i2c ,
struct mxl5xx_cfg * cfg , u32 demod , u32 tuner ,
int ( * * fn_set_input ) ( struct dvb_frontend * , int ) ) ;
# else
static inline struct dvb_frontend * mxl5xx_attach ( struct i2c_adapter * i2c ,
struct mxl5xx_cfg * cfg , u32 demod , u32 tuner ,
int ( * * fn_set_input ) ( struct dvb_frontend * , int ) )
{
pr_warn ( " %s: driver disabled by Kconfig \n " , __func__ ) ;
return NULL ;
}
# endif /* CONFIG_DVB_MXL5XX */
# endif /* _MXL5XX_H_ */