From owner-freebsd-multimedia@FreeBSD.ORG Tue Jun 23 22:13:23 2009 Return-Path: Delivered-To: freebsd-multimedia@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E3E09106564A for ; Tue, 23 Jun 2009 22:13:23 +0000 (UTC) (envelope-from nox@jelal.kn-bremen.de) Received: from smtp.kn-bremen.de (gelbbaer.kn-bremen.de [78.46.108.116]) by mx1.freebsd.org (Postfix) with ESMTP id 8AEEC8FC0C for ; Tue, 23 Jun 2009 22:13:23 +0000 (UTC) (envelope-from nox@jelal.kn-bremen.de) Received: by smtp.kn-bremen.de (Postfix, from userid 10) id C196D1E001F7; Wed, 24 Jun 2009 00:13:22 +0200 (CEST) Received: from triton.kn-bremen.de (noident@localhost [127.0.0.1]) by triton.kn-bremen.de (8.14.3/8.14.3) with ESMTP id n5NMAKiu096464; Wed, 24 Jun 2009 00:10:20 +0200 (CEST) (envelope-from nox@triton.kn-bremen.de) Received: (from nox@localhost) by triton.kn-bremen.de (8.14.3/8.14.3/Submit) id n5NMAEKI096463; Wed, 24 Jun 2009 00:10:14 +0200 (CEST) (envelope-from nox) From: Juergen Lock Date: Wed, 24 Jun 2009 00:10:09 +0200 To: Jason Harmening Message-ID: <20090623221009.GA96416@triton.kn-bremen.de> References: <2d1264630906230923s4aaaaa63rc283dd1ffce2eef9@mail.gmail.com> <200906232101.n5NL1gYE086515@triton.kn-bremen.de> <2d1264630906231442i3e3a732fyad529f931038150d@mail.gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <2d1264630906231442i3e3a732fyad529f931038150d@mail.gmail.com> User-Agent: Mutt/1.5.19 (2009-01-05) Cc: freebsd-multimedia@freebsd.org Subject: Re: Updated cx88 driver, now with PCIe! X-BeenThere: freebsd-multimedia@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Multimedia discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 23 Jun 2009 22:13:24 -0000 On Tue, Jun 23, 2009 at 04:42:25PM -0500, Jason Harmening wrote: > On Tue, Jun 23, 2009 at 4:01 PM, Juergen Lock wrote: > > 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 (I'm awesome!) 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. > > > > If you're doing a portupgrade, make sure to either do an > upward-recursive portupgrade or to upgrade the libtuner dependency > first. Oh haha, I like totally, completely forgot this is two ports... Sorry for the noise, Juergen