Skip to contentSkip to conversation

fix build error in drivers/media/video/cx23885/cx23885-dvb.c

PATCH In review Ingo Molnar 2 participants 3 messages May 20, 2008 – May 21, 2008 Media (V4L/DVB)

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 fix build error in drivers/media/video/cx23885/cx23885-dvb.c

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.

---
 drivers/media/video/cx23885/Kconfig |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/media/video/cx23885/Kconfig +1 -1
Index: 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
#1 lore raw

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

Please see below, proper patch attached...

Quoted 6 lines · Ingo Molnar

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!

Quoted 7 lines
    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
Quoted 7 lines

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.

Quoted 13 lines
---
 drivers/media/video/cx23885/Kconfig |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Index: linux/drivers/media/video/cx23885/Kconfig
===================================================================

drivers/media/video/cx23885/Kconfig config VIDEO_CX23885 · line 17

Quoted 8 lines
drivers/media/video/cx23885/Kconfig +1 -1
@@ -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.

---
 linux/drivers/media/dvb/frontends/dib7000p.h |   15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)
linux/drivers/media/dvb/frontends/dib7000p.h +14 -1
@@ -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);