Hi all,
It's time for an update on the progress so far and what is going to
happen in the near future with ivtv.
As people may have noticed, the 2.6.17-rc1 kernel was released this
week. I managed to get a truckload of patches in (see the excerpt from
the kernel changelog below) preparing for ivtv inclusion into
(hopefully) the 2.6.18 kernel. The most important change is redesigning
the way the low-level parts of the video4linux subsystem set the
input/output routing of the various i2c-devices. E.g. if the user
selects input from the TV tuner, what does that mean for the i2c
devices: which input pin is connected to which output pin. Sometimes
that is very simple with just a few choices, sometimes (msp3400!) it
can be a very complicated thing to do with many possible combinations.
In the past it was very inflexible (basically hardwired into the code)
leading to hacks like the MSP_SET_MATRIX ioctl. This has now been
removed and the ivtv driver in svn trunk now sets the correct routing
directly.
Since this change was very low-level it touched quite a few drivers and
was a fairly difficult and time consuming job. I also have become the
de-facto maintainer of the msp3400 driver, which has been much
improved. There is still room for more improvements, but one step at a
time.
Also the wm8739, upd64083 and upd64031a i2c drivers that were merged
from the Japanese 'paken' fork of ivtv are now moved into the kernel.
The remaining saa717x driver is not good enough to be merged too. I
don't have the time to work on this which is a shame since I have the
datasheet for this component.
As a result of this work the v4l subsystem is now ready for the ivtv
merge. The main job still to be done is to decide what to do with the
ivtv-specific API. There are quite a few ivtv ioctls and controls that
need to be integrated into v4l2. This involves first of all finding out
what the purpose is of each ivtv-specific interface and how that can be
turned into a generic V4L2 API. I expect that it will be quite a
difficult process to figure this out. It may also mean that some
functionality will be dropped if no one is using it and it is of
marginal importance. The current API evolved and was never designed
from scratch, so that is something to take into account.
Once the new API is decided it will be added to ivtv (and this will
include the older ivtv series from 0.4 onwards!) and the driver is
merged into video4linux and be ready for the next kernel.
The old ivtv-specific API will be REMOVED once the new API is in place.
Any applications (MythTV!) that still use the old API will no longer
work with the ivtv drivers. I will ensure that the older ivtv drivers
from 0.4 onwards will be changed to support the new API too so after
changing your app to the new API it will all continue to work again
provided the latest driver for your particular kernel is used.
The big advantage is of course that other future PVR cards should
continue to work with your application since everyone is using the same
standard API.
Also be aware that the kernel support for the V4L1 API will be dropped
completely this summer (2.6.18? 2.6.19? Don't know yet). This has been
announced by the V4L developers before, but I just checked and MythTV
still uses quite a lot of v4l1 calls.
OK, what else. Bug fixes. This is really a problem for me since the
kernel merge takes so much time. So I will not be able to give it the
attention it needs. Instead I'll concentrate on the more important ones
and hope other people can try to look into the other problems.
At this moment I have the following list of known issues that I want to
look at myself:
- Add support for closed captioning sliced VBI for the cx25840.
Christopher Neufeld made some very nice patches to add this support. I
want to test these asap and if I find no problems I'll add them to ivtv
and the kernel.
- Firmware load timeouts. For some reason these have become much more
frequent lately. I want to find out why and also try to implement an
automatic reload mechanism. ivtvctl -H often gets the driver working
again so doing that automatically shouldn't be too difficult.
- DMA errors: after a DMA error the MPEG output can become corrupted. I
was working with someone to try and find the cause but my kernel work
prevented me from continuing this. I want to pick this up again as it
is really annoying.
The following issues I know about but I doubt I'll have the time for it:
- Tinny audio: it looks like the new cx25840 firmware is the solution,
but it is not entirely clear to me if this is indeed the fix. Luckily
several people are looking at this so it seems that I can leave this
issue to them.
- PVR500 possible interference with the radio tuner: someone else should
look into this. Datasheets for the FM tuner are freely available so
that might be a help.
- Better Hauppauge remote support: it seems it is broken in the latest
v4l-dvb repository. I'd appreciate it if someone can track down the
exact problem. I know how to tell the various Hauppauge remotes apart,
so that may help to fix this issue correctly. This is a kernel problem,
not an ivtv one. So you need to hack the v4l-dvb sources.
There are also the usual bunch of smaller problems. All I can say is:
sorry, no time. I'd really appreciate it if someone would be willing to
look into those issues. Basically just look at the open tickets in Trac
to see what's still pending.
Hmm, I think that's it really. Oh, yes. Expect a ivtv-0.7 branch soon.
That branch will be for the 2.6.17 kernel, the trunk will be ivtv-0.8
and may never be released if I can get the driver into the 2.6.18
kernel.
Best regards,
Hans Verkuil
2.6.17-rc1 ChangeLog excerpt:
Hans Verkuil:
V4L/DVB (3402): Fix handling of VIDIOC_G_TUNER audmode in msp3400
V4L/DVB (3403): Add probe check for the tda9840.
V4L/DVB (3427): audmode and rxsubchans fixes (VIDIOC_G/S_TUNER)
V4L/DVB (3430): Add new internal VIDIOC_INT commands
V4L/DVB (3300): Add standard for South Korean NTSC-M using A2
audio.
V4L/DVB (3324): Fix Samsung tuner frequency ranges
V4L/DVB (3354): Fix maximum for the saturation and contrast
controls.
V4L/DVB (3551): Fix saturation bug. Fix NTSC->PAL standard change.
Detect NTSC-KR standard.
V4L/DVB (3577): Cleanup audio input handling
V4L/DVB (3578): Make scart definitions easier to handle
V4L/DVB (3579): Move msp_modus to msp3400-kthreads, add JP and KR
std detection
V4L/DVB (3580): Last round of msp3400 cleanups before adding
routing commands
V4L/DVB (3581): Add new media/msp3400.h header containing the
routing macros
V4L/DVB (3582): Implement correct msp3400 input/output routing
V4L/DVB (3584): Implement V4L2_TUNER_MODE_LANG1_LANG2 audio mode
V4L/DVB (3587): Always wake thread after routing change.
V4L/DVB (3588): Remove VIDIOC_G/S_AUDOUT from msp3400
V4L/DVB (3598): Add bit algorithm adapter for the Conexant CX2341X
boards.
V4L/DVB (3599): Implement new routing commands for wm8775 and
cs53l32a.
V4L/DVB (3605): Add support for I2C_HW_B_CX2341X board adapter
V4L/DVB (3606): Minor layout changes to make it consistent
V4L/DVB (3607): Implement routing command for saa7115.c
V4L/DVB (3608): Implement new routing commands in saa7127.c
V4L/DVB (3609): Remove VIDIOC_S_AUDIO from tvaudio: no longer
used.
V4L/DVB (3610): Added the new routing commands to cx25840.
V4L/DVB (3661): Add wm8739 stereo audio ADC i2c driver
V4L/DVB (3662): Don't set msp3400c-non-existent register
V4L/DVB (3663): Fix msp3400c wait time and better audio mode
fallbacks
V4L/DVB (3665): Add new NEC uPD64031A and uPD64083 i2c drivers
V4L/DVB (3666): Remove trailing newlines
V4L/DVB (3692): Keep experimental SLICED_VBI defines under an #if
0
V4L/DVB (3693): Fix msp3400c and bttv stereo/mono/bilingual
detection/handling
V4L/DVB (3696): Previous change for cx2341X boards broke the
remote support
V4L/DVB (3697): More msp3400 and bttv fixes
V4L/DVB (3700): Remove obsolete commands from tvp5150.c
V4L/DVB (3702): Make msp3400 routing defines more consistent
_______________________________________________
ivtv-devel mailing list
[email protected]
http://ivtvdriver.org/mailman/listinfo/ivtv-devel