Commit 846cf85e authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/v4l-dvb

* 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/v4l-dvb:
  V4L/DVB (4751): Fix DBV_FE_CUSTOMISE for card drivers compiled into kernel
  V4L/DVB (4784): [saa7146_i2c] short_delay mode fixed for fast machines
  V4L/DVB (4770): Fix mode switch of Compro Videomate T300
  V4L/DVB (4787): Budget-ci: Inversion setting fixed for Technotrend 1500 T
  V4L/DVB (4786): Pvrusb2: use NULL instead of 0
  V4L/DVB (4785): Budget-ci: Change DEBIADDR_IR to a safer default
  V4L/DVB (4752): DVB: Add DVB_FE_CUSTOMISE support for MT2060
parents 64651309 c5dec9fb
...@@ -217,11 +217,9 @@ static int saa7146_i2c_writeout(struct saa7146_dev *dev, u32* dword, int short_d ...@@ -217,11 +217,9 @@ static int saa7146_i2c_writeout(struct saa7146_dev *dev, u32* dword, int short_d
} }
/* wait until we get a transfer done or error */ /* wait until we get a transfer done or error */
timeout = jiffies + HZ/100 + 1; /* 10ms */ timeout = jiffies + HZ/100 + 1; /* 10ms */
while(1) { /* first read usually delivers bogus results... */
/**
* first read usually delivers bogus results...
*/
saa7146_i2c_status(dev); saa7146_i2c_status(dev);
while(1) {
status = saa7146_i2c_status(dev); status = saa7146_i2c_status(dev);
if ((status & 0x3) != 1) if ((status & 0x3) != 1)
break; break;
...@@ -232,7 +230,7 @@ static int saa7146_i2c_writeout(struct saa7146_dev *dev, u32* dword, int short_d ...@@ -232,7 +230,7 @@ static int saa7146_i2c_writeout(struct saa7146_dev *dev, u32* dword, int short_d
DEB_I2C(("saa7146_i2c_writeout: timed out waiting for end of xfer\n")); DEB_I2C(("saa7146_i2c_writeout: timed out waiting for end of xfer\n"));
return -EIO; return -EIO;
} }
if ((++trial < 20) && short_delay) if (++trial < 50 && short_delay)
udelay(10); udelay(10);
else else
msleep(1); msleep(1);
......
...@@ -26,7 +26,7 @@ config DVB_USB_A800 ...@@ -26,7 +26,7 @@ config DVB_USB_A800
tristate "AVerMedia AverTV DVB-T USB 2.0 (A800)" tristate "AVerMedia AverTV DVB-T USB 2.0 (A800)"
depends on DVB_USB depends on DVB_USB
select DVB_DIB3000MC select DVB_DIB3000MC
select DVB_TUNER_MT2060 select DVB_TUNER_MT2060 if !DVB_FE_CUSTOMISE
help help
Say Y here to support the AVerMedia AverTV DVB-T USB 2.0 (A800) receiver. Say Y here to support the AVerMedia AverTV DVB-T USB 2.0 (A800) receiver.
...@@ -34,7 +34,7 @@ config DVB_USB_DIBUSB_MB ...@@ -34,7 +34,7 @@ config DVB_USB_DIBUSB_MB
tristate "DiBcom USB DVB-T devices (based on the DiB3000M-B) (see help for device list)" tristate "DiBcom USB DVB-T devices (based on the DiB3000M-B) (see help for device list)"
depends on DVB_USB depends on DVB_USB
select DVB_DIB3000MB select DVB_DIB3000MB
select DVB_TUNER_MT2060 select DVB_TUNER_MT2060 if !DVB_FE_CUSTOMISE
help help
Support for USB 1.1 and 2.0 DVB-T receivers based on reference designs made by Support for USB 1.1 and 2.0 DVB-T receivers based on reference designs made by
DiBcom (<http://www.dibcom.fr>) equipped with a DiB3000M-B demodulator. DiBcom (<http://www.dibcom.fr>) equipped with a DiB3000M-B demodulator.
...@@ -55,7 +55,7 @@ config DVB_USB_DIBUSB_MC ...@@ -55,7 +55,7 @@ config DVB_USB_DIBUSB_MC
tristate "DiBcom USB DVB-T devices (based on the DiB3000M-C/P) (see help for device list)" tristate "DiBcom USB DVB-T devices (based on the DiB3000M-C/P) (see help for device list)"
depends on DVB_USB depends on DVB_USB
select DVB_DIB3000MC select DVB_DIB3000MC
select DVB_TUNER_MT2060 select DVB_TUNER_MT2060 if !DVB_FE_CUSTOMISE
help help
Support for USB2.0 DVB-T receivers based on reference designs made by Support for USB2.0 DVB-T receivers based on reference designs made by
DiBcom (<http://www.dibcom.fr>) equipped with a DiB3000M-C/P demodulator. DiBcom (<http://www.dibcom.fr>) equipped with a DiB3000M-C/P demodulator.
...@@ -70,7 +70,7 @@ config DVB_USB_DIB0700 ...@@ -70,7 +70,7 @@ config DVB_USB_DIB0700
tristate "DiBcom DiB0700 USB DVB devices (see help for supported devices)" tristate "DiBcom DiB0700 USB DVB devices (see help for supported devices)"
depends on DVB_USB depends on DVB_USB
select DVB_DIB3000MC select DVB_DIB3000MC
select DVB_TUNER_MT2060 select DVB_TUNER_MT2060 if !DVB_FE_CUSTOMISE
help help
Support for USB2.0/1.1 DVB receivers based on the DiB0700 USB bridge. The Support for USB2.0/1.1 DVB receivers based on the DiB0700 USB bridge. The
USB bridge is also present in devices having the DiB7700 DVB-T-USB USB bridge is also present in devices having the DiB7700 DVB-T-USB
...@@ -87,7 +87,7 @@ config DVB_USB_UMT_010 ...@@ -87,7 +87,7 @@ config DVB_USB_UMT_010
tristate "HanfTek UMT-010 DVB-T USB2.0 support" tristate "HanfTek UMT-010 DVB-T USB2.0 support"
depends on DVB_USB depends on DVB_USB
select DVB_DIB3000MC select DVB_DIB3000MC
select DVB_TUNER_MT2060 select DVB_TUNER_MT2060 if !DVB_FE_CUSTOMISE
help help
Say Y here to support the HanfTek UMT-010 USB2.0 stick-sized DVB-T receiver. Say Y here to support the HanfTek UMT-010 USB2.0 stick-sized DVB-T receiver.
...@@ -153,7 +153,7 @@ config DVB_USB_NOVA_T_USB2 ...@@ -153,7 +153,7 @@ config DVB_USB_NOVA_T_USB2
tristate "Hauppauge WinTV-NOVA-T usb2 DVB-T USB2.0 support" tristate "Hauppauge WinTV-NOVA-T usb2 DVB-T USB2.0 support"
depends on DVB_USB depends on DVB_USB
select DVB_DIB3000MC select DVB_DIB3000MC
select DVB_TUNER_MT2060 select DVB_TUNER_MT2060 if !DVB_FE_CUSTOMISE
help help
Say Y here to support the Hauppauge WinTV-NOVA-T usb2 DVB-T USB2.0 receiver. Say Y here to support the Hauppauge WinTV-NOVA-T usb2 DVB-T USB2.0 receiver.
......
...@@ -276,6 +276,8 @@ config DVB_TDA826X ...@@ -276,6 +276,8 @@ config DVB_TDA826X
config DVB_TUNER_MT2060 config DVB_TUNER_MT2060
tristate "Microtune MT2060 silicon IF tuner" tristate "Microtune MT2060 silicon IF tuner"
depends on I2C
default m if DVB_FE_CUSTOMISE
help help
A driver for the silicon IF tuner MT2060 from Microtune. A driver for the silicon IF tuner MT2060 from Microtune.
......
...@@ -34,7 +34,7 @@ struct bcm3510_config ...@@ -34,7 +34,7 @@ struct bcm3510_config
int (*request_firmware)(struct dvb_frontend* fe, const struct firmware **fw, char* name); int (*request_firmware)(struct dvb_frontend* fe, const struct firmware **fw, char* name);
}; };
#if defined(CONFIG_DVB_BCM3510) || defined(CONFIG_DVB_BCM3510_MODULE) #if defined(CONFIG_DVB_BCM3510) || (defined(CONFIG_DVB_BCM3510_MODULE) && defined(MODULE))
extern struct dvb_frontend* bcm3510_attach(const struct bcm3510_config* config, extern struct dvb_frontend* bcm3510_attach(const struct bcm3510_config* config,
struct i2c_adapter* i2c); struct i2c_adapter* i2c);
#else #else
......
...@@ -31,7 +31,7 @@ struct cx22700_config ...@@ -31,7 +31,7 @@ struct cx22700_config
u8 demod_address; u8 demod_address;
}; };
#if defined(CONFIG_DVB_CX22700) || defined(CONFIG_DVB_CX22700_MODULE) #if defined(CONFIG_DVB_CX22700) || (defined(CONFIG_DVB_CX22700_MODULE) && defined(MODULE))
extern struct dvb_frontend* cx22700_attach(const struct cx22700_config* config, extern struct dvb_frontend* cx22700_attach(const struct cx22700_config* config,
struct i2c_adapter* i2c); struct i2c_adapter* i2c);
#else #else
......
...@@ -41,7 +41,7 @@ struct cx22702_config ...@@ -41,7 +41,7 @@ struct cx22702_config
u8 output_mode; u8 output_mode;
}; };
#if defined(CONFIG_DVB_CX22702) || defined(CONFIG_DVB_CX22702_MODULE) #if defined(CONFIG_DVB_CX22702) || (defined(CONFIG_DVB_CX22702_MODULE) && defined(MODULE))
extern struct dvb_frontend* cx22702_attach(const struct cx22702_config* config, extern struct dvb_frontend* cx22702_attach(const struct cx22702_config* config,
struct i2c_adapter* i2c); struct i2c_adapter* i2c);
#else #else
......
...@@ -41,7 +41,7 @@ static inline int cx24110_pll_write(struct dvb_frontend *fe, u32 val) { ...@@ -41,7 +41,7 @@ static inline int cx24110_pll_write(struct dvb_frontend *fe, u32 val) {
return r; return r;
} }
#if defined(CONFIG_DVB_CX24110) || defined(CONFIG_DVB_CX24110_MODULE) #if defined(CONFIG_DVB_CX24110) || (defined(CONFIG_DVB_CX24110_MODULE) && defined(MODULE))
extern struct dvb_frontend* cx24110_attach(const struct cx24110_config* config, extern struct dvb_frontend* cx24110_attach(const struct cx24110_config* config,
struct i2c_adapter* i2c); struct i2c_adapter* i2c);
#else #else
......
...@@ -35,7 +35,7 @@ struct cx24123_config ...@@ -35,7 +35,7 @@ struct cx24123_config
int lnb_polarity; int lnb_polarity;
}; };
#if defined(CONFIG_DVB_CX24123) || defined(CONFIG_DVB_CX24123_MODULE) #if defined(CONFIG_DVB_CX24123) || (defined(CONFIG_DVB_CX24123_MODULE) && defined(MODULE))
extern struct dvb_frontend* cx24123_attach(const struct cx24123_config* config, extern struct dvb_frontend* cx24123_attach(const struct cx24123_config* config,
struct i2c_adapter* i2c); struct i2c_adapter* i2c);
#else #else
......
...@@ -41,7 +41,7 @@ struct dib_fe_xfer_ops ...@@ -41,7 +41,7 @@ struct dib_fe_xfer_ops
int (*tuner_pass_ctrl)(struct dvb_frontend *fe, int onoff, u8 pll_ctrl); int (*tuner_pass_ctrl)(struct dvb_frontend *fe, int onoff, u8 pll_ctrl);
}; };
#if defined(CONFIG_DVB_DIB3000MB) || defined(CONFIG_DVB_DIB3000MB_MODULE) #if defined(CONFIG_DVB_DIB3000MB) || (defined(CONFIG_DVB_DIB3000MB_MODULE) && defined(MODULE))
extern struct dvb_frontend* dib3000mb_attach(const struct dib3000_config* config, extern struct dvb_frontend* dib3000mb_attach(const struct dib3000_config* config,
struct i2c_adapter* i2c, struct dib_fe_xfer_ops *xfer_ops); struct i2c_adapter* i2c, struct dib_fe_xfer_ops *xfer_ops);
#else #else
......
...@@ -39,7 +39,7 @@ struct dib3000mc_config { ...@@ -39,7 +39,7 @@ struct dib3000mc_config {
#define DEFAULT_DIB3000MC_I2C_ADDRESS 16 #define DEFAULT_DIB3000MC_I2C_ADDRESS 16
#define DEFAULT_DIB3000P_I2C_ADDRESS 24 #define DEFAULT_DIB3000P_I2C_ADDRESS 24
#if defined(CONFIG_DVB_DIB3000MC) || defined(CONFIG_DVB_DIB3000MC_MODULE) #if defined(CONFIG_DVB_DIB3000MC) || (defined(CONFIG_DVB_DIB3000MC_MODULE) && defined(MODULE))
extern struct dvb_frontend * dib3000mc_attach(struct i2c_adapter *i2c_adap, u8 i2c_addr, struct dib3000mc_config *cfg); extern struct dvb_frontend * dib3000mc_attach(struct i2c_adapter *i2c_adap, u8 i2c_addr, struct dib3000mc_config *cfg);
#else #else
static inline struct dvb_frontend * dib3000mc_attach(struct i2c_adapter *i2c_adap, u8 i2c_addr, struct dib3000mc_config *cfg) static inline struct dvb_frontend * dib3000mc_attach(struct i2c_adapter *i2c_adap, u8 i2c_addr, struct dib3000mc_config *cfg)
......
...@@ -39,7 +39,7 @@ ...@@ -39,7 +39,7 @@
#define ISL6421_ISEL1 0x20 #define ISL6421_ISEL1 0x20
#define ISL6421_DCL 0x40 #define ISL6421_DCL 0x40
#if defined(CONFIG_DVB_ISL6421) || defined(CONFIG_DVB_ISL6421_MODULE) #if defined(CONFIG_DVB_ISL6421) || (defined(CONFIG_DVB_ISL6421_MODULE) && defined(MODULE))
/* override_set and override_clear control which system register bits (above) to always set & clear */ /* override_set and override_clear control which system register bits (above) to always set & clear */
extern struct dvb_frontend *isl6421_attach(struct dvb_frontend *fe, struct i2c_adapter *i2c, u8 i2c_addr, extern struct dvb_frontend *isl6421_attach(struct dvb_frontend *fe, struct i2c_adapter *i2c, u8 i2c_addr,
u8 override_set, u8 override_clear); u8 override_set, u8 override_clear);
......
...@@ -31,7 +31,7 @@ struct l64781_config ...@@ -31,7 +31,7 @@ struct l64781_config
u8 demod_address; u8 demod_address;
}; };
#if defined(CONFIG_DVB_L64781) || defined(CONFIG_DVB_L64781_MODULE) #if defined(CONFIG_DVB_L64781) || (defined(CONFIG_DVB_L64781_MODULE) && defined(MODULE))
extern struct dvb_frontend* l64781_attach(const struct l64781_config* config, extern struct dvb_frontend* l64781_attach(const struct l64781_config* config,
struct i2c_adapter* i2c); struct i2c_adapter* i2c);
#else #else
......
...@@ -52,7 +52,7 @@ struct lgdt330x_config ...@@ -52,7 +52,7 @@ struct lgdt330x_config
int clock_polarity_flip; int clock_polarity_flip;
}; };
#if defined(CONFIG_DVB_LGDT330X) || defined(CONFIG_DVB_LGDT330X_MODULE) #if defined(CONFIG_DVB_LGDT330X) || (defined(CONFIG_DVB_LGDT330X_MODULE) && defined(MODULE))
extern struct dvb_frontend* lgdt330x_attach(const struct lgdt330x_config* config, extern struct dvb_frontend* lgdt330x_attach(const struct lgdt330x_config* config,
struct i2c_adapter* i2c); struct i2c_adapter* i2c);
#else #else
......
...@@ -39,7 +39,7 @@ ...@@ -39,7 +39,7 @@
#include <linux/dvb/frontend.h> #include <linux/dvb/frontend.h>
#if defined(CONFIG_DVB_LNBP21) || defined(CONFIG_DVB_LNBP21_MODULE) #if defined(CONFIG_DVB_LNBP21) || (defined(CONFIG_DVB_LNBP21_MODULE) && defined(MODULE))
/* override_set and override_clear control which system register bits (above) to always set & clear */ /* override_set and override_clear control which system register bits (above) to always set & clear */
extern struct dvb_frontend *lnbp21_attach(struct dvb_frontend *fe, struct i2c_adapter *i2c, u8 override_set, u8 override_clear); extern struct dvb_frontend *lnbp21_attach(struct dvb_frontend *fe, struct i2c_adapter *i2c, u8 override_set, u8 override_clear);
#else #else
......
...@@ -30,6 +30,14 @@ struct mt2060_config { ...@@ -30,6 +30,14 @@ struct mt2060_config {
u8 clock_out; /* 0 = off, 1 = CLK/4, 2 = CLK/2, 3 = CLK/1 */ u8 clock_out; /* 0 = off, 1 = CLK/4, 2 = CLK/2, 3 = CLK/1 */
}; };
#if defined(CONFIG_DVB_TUNER_MT2060) || (defined(CONFIG_DVB_TUNER_MT2060_MODULE) && defined(MODULE))
extern struct dvb_frontend * mt2060_attach(struct dvb_frontend *fe, struct i2c_adapter *i2c, struct mt2060_config *cfg, u16 if1); extern struct dvb_frontend * mt2060_attach(struct dvb_frontend *fe, struct i2c_adapter *i2c, struct mt2060_config *cfg, u16 if1);
#else
static inline struct dvb_frontend * mt2060_attach(struct dvb_frontend *fe, struct i2c_adapter *i2c, struct mt2060_config *cfg, u16 if1)
{
printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __FUNCTION__);
return NULL;
}
#endif // CONFIG_DVB_TUNER_MT2060
#endif #endif
...@@ -34,7 +34,7 @@ struct mt312_config ...@@ -34,7 +34,7 @@ struct mt312_config
u8 demod_address; u8 demod_address;
}; };
#if defined(CONFIG_DVB_MT312) || defined(CONFIG_DVB_MT312_MODULE) #if defined(CONFIG_DVB_MT312) || (defined(CONFIG_DVB_MT312_MODULE) && defined(MODULE))
struct dvb_frontend* vp310_mt312_attach(const struct mt312_config* config, struct dvb_frontend* vp310_mt312_attach(const struct mt312_config* config,
struct i2c_adapter* i2c); struct i2c_adapter* i2c);
#else #else
......
...@@ -51,7 +51,7 @@ struct mt352_config ...@@ -51,7 +51,7 @@ struct mt352_config
int (*demod_init)(struct dvb_frontend* fe); int (*demod_init)(struct dvb_frontend* fe);
}; };
#if defined(CONFIG_DVB_MT352) || defined(CONFIG_DVB_MT352_MODULE) #if defined(CONFIG_DVB_MT352) || (defined(CONFIG_DVB_MT352_MODULE) && defined(MODULE))
extern struct dvb_frontend* mt352_attach(const struct mt352_config* config, extern struct dvb_frontend* mt352_attach(const struct mt352_config* config,
struct i2c_adapter* i2c); struct i2c_adapter* i2c);
#else #else
......
...@@ -45,7 +45,7 @@ struct nxt200x_config ...@@ -45,7 +45,7 @@ struct nxt200x_config
int (*set_ts_params)(struct dvb_frontend* fe, int is_punctured); int (*set_ts_params)(struct dvb_frontend* fe, int is_punctured);
}; };
#if defined(CONFIG_DVB_NXT200X) || defined(CONFIG_DVB_NXT200X_MODULE) #if defined(CONFIG_DVB_NXT200X) || (defined(CONFIG_DVB_NXT200X_MODULE) && defined(MODULE))
extern struct dvb_frontend* nxt200x_attach(const struct nxt200x_config* config, extern struct dvb_frontend* nxt200x_attach(const struct nxt200x_config* config,
struct i2c_adapter* i2c); struct i2c_adapter* i2c);
#else #else
......
...@@ -33,7 +33,7 @@ struct nxt6000_config ...@@ -33,7 +33,7 @@ struct nxt6000_config
u8 clock_inversion:1; u8 clock_inversion:1;
}; };
#if defined(CONFIG_DVB_NXT6000) || defined(CONFIG_DVB_NXT6000_MODULE) #if defined(CONFIG_DVB_NXT6000) || (defined(CONFIG_DVB_NXT6000_MODULE) && defined(MODULE))
extern struct dvb_frontend* nxt6000_attach(const struct nxt6000_config* config, extern struct dvb_frontend* nxt6000_attach(const struct nxt6000_config* config,
struct i2c_adapter* i2c); struct i2c_adapter* i2c);
#else #else
......
...@@ -34,7 +34,7 @@ struct or51132_config ...@@ -34,7 +34,7 @@ struct or51132_config
int (*set_ts_params)(struct dvb_frontend* fe, int is_punctured); int (*set_ts_params)(struct dvb_frontend* fe, int is_punctured);
}; };
#if defined(CONFIG_DVB_OR51132) || defined(CONFIG_DVB_OR51132_MODULE) #if defined(CONFIG_DVB_OR51132) || (defined(CONFIG_DVB_OR51132_MODULE) && defined(MODULE))
extern struct dvb_frontend* or51132_attach(const struct or51132_config* config, extern struct dvb_frontend* or51132_attach(const struct or51132_config* config,
struct i2c_adapter* i2c); struct i2c_adapter* i2c);
#else #else
......
...@@ -37,7 +37,7 @@ struct or51211_config ...@@ -37,7 +37,7 @@ struct or51211_config
void (*sleep)(struct dvb_frontend * fe); void (*sleep)(struct dvb_frontend * fe);
}; };
#if defined(CONFIG_DVB_OR51211) || defined(CONFIG_DVB_OR51211_MODULE) #if defined(CONFIG_DVB_OR51211) || (defined(CONFIG_DVB_OR51211_MODULE) && defined(MODULE))
extern struct dvb_frontend* or51211_attach(const struct or51211_config* config, extern struct dvb_frontend* or51211_attach(const struct or51211_config* config,
struct i2c_adapter* i2c); struct i2c_adapter* i2c);
#else #else
......
...@@ -34,7 +34,7 @@ struct s5h1420_config ...@@ -34,7 +34,7 @@ struct s5h1420_config
u8 invert:1; u8 invert:1;
}; };
#if defined(CONFIG_DVB_S5H1420) || defined(CONFIG_DVB_S5H1420_MODULE) #if defined(CONFIG_DVB_S5H1420) || (defined(CONFIG_DVB_S5H1420_MODULE) && defined(MODULE))
extern struct dvb_frontend* s5h1420_attach(const struct s5h1420_config* config, extern struct dvb_frontend* s5h1420_attach(const struct s5h1420_config* config,
struct i2c_adapter* i2c); struct i2c_adapter* i2c);
#else #else
......
...@@ -35,7 +35,7 @@ struct sp8870_config ...@@ -35,7 +35,7 @@ struct sp8870_config
int (*request_firmware)(struct dvb_frontend* fe, const struct firmware **fw, char* name); int (*request_firmware)(struct dvb_frontend* fe, const struct firmware **fw, char* name);
}; };
#if defined(CONFIG_DVB_SP8870) || defined(CONFIG_DVB_SP8870_MODULE) #if defined(CONFIG_DVB_SP8870) || (defined(CONFIG_DVB_SP8870_MODULE) && defined(MODULE))
extern struct dvb_frontend* sp8870_attach(const struct sp8870_config* config, extern struct dvb_frontend* sp8870_attach(const struct sp8870_config* config,
struct i2c_adapter* i2c); struct i2c_adapter* i2c);
#else #else
......
...@@ -17,7 +17,7 @@ struct sp887x_config ...@@ -17,7 +17,7 @@ struct sp887x_config
int (*request_firmware)(struct dvb_frontend* fe, const struct firmware **fw, char* name); int (*request_firmware)(struct dvb_frontend* fe, const struct firmware **fw, char* name);
}; };
#if defined(CONFIG_DVB_SP887X) || defined(CONFIG_DVB_SP887X_MODULE) #if defined(CONFIG_DVB_SP887X) || (defined(CONFIG_DVB_SP887X_MODULE) && defined(MODULE))
extern struct dvb_frontend* sp887x_attach(const struct sp887x_config* config, extern struct dvb_frontend* sp887x_attach(const struct sp887x_config* config,
struct i2c_adapter* i2c); struct i2c_adapter* i2c);
#else #else
......
...@@ -42,7 +42,7 @@ struct stv0297_config ...@@ -42,7 +42,7 @@ struct stv0297_config
u8 stop_during_read:1; u8 stop_during_read:1;
}; };
#if defined(CONFIG_DVB_STV0297) || defined(CONFIG_DVB_STV0297_MODULE) #if defined(CONFIG_DVB_STV0297) || (defined(CONFIG_DVB_STV0297_MODULE) && defined(MODULE))
extern struct dvb_frontend* stv0297_attach(const struct stv0297_config* config, extern struct dvb_frontend* stv0297_attach(const struct stv0297_config* config,
struct i2c_adapter* i2c); struct i2c_adapter* i2c);
#else #else
......
...@@ -89,7 +89,7 @@ struct stv0299_config ...@@ -89,7 +89,7 @@ struct stv0299_config
int (*set_symbol_rate)(struct dvb_frontend* fe, u32 srate, u32 ratio); int (*set_symbol_rate)(struct dvb_frontend* fe, u32 srate, u32 ratio);
}; };
#if defined(CONFIG_DVB_STV0299) || defined(CONFIG_DVB_STV0299_MODULE) #if defined(CONFIG_DVB_STV0299) || (defined(CONFIG_DVB_STV0299_MODULE) && defined(MODULE))
extern struct dvb_frontend* stv0299_attach(const struct stv0299_config* config, extern struct dvb_frontend* stv0299_attach(const struct stv0299_config* config,
struct i2c_adapter* i2c); struct i2c_adapter* i2c);
#else #else
......
...@@ -32,7 +32,7 @@ struct tda10021_config ...@@ -32,7 +32,7 @@ struct tda10021_config
u8 demod_address; u8 demod_address;
}; };
#if defined(CONFIG_DVB_TDA10021) || defined(CONFIG_DVB_TDA10021_MODULE) #if defined(CONFIG_DVB_TDA10021) || (defined(CONFIG_DVB_TDA10021_MODULE) && defined(MODULE))
extern struct dvb_frontend* tda10021_attach(const struct tda10021_config* config, extern struct dvb_frontend* tda10021_attach(const struct tda10021_config* config,
struct i2c_adapter* i2c, u8 pwm); struct i2c_adapter* i2c, u8 pwm);
#else #else
......
...@@ -71,7 +71,7 @@ struct tda1004x_config ...@@ -71,7 +71,7 @@ struct tda1004x_config
int (*request_firmware)(struct dvb_frontend* fe, const struct firmware **fw, char* name); int (*request_firmware)(struct dvb_frontend* fe, const struct firmware **fw, char* name);
}; };
#if defined(CONFIG_DVB_TDA1004X) || defined(CONFIG_DVB_TDA1004X_MODULE) #if defined(CONFIG_DVB_TDA1004X) || (defined(CONFIG_DVB_TDA1004X_MODULE) && defined(MODULE))
extern struct dvb_frontend* tda10045_attach(const struct tda1004x_config* config, extern struct dvb_frontend* tda10045_attach(const struct tda1004x_config* config,
struct i2c_adapter* i2c); struct i2c_adapter* i2c);
......
...@@ -35,7 +35,7 @@ struct tda10086_config ...@@ -35,7 +35,7 @@ struct tda10086_config
u8 invert; u8 invert;
}; };
#if defined(CONFIG_DVB_TDA10086) || defined(CONFIG_DVB_TDA10086_MODULE) #if defined(CONFIG_DVB_TDA10086) || (defined(CONFIG_DVB_TDA10086_MODULE) && defined(MODULE))
extern struct dvb_frontend* tda10086_attach(const struct tda10086_config* config, extern struct dvb_frontend* tda10086_attach(const struct tda10086_config* config,
struct i2c_adapter* i2c); struct i2c_adapter* i2c);
#else #else
......
...@@ -35,7 +35,7 @@ struct tda8083_config ...@@ -35,7 +35,7 @@ struct tda8083_config
u8 demod_address; u8 demod_address;
}; };
#if defined(CONFIG_DVB_TDA8083) || defined(CONFIG_DVB_TDA8083_MODULE) #if defined(CONFIG_DVB_TDA8083) || (defined(CONFIG_DVB_TDA8083_MODULE) && defined(MODULE))
extern struct dvb_frontend* tda8083_attach(const struct tda8083_config* config, extern struct dvb_frontend* tda8083_attach(const struct tda8083_config* config,
struct i2c_adapter* i2c); struct i2c_adapter* i2c);
#else #else
......
...@@ -35,7 +35,7 @@ ...@@ -35,7 +35,7 @@
* @param has_loopthrough Set to 1 if the card has a loopthrough RF connector. * @param has_loopthrough Set to 1 if the card has a loopthrough RF connector.
* @return FE pointer on success, NULL on failure. * @return FE pointer on success, NULL on failure.
*/ */
#if defined(CONFIG_DVB_TDA826X) || defined(CONFIG_DVB_TDA826X_MODULE) #if defined(CONFIG_DVB_TDA826X) || (defined(CONFIG_DVB_TDA826X_MODULE) && defined(MODULE))
extern struct dvb_frontend* tda826x_attach(struct dvb_frontend *fe, int addr, extern struct dvb_frontend* tda826x_attach(struct dvb_frontend *fe, int addr,
struct i2c_adapter *i2c, struct i2c_adapter *i2c,
int has_loopthrough); int has_loopthrough);
......
...@@ -34,7 +34,7 @@ ...@@ -34,7 +34,7 @@
#include <linux/i2c.h> #include <linux/i2c.h>
#include "dvb_frontend.h" #include "dvb_frontend.h"
#if defined(CONFIG_DVB_TUA6100) || defined(CONFIG_DVB_TUA6100_MODULE) #if defined(CONFIG_DVB_TUA6100) || (defined(CONFIG_DVB_TUA6100_MODULE) && defined(MODULE))
extern struct dvb_frontend *tua6100_attach(struct dvb_frontend *fe, int addr, struct i2c_adapter *i2c); extern struct dvb_frontend *tua6100_attach(struct dvb_frontend *fe, int addr, struct i2c_adapter *i2c);
#else #else
static inline struct dvb_frontend* tua6100_attach(struct dvb_frontend *fe, int addr, struct i2c_adapter *i2c) static inline struct dvb_frontend* tua6100_attach(struct dvb_frontend *fe, int addr, struct i2c_adapter *i2c)
......
...@@ -41,7 +41,7 @@ struct ves1820_config ...@@ -41,7 +41,7 @@ struct ves1820_config
u8 selagc:1; u8 selagc:1;
}; };
#if defined(CONFIG_DVB_VES1820) || defined(CONFIG_DVB_VES1820_MODULE) #if defined(CONFIG_DVB_VES1820) || (defined(CONFIG_DVB_VES1820_MODULE) && defined(MODULE))
extern struct dvb_frontend* ves1820_attach(const struct ves1820_config* config, extern struct dvb_frontend* ves1820_attach(const struct ves1820_config* config,
struct i2c_adapter* i2c, u8 pwm); struct i2c_adapter* i2c, u8 pwm);
#else #else
......
...@@ -40,7 +40,7 @@ struct ves1x93_config ...@@ -40,7 +40,7 @@ struct ves1x93_config
u8 invert_pwm:1; u8 invert_pwm:1;
}; };
#if defined(CONFIG_DVB_VES1X93) || defined(CONFIG_DVB_VES1X93_MODULE) #if defined(CONFIG_DVB_VES1X93) || (defined(CONFIG_DVB_VES1X93_MODULE) && defined(MODULE))
extern struct dvb_frontend* ves1x93_attach(const struct ves1x93_config* config, extern struct dvb_frontend* ves1x93_attach(const struct ves1x93_config* config,
struct i2c_adapter* i2c); struct i2c_adapter* i2c);
#else #else
......
...@@ -36,7 +36,7 @@ struct zl10353_config ...@@ -36,7 +36,7 @@ struct zl10353_config
int parallel_ts; int parallel_ts;
}; };
#if defined(CONFIG_DVB_ZL10353) || defined(CONFIG_DVB_ZL10353_MODULE) #if defined(CONFIG_DVB_ZL10353) || (defined(CONFIG_DVB_ZL10353_MODULE) && defined(MODULE))
extern struct dvb_frontend* zl10353_attach(const struct zl10353_config *config, extern struct dvb_frontend* zl10353_attach(const struct zl10353_config *config,
struct i2c_adapter *i2c); struct i2c_adapter *i2c);
#else #else
......
...@@ -46,7 +46,14 @@ ...@@ -46,7 +46,14 @@
#include "bsbe1.h" #include "bsbe1.h"
#include "bsru6.h" #include "bsru6.h"
#define DEBIADDR_IR 0x1234 /*
* Regarding DEBIADDR_IR:
* Some CI modules hang if random addresses are read.
* Using address 0x4000 for the IR read means that we
* use the same address as for CI version, which should
* be a safe default.
*/
#define DEBIADDR_IR 0x4000
#define DEBIADDR_CICONTROL 0x0000 #define DEBIADDR_CICONTROL 0x0000
#define DEBIADDR_CIVERSION 0x4000 #define DEBIADDR_CIVERSION 0x4000
#define DEBIADDR_IO 0x1000 #define DEBIADDR_IO 0x1000
...@@ -1028,6 +1035,7 @@ static void frontend_init(struct budget_ci *budget_ci) ...@@ -1028,6 +1035,7 @@ static void frontend_init(struct budget_ci *budget_ci)
case 0x1012: // TT DVB-T CI budget (tda10046/Philips tdm1316l(tda6651tt)) case 0x1012: // TT DVB-T CI budget (tda10046/Philips tdm1316l(tda6651tt))
budget_ci->tuner_pll_address = 0x60; budget_ci->tuner_pll_address = 0x60;
philips_tdm1316l_config.invert = 1;
budget_ci->budget.dvb_frontend = budget_ci->budget.dvb_frontend =
dvb_attach(tda10046_attach, &philips_tdm1316l_config, &budget_ci->budget.i2c_adap); dvb_attach(tda10046_attach, &philips_tdm1316l_config, &budget_ci->budget.i2c_adap);
if (budget_ci->budget.dvb_frontend) { if (budget_ci->budget.dvb_frontend) {
......
...@@ -221,7 +221,7 @@ static unsigned int decoder_describe(struct pvr2_v4l_cx2584x *ctxt, ...@@ -221,7 +221,7 @@ static unsigned int decoder_describe(struct pvr2_v4l_cx2584x *ctxt,
static void decoder_reset(struct pvr2_v4l_cx2584x *ctxt) static void decoder_reset(struct pvr2_v4l_cx2584x *ctxt)
{ {
int ret; int ret;
ret = pvr2_i2c_client_cmd(ctxt->client,VIDIOC_INT_RESET,0); ret = pvr2_i2c_client_cmd(ctxt->client,VIDIOC_INT_RESET,NULL);
pvr2_trace(PVR2_TRACE_CHIPS,"i2c cx25840 decoder_reset (ret=%d)",ret); pvr2_trace(PVR2_TRACE_CHIPS,"i2c cx25840 decoder_reset (ret=%d)",ret);
} }
......
...@@ -711,8 +711,8 @@ static void pvr2_v4l2_dev_destroy(struct pvr2_v4l2_dev *dip) ...@@ -711,8 +711,8 @@ static void pvr2_v4l2_dev_destroy(struct pvr2_v4l2_dev *dip)
dip->devbase.minor,pvr2_config_get_name(dip->config)); dip->devbase.minor,pvr2_config_get_name(dip->config));
/* Paranoia */ /* Paranoia */
dip->v4lp = 0; dip->v4lp = NULL;
dip->stream = 0; dip->stream = NULL;
/* Actual deallocation happens later when all internal references /* Actual deallocation happens later when all internal references
are gone. */ are gone. */
...@@ -1076,7 +1076,7 @@ struct pvr2_v4l2 *pvr2_v4l2_create(struct pvr2_context *mnp) ...@@ -1076,7 +1076,7 @@ struct pvr2_v4l2 *pvr2_v4l2_create(struct pvr2_context *mnp)
vp->vdev = kmalloc(sizeof(*vp->vdev),GFP_KERNEL); vp->vdev = kmalloc(sizeof(*vp->vdev),GFP_KERNEL);
if (!vp->vdev) { if (!vp->vdev) {
kfree(vp); kfree(vp);
return 0; return NULL;
} }
memset(vp->vdev,0,sizeof(*vp->vdev)); memset(vp->vdev,0,sizeof(*vp->vdev));
pvr2_channel_init(&vp->channel,mnp); pvr2_channel_init(&vp->channel,mnp);
......
...@@ -1147,6 +1147,8 @@ static int dvb_init(struct saa7134_dev *dev) ...@@ -1147,6 +1147,8 @@ static int dvb_init(struct saa7134_dev *dev)
&philips_europa_config, &philips_europa_config,
&dev->i2c_adap); &dev->i2c_adap);
if (dev->dvb.frontend) { if (dev->dvb.frontend) {
dev->original_demod_sleep = dev->dvb.frontend->ops.sleep;
dev->dvb.frontend->ops.sleep = philips_europa_demod_sleep;
dev->dvb.frontend->ops.tuner_ops.init = philips_europa_tuner_init; dev->dvb.frontend->ops.tuner_ops.init = philips_europa_tuner_init;
dev->dvb.frontend->ops.tuner_ops.sleep = philips_europa_tuner_sleep; dev->dvb.frontend->ops.tuner_ops.sleep = philips_europa_tuner_sleep;
dev->dvb.frontend->ops.tuner_ops.set_params = philips_td1316_tuner_set_params; dev->dvb.frontend->ops.tuner_ops.set_params = philips_td1316_tuner_set_params;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment