Qualified success!!
Even better solution...
I was able to take the sleep out of ivtv-i2c.c and put it in ivtv-driver.c
in just one place in the initialization. So it does not get called while
generally using the driver. Much better.
However, msleep(10) was not enough. Msleep(100) was necessary or else it
crashed. On or about line 1355 of ivtv-driver.c:
/* Digitizer */
msleep(100);
itv->card->video_dec_func(itv, VIDIOC_S_STD, &itv->std);
"modprobe ivtv" will now load the driver cleanly from the command line.
AND IT EVEN BOOTED CLEANLY!
AND IT STILL WORKS (can change the channel and see the closed caption data!)
So, adding this one msleep line works in my Dell 2850 with a PVR-500 card in
a PCI-X slot.
But since msleep(10) does not work, I'm concerned that a different machine
configuration may still break even with msleep(100), depending on the
timing. It would be much better if someone could help figure out what the
real problem was, so we can solve it properly.
Thanks to Hans for putting me on the right track. Please keep me informed
if someone else has a better solution or idea.
Now I'm going to try 3 PVR-500 cards simultaneously. If it raises any new
issues, I'll let you know.
Rich
--
Rich Kadel
Know'bout, Inc.
(858) 433-1747
www.knowbout.com
Do you know about Know'bout?
-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Rich Kadel
Sent: Monday, June 26, 2006 10:04 PM
To: 'Discussion list for development of the IVTV driver'
Subject: Re: [ivtv-devel] System hangs loading driver modules for PVR-500
In case anyone is interested, I have some small proof that a PVR-500 can
work in a PCI-X slot.
Hans and I worked on this most of the day until he had to go. I was able to
get a little further and found a small, temporary workaround.
I don't know the real cause, or the best fix yet, but by putting
msleep(10);
right before
retval = client->driver->command(client, cmd, arg);
in ivtv-i2c.c
I was able to get the driver to load without crashing the system (something
I was not able to do heretofore) and I was able to use the driver
successfully to change the channel (ivtv-tune), and to capture closed
captioning data using zvbi's capture and decode programs. The closed
captioning comes out clean.
Note that this sleep gets called a lot, so it may not be acceptable for
actual video capture, and I'm not testing that right now. My main goal was
to get the driver to load, but of course, I hope someone can figure out what
the right solution is.
I think I'm having one other problem. I will need to try it again to be
sure. But I believe the driver won't load at boot time. It crashes the
system during initialization at boot. That's bad because if I have to
reboot, I have to take all of the PVR-500 cards out to get it to boot up,
then remove the drivers, then put the cards back in, boot up, and load the
drivers from the command line (which does work).
Does anyone know the difference between loading drivers during boot vs.
loading them from the command line? I'm using CentOS 4.3 (basically RHEL
4.3).
Also, does anyone know where the kernel logs get written during the early
boot stage?
--
Rich Kadel
Know'bout, Inc.
(858) 433-1747
www.knowbout.com
Do you know about Know'bout?
-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Hans Verkuil
Sent: Monday, June 26, 2006 1:48 AM
To: Discussion list for development of the IVTV driver
Subject: Re: [ivtv-devel] System hangs loading driver modules for PVR-500
Hi Rich,
Try adding 'ivtv_debug=511' to the ivtv module options. This should
provide (much) more debug info and hopefully help in giving me a better
idea where the problem is.
Thanks,
Hans
> Hans,
>
> I messed around with this a little more. I've run out of time now and
> unless someone has a quick fix (I realize that's not likely), I'm going to
> have to stick with the PVR-250 cards and be limited to 3 tuners on this
> server.
>
> But here's a little bit more information...
>
> FIRST: I realized why it was hanging during the boot phase, and it was
> the
> ivtv driver after all. Once I removed the driver and all of the files, it
> booted up fine WITH the PVR-500 (but with no drivers).
>
> Here is part of lspci -v showing the 250 and the 500 (2 units):
>
> 09:04.0 Multimedia video controller: Internext Compression Inc iTVC16
> (CX23416) MPEG-2 Encoder (rev 01)
> Subsystem: Hauppauge computer works Inc. WinTV PVR 250
> Flags: bus master, medium devsel, latency 32, IRQ 225
> Memory at d8000000 (32-bit, prefetchable) [size=64M]
> Capabilities: [44] Power Management version 2
>
> 0a:02.0 PCI bridge: Hint Corp HB6 Universal PCI-PCI bridge
> (non-transparent
> mode) (rev 11) (prog-if 00 [Normal decode])
> Flags: bus master, medium devsel, latency 32
> Bus: primary=0a, secondary=0b, subordinate=0b, sec-latency=32
> Memory behind bridge: fe100000-fe1fffff
> Prefetchable memory behind bridge: d0000000-d7ffffff
> Capabilities: [80] Power Management version 2
> Capabilities: [90] #06 [0000]
>
> 0b:08.0 Multimedia video controller: Internext Compression Inc iTVC16
> (CX23416) MPEG-2 Encoder (rev 01)
> Subsystem: Hauppauge computer works Inc. WinTV PVR 500 (1st unit)
> Flags: bus master, medium devsel, latency 32, IRQ 233
> Memory at d4000000 (32-bit, prefetchable) [size=64M]
> Capabilities: [44] Power Management version 2
>
> 0b:09.0 Multimedia video controller: Internext Compression Inc iTVC16
> (CX23416) MPEG-2 Encoder (rev 01)
> Subsystem: Hauppauge computer works Inc. WinTV PVR 500 (2nd unit)
> Flags: bus master, medium devsel, latency 32, IRQ 50
> Memory at d0000000 (32-bit, prefetchable) [size=64M]
> Capabilities: [44] Power Management version 2
>
> SECOND: I put some debug lines in the driver to see how far it gets after
> loading the firmware. If you see my earlier message (6/23/06, 10:39PM US
> Pacific Time), the driver dies sometime after loading the firmware:
>
> Jun 23 21:32:20 server1 kernel: ivtv1: loaded v4l-cx2341x-enc.fw firmware
> (262144 bytes)
>
> Now, however, with the debug lines in, it gets a little further. I'm
> denoting my additional lines with ">" here:
>
> Jun 25 23:06:18 server1 kernel: ivtv1: 2. loaded v4l-cx2341x-enc.fw
> firmware
> (262144 bytes)
>> Jun 25 23:06:18 server1 kernel: ivtv1: Done with ivtv_firmware_copy
>> Jun 25 23:06:18 server1 kernel: ivtv1: Out of ivtv_firmware_init
>> Jun 25 23:06:18 server1 kernel: ivtv1: Out of find_firmware_mailbox
>> Jun 25 23:06:18 server1 kernel: ivtv1: Out of check_firmware
> Jun 25 23:06:18 server1 kernel: ivtv1: Encoder revision: 0x02050032
> Jun 25 23:06:18 server1 kernel: ivtv1: Allocate DMA encoder MPEG stream:
> 128
> x 32768 buffers (4096KB total)
> Jun 25 23:12:21 server1 syslogd 1.4.1: restart.
>
> So it appears to me that the server death is not directly related to
> executing a specific line of code in the main thread of the driver
> initialization, which means I've exhausted my ability to provide useful
> information to you. I don't know how to debug write or drivers.
>
> Hopefully this is of some help to you, and if you have a chance to fix
> this
> someday, please let me know. I appreciate the help.
>
> If there's anything else you want me to check, I have about 24 hours
> before
> this server is a going to be closed up and deployed. I can't do much
> after
> that.
>
> Thanks,
> Rich
>
> --
>
> Rich Kadel
> Know'bout, Inc.
> (858) 433-1747
> www.knowbout.com
>
> Do you know about Know'bout?
>
>
> -----Original Message-----
> From: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED] On Behalf Of Hans Verkuil
> Sent: Sunday, June 25, 2006 9:16 AM
> To: Discussion list for development of the IVTV driver
> Subject: Re: [ivtv-devel] System hangs loading driver modules for PVR-500
>
> On Sunday 25 June 2006 18:00, Tyler Trafford wrote:
>> On Jun 25, 2006, at 10:13 AM, Hans Verkuil wrote:
>> > I really first need proof that it works under Windows before I'm
>> > going to spend time on this. And the first step would be to put
>> > printk's in the driver (ivtv-driver.c) and see where it breaks
>> > down. Also note that
>> > I expect to have little time for this anyway in the next two weeks.
>>
>> A thread from last year suggests that this does work under Windows.
>>
>> http://www.gossamer-threads.com/lists/ivtv/devel/18662#18662
>
> Interesting. Although the code location mentioned in this thread is with
> 99.99% certainty not the place where it is hanging.
>
> Hans
>
> _______________________________________________
> ivtv-devel mailing list
> [email protected]
> http://ivtvdriver.org/mailman/listinfo/ivtv-devel
>
>
>
> _______________________________________________
> ivtv-devel mailing list
> [email protected]
> http://ivtvdriver.org/mailman/listinfo/ivtv-devel
>
_______________________________________________
ivtv-devel mailing list
[email protected]
http://ivtvdriver.org/mailman/listinfo/ivtv-devel
_______________________________________________
ivtv-devel mailing list
[email protected]
http://ivtvdriver.org/mailman/listinfo/ivtv-devel
_______________________________________________
ivtv-devel mailing list
[email protected]
http://ivtvdriver.org/mailman/listinfo/ivtv-devel