Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
0002 /*
0003  * xc2028
0004  *
0005  * Copyright (c) 2007-2008 Mauro Carvalho Chehab <mchehab@kernel.org>
0006  */
0007 
0008 #ifndef __TUNER_XC2028_H__
0009 #define __TUNER_XC2028_H__
0010 
0011 #include <media/dvb_frontend.h>
0012 
0013 #define XC2028_DEFAULT_FIRMWARE "xc3028-v27.fw"
0014 #define XC3028L_DEFAULT_FIRMWARE "xc3028L-v36.fw"
0015 
0016 /*      Dmoduler        IF (kHz) */
0017 #define XC3028_FE_DEFAULT   0       /* Don't load SCODE */
0018 #define XC3028_FE_LG60      6000
0019 #define XC3028_FE_ATI638    6380
0020 #define XC3028_FE_OREN538   5380
0021 #define XC3028_FE_OREN36    3600
0022 #define XC3028_FE_TOYOTA388 3880
0023 #define XC3028_FE_TOYOTA794 7940
0024 #define XC3028_FE_DIBCOM52  5200
0025 #define XC3028_FE_ZARLINK456    4560
0026 #define XC3028_FE_CHINA     5200
0027 
0028 enum firmware_type {
0029     XC2028_AUTO = 0,        /* By default, auto-detects */
0030     XC2028_D2633,
0031     XC2028_D2620,
0032 };
0033 
0034 struct xc2028_ctrl {
0035     char            *fname;
0036     int         max_len;
0037     int         msleep;
0038     unsigned int        scode_table;
0039     unsigned int        mts   :1;
0040     unsigned int        input1:1;
0041     unsigned int        vhfbw7:1;
0042     unsigned int        uhfbw8:1;
0043     unsigned int        disable_power_mgmt:1;
0044     unsigned int            read_not_reliable:1;
0045     unsigned int        demod;
0046     enum firmware_type  type:2;
0047 };
0048 
0049 struct xc2028_config {
0050     struct i2c_adapter *i2c_adap;
0051     u8         i2c_addr;
0052     struct xc2028_ctrl *ctrl;
0053 };
0054 
0055 /* xc2028 commands for callback */
0056 #define XC2028_TUNER_RESET  0
0057 #define XC2028_RESET_CLK    1
0058 #define XC2028_I2C_FLUSH    2
0059 
0060 #if IS_REACHABLE(CONFIG_MEDIA_TUNER_XC2028)
0061 extern struct dvb_frontend *xc2028_attach(struct dvb_frontend *fe,
0062                       struct xc2028_config *cfg);
0063 #else
0064 static inline struct dvb_frontend *xc2028_attach(struct dvb_frontend *fe,
0065                          struct xc2028_config *cfg)
0066 {
0067     printk(KERN_INFO "%s: not probed - driver disabled by Kconfig\n",
0068            __func__);
0069     return NULL;
0070 }
0071 #endif
0072 
0073 #endif /* __TUNER_XC2028_H__ */