cx8802.ko module not being built with current HG tree

Message ID Pine.LNX.4.58.0902050946560.17300@shell2.speakeasy.net (mailing list archive)
State Superseded, archived
Headers

Commit Message

Trent Piepho Feb. 5, 2009, 6:33 p.m. UTC
  On Thu, 5 Feb 2009, Eduard Huguet wrote:
> The module was not being load because kernel was failing to find
> cx8802_get_driver, etc... entry points, which are exported by
> cx88-mpeg.c.
>
> After a 'make menuconfig' in HG tree the kernel configuration
> contained these lines (this was using the default config, without
> adding / removing anything):
> CONFIG_VIDEO_CX88=m
> CONFIG_VIDEO_CX88_ALSA=m
> CONFIG_VIDEO_CX88_BLACKBIRD=m
> CONFIG_VIDEO_CX88_DVB=m
> CONFIG_VIDEO_CX88_MPEG=y
> CONFIG_VIDEO_CX88_VP3054=m

The problem is that CX88_MPEG is y; it should be m.  The kconfig system is
strange in the way it handles "hidden" entries.  In the Kconfig file, MPEG
depends on DVB, so having MPEG at 'y' which is higher than DVB at 'm'
shouldn't be allowed.  And indeed if you unhide DVB it won't be.  But when
it's hidden the "default y" overrides the dependencies.

The dependencies here are backward though!  It is DVB and BLACKBIRD that
depend on MPEG.  MPEG depends on CX88.

The right way to do it either to make MPEG visible and give it the right
dependencies, or keep it hidden and have DVB and BLACKBIRD select it.

Like this:

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
  

Comments

Eduard Huguet Feb. 5, 2009, 7:04 p.m. UTC | #1
A Dijous, 5 de febrer de 2009 19:33:21, Trent Piepho va escriure:
> On Thu, 5 Feb 2009, Eduard Huguet wrote:
> > The module was not being load because kernel was failing to find
> > cx8802_get_driver, etc... entry points, which are exported by
> > cx88-mpeg.c.
> >
> > After a 'make menuconfig' in HG tree the kernel configuration
> > contained these lines (this was using the default config, without
> > adding / removing anything):
> > CONFIG_VIDEO_CX88=m
> > CONFIG_VIDEO_CX88_ALSA=m
> > CONFIG_VIDEO_CX88_BLACKBIRD=m
> > CONFIG_VIDEO_CX88_DVB=m
> > CONFIG_VIDEO_CX88_MPEG=y
> > CONFIG_VIDEO_CX88_VP3054=m
>
> The problem is that CX88_MPEG is y; it should be m.  The kconfig system is
> strange in the way it handles "hidden" entries.  In the Kconfig file, MPEG
> depends on DVB, so having MPEG at 'y' which is higher than DVB at 'm'
> shouldn't be allowed.  And indeed if you unhide DVB it won't be.  But when
> it's hidden the "default y" overrides the dependencies.
>
> The dependencies here are backward though!  It is DVB and BLACKBIRD that
> depend on MPEG.  MPEG depends on CX88.
>
> The right way to do it either to make MPEG visible and give it the right
> dependencies, or keep it hidden and have DVB and BLACKBIRD select it.
>
> Like this:
> diff -r ed3955855d78 linux/drivers/media/video/cx88/Kconfig
> --- a/linux/drivers/media/video/cx88/Kconfig    Thu Feb 05 09:58:48 2009
> -0800 +++ b/linux/drivers/media/video/cx88/Kconfig    Thu Feb 05 10:27:41
> 2009 -0800 @@ -31,9 +31,17 @@ config VIDEO_CX88_ALSA
>           To compile this driver as a module, choose M here: the
>           module will be called cx88-alsa.
>
> +config VIDEO_CX88_MPEG
> +       tristate
> +       depends on VIDEO_CX88
> +       select VIDEO_BTCX
> +       select VIDEOBUF_DMA_SG
> +       default n
> +
>  config VIDEO_CX88_BLACKBIRD
>         tristate "Blackbird MPEG encoder support (cx2388x + cx23416)"
>         depends on VIDEO_CX88
> +       select VIDEO_CX88_MPEG
>         select VIDEO_CX2341X
>         ---help---
>           This adds support for MPEG encoder cards based on the
> @@ -46,6 +54,7 @@ config VIDEO_CX88_DVB
>  config VIDEO_CX88_DVB
>         tristate "DVB/ATSC Support for cx2388x based TV cards"
>         depends on VIDEO_CX88 && DVB_CORE
> +       select VIDEO_CX88_MPEG
>         select VIDEOBUF_DVB
>         select DVB_PLL if !DVB_FE_CUSTOMISE
>         select DVB_MT352 if !DVB_FE_CUSTOMISE
> @@ -69,11 +78,6 @@ config VIDEO_CX88_DVB
>           To compile this driver as a module, choose M here: the
>           module will be called cx88-dvb.
>
> -config VIDEO_CX88_MPEG
> -       tristate
> -       depends on VIDEO_CX88_DVB || VIDEO_CX88_BLACKBIRD
> -       default y
> -
>  config VIDEO_CX88_VP3054
>         tristate "VP-3054 Secondary I2C Bus Support"
>         default m

This is what I thought. I managed to compile the drivers by hacking Kconfig, 
so this makes sense.

Thanks for your quick patch, I hope it's included into the main tree ASAP as 
the CX88-DVB driver is widely used, and it's unusable right now unless you do 
the proper hacking.

Regards, 
  Eduard Huguet


--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
  

Patch

diff -r ed3955855d78 linux/drivers/media/video/cx88/Kconfig
--- a/linux/drivers/media/video/cx88/Kconfig    Thu Feb 05 09:58:48 2009 -0800
+++ b/linux/drivers/media/video/cx88/Kconfig    Thu Feb 05 10:27:41 2009 -0800
@@ -31,9 +31,17 @@  config VIDEO_CX88_ALSA
          To compile this driver as a module, choose M here: the
          module will be called cx88-alsa.

+config VIDEO_CX88_MPEG
+       tristate
+       depends on VIDEO_CX88
+       select VIDEO_BTCX
+       select VIDEOBUF_DMA_SG
+       default n
+
 config VIDEO_CX88_BLACKBIRD
        tristate "Blackbird MPEG encoder support (cx2388x + cx23416)"
        depends on VIDEO_CX88
+       select VIDEO_CX88_MPEG
        select VIDEO_CX2341X
        ---help---
          This adds support for MPEG encoder cards based on the
@@ -46,6 +54,7 @@  config VIDEO_CX88_DVB
 config VIDEO_CX88_DVB
        tristate "DVB/ATSC Support for cx2388x based TV cards"
        depends on VIDEO_CX88 && DVB_CORE
+       select VIDEO_CX88_MPEG
        select VIDEOBUF_DVB
        select DVB_PLL if !DVB_FE_CUSTOMISE
        select DVB_MT352 if !DVB_FE_CUSTOMISE
@@ -69,11 +78,6 @@  config VIDEO_CX88_DVB
          To compile this driver as a module, choose M here: the
          module will be called cx88-dvb.

-config VIDEO_CX88_MPEG
-       tristate
-       depends on VIDEO_CX88_DVB || VIDEO_CX88_BLACKBIRD
-       default y
-
 config VIDEO_CX88_VP3054
        tristate "VP-3054 Secondary I2C Bus Support"
        default m