Re: [patch] fix build error in drivers/media/video/cx23885/cx23885-dvb.c

From: mkrufky
Date: Tue May 20 2008 - 12:16:58 EST


Please see below, proper patch attached...

Ingo Molnar wrote:
> testing of the -tip tree found the following module build failure on
> latest -git:
>
> Building modules, stage 2.
> MODPOST 421 modules
> ERROR: "dib7000p_attach" [drivers/media/video/cx23885/cx23885.ko]
undefined!
> make[1]: *** [__modpost] Error 1
> make: *** [modules] Error 2
>
> with the following config:
>
> http://redhat.com/~mingo/misc/config-Tue_May_20_17_13_32_CEST_2008.bad
>
> the problem is caused that ./drivers/media/video/cx23885/cx23885-dvb.c
> depends on a DVB_DIB7000P symbol (dib7000p_attach), but its Kconfig rule
> only selects it if DVB_FE_CUSTOMISE is enabled:
>
> select DVB_DIB7000P if !DVB_FE_CUSTOMISE
>
> the minimal fix found is to select the DVB frontend driver
unconditionally.
>
> Signed-off-by: Ingo Molnar <mingo@xxxxxxx>
> ---
> drivers/media/video/cx23885/Kconfig | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> Index: linux/drivers/media/video/cx23885/Kconfig
> ===================================================================
> --- linux.orig/drivers/media/video/cx23885/Kconfig
> +++ linux/drivers/media/video/cx23885/Kconfig
> @@ -11,7 +11,7 @@ config VIDEO_CX23885
> select VIDEOBUF_DVB
> select VIDEO_CX25840
> select VIDEO_CX2341X
> - select DVB_DIB7000P if !DVB_FE_CUSTOMISE
> + select DVB_DIB7000P
> select MEDIA_TUNER_MT2131 if !DVB_FE_CUSTOMISE
> select DVB_S5H1409 if !DVB_FE_CUSTOMISE
> select DVB_LGDT330X if !DVB_FE_CUSTOMISE
>
>

Ingo,

Your patch will work around a symptom of the problem, but this is not
the proper fix.

Please see the attached patch, which should be applied, instead.

Thanks for pointing this out.

Regards,

Mike Krufky


dib7000p: fix dib7000p_attach when !CONFIG_DVB_DIB7000P

somebody forgot to to fix this header...

Thanks to Ingo Molnar for pointing this out.

Signed-off-by: Michael Krufky <mkrufky@xxxxxxxxxxx>

---
linux/drivers/media/dvb/frontends/dib7000p.h | 15 ++++++++++++++-
1 file changed, 14 insertions(+), 1 deletion(-)

--- v4l-dvb.orig/linux/drivers/media/dvb/frontends/dib7000p.h
+++ v4l-dvb/linux/drivers/media/dvb/frontends/dib7000p.h
@@ -37,7 +37,20 @@

#define DEFAULT_DIB7000P_I2C_ADDRESS 18

-extern struct dvb_frontend * dib7000p_attach(struct i2c_adapter *i2c_adap, u8 i2c_addr, struct dib7000p_config *cfg);
+#if defined(CONFIG_DVB_DIB7000P) || (defined(CONFIG_DVB_DIB7000P_MODULE) && defined(MODULE))
+extern struct dvb_frontend *dib7000p_attach(struct i2c_adapter *i2c_adap,
+ u8 i2c_addr,
+ struct dib7000p_config *cfg);
+#else
+static inline struct dvb_frontend *dib7000p_attach(struct i2c_adapter *i2c_adap,
+ u8 i2c_addr,
+ struct dib7000p_config *cfg)
+{
+ printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
+ return NULL;
+}
+#endif
+
extern int dib7000p_i2c_enumeration(struct i2c_adapter *i2c, int no_of_demods, u8 default_addr, struct dib7000p_config cfg[]);

extern struct i2c_adapter * dib7000p_get_i2c_master(struct dvb_frontend *, enum dibx000_i2c_interface, int);