Message ID | 200906112222.50283.hverkuil@xs4all.nl (mailing list archive) |
---|---|
State | RFC |
Headers | show |
Em Thu, 11 Jun 2009 22:22:50 +0200 Hans Verkuil <hverkuil@xs4all.nl> escreveu: > On Thursday 11 June 2009 22:18:10 Hans Verkuil wrote: > > On Thursday 11 June 2009 22:14:02 Udo A. Steinberg wrote: > > > Hi all, > > > > > > With Linux 2.6.30 the BTTV driver for my WinTV card claims > > > > > > bttv0: audio absent, no audio device found! > > > > > > and audio does not work. This worked up to and including 2.6.29. Is this a > > > known issue? Does anyone have a fix or a patch for me to try? > > > > You've no doubt compiled the bttv driver into the kernel and not as a module. > > > > I've just pushed a fix for this to my tree: http://www.linuxtv.org/hg/~hverkuil/v4l-dvb > > I've also attached a diff against 2.6.30 since the patch in my tree is against > the newer v4l-dvb repository and doesn't apply cleanly against 2.6.30. > # All i2c modules must come first: Argh! this is an ugly solution. This can be an workaround for 2.6.30, but the proper solution is to make sure that i2c core got initialized before any i2c client. Jean, is there any patch meant to fix the usage of i2c when I2C and drivers are compiled with 'Y' ? Cheers, Mauro -- 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
On Friday 12 June 2009 00:20:52 Mauro Carvalho Chehab wrote: > Em Thu, 11 Jun 2009 22:22:50 +0200 > Hans Verkuil <hverkuil@xs4all.nl> escreveu: > > > On Thursday 11 June 2009 22:18:10 Hans Verkuil wrote: > > > On Thursday 11 June 2009 22:14:02 Udo A. Steinberg wrote: > > > > Hi all, > > > > > > > > With Linux 2.6.30 the BTTV driver for my WinTV card claims > > > > > > > > bttv0: audio absent, no audio device found! > > > > > > > > and audio does not work. This worked up to and including 2.6.29. Is this a > > > > known issue? Does anyone have a fix or a patch for me to try? > > > > > > You've no doubt compiled the bttv driver into the kernel and not as a module. > > > > > > I've just pushed a fix for this to my tree: http://www.linuxtv.org/hg/~hverkuil/v4l-dvb > > > > I've also attached a diff against 2.6.30 since the patch in my tree is against > > the newer v4l-dvb repository and doesn't apply cleanly against 2.6.30. > > > > # All i2c modules must come first: > > Argh! this is an ugly solution. This can be an workaround for 2.6.30, but the > proper solution is to make sure that i2c core got initialized before any i2c > client. > > Jean, > > is there any patch meant to fix the usage of i2c when I2C and drivers are compiled with 'Y' ? No, the i2c core is initialized just fine, but the msp3400 module is later in the init sequence than bttv. So when bttv initializes and tries to find and init the msp3400 module it won't find it. There is something weird going on with either the tveeprom module and/or the ir-kbd-i2c module. I'm looking into that. Regards, Hans
Em Fri, 12 Jun 2009 00:26:13 +0200 Hans Verkuil <hverkuil@xs4all.nl> escreveu: > On Friday 12 June 2009 00:20:52 Mauro Carvalho Chehab wrote: > > Em Thu, 11 Jun 2009 22:22:50 +0200 > > Hans Verkuil <hverkuil@xs4all.nl> escreveu: > > > > > On Thursday 11 June 2009 22:18:10 Hans Verkuil wrote: > > > > On Thursday 11 June 2009 22:14:02 Udo A. Steinberg wrote: > > > > > Hi all, > > > > > > > > > > With Linux 2.6.30 the BTTV driver for my WinTV card claims > > > > > > > > > > bttv0: audio absent, no audio device found! > > > > > > > > > > and audio does not work. This worked up to and including 2.6.29. Is this a > > > > > known issue? Does anyone have a fix or a patch for me to try? > > > > > > > > You've no doubt compiled the bttv driver into the kernel and not as a module. > > > > > > > > I've just pushed a fix for this to my tree: http://www.linuxtv.org/hg/~hverkuil/v4l-dvb > > > > > > I've also attached a diff against 2.6.30 since the patch in my tree is against > > > the newer v4l-dvb repository and doesn't apply cleanly against 2.6.30. > > > > > > > # All i2c modules must come first: > > > > Argh! this is an ugly solution. This can be an workaround for 2.6.30, but the > > proper solution is to make sure that i2c core got initialized before any i2c > > client. > > > > Jean, > > > > is there any patch meant to fix the usage of i2c when I2C and drivers are compiled with 'Y' ? > > No, the i2c core is initialized just fine, I remember I had to commit a patch moving drivers/media to be compiled after to i2c core due to a similar problem (git changeset a357482a1e8fdd39f0a58c33ed2ffd0f1becb825). > but the msp3400 module is later in > the init sequence than bttv. So when bttv initializes and tries to find and > init the msp3400 module it won't find it. > > There is something weird going on with either the tveeprom module and/or the > ir-kbd-i2c module. I'm looking into that. I suspect that we'll need to work with the initialization order after the new i2c binding model to avoid such troubles. I remember that we had a similar issue with alsa and saa7134. At the end, Linus [1] had to do add this, as a quick hack (unfortunately, it is still there - it seems that alsa guys forgot about that issue): late_initcall(saa7134_alsa_init); On that time, he suggested the usage of subsys_initcall() for alsa. I suspect that we'll need to do the same for I2C and for V4L core. I'm not sure what would be the alternative to be done with i2c ancillary drivers. Maybe one alternative would be to use fs_initcall, that seems to be already used by some non-fs related calls, like cpu governor [2]. [1] http://lkml.org/lkml/2007/3/23/285 [2] http://tomoyo.sourceforge.jp/cgi-bin/lxr/ident?i=fs_initcall Cheers, Mauro -- 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
On Friday 12 June 2009 01:07:46 Mauro Carvalho Chehab wrote: > Em Fri, 12 Jun 2009 00:26:13 +0200 > Hans Verkuil <hverkuil@xs4all.nl> escreveu: > > > On Friday 12 June 2009 00:20:52 Mauro Carvalho Chehab wrote: > > > Em Thu, 11 Jun 2009 22:22:50 +0200 > > > Hans Verkuil <hverkuil@xs4all.nl> escreveu: > > > > > > > On Thursday 11 June 2009 22:18:10 Hans Verkuil wrote: > > > > > On Thursday 11 June 2009 22:14:02 Udo A. Steinberg wrote: > > > > > > Hi all, > > > > > > > > > > > > With Linux 2.6.30 the BTTV driver for my WinTV card claims > > > > > > > > > > > > bttv0: audio absent, no audio device found! > > > > > > > > > > > > and audio does not work. This worked up to and including 2.6.29. Is this a > > > > > > known issue? Does anyone have a fix or a patch for me to try? > > > > > > > > > > You've no doubt compiled the bttv driver into the kernel and not as a module. > > > > > > > > > > I've just pushed a fix for this to my tree: http://www.linuxtv.org/hg/~hverkuil/v4l-dvb > > > > > > > > I've also attached a diff against 2.6.30 since the patch in my tree is against > > > > the newer v4l-dvb repository and doesn't apply cleanly against 2.6.30. > > > > > > > > > > # All i2c modules must come first: > > > > > > Argh! this is an ugly solution. This can be an workaround for 2.6.30, but the > > > proper solution is to make sure that i2c core got initialized before any i2c > > > client. > > > > > > Jean, > > > > > > is there any patch meant to fix the usage of i2c when I2C and drivers are compiled with 'Y' ? > > > > No, the i2c core is initialized just fine, > > I remember I had to commit a patch moving drivers/media to be compiled after to > i2c core due to a similar problem (git changeset a357482a1e8fdd39f0a58c33ed2ffd0f1becb825). > > > but the msp3400 module is later in > > the init sequence than bttv. So when bttv initializes and tries to find and > > init the msp3400 module it won't find it. > > > > > There is something weird going on with either the tveeprom module and/or the > > ir-kbd-i2c module. I'm looking into that. > > I suspect that we'll need to work with the initialization order after the new > i2c binding model to avoid such troubles. > > I remember that we had a similar issue with alsa and saa7134. At the end, Linus [1] > had to do add this, as a quick hack (unfortunately, it is still there - it > seems that alsa guys forgot about that issue): > > late_initcall(saa7134_alsa_init); > > On that time, he suggested the usage of subsys_initcall() for alsa. I suspect > that we'll need to do the same for I2C and for V4L core. I'm not sure what > would be the alternative to be done with i2c ancillary drivers. > > Maybe one alternative would be to use fs_initcall, that seems to be already > used by some non-fs related calls, like cpu governor [2]. As long as the i2c modules come first there shouldn't be any problem. That's pretty easy to arrange. So the i2c core inits first, then i2c drivers, then v4l2 drivers. That's the proper order. The ir-kbd-i2c module needed to be after the v4l2 modules since that still relies on autoprobing. If it comes first, then it seems to mess up tveeprom for some reason. Once ir-kbd-i2c no longer does autoprobing, then it probably should move back to the other i2c modules. Regards, Hans > > [1] http://lkml.org/lkml/2007/3/23/285 > [2] http://tomoyo.sourceforge.jp/cgi-bin/lxr/ident?i=fs_initcall > > > Cheers, > Mauro > > _______________________________________________ > v4l-dvb-maintainer mailing list > v4l-dvb-maintainer@linuxtv.org > http://www.linuxtv.org/cgi-bin/mailman/listinfo/v4l-dvb-maintainer > >
On Fri, 12 Jun 2009 01:18:20 +0200, Hans Verkuil wrote: > On Friday 12 June 2009 01:07:46 Mauro Carvalho Chehab wrote: > > I suspect that we'll need to work with the initialization order after the new > > i2c binding model to avoid such troubles. > > > > I remember that we had a similar issue with alsa and saa7134. At the end, Linus [1] > > had to do add this, as a quick hack (unfortunately, it is still there - it > > seems that alsa guys forgot about that issue): > > > > late_initcall(saa7134_alsa_init); > > > > On that time, he suggested the usage of subsys_initcall() for alsa. I suspect > > that we'll need to do the same for I2C and for V4L core. I'm not sure what > > would be the alternative to be done with i2c ancillary drivers. > > > > Maybe one alternative would be to use fs_initcall, that seems to be already > > used by some non-fs related calls, like cpu governor [2]. > > As long as the i2c modules come first there shouldn't be any problem. That's > pretty easy to arrange. So the i2c core inits first, then i2c drivers, then > v4l2 drivers. That's the proper order. This is already what we have in 2.6.30 as far as I can see. > The ir-kbd-i2c module needed to be after the v4l2 modules since that still > relies on autoprobing. If it comes first, then it seems to mess up tveeprom > for some reason. Once ir-kbd-i2c no longer does autoprobing, then it probably > should move back to the other i2c modules. Hopefully this will happen in the next few days :)
--- drivers/media/video/Makefile.org 2009-06-11 21:51:05.000000000 +0200 +++ drivers/media/video/Makefile 2009-06-11 21:54:48.000000000 +0200 @@ -12,6 +12,8 @@ videodev-objs := v4l2-dev.o v4l2-ioctl.o v4l2-device.o +# V4L2 core modules + obj-$(CONFIG_VIDEO_DEV) += videodev.o v4l2-int-device.o ifeq ($(CONFIG_COMPAT),y) obj-$(CONFIG_VIDEO_DEV) += v4l2-compat-ioctl32.o @@ -23,21 +25,16 @@ obj-$(CONFIG_VIDEO_DEV) += v4l1-compat.o endif -obj-$(CONFIG_VIDEO_TUNER) += tuner.o +# All i2c modules must come first: -obj-$(CONFIG_VIDEO_BT848) += bt8xx/ +obj-$(CONFIG_VIDEO_TUNER) += tuner.o obj-$(CONFIG_VIDEO_IR_I2C) += ir-kbd-i2c.o obj-$(CONFIG_VIDEO_TVAUDIO) += tvaudio.o obj-$(CONFIG_VIDEO_TDA7432) += tda7432.o obj-$(CONFIG_VIDEO_TDA9875) += tda9875.o - obj-$(CONFIG_VIDEO_SAA6588) += saa6588.o obj-$(CONFIG_VIDEO_SAA5246A) += saa5246a.o obj-$(CONFIG_VIDEO_SAA5249) += saa5249.o -obj-$(CONFIG_VIDEO_CQCAM) += c-qcam.o -obj-$(CONFIG_VIDEO_BWQCAM) += bw-qcam.o -obj-$(CONFIG_VIDEO_W9966) += w9966.o - obj-$(CONFIG_VIDEO_TDA9840) += tda9840.o obj-$(CONFIG_VIDEO_TEA6415C) += tea6415c.o obj-$(CONFIG_VIDEO_TEA6420) += tea6420.o @@ -54,11 +51,40 @@ obj-$(CONFIG_VIDEO_BT856) += bt856.o obj-$(CONFIG_VIDEO_BT866) += bt866.o obj-$(CONFIG_VIDEO_KS0127) += ks0127.o +obj-$(CONFIG_VIDEO_VINO) += indycam.o +obj-$(CONFIG_VIDEO_TVP5150) += tvp5150.o +obj-$(CONFIG_VIDEO_TVP514X) += tvp514x.o +obj-$(CONFIG_VIDEO_MSP3400) += msp3400.o +obj-$(CONFIG_VIDEO_CS5345) += cs5345.o +obj-$(CONFIG_VIDEO_CS53L32A) += cs53l32a.o +obj-$(CONFIG_VIDEO_M52790) += m52790.o +obj-$(CONFIG_VIDEO_TLV320AIC23B) += tlv320aic23b.o +obj-$(CONFIG_VIDEO_WM8775) += wm8775.o +obj-$(CONFIG_VIDEO_WM8739) += wm8739.o +obj-$(CONFIG_VIDEO_VP27SMPX) += vp27smpx.o +obj-$(CONFIG_VIDEO_CX25840) += cx25840/ +obj-$(CONFIG_VIDEO_UPD64031A) += upd64031a.o +obj-$(CONFIG_VIDEO_UPD64083) += upd64083.o +obj-$(CONFIG_VIDEO_OV7670) += ov7670.o +obj-$(CONFIG_VIDEO_TCM825X) += tcm825x.o +obj-$(CONFIG_VIDEO_TVEEPROM) += tveeprom.o -obj-$(CONFIG_VIDEO_ZORAN) += zoran/ +obj-$(CONFIG_SOC_CAMERA_MT9M001) += mt9m001.o +obj-$(CONFIG_SOC_CAMERA_MT9M111) += mt9m111.o +obj-$(CONFIG_SOC_CAMERA_MT9T031) += mt9t031.o +obj-$(CONFIG_SOC_CAMERA_MT9V022) += mt9v022.o +obj-$(CONFIG_SOC_CAMERA_OV772X) += ov772x.o +obj-$(CONFIG_SOC_CAMERA_TW9910) += tw9910.o +# And now the v4l2 drivers: + +obj-$(CONFIG_VIDEO_BT848) += bt8xx/ +obj-$(CONFIG_VIDEO_ZORAN) += zoran/ +obj-$(CONFIG_VIDEO_CQCAM) += c-qcam.o +obj-$(CONFIG_VIDEO_BWQCAM) += bw-qcam.o +obj-$(CONFIG_VIDEO_W9966) += w9966.o obj-$(CONFIG_VIDEO_PMS) += pms.o -obj-$(CONFIG_VIDEO_VINO) += vino.o indycam.o +obj-$(CONFIG_VIDEO_VINO) += vino.o obj-$(CONFIG_VIDEO_STRADIS) += stradis.o obj-$(CONFIG_VIDEO_CPIA) += cpia.o obj-$(CONFIG_VIDEO_CPIA_PP) += cpia_pp.o @@ -69,17 +95,7 @@ obj-$(CONFIG_VIDEO_EM28XX) += em28xx/ obj-$(CONFIG_VIDEO_CX231XX) += cx231xx/ obj-$(CONFIG_VIDEO_USBVISION) += usbvision/ -obj-$(CONFIG_VIDEO_TVP5150) += tvp5150.o -obj-$(CONFIG_VIDEO_TVP514X) += tvp514x.o obj-$(CONFIG_VIDEO_PVRUSB2) += pvrusb2/ -obj-$(CONFIG_VIDEO_MSP3400) += msp3400.o -obj-$(CONFIG_VIDEO_CS5345) += cs5345.o -obj-$(CONFIG_VIDEO_CS53L32A) += cs53l32a.o -obj-$(CONFIG_VIDEO_M52790) += m52790.o -obj-$(CONFIG_VIDEO_TLV320AIC23B) += tlv320aic23b.o -obj-$(CONFIG_VIDEO_WM8775) += wm8775.o -obj-$(CONFIG_VIDEO_WM8739) += wm8739.o -obj-$(CONFIG_VIDEO_VP27SMPX) += vp27smpx.o obj-$(CONFIG_VIDEO_OVCAMCHIP) += ovcamchip/ obj-$(CONFIG_VIDEO_CPIA2) += cpia2/ obj-$(CONFIG_VIDEO_MXB) += mxb.o @@ -92,19 +108,12 @@ obj-$(CONFIG_VIDEOBUF_VMALLOC) += videobuf-vmalloc.o obj-$(CONFIG_VIDEOBUF_DVB) += videobuf-dvb.o obj-$(CONFIG_VIDEO_BTCX) += btcx-risc.o -obj-$(CONFIG_VIDEO_TVEEPROM) += tveeprom.o obj-$(CONFIG_VIDEO_M32R_AR_M64278) += arv.o -obj-$(CONFIG_VIDEO_CX25840) += cx25840/ -obj-$(CONFIG_VIDEO_UPD64031A) += upd64031a.o -obj-$(CONFIG_VIDEO_UPD64083) += upd64083.o obj-$(CONFIG_VIDEO_CX2341X) += cx2341x.o obj-$(CONFIG_VIDEO_CAFE_CCIC) += cafe_ccic.o -obj-$(CONFIG_VIDEO_OV7670) += ov7670.o - -obj-$(CONFIG_VIDEO_TCM825X) += tcm825x.o obj-$(CONFIG_USB_DABUSB) += dabusb.o obj-$(CONFIG_USB_OV511) += ov511.o @@ -134,19 +143,14 @@ obj-$(CONFIG_VIDEO_VIVI) += vivi.o obj-$(CONFIG_VIDEO_CX23885) += cx23885/ +obj-$(CONFIG_VIDEO_OMAP2) += omap2cam.o +obj-$(CONFIG_SOC_CAMERA) += soc_camera.o +obj-$(CONFIG_SOC_CAMERA_PLATFORM) += soc_camera_platform.o +# soc-camera host drivers have to be linked after camera drivers obj-$(CONFIG_VIDEO_MX1) += mx1_camera.o obj-$(CONFIG_VIDEO_MX3) += mx3_camera.o obj-$(CONFIG_VIDEO_PXA27x) += pxa_camera.o obj-$(CONFIG_VIDEO_SH_MOBILE_CEU) += sh_mobile_ceu_camera.o -obj-$(CONFIG_VIDEO_OMAP2) += omap2cam.o -obj-$(CONFIG_SOC_CAMERA) += soc_camera.o -obj-$(CONFIG_SOC_CAMERA_MT9M001) += mt9m001.o -obj-$(CONFIG_SOC_CAMERA_MT9M111) += mt9m111.o -obj-$(CONFIG_SOC_CAMERA_MT9T031) += mt9t031.o -obj-$(CONFIG_SOC_CAMERA_MT9V022) += mt9v022.o -obj-$(CONFIG_SOC_CAMERA_OV772X) += ov772x.o -obj-$(CONFIG_SOC_CAMERA_PLATFORM) += soc_camera_platform.o -obj-$(CONFIG_SOC_CAMERA_TW9910) += tw9910.o obj-$(CONFIG_VIDEO_AU0828) += au0828/