Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 23 Jun 2009 23:01:42 +0200 (CEST)
From:      Juergen Lock <nox@jelal.kn-bremen.de>
To:        jason.harmening@gmail.com
Cc:        freebsd-multimedia@freebsd.org
Subject:   Re: Updated cx88 driver, now with PCIe!
Message-ID:  <200906232101.n5NL1gYE086515@triton.kn-bremen.de>
In-Reply-To: <2d1264630906230923s4aaaaa63rc283dd1ffce2eef9@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
In article <2d1264630906230923s4aaaaa63rc283dd1ffce2eef9@mail.gmail.com> you write:
>cx88 version 1.2.0 is now in ports.  In addition to the fix for the
>userspace buffer sync panic (<sarcasm>I'm awesome!</sarcasm>) and some
>cleanup of the internal driver architecture, this release adds kernel
>driver support for CX23885/7/8-based PCIe cards.
>
>Datasheets for the CX23885 family are not publicly available, but this
>support was made possible by the hard work of Konstantin Dimitrov. He
>did a great deal of clean-room research into the register-level
>programming interfaces for the CX23885/7/8, and was ultimately able to
>determine their SRAM layout and much of the required I2C and MPEG
>transport stream control logic. We were able to fill in all the
>remaining gaps based on our existing knowledge of the CX23880 family
>and correlation of observed behavior with the register constants
>declared in the Linux CX23885 driver source code.
>
>The net result of this effort is a very clean driver enhancement--All
>of the fundamental DMA and I2C logic is integrated into the common
>code base with leverage of existing cx88 infrastructure and relatively
>little added code. Common MPEG routines have been moved to
>cx88mpegcore.ko, which also exposes the /dev/cx88mpeg* device nodes,
>so the nodes are ioctl(2)-compatible. cx88mpeg.ko is now a thin
>CX23880-specific wrapper around cx88mpegcore, while cx23885.ko is a
>thin CX23885-family wrapper for all device interfaces that may be used
>with CX23885/7/8 devices (currently only cx88mpegcore).
>
>This support is currently MPEG-only. We will consider adding support
>for other streams (analog, MPEG encoders, etc.) as need arises.
>
>As usual, the kernel drivers should attach to any CX23885/7/8 device.
>The initial CX23885-family cards supported in userspace are the
>Hauppauge WinTV HVR-1250 and HVR-1800.  Unfortunately, these are not
>dual-HDTV cards.  Each has one MPEG transport stream attached to the
>digital TV frontend, while the 1800 has the other transport stream
>attached to the analog frontend via a hardware encoder.  I'll shortly
>begin work on support for the DViCO Fusion 7 Dual, which *is* a
>dual-HDTV card.
>Konstantin is also working on support for DVB-T CX23885/7/8 cards,
>namely the HVR-1200 and HVR-1700.  He has successfully captured TV
>streams with them, but they have complex tuners/demodulators that need
>a lot of work to polish.
>
>There are also new tunables for enabling I2C polling (for those RT
>people who don't like lots of interrupts) and for enabling message
>signaled interrupts (PCIe-only).  See the wiki for details.
>
>Please join me in giving a shout-out to Konstantin--without his hard
>work I'd still be sitting here waiting for a datasheet to fall from
>the sky.

Yeah, Konstantin++ :)

 Although the version in ports seems to be missing a few headers now at least:

[...]
c++ -O2 -fno-strict-aliasing -pipe -Wall -I/usr/local/include -I../mpeg -I../audio -I../video -I../common -I./  -I/usr/local/include/libtuner -I/usr/local/include -c analog/cx88_analog_driver.cpp
ar -x /usr/local/lib/libezxml.a
c++ -o cx88 -O2 -fno-strict-aliasing -pipe -Wall -I/usr/local/include -I../mpeg -I../audio -I../video -I../common -I./  -I/usr/local/include/libtuner -I/usr/local/include -I./mpeg -I./analog -I./drivers -L/usr/local/lib/libtuner -ltuner -lpthread drivers/cx88_cards.cpp cx88.cpp *.o
In file included from drivers/cx88_cards.h:45,
                 from drivers/cx88_cards.cpp:29:
drivers/wintv_hvr1800.h:31:20: error: mt2131.h: No such file or directory
drivers/wintv_hvr1800.h:32:21: error: cx24227.h: No such file or directory
In file included from drivers/cx88_cards.h:45,
                 from drivers/cx88_cards.cpp:29:
drivers/wintv_hvr1800.h: In member function 'virtual int wintv_hvr1800::create_i2c_drivers()':
drivers/wintv_hvr1800.h:56: error: expected type-specifier before 'cx24227'
drivers/wintv_hvr1800.h:56: error: cannot convert 'int*' to 'tuner_driver*' in assignment
drivers/wintv_hvr1800.h:56: error: expected `;' before 'cx24227'
drivers/wintv_hvr1800.h:58: error: expected type-specifier before 'mt2131'
drivers/wintv_hvr1800.h:58: error: cannot convert 'int*' to 'tuner_driver*' in assignment
drivers/wintv_hvr1800.h:58: error: expected `;' before 'mt2131'
In file included from ./drivers/cx88_cards.h:45,
                 from ./mpeg/cx88_mpeg_driver_factory.h:31,
                 from cx88.cpp:47:
./drivers/wintv_hvr1800.h:31:20: error: mt2131.h: No such file or directory
./drivers/wintv_hvr1800.h:32:21: error: cx24227.h: No such file or directory
In file included from ./drivers/cx88_cards.h:45,
                 from ./mpeg/cx88_mpeg_driver_factory.h:31,
                 from cx88.cpp:47:
./drivers/wintv_hvr1800.h: In member function 'virtual int wintv_hvr1800::create_i2c_drivers()':
./drivers/wintv_hvr1800.h:56: error: expected type-specifier before 'cx24227'
./drivers/wintv_hvr1800.h:56: error: cannot convert 'int*' to 'tuner_driver*' in assignment
./drivers/wintv_hvr1800.h:56: error: expected `;' before 'cx24227'
./drivers/wintv_hvr1800.h:58: error: expected type-specifier before 'mt2131'
./drivers/wintv_hvr1800.h:58: error: cannot convert 'int*' to 'tuner_driver*' in assignment
./drivers/wintv_hvr1800.h:58: error: expected `;' before 'mt2131'
*** Error code 1

Stop in /usr/ports/multimedia/cx88/work/cx88-1.2.0/client.
*** Error code 1

Stop in /usr/ports/multimedia/cx88/work/cx88-1.2.0.
*** Error code 1

Stop in /usr/ports/multimedia/cx88.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200906232101.n5NL1gYE086515>