Merge tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi
[linux-2.6-block.git] / drivers / media / tuners / tuner-xc2028.h
CommitLineData
0c20e8ca
MCC
1/*
2 * SPDX-License-Identifier: GPL-2.0
3 * tuner-xc2028
6cb45879 4 *
33e53161 5 * Copyright (c) 2007-2008 Mauro Carvalho Chehab (mchehab@infradead.org)
6cb45879
MCC
6 */
7
215b95ba
MCC
8#ifndef __TUNER_XC2028_H__
9#define __TUNER_XC2028_H__
10
fada1935 11#include <media/dvb_frontend.h>
215b95ba 12
de3fe21b 13#define XC2028_DEFAULT_FIRMWARE "xc3028-v27.fw"
5ea7fe48 14#define XC3028L_DEFAULT_FIRMWARE "xc3028L-v36.fw"
de3fe21b 15
66c2d53d 16/* Dmoduler IF (kHz) */
33e53161 17#define XC3028_FE_DEFAULT 0 /* Don't load SCODE */
66c2d53d
MCC
18#define XC3028_FE_LG60 6000
19#define XC3028_FE_ATI638 6380
20#define XC3028_FE_OREN538 5380
21#define XC3028_FE_OREN36 3600
22#define XC3028_FE_TOYOTA388 3880
23#define XC3028_FE_TOYOTA794 7940
24#define XC3028_FE_DIBCOM52 5200
25#define XC3028_FE_ZARLINK456 4560
26#define XC3028_FE_CHINA 5200
b542dfdc 27
0975fc68
MCC
28enum firmware_type {
29 XC2028_AUTO = 0, /* By default, auto-detects */
30 XC2028_D2633,
31 XC2028_D2620,
32};
33
de3fe21b 34struct xc2028_ctrl {
de3fe21b 35 char *fname;
352fae1d 36 int max_len;
e5cc2bf4 37 int msleep;
e0f0b37a 38 unsigned int scode_table;
d74cb25e 39 unsigned int mts :1;
d74cb25e 40 unsigned int input1:1;
3dfefc50
CP
41 unsigned int vhfbw7:1;
42 unsigned int uhfbw8:1;
93b99923 43 unsigned int disable_power_mgmt:1;
2d5024a9 44 unsigned int read_not_reliable:1;
66c2d53d 45 unsigned int demod;
0975fc68 46 enum firmware_type type:2;
de3fe21b
MCC
47};
48
a37b4c9b
ML
49struct xc2028_config {
50 struct i2c_adapter *i2c_adap;
6e6a8b5a 51 u8 i2c_addr;
71a2ee37 52 struct xc2028_ctrl *ctrl;
a37b4c9b
ML
53};
54
6cb45879
MCC
55/* xc2028 commands for callback */
56#define XC2028_TUNER_RESET 0
57#define XC2028_RESET_CLK 1
4d37ece7 58#define XC2028_I2C_FLUSH 2
701672eb 59
9b174527 60#if IS_REACHABLE(CONFIG_MEDIA_TUNER_XC2028)
7972f988
MK
61extern struct dvb_frontend *xc2028_attach(struct dvb_frontend *fe,
62 struct xc2028_config *cfg);
215b95ba 63#else
7972f988
MK
64static inline struct dvb_frontend *xc2028_attach(struct dvb_frontend *fe,
65 struct xc2028_config *cfg)
215b95ba
MCC
66{
67 printk(KERN_INFO "%s: not probed - driver disabled by Kconfig\n",
7e28adb2 68 __func__);
7972f988 69 return NULL;
215b95ba
MCC
70}
71#endif
72
73#endif /* __TUNER_XC2028_H__ */