Commit 102a342b authored by Andrew de Quincey's avatar Andrew de Quincey Committed by Mauro Carvalho Chehab

V4L/DVB (4387): Add Kconfig infrastructure for dvb_attach

Allow it to be en/disabled
Disable it in < 2.6.17 due to symbol_xxx() bug
Signed-off-by: default avatarAndrew de Quincey <adq_dvb@lidskialf.net>
Acked-by: default avatarMichael Krufky <mkrufky@linuxtv.org>
Acked-by: default avatarTrent Piepho <xyzzy@speakeasy.org>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@infradead.org>
parent 2bfe031d
...@@ -1716,8 +1716,10 @@ static void dst_release(struct dvb_frontend *fe) ...@@ -1716,8 +1716,10 @@ static void dst_release(struct dvb_frontend *fe)
{ {
struct dst_state *state = fe->demodulator_priv; struct dst_state *state = fe->demodulator_priv;
#ifdef CONFIG_DVB_CORE_ATTACH
if (state->dst_hw_cap & DST_TYPE_HAS_CA) if (state->dst_hw_cap & DST_TYPE_HAS_CA)
symbol_put(dst_ca_attach); symbol_put(dst_ca_attach);
#endif
kfree(state); kfree(state);
} }
......
...@@ -9,3 +9,14 @@ config DVB_CORE ...@@ -9,3 +9,14 @@ config DVB_CORE
in-kernel drivers will select this automatically if needed. in-kernel drivers will select this automatically if needed.
If unsure say N. If unsure say N.
config DVB_CORE_ATTACH
bool "Load and attach frontend modules as needed"
depends on DVB_CORE
depends on MODULES
help
Remove the static dependency of DVB card drivers on all
frontend modules for all possible card variants. Instead,
allow the card drivers to only load the frontend modules
they require. This saves several KBytes of memory.
If unsure say Y.
...@@ -86,10 +86,10 @@ config DVB_USB_UMT_010 ...@@ -86,10 +86,10 @@ config DVB_USB_UMT_010
config DVB_USB_CXUSB config DVB_USB_CXUSB
tristate "Conexant USB2.0 hybrid reference design support" tristate "Conexant USB2.0 hybrid reference design support"
depends on DVB_USB depends on DVB_USB
select DVB_CX22702 select DVB_CX22702 if !DVB_FE_CUSTOMISE
select DVB_LGDT330X select DVB_LGDT330X if !DVB_FE_CUSTOMISE
select DVB_MT352 select DVB_MT352 if !DVB_FE_CUSTOMISE
select DVB_ZL10353 select DVB_ZL10353 if !DVB_FE_CUSTOMISE
help help
Say Y here to support the Conexant USB2.0 hybrid reference design. Say Y here to support the Conexant USB2.0 hybrid reference design.
Currently, only DVB and ATSC modes are supported, analog mode Currently, only DVB and ATSC modes are supported, analog mode
...@@ -101,8 +101,8 @@ config DVB_USB_CXUSB ...@@ -101,8 +101,8 @@ config DVB_USB_CXUSB
config DVB_USB_DIGITV config DVB_USB_DIGITV
tristate "Nebula Electronics uDigiTV DVB-T USB2.0 support" tristate "Nebula Electronics uDigiTV DVB-T USB2.0 support"
depends on DVB_USB depends on DVB_USB
select DVB_NXT6000 select DVB_NXT6000 if !DVB_FE_CUSTOMISE
select DVB_MT352 select DVB_MT352 if !DVB_FE_CUSTOMISE
help help
Say Y here to support the Nebula Electronics uDigitV USB2.0 DVB-T receiver. Say Y here to support the Nebula Electronics uDigitV USB2.0 DVB-T receiver.
......
...@@ -34,7 +34,16 @@ struct bcm3510_config ...@@ -34,7 +34,16 @@ 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)
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
static inline struct dvb_frontend* bcm3510_attach(const struct bcm3510_config* config,
struct i2c_adapter* i2c)
{
printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __FUNCTION__);
return NULL;
}
#endif // CONFIG_DVB_BCM3510
#endif #endif
...@@ -31,7 +31,16 @@ struct cx22700_config ...@@ -31,7 +31,16 @@ struct cx22700_config
u8 demod_address; u8 demod_address;
}; };
#if defined(CONFIG_DVB_CX22700) || defined(CONFIG_DVB_CX22700_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
static inline struct dvb_frontend* cx22700_attach(const struct cx22700_config* config,
struct i2c_adapter* i2c)
{
printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __FUNCTION__);
return NULL;
}
#endif // CONFIG_DVB_CX22700
#endif // CX22700_H #endif // CX22700_H
...@@ -41,7 +41,16 @@ struct cx22702_config ...@@ -41,7 +41,16 @@ struct cx22702_config
u8 output_mode; u8 output_mode;
}; };
#if defined(CONFIG_DVB_CX22702) || defined(CONFIG_DVB_CX22702_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
static inline struct dvb_frontend* cx22702_attach(const struct cx22702_config* config,
struct i2c_adapter* i2c)
{
printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __FUNCTION__);
return NULL;
}
#endif // CONFIG_DVB_CX22702
#endif // CX22702_H #endif // CX22702_H
...@@ -33,9 +33,6 @@ struct cx24110_config ...@@ -33,9 +33,6 @@ struct cx24110_config
u8 demod_address; u8 demod_address;
}; };
extern struct dvb_frontend* cx24110_attach(const struct cx24110_config* config,
struct i2c_adapter* i2c);
static inline int cx24110_pll_write(struct dvb_frontend *fe, u32 val) { static inline int cx24110_pll_write(struct dvb_frontend *fe, u32 val) {
int r = 0; int r = 0;
u8 buf[] = {(u8) (val>>24), (u8) (val>>16), (u8) (val>>8)}; u8 buf[] = {(u8) (val>>24), (u8) (val>>16), (u8) (val>>8)};
...@@ -44,4 +41,16 @@ static inline int cx24110_pll_write(struct dvb_frontend *fe, u32 val) { ...@@ -44,4 +41,16 @@ 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)
extern struct dvb_frontend* cx24110_attach(const struct cx24110_config* config,
struct i2c_adapter* i2c);
#else
static inline struct dvb_frontend* cx24110_attach(const struct cx24110_config* config,
struct i2c_adapter* i2c)
{
printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __FUNCTION__);
return NULL;
}
#endif // CONFIG_DVB_CX24110
#endif // CX24110_H #endif // CX24110_H
...@@ -32,7 +32,16 @@ struct cx24123_config ...@@ -32,7 +32,16 @@ struct cx24123_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_CX24123) || defined(CONFIG_DVB_CX24123_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
static inline struct dvb_frontend* cx24123_attach(const struct cx24123_config* config,
struct i2c_adapter* i2c)
{
printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __FUNCTION__);
return NULL;
}
#endif // CONFIG_DVB_CX24123
#endif /* CX24123_H */ #endif /* CX24123_H */
...@@ -41,9 +41,28 @@ struct dib_fe_xfer_ops ...@@ -41,9 +41,28 @@ 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)
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
static inline struct dvb_frontend* dib3000mb_attach(const struct dib3000_config* config,
struct i2c_adapter* i2c, struct dib_fe_xfer_ops *xfer_ops)
{
printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __FUNCTION__);
return NULL;
}
#endif // CONFIG_DVB_DIB3000MB
#if defined(CONFIG_DVB_DIB3000MC) || defined(CONFIG_DVB_DIB3000MC_MODULE)
extern struct dvb_frontend* dib3000mc_attach(const struct dib3000_config* config, extern struct dvb_frontend* dib3000mc_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
static inline struct dvb_frontend* dib3000mc_attach(const struct dib3000_config* config,
struct i2c_adapter* i2c, struct dib_fe_xfer_ops *xfer_ops)
{
printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __FUNCTION__);
return NULL;
}
#endif // CONFIG_DVB_DIB3000MC
#endif // DIB3000_H #endif // DIB3000_H
...@@ -39,8 +39,17 @@ ...@@ -39,8 +39,17 @@
#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)
/* 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);
#else
static inline struct dvb_frontend *isl6421_attach(struct dvb_frontend *fe, struct i2c_adapter *i2c, u8 i2c_addr,
u8 override_set, u8 override_clear)
{
printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __FUNCTION__);
return NULL;
}
#endif // CONFIG_DVB_ISL6421
#endif #endif
...@@ -31,8 +31,16 @@ struct l64781_config ...@@ -31,8 +31,16 @@ struct l64781_config
u8 demod_address; u8 demod_address;
}; };
#if defined(CONFIG_DVB_L64781) || defined(CONFIG_DVB_L64781_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
static inline struct dvb_frontend* l64781_attach(const struct l64781_config* config,
struct i2c_adapter* i2c)
{
printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __FUNCTION__);
return NULL;
}
#endif // CONFIG_DVB_L64781
#endif // L64781_H #endif // L64781_H
...@@ -52,8 +52,17 @@ struct lgdt330x_config ...@@ -52,8 +52,17 @@ struct lgdt330x_config
int clock_polarity_flip; int clock_polarity_flip;
}; };
#if defined(CONFIG_DVB_LGDT330X) || defined(CONFIG_DVB_LGDT330X_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
static inline struct dvb_frontend* lgdt330x_attach(const struct lgdt330x_config* config,
struct i2c_adapter* i2c)
{
printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __FUNCTION__);
return NULL;
}
#endif // CONFIG_DVB_LGDT330X
#endif /* LGDT330X_H */ #endif /* LGDT330X_H */
......
...@@ -39,7 +39,15 @@ ...@@ -39,7 +39,15 @@
#include <linux/dvb/frontend.h> #include <linux/dvb/frontend.h>
#if defined(CONFIG_DVB_LNBP21) || defined(CONFIG_DVB_LNBP21_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
static inline struct dvb_frontend *lnbp21_attach(struct dvb_frontend *fe, struct i2c_adapter *i2c, u8 override_set, u8 override_clear)
{
printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __FUNCTION__);
return NULL;
}
#endif // CONFIG_DVB_LNBP21
#endif #endif // _LNBP21_H
...@@ -34,8 +34,16 @@ struct mt312_config ...@@ -34,8 +34,16 @@ struct mt312_config
u8 demod_address; u8 demod_address;
}; };
#if defined(CONFIG_DVB_MT312) || defined(CONFIG_DVB_MT312_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
static inline struct dvb_frontend* vp310_mt312_attach(const struct mt312_config* config,
struct i2c_adapter* i2c)
{
printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __FUNCTION__);
return NULL;
}
#endif // CONFIG_DVB_MT312
#endif // MT312_H #endif // MT312_H
...@@ -51,8 +51,17 @@ struct mt352_config ...@@ -51,8 +51,17 @@ 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)
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
static inline struct dvb_frontend* mt352_attach(const struct mt352_config* config,
struct i2c_adapter* i2c)
{
printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __FUNCTION__);
return NULL;
}
#endif // CONFIG_DVB_MT352
static inline int mt352_write(struct dvb_frontend *fe, u8 *buf, int len) { static inline int mt352_write(struct dvb_frontend *fe, u8 *buf, int len) {
int r = 0; int r = 0;
......
...@@ -45,8 +45,17 @@ struct nxt200x_config ...@@ -45,8 +45,17 @@ 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)
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
static inline struct dvb_frontend* nxt200x_attach(const struct nxt200x_config* config,
struct i2c_adapter* i2c)
{
printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __FUNCTION__);
return NULL;
}
#endif // CONFIG_DVB_NXT200X
#endif /* NXT200X_H */ #endif /* NXT200X_H */
......
...@@ -33,7 +33,16 @@ struct nxt6000_config ...@@ -33,7 +33,16 @@ struct nxt6000_config
u8 clock_inversion:1; u8 clock_inversion:1;
}; };
#if defined(CONFIG_DVB_NXT6000) || defined(CONFIG_DVB_NXT6000_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
static inline struct dvb_frontend* nxt6000_attach(const struct nxt6000_config* config,
struct i2c_adapter* i2c)
{
printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __FUNCTION__);
return NULL;
}
#endif // CONFIG_DVB_NXT6000
#endif // NXT6000_H #endif // NXT6000_H
...@@ -34,8 +34,17 @@ struct or51132_config ...@@ -34,8 +34,17 @@ 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)
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
static inline struct dvb_frontend* or51132_attach(const struct or51132_config* config,
struct i2c_adapter* i2c)
{
printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __FUNCTION__);
return NULL;
}
#endif // CONFIG_DVB_OR51132
#endif // OR51132_H #endif // OR51132_H
......
...@@ -37,8 +37,17 @@ struct or51211_config ...@@ -37,8 +37,17 @@ 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)
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
static inline struct dvb_frontend* or51211_attach(const struct or51211_config* config,
struct i2c_adapter* i2c)
{
printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __FUNCTION__);
return NULL;
}
#endif // CONFIG_DVB_OR51211
#endif // OR51211_H #endif // OR51211_H
...@@ -34,7 +34,16 @@ struct s5h1420_config ...@@ -34,7 +34,16 @@ struct s5h1420_config
u8 invert:1; u8 invert:1;
}; };
#if defined(CONFIG_DVB_S5H1420) || defined(CONFIG_DVB_S5H1420_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
static inline struct dvb_frontend* s5h1420_attach(const struct s5h1420_config* config,
struct i2c_adapter* i2c)
{
printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __FUNCTION__);
return NULL;
}
#endif // CONFIG_DVB_S5H1420
#endif // S5H1420_H #endif // S5H1420_H
...@@ -35,7 +35,16 @@ struct sp8870_config ...@@ -35,7 +35,16 @@ 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)
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
static inline struct dvb_frontend* sp8870_attach(const struct sp8870_config* config,
struct i2c_adapter* i2c)
{
printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __FUNCTION__);
return NULL;
}
#endif // CONFIG_DVB_SP8870
#endif // SP8870_H #endif // SP8870_H
...@@ -17,7 +17,16 @@ struct sp887x_config ...@@ -17,7 +17,16 @@ 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)
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
static inline struct dvb_frontend* sp887x_attach(const struct sp887x_config* config,
struct i2c_adapter* i2c)
{
printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __FUNCTION__);
return NULL;
}
#endif // CONFIG_DVB_SP887X
#endif // SP887X_H #endif // SP887X_H
...@@ -42,7 +42,16 @@ struct stv0297_config ...@@ -42,7 +42,16 @@ struct stv0297_config
u8 stop_during_read:1; u8 stop_during_read:1;
}; };
#if defined(CONFIG_DVB_STV0297) || defined(CONFIG_DVB_STV0297_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
static inline struct dvb_frontend* stv0297_attach(const struct stv0297_config* config,
struct i2c_adapter* i2c)
{
printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __FUNCTION__);
return NULL;
}
#endif // CONFIG_DVB_STV0297
#endif // STV0297_H #endif // STV0297_H
...@@ -89,8 +89,17 @@ struct stv0299_config ...@@ -89,8 +89,17 @@ 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)
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
static inline struct dvb_frontend* stv0299_attach(const struct stv0299_config* config,
struct i2c_adapter* i2c)
{
printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __FUNCTION__);
return NULL;
}
#endif // CONFIG_DVB_STV0299
static inline int stv0299_writereg(struct dvb_frontend *fe, u8 reg, u8 val) { static inline int stv0299_writereg(struct dvb_frontend *fe, u8 reg, u8 val) {
int r = 0; int r = 0;
......
...@@ -32,8 +32,17 @@ struct tda10021_config ...@@ -32,8 +32,17 @@ struct tda10021_config
u8 demod_address; u8 demod_address;
}; };
#if defined(CONFIG_DVB_TDA10021) || defined(CONFIG_DVB_TDA10021_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
static inline struct dvb_frontend* tda10021_attach(const struct tda10021_config* config,
struct i2c_adapter* i2c, u8 pwm)
{
printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __FUNCTION__);
return NULL;
}
#endif // CONFIG_DVB_TDA10021
static inline int tda10021_writereg(struct dvb_frontend *fe, u8 reg, u8 val) { static inline int tda10021_writereg(struct dvb_frontend *fe, u8 reg, u8 val) {
int r = 0; int r = 0;
......
...@@ -71,11 +71,26 @@ struct tda1004x_config ...@@ -71,11 +71,26 @@ 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)
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);
extern struct dvb_frontend* tda10046_attach(const struct tda1004x_config* config, extern struct dvb_frontend* tda10046_attach(const struct tda1004x_config* config,
struct i2c_adapter* i2c); struct i2c_adapter* i2c);
#else
static inline struct dvb_frontend* tda10045_attach(const struct tda1004x_config* config,
struct i2c_adapter* i2c)
{
printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __FUNCTION__);
return NULL;
}
static inline struct dvb_frontend* tda10046_attach(const struct tda1004x_config* config,
struct i2c_adapter* i2c)
{
printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __FUNCTION__);
return NULL;
}
#endif // CONFIG_DVB_TDA1004X
static inline int tda1004x_writereg(struct dvb_frontend *fe, u8 reg, u8 val) { static inline int tda1004x_writereg(struct dvb_frontend *fe, u8 reg, u8 val) {
int r = 0; int r = 0;
......
...@@ -35,7 +35,16 @@ struct tda8083_config ...@@ -35,7 +35,16 @@ struct tda8083_config
u8 demod_address; u8 demod_address;
}; };
#if defined(CONFIG_DVB_TDA8083) || defined(CONFIG_DVB_TDA8083_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
static inline struct dvb_frontend* tda8083_attach(const struct tda8083_config* config,
struct i2c_adapter* i2c)
{
printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __FUNCTION__);
return NULL;
}
#endif // CONFIG_DVB_TDA8083
#endif // TDA8083_H #endif // TDA8083_H
...@@ -41,7 +41,16 @@ struct ves1820_config ...@@ -41,7 +41,16 @@ struct ves1820_config
u8 selagc:1; u8 selagc:1;
}; };
#if defined(CONFIG_DVB_VES1820) || defined(CONFIG_DVB_VES1820_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
static inline struct dvb_frontend* ves1820_attach(const struct ves1820_config* config,
struct i2c_adapter* i2c, u8 pwm)
{
printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __FUNCTION__);
return NULL;
}
#endif // CONFIG_DVB_VES1820
#endif // VES1820_H #endif // VES1820_H
...@@ -40,7 +40,16 @@ struct ves1x93_config ...@@ -40,7 +40,16 @@ struct ves1x93_config
u8 invert_pwm:1; u8 invert_pwm:1;
}; };
#if defined(CONFIG_DVB_VES1X93) || defined(CONFIG_DVB_VES1X93_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
static inline struct dvb_frontend* ves1x93_attach(const struct ves1x93_config* config,
struct i2c_adapter* i2c)
{
printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __FUNCTION__);
return NULL;
}
#endif // CONFIG_DVB_VES1X93
#endif // VES1X93_H #endif // VES1X93_H
...@@ -33,7 +33,16 @@ struct zl10353_config ...@@ -33,7 +33,16 @@ struct zl10353_config
int no_tuner; int no_tuner;
}; };
#if defined(CONFIG_DVB_ZL10353) || defined(CONFIG_DVB_ZL10353_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
static inline struct dvb_frontend* zl10353_attach(const struct zl10353_config *config,
struct i2c_adapter *i2c)
{
printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __FUNCTION__);
return NULL;
}
#endif // CONFIG_DVB_ZL10353
#endif /* ZL10353_H */ #endif /* ZL10353_H */
config VIDEO_CX88_VP3054
tristate
depends on VIDEO_CX88_DVB && DVB_MT352
config VIDEO_CX88 config VIDEO_CX88
tristate "Conexant 2388x (bt878 successor) support" tristate "Conexant 2388x (bt878 successor) support"
depends on VIDEO_DEV && PCI && I2C depends on VIDEO_DEV && PCI && I2C
...@@ -52,6 +48,14 @@ config VIDEO_CX88_DVB ...@@ -52,6 +48,14 @@ config VIDEO_CX88_DVB
depends on VIDEO_CX88 && DVB_CORE depends on VIDEO_CX88 && DVB_CORE
select VIDEO_BUF_DVB select VIDEO_BUF_DVB
select DVB_PLL select DVB_PLL
select DVB_MT352 if !DVB_FE_CUSTOMISE
select DVB_ZL10353 if !DVB_FE_CUSTOMISE
select DVB_OR51132 if !DVB_FE_CUSTOMISE
select DVB_CX22702 if !DVB_FE_CUSTOMISE
select DVB_LGDT330X if !DVB_FE_CUSTOMISE
select DVB_NXT200X if !DVB_FE_CUSTOMISE
select DVB_CX24123 if !DVB_FE_CUSTOMISE
select DVB_ISL6421 if !DVB_FE_CUSTOMISE
---help--- ---help---
This adds support for DVB/ATSC cards based on the This adds support for DVB/ATSC cards based on the
Conexant 2388x chip. Conexant 2388x chip.
...@@ -59,101 +63,12 @@ config VIDEO_CX88_DVB ...@@ -59,101 +63,12 @@ config VIDEO_CX88_DVB
To compile this driver as a module, choose M here: the To compile this driver as a module, choose M here: the
module will be called cx88-dvb. module will be called cx88-dvb.
You must also select one or more DVB/ATSC demodulators. config VIDEO_CX88_VP3054
If you are unsure which you need, choose all of them. tristate "VP-3054 Secondary I2C Bus Support"
default m
config VIDEO_CX88_DVB_ALL_FRONTENDS depends on VIDEO_CX88_DVB && DVB_MT352
bool "Build all supported frontends for cx2388x based TV cards"
default y
depends on VIDEO_CX88_DVB
select DVB_MT352
select VIDEO_CX88_VP3054
select DVB_ZL10353
select DVB_OR51132
select DVB_CX22702
select DVB_LGDT330X
select DVB_NXT200X
select DVB_CX24123
select DVB_ISL6421
---help---
This builds cx88-dvb with all currently supported frontend
demodulators. If you wish to tweak your configuration, and
only include support for the hardware that you need, choose N here.
If you are unsure, choose Y.
config VIDEO_CX88_DVB_MT352
bool "Zarlink MT352 DVB-T Support"
default y
depends on VIDEO_CX88_DVB && !VIDEO_CX88_DVB_ALL_FRONTENDS
select DVB_MT352
---help---
This adds DVB-T support for cards based on the
Connexant 2388x chip and the MT352 demodulator.
config VIDEO_CX88_DVB_VP3054
bool "VP-3054 Secondary I2C Bus Support"
default y
depends on VIDEO_CX88_DVB_MT352
select VIDEO_CX88_VP3054
---help--- ---help---
This adds DVB-T support for cards based on the This adds DVB-T support for cards based on the
Connexant 2388x chip and the MT352 demodulator, Connexant 2388x chip and the MT352 demodulator,
which also require support for the VP-3054 which also require support for the VP-3054
Secondary I2C bus, such at DNTV Live! DVB-T Pro. Secondary I2C bus, such at DNTV Live! DVB-T Pro.
config VIDEO_CX88_DVB_ZL10353
bool "Zarlink ZL10353 DVB-T Support"
default y
depends on VIDEO_CX88_DVB && !VIDEO_CX88_DVB_ALL_FRONTENDS
select DVB_ZL10353
---help---
This adds DVB-T support for cards based on the
Connexant 2388x chip and the ZL10353 demodulator,
successor to the Zarlink MT352.
config VIDEO_CX88_DVB_OR51132
bool "OR51132 ATSC Support"
default y
depends on VIDEO_CX88_DVB && !VIDEO_CX88_DVB_ALL_FRONTENDS
select DVB_OR51132
---help---
This adds ATSC 8VSB and QAM64/256 support for cards based on the
Connexant 2388x chip and the OR51132 demodulator.
config VIDEO_CX88_DVB_CX22702
bool "Conexant CX22702 DVB-T Support"
default y
depends on VIDEO_CX88_DVB && !VIDEO_CX88_DVB_ALL_FRONTENDS
select DVB_CX22702
---help---
This adds DVB-T support for cards based on the
Connexant 2388x chip and the CX22702 demodulator.
config VIDEO_CX88_DVB_LGDT330X
bool "LG Electronics DT3302/DT3303 ATSC Support"
default y
depends on VIDEO_CX88_DVB && !VIDEO_CX88_DVB_ALL_FRONTENDS
select DVB_LGDT330X
---help---
This adds ATSC 8VSB and QAM64/256 support for cards based on the
Connexant 2388x chip and the LGDT3302/LGDT3303 demodulator.
config VIDEO_CX88_DVB_NXT200X
bool "NXT2002/NXT2004 ATSC Support"
default y
depends on VIDEO_CX88_DVB && !VIDEO_CX88_DVB_ALL_FRONTENDS
select DVB_NXT200X
---help---
This adds ATSC 8VSB and QAM64/256 support for cards based on the
Connexant 2388x chip and the NXT2002/NXT2004 demodulator.
config VIDEO_CX88_DVB_CX24123
bool "Conexant CX24123 DVB-S Support"
default y
depends on VIDEO_CX88_DVB && !VIDEO_CX88_DVB_ALL_FRONTENDS
select DVB_CX24123
select DVB_ISL6421
---help---
This adds DVB-S support for cards based on the
Connexant 2388x chip and the CX24123 demodulator.
...@@ -41,53 +41,15 @@ config VIDEO_SAA7134_DVB ...@@ -41,53 +41,15 @@ config VIDEO_SAA7134_DVB
select VIDEO_BUF_DVB select VIDEO_BUF_DVB
select FW_LOADER select FW_LOADER
select DVB_PLL select DVB_PLL
select DVB_MT352 if !DVB_FE_CUSTOMISE
select DVB_TDA1004X if !DVB_FE_CUSTOMISE
select DVB_NXT200X if !DVB_FE_CUSTOMISE
select DVB_TDA10086 if !DVB_FE_CUSTOMISE
select DVB_TDA826X if !DVB_FE_CUSTOMISE
select DVB_ISL6421 if !DVB_FE_CUSTOMISE
---help--- ---help---
This adds support for DVB cards based on the This adds support for DVB cards based on the
Philips saa7134 chip. Philips saa7134 chip.
To compile this driver as a module, choose M here: the To compile this driver as a module, choose M here: the
module will be called saa7134-dvb. module will be called saa7134-dvb.
You must also select one or more DVB demodulators.
If you are unsure which you need, choose all of them.
config VIDEO_SAA7134_DVB_ALL_FRONTENDS
bool "Build all supported frontends for saa7134 based TV cards"
default y
depends on VIDEO_SAA7134_DVB
select DVB_MT352
select DVB_TDA1004X
select DVB_NXT200X
---help---
This builds saa7134-dvb with all currently supported frontend
demodulators. If you wish to tweak your configuration, and
only include support for the hardware that you need, choose N here.
If you are unsure, choose Y.
config VIDEO_SAA7134_DVB_MT352
bool "Zarlink MT352 DVB-T Support"
default y
depends on VIDEO_SAA7134_DVB && !VIDEO_SAA7134_DVB_ALL_FRONTENDS
select DVB_MT352
---help---
This adds DVB-T support for cards based on the
Philips saa7134 chip and the MT352 demodulator.
config VIDEO_SAA7134_DVB_TDA1004X
bool "Phillips TDA10045H/TDA10046H DVB-T Support"
default y
depends on VIDEO_SAA7134_DVB && !VIDEO_SAA7134_DVB_ALL_FRONTENDS
select DVB_TDA1004X
---help---
This adds DVB-T support for cards based on the
Philips saa7134 chip and the TDA10045H/TDA10046H demodulator.
config VIDEO_SAA7134_DVB_NXT200X
bool "NXT2002/NXT2004 ATSC Support"
default y
depends on VIDEO_SAA7134_DVB && !VIDEO_SAA7134_DVB_ALL_FRONTENDS
select DVB_NXT200X
---help---
This adds ATSC 8VSB and QAM64/256 support for cards based on the
Philips saa7134 chip and the NXT2002/NXT2004 demodulator.
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