Commit ecf854df authored by Trent Piepho's avatar Trent Piepho Committed by Mauro Carvalho Chehab

V4L/DVB (5629): Cx88: VP3054 support can't be a module when cx88 is compiled in

If cx88 support is compiled into the kernel while vp3054 is left as a module,
the kernel will fail to link.  Adjust the existing "#if" code in cx88 so
that it won't consider vp3054 to be supported in this case.

It might make sense to move vp3054 selection into the "customisation" menu
instead of a cx88 sub-option (though this is a cx88 feature, there is no extra
chip involved).

It might also make sense to use dvb_attach() to load vp3054 support.
Signed-off-by: default avatarTrent Piepho <xyzzy@speakeasy.org>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@infradead.org>
parent 8573a9e6
...@@ -35,9 +35,7 @@ ...@@ -35,9 +35,7 @@
#include "mt352.h" #include "mt352.h"
#include "mt352_priv.h" #include "mt352_priv.h"
#if defined(CONFIG_VIDEO_CX88_VP3054) || defined(CONFIG_VIDEO_CX88_VP3054_MODULE) #include "cx88-vp3054-i2c.h"
# include "cx88-vp3054-i2c.h"
#endif
#include "zl10353.h" #include "zl10353.h"
#include "cx22702.h" #include "cx22702.h"
#include "or51132.h" #include "or51132.h"
...@@ -199,7 +197,7 @@ static struct mt352_config dvico_fusionhdtv_dual = { ...@@ -199,7 +197,7 @@ static struct mt352_config dvico_fusionhdtv_dual = {
.demod_init = dvico_dual_demod_init, .demod_init = dvico_dual_demod_init,
}; };
#if defined(CONFIG_VIDEO_CX88_VP3054) || defined(CONFIG_VIDEO_CX88_VP3054_MODULE) #if defined(CONFIG_VIDEO_CX88_VP3054) || (defined(CONFIG_VIDEO_CX88_VP3054_MODULE) && defined(MODULE))
static int dntv_live_dvbt_pro_demod_init(struct dvb_frontend* fe) static int dntv_live_dvbt_pro_demod_init(struct dvb_frontend* fe)
{ {
static u8 clock_config [] = { 0x89, 0x38, 0x38 }; static u8 clock_config [] = { 0x89, 0x38, 0x38 };
...@@ -544,7 +542,7 @@ static int dvb_register(struct cx8802_dev *dev) ...@@ -544,7 +542,7 @@ static int dvb_register(struct cx8802_dev *dev)
} }
break; break;
case CX88_BOARD_DNTV_LIVE_DVB_T_PRO: case CX88_BOARD_DNTV_LIVE_DVB_T_PRO:
#if defined(CONFIG_VIDEO_CX88_VP3054) || defined(CONFIG_VIDEO_CX88_VP3054_MODULE) #if defined(CONFIG_VIDEO_CX88_VP3054) || (defined(CONFIG_VIDEO_CX88_VP3054_MODULE) && defined(MODULE))
dev->core->pll_addr = 0x61; dev->core->pll_addr = 0x61;
dev->core->pll_desc = &dvb_pll_fmd1216me; dev->core->pll_desc = &dvb_pll_fmd1216me;
dev->dvb.frontend = dvb_attach(mt352_attach, &dntv_live_dvbt_pro_config, dev->dvb.frontend = dvb_attach(mt352_attach, &dntv_live_dvbt_pro_config,
...@@ -778,11 +776,10 @@ static int cx8802_dvb_probe(struct cx8802_driver *drv) ...@@ -778,11 +776,10 @@ static int cx8802_dvb_probe(struct cx8802_driver *drv)
if (!(cx88_boards[core->board].mpeg & CX88_MPEG_DVB)) if (!(cx88_boards[core->board].mpeg & CX88_MPEG_DVB))
goto fail_core; goto fail_core;
#if defined(CONFIG_VIDEO_CX88_VP3054) || defined(CONFIG_VIDEO_CX88_VP3054_MODULE) /* If vp3054 isn't enabled, a stub will just return 0 */
err = vp3054_i2c_probe(dev); err = vp3054_i2c_probe(dev);
if (0 != err) if (0 != err)
goto fail_core; goto fail_core;
#endif
/* dvb stuff */ /* dvb stuff */
printk("%s/2: cx2388x based dvb card\n", core->name); printk("%s/2: cx2388x based dvb card\n", core->name);
...@@ -807,9 +804,7 @@ static int cx8802_dvb_remove(struct cx8802_driver *drv) ...@@ -807,9 +804,7 @@ static int cx8802_dvb_remove(struct cx8802_driver *drv)
/* dvb */ /* dvb */
videobuf_dvb_unregister(&dev->dvb); videobuf_dvb_unregister(&dev->dvb);
#if defined(CONFIG_VIDEO_CX88_VP3054) || defined(CONFIG_VIDEO_CX88_VP3054_MODULE)
vp3054_i2c_remove(dev); vp3054_i2c_remove(dev);
#endif
return 0; return 0;
} }
......
...@@ -30,5 +30,12 @@ struct vp3054_i2c_state { ...@@ -30,5 +30,12 @@ struct vp3054_i2c_state {
}; };
/* ----------------------------------------------------------------------- */ /* ----------------------------------------------------------------------- */
#if defined(CONFIG_VIDEO_CX88_VP3054) || (defined(CONFIG_VIDEO_CX88_VP3054_MODULE) && defined(MODULE))
int vp3054_i2c_probe(struct cx8802_dev *dev); int vp3054_i2c_probe(struct cx8802_dev *dev);
void vp3054_i2c_remove(struct cx8802_dev *dev); void vp3054_i2c_remove(struct cx8802_dev *dev);
#else
static inline int vp3054_i2c_probe(struct cx8802_dev *dev)
{ return 0; }
static inline void vp3054_i2c_remove(struct cx8802_dev *dev)
{ }
#endif
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