From owner-freebsd-multimedia@FreeBSD.ORG Tue Jun 23 21:42:27 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 809B5106566C for ; Tue, 23 Jun 2009 21:42:27 +0000 (UTC) (envelope-from jason.harmening@gmail.com) Received: from mail-bw0-f209.google.com (mail-bw0-f209.google.com [209.85.218.209]) by mx1.freebsd.org (Postfix) with ESMTP id ECA298FC19 for ; Tue, 23 Jun 2009 21:42:26 +0000 (UTC) (envelope-from jason.harmening@gmail.com) Received: by bwz5 with SMTP id 5so353836bwz.43 for ; Tue, 23 Jun 2009 14:42:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=9bNsGpvUC+ljq/n+fQwEwH49vSPnLltNGEqpPxfRT5o=; b=vv2zfWbRHb1miK8GZp/lroIaAekBqoX4mqQ0sY9bDy5fqjWDPQPlh/tiSBx89OZAHc 1AxwF7rcv+iXC0/xwWvDRwd+cKGBtwKkY9IL1UDRE2ATd7VRn/xrn0AkpCn9AzTHFpUo b2PLR5ExJh+1qPmXKrKVMJ5ZiU9vQnCzzsbFk= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; b=w4TA/TdYAKJ1lvkKrKvtwMkDsrDePa0GrXECiO0GgxxQhJWCLajmkHy2JQUob6ttfg yLTxOd2HO6YqrN2Uy80nddZcbYcE6veWHe3KNUkDZ/evH5a7tnzeq/5aatNoRjeoWNCd fnzX/MycxSWN39oc4eDA2JYnZnEsiFXRPEAN4= MIME-Version: 1.0 Received: by 10.223.126.203 with SMTP id d11mr504567fas.8.1245793345520; Tue, 23 Jun 2009 14:42:25 -0700 (PDT) In-Reply-To: <200906232101.n5NL1gYE086515@triton.kn-bremen.de> References: <2d1264630906230923s4aaaaa63rc283dd1ffce2eef9@mail.gmail.com> <200906232101.n5NL1gYE086515@triton.kn-bremen.de> Date: Tue, 23 Jun 2009 16:42:25 -0500 Message-ID: <2d1264630906231442i3e3a732fyad529f931038150d@mail.gmail.com> From: Jason Harmening To: Juergen Lock Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable 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 21:42:27 -0000 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. =A0In 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. =A0Unfortunately, these are not >>dual-HDTV cards. =A0Each 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. =A0I'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. =A0He 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). =A0See 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++ :) > > =A0Although 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./ =A0-I/usr/local/include/libtuner -I/u= sr/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./ =A0-I/usr/local/include/libtu= ner -I/usr/local/include -I./mpeg -I./analog -I./drivers -L/usr/local/lib/l= ibtuner -ltuner -lpthread drivers/cx88_cards.cpp cx88.cpp *.o > In file included from drivers/cx88_cards.h:45, > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 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 director= y > In file included from drivers/cx88_cards.h:45, > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 from drivers/cx88_cards.cpp:29: > drivers/wintv_hvr1800.h: In member function 'virtual int wintv_hvr1800::c= reate_i2c_drivers()': > drivers/wintv_hvr1800.h:56: error: expected type-specifier before 'cx2422= 7' > 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, > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 from ./mpeg/cx88_mpeg_driver_factory.h:31= , > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 from cx88.cpp:47: > ./drivers/wintv_hvr1800.h:31:20: error: mt2131.h: No such file or directo= ry > ./drivers/wintv_hvr1800.h:32:21: error: cx24227.h: No such file or direct= ory > In file included from ./drivers/cx88_cards.h:45, > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 from ./mpeg/cx88_mpeg_driver_factory.h:31= , > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 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 'cx24= 227' > ./drivers/wintv_hvr1800.h:56: error: cannot convert 'int*' to 'tuner_driv= er*' in assignment > ./drivers/wintv_hvr1800.h:56: error: expected `;' before 'cx24227' > ./drivers/wintv_hvr1800.h:58: error: expected type-specifier before 'mt21= 31' > ./drivers/wintv_hvr1800.h:58: error: cannot convert 'int*' to 'tuner_driv= er*' 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.