Re: [PATCH] V4L: Link tuner before saa7134

Previous thread: [PATCH] init: fix sparse warnings by Jaswinder Singh on Saturday, July 12, 2008 - 12:30 pm. (1 message)

Next thread: apic merging by Cyrill Gorcunov on Saturday, July 12, 2008 - 3:51 pm. (1 message)
To: Linux DVB <linux-dvb@...>, Linux Kernel Mailing List <linux-kernel@...>
Date: Saturday, July 12, 2008 - 2:08 pm

(Hardware: SAA7134, TDA9887, MT2050, MT352)

tuner-core.c:tuner_probe doesn't auto-detect the MT20xx tuner
saa7134-cards.c:saa7134_board_init2 sets the tuner type for any unknown tuner

Normally when saa7134_init runs it calls for the tuner module before calling
saa7134_board_init2, but if compiled in it will silently fail to set the tuner
type because it is run before tuner_probe is called.

This used to work ok in 2.6.24, but doesn't in 2.6.26-rc9. I think
c117d05cd4c09342f97ba1c6ef63f0bae3239a39 looks like it could have caused this,
but I haven't tried reverting it.

I've tried to use subsys_init for v4l2_i2c_drv_init in include/media/v4l2-i2c-drv.h,
but it seems to have no effect and it's still loaded after saa7134.

If I rmmod tuner and modprobe it then it fails to work because saa7134_board_init2
isn't there to set the tuner type - ideally the type should be stored during the
init of saa7134 in such a way that tuner can refer to it when probing for devices
(and saa7134 should still prod tuner for the situation where it's loaded later).

Kernel log with both compiled in:
(I've inserted a WARN_ON at the point where saa7134 is about to call
saa7134_i2c_call_clients.)
[ 1.716916] calling videodev_init+0x0/0x7d
[ 1.717030] Linux video capture interface: v2.00
[ 1.717091] initcall videodev_init+0x0/0x7d returned 0 after 0 msecs

[ 1.717091] calling ir_init+0x0/0x14
[ 1.717972] initcall ir_init+0x0/0x14 returned 0 after 0 msecs

[ 1.718095] calling saa7134_init+0x0/0x4a
[ 1.718095] saa7130/34: v4l2 driver version 0.2.14 loaded
[ 1.718095] ACPI: PCI Interrupt 0000:05:00.0[A] -> Link [LNED] -> GSI 19 (level, low) -> IRQ 19
[ 1.718095] saa7134[0]: found at 0000:05:00.0, rev: 1, irq: 19, latency: 64, mmio: 0xfeaffc00
[ 1.718095] saa7134[0]: subsystem: 11bd:002d, board: Pinnacle PCTV 300i DVB-T + PAL [card=50,autodetected]
[ 1.718104] saa7134[0]: board init: gpio is c806000
[ 1.859741] saa7134[0]: i2c eeprom 00: bd 11 2d 00 f...

To: Simon Arlott <simon@...>
Cc: Linux DVB <linux-dvb@...>, Linux Kernel Mailing List <linux-kernel@...>
Date: Saturday, July 12, 2008 - 11:20 pm

Hi,

the analysis is quite well.

Please propose a fix too ;)

Cheers,
Hermann

--

To: <v4l-dvb-maintainer@...>
Cc: hermann pitton <hermann-pitton@...>, Linux DVB <linux-dvb@...>, Linux Kernel Mailing List <linux-kernel@...>
Date: Tuesday, July 15, 2008 - 5:40 pm

If saa7134_init is run before v4l2_i2c_drv_init (tuner),
then saa7134_board_init2 will try to set the tuner type
for devices that don't exist yet. This moves tuner to
before all of the device-specific drivers so that it's
loaded early enough on boot.

Signed-off-by: Simon Arlott <simon@fire.lp0.eu>
---
Resend... I accidentally left the git-send-email headers in.

Mailman appears to be easily confused too:
http://www.linuxtv.org/pipermail/linux-dvb/2008-July/027205.html

drivers/media/video/Makefile | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/media/video/Makefile b/drivers/media/video/Makefile
index ecbbfaa..6b0af12 100644
--- a/drivers/media/video/Makefile
+++ b/drivers/media/video/Makefile
@@ -18,6 +18,8 @@ ifeq ($(CONFIG_VIDEO_V4L1_COMPAT),y)
obj-$(CONFIG_VIDEO_DEV) += v4l1-compat.o
endif

+obj-$(CONFIG_VIDEO_TUNER) += tuner.o
+
obj-$(CONFIG_VIDEO_BT848) += bt8xx/
obj-$(CONFIG_VIDEO_IR_I2C) += ir-kbd-i2c.o
obj-$(CONFIG_VIDEO_TVAUDIO) += tvaudio.o
@@ -84,8 +86,6 @@ obj-$(CONFIG_VIDEO_HEXIUM_GEMINI) += hexium_gemini.o
obj-$(CONFIG_VIDEO_DPC) += dpc7146.o
obj-$(CONFIG_TUNER_3036) += tuner-3036.o

-obj-$(CONFIG_VIDEO_TUNER) += tuner.o
-
obj-$(CONFIG_VIDEOBUF_GEN) += videobuf-core.o
obj-$(CONFIG_VIDEOBUF_DMA_SG) += videobuf-dma-sg.o
obj-$(CONFIG_VIDEOBUF_VMALLOC) += videobuf-vmalloc.o
--
1.5.6.2

--
Simon Arlott

--

To: Simon Arlott <simon@...>, Hartmut Hackmann <hartmut.hackmann@...>
Cc: <v4l-dvb-maintainer@...>, Linux DVB <linux-dvb@...>, Linux Kernel Mailing List <linux-kernel@...>
Date: Tuesday, July 15, 2008 - 7:12 pm

Hi Simon,

the saa713x maintainer after Gerd is actually Hartmut.

He might not have always the time for it immediately, but should have a
copy of what is going on.

Actually, these problems are within the build system and should not even
come down to a driver maintainer.

The crowd here is used to have some trouble concerning the build, best
was when guys like Trent did watch out for it before we had some impact.

Cheers,

--

To: <v4l-dvb-maintainer@...>
Cc: hermann pitton <hermann-pitton@...>, Linux DVB <linux-dvb@...>, Linux Kernel Mailing List <linux-kernel@...>
Date: Sunday, July 13, 2008 - 2:32 pm

From cde790c56ffe76f3d0bf6f38d89f4e671a5218c6 Mon Sep 17 00:00:00 2001
From: Simon Arlott <simon@redrum.invalid>
Date: Sun, 13 Jul 2008 19:24:53 +0100
Subject: [PATCH] V4L: Link tuner before saa7134

If saa7134_init is run before v4l2_i2c_drv_init (tuner),
then saa7134_board_init2 will try to set the tuner type
for devices that don't exist yet. This moves tuner to
before all of the device-specific drivers so that it's
loaded early enough on boot.

Signed-off-by: Simon Arlott <simon@fire.lp0.eu>
---
drivers/media/video/Makefile | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/media/video/Makefile b/drivers/media/video/Makefile
index ecbbfaa..6b0af12 100644
--- a/drivers/media/video/Makefile
+++ b/drivers/media/video/Makefile
@@ -18,6 +18,8 @@ ifeq ($(CONFIG_VIDEO_V4L1_COMPAT),y)
obj-$(CONFIG_VIDEO_DEV) += v4l1-compat.o
endif

+obj-$(CONFIG_VIDEO_TUNER) += tuner.o
+
obj-$(CONFIG_VIDEO_BT848) += bt8xx/
obj-$(CONFIG_VIDEO_IR_I2C) += ir-kbd-i2c.o
obj-$(CONFIG_VIDEO_TVAUDIO) += tvaudio.o
@@ -84,8 +86,6 @@ obj-$(CONFIG_VIDEO_HEXIUM_GEMINI) += hexium_gemini.o
obj-$(CONFIG_VIDEO_DPC) += dpc7146.o
obj-$(CONFIG_TUNER_3036) += tuner-3036.o

-obj-$(CONFIG_VIDEO_TUNER) += tuner.o
-
obj-$(CONFIG_VIDEOBUF_GEN) += videobuf-core.o
obj-$(CONFIG_VIDEOBUF_DMA_SG) += videobuf-dma-sg.o
obj-$(CONFIG_VIDEOBUF_VMALLOC) += videobuf-vmalloc.o
--
1.5.6.2

--
Simon Arlott
--

To: Simon Arlott <simon@...>
Cc: <v4l-dvb-maintainer@...>, Linux DVB <linux-dvb@...>, Linux Kernel Mailing List <linux-kernel@...>
Date: Sunday, July 13, 2008 - 10:48 pm

Thanks a lot for working on it!

I must admit that I have not tested it yet.

Remaining issues are.

#1 users can't set the tuner type anymore,
but the few cases of tuner detection from eeprom we have should
work again for that price.

#2 We still don't have any sufficient HDTV support in the kernel ;)

#0 On 2.6.25, without dedicated TV subnorm selection possible anymore
and known auto detection flaws, fixed now, folks should have
complained about it.

Interestingly nothing like that happened.

What could that mean?

Cheers,
Hermann

--

To: hermann pitton <hermann-pitton@...>
Cc: <v4l-dvb-maintainer@...>, Linux DVB <linux-dvb@...>, Linux Kernel Mailing List <linux-kernel@...>
Date: Monday, July 14, 2008 - 7:40 am

There are already module parameters to do that... they can be used
DVB-T2? Why is that relevant to this change? My card doesn't even support
I'm not sure what you're asking, but not many people appear to compile
v4l/dvb into the kernel. Lots of function calls still work on

--
Simon Arlott
--

To: Simon Arlott <simon@...>
Cc: <v4l-dvb-maintainer@...>, Linux DVB <linux-dvb@...>, Linux Kernel Mailing List <linux-kernel@...>
Date: Monday, July 14, 2008 - 10:09 pm

They are broken for what I do say during the last three months and a

Sorry for abusing the thread a little, I plan some vacations and try to
dump what I have left in mind.

Your card should at least support Australian DVB-T HDTV.

We have some new support for DVB-S in 2.6.26, mostly triple or quad
capable cards, using the dual isl6405 as LNB supply. I would love to see
more feedback here for HDTV usage. (not S2, but for example BBC HD

We have much less testers than previously I believe.

The tda827x still seems not to compile, if tuner customization is not
selected. Likely the isl6405 under frontend customization needs to be
checked too.

Thanks again.

Cheers,
Hermann

--

Previous thread: [PATCH] init: fix sparse warnings by Jaswinder Singh on Saturday, July 12, 2008 - 12:30 pm. (1 message)

Next thread: apic merging by Cyrill Gorcunov on Saturday, July 12, 2008 - 3:51 pm. (1 message)