From owner-freebsd-ports@FreeBSD.ORG Tue Feb 13 03:09:34 2007 Return-Path: X-Original-To: freebsd-ports@freebsd.org Delivered-To: freebsd-ports@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 7006B16A402 for ; Tue, 13 Feb 2007 03:09:34 +0000 (UTC) (envelope-from y.pankov@irbis.net.ru) Received: from mail.irbis.net.ru (mail.irbis.net.ru [194.186.18.2]) by mx1.freebsd.org (Postfix) with ESMTP id 6831713C442 for ; Tue, 13 Feb 2007 03:09:33 +0000 (UTC) (envelope-from y.pankov@irbis.net.ru) Received: from darklight.abyss.local (darklight.abyss.local [192.168.0.64]) by mail.irbis.net.ru (Postfix) with ESMTP id 45F7B62D480; Tue, 13 Feb 2007 06:09:30 +0300 (MSK) Received: from darklight.abyss.local (yuri@localhost [127.0.0.1]) by darklight.abyss.local (8.13.8/8.13.8) with ESMTP id l1D39Jt3023216; Tue, 13 Feb 2007 06:09:20 +0300 (MSK) (envelope-from y.pankov@irbis.net.ru) Received: (from yuri@localhost) by darklight.abyss.local (8.13.8/8.13.8/Submit) id l1D39DVI023215; Tue, 13 Feb 2007 06:09:13 +0300 (MSK) (envelope-from y.pankov@irbis.net.ru) X-Authentication-Warning: darklight.abyss.local: yuri set sender to y.pankov@irbis.net.ru using -f Date: Tue, 13 Feb 2007 06:09:13 +0300 From: Yuri Pankov To: Danny Pansters Message-ID: <20070213030913.GA23018@darklight.abyss.local> References: <47998907@srv.sem.ipt.ru> <200702122145.19885.danny@ricin.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="J2SCkAp4GZ/dPZZf" Content-Disposition: inline In-Reply-To: <200702122145.19885.danny@ricin.com> User-Agent: Mutt/1.5.13 (2006-08-11) X-Virus-Scanned: ClamAV 0.88.7/2560/Mon Feb 12 21:06:19 2007 on mail.irbis.net.ru X-Virus-Status: Clean X-Greylist: Sender succeeded SMTP AUTH authentication, not delayed by milter-greylist-3.0 (mail.irbis.net.ru [194.186.18.2]); Tue, 13 Feb 2007 06:09:32 +0300 (MSK) Cc: Boris Samorodov , freebsd-ports@freebsd.org Subject: Re: multimedia/kbtv: broken saa kmod? X-BeenThere: freebsd-ports@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting software to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Feb 2007 03:09:34 -0000 --J2SCkAp4GZ/dPZZf Content-Type: text/plain; charset=us-ascii Content-Disposition: inline On Mon, Feb 12, 2007 at 09:45:19PM +0100, Danny Pansters wrote: > On Monday 12 February 2007 18:59, Boris Samorodov wrote: > > Hi, > > > > > > just noticed that kbtv is being developed. Greate news, thanks! > > > > Did somebody manage to build saa kernel module (multimedia/kbtv)? I've > > got an error: > > ----- > > ===> kmod (all) > > Warning: Object directory not changed from original > > /usr/ports/multimedia/kbtv/work/kbtv-1.2.3/saa/saa/kmod @ -> /usr/src/sys > > machine -> /usr/src/sys/amd64/include > > awk -f @/tools/makeobjops.awk @/dev/iicbus/iicbus_if.m -h > > awk -f @/tools/makeobjops.awk @/kern/device_if.m -h > > awk -f @/tools/makeobjops.awk @/kern/bus_if.m -h > > awk -f @/tools/makeobjops.awk @/dev/pci/pci_if.m -h > > cc -O2 -fno-strict-aliasing -pipe -Werror -D_KERNEL -DKLD_MODULE -nostdinc > > -I- -I. -I@ -I@/contrib/altq -I@/../include -I/usr/include > > -finline-limit=8000 -fno-common -fno-omit-frame-pointer -mcmodel=kernel > > -mno-red-zone -mfpmath=387 -mno-sse -mno-sse2 -mno-mmx -mno-3dnow > > -msoft-float -fno-asynchronous-unwind-tables -ffreestanding -Wall > > -Wredundant-decls -Wnested-externs -Wstrict-prototypes > > -Wmissing-prototypes -Wpointer-arith -Winline -Wcast-qual > > -fformat-extensions -std=c99 -c saa713x.c saa713x.c: In function > > `saa_build_pta': > > saa713x.c:507: warning: int format, different type arg (arg 2) > > Looks like it needs a cast, might be an easy fix. > > > *** Error code 1 > > > > Stop in /usr/ports/multimedia/kbtv/work/kbtv-1.2.3/saa/saa/kmod. > > *** Error code 1 > > > > Stop in /usr/ports/multimedia/kbtv/work/kbtv-1.2.3/saa/saa. > > ----- > > > > # make -V PORTVERSION > > 1.2.3 > > # uname -a > > FreeBSD srv.sem.ipt.ru 6.2-RELEASE FreeBSD 6.2-RELEASE #0: Mon Jan 15 > > 17:30:44 MSK 2007 bsam@srv.sem.ipt.ru:/usr/obj/usr/src/sys/GENERIC > > > amd64 > > Ah, I'm on i386, I've seen something similar before. The 64 bit platforms are > more picky. I'll see what I can do (I have an amd64 box to test on). > > Thanks, > > Dan > > > PS > > I see you are Russian; I'm not sure if it applies to you, but please note that > secam doesnt work, only pal d/k/L' (whichever you may need). You'd probably > get black-and-white video and no sound. While it may be easy to add the > needed audio carrier frequencies (if provided with the correct values) in my > own code, the handling of secam video in the saa driver may be harder > considering that I can't really test. It may be possible to deal with it in > my own code while rendering, and do a conversion there but that will probably > be slow. It would be great if someone would just sent me a secam patch :) Hi, I've attached a patch allowing saa kmod to compile cleanly on amd64 with WERROR defined. I don't use kbtv but am interested in saa713x driver, so improvements to make it work in SECAM are welcome. Just setting SECAM video standard to get colour picture seems pretty easy, given the code in saa/saa/support/set_videoopt.c. Diff adding SECAM option to it is also attached. Another question - is anyone successfully running this driver on -CURRENT? I'm wondering cause of the following change by imp@ to iicbus.c, denying attach of generic iic device: =================================================================== RCS file: /usr/local/www/cvsroot/FreeBSD/src/sys/dev/iicbus/iicbus.c,v retrieving revision 1.21 retrieving revision 1.22 diff -u -p -r1.21 -r1.22 @@ -139,51 +139,52 @@ iicbus_attach(device_t dev) printf("\n"); #endif - /* attach any known device */ device_add_child(dev, "ic", -1); - device_add_child(dev, "iic", -1); device_add_child(dev, "iicsmb", -1); - +#if 0 + /* attach any known device */ + device_add_child(dev, "iic", -1); +#endif bus_generic_attach(dev); - return (0); } HTH, Yuri --J2SCkAp4GZ/dPZZf Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="saa-kmod.diff" diff -ruN kbtv-1.2.3.orig/saa/saa/kmod/saa713x.c kbtv-1.2.3/saa/saa/kmod/saa713x.c --- kbtv-1.2.3.orig/saa/saa/kmod/saa713x.c Tue Feb 13 04:21:03 2007 +++ kbtv-1.2.3/saa/saa/kmod/saa713x.c Tue Feb 13 04:22:01 2007 @@ -503,7 +503,7 @@ break; if ((segs[seg_idx].ds_len % 4096) != 0) panic("saa:saa_build_pta: Invalid segment len " - "= %d idx = %d\n", + "= %jd idx = %d\n", segs[seg_idx].ds_len, seg_idx); } } diff -ruN kbtv-1.2.3.orig/saa/saa/kmod/saa713x_audio.c kbtv-1.2.3/saa/saa/kmod/saa713x_audio.c --- kbtv-1.2.3.orig/saa/saa/kmod/saa713x_audio.c Tue Feb 13 04:21:03 2007 +++ kbtv-1.2.3/saa/saa/kmod/saa713x_audio.c Tue Feb 13 04:35:09 2007 @@ -438,7 +438,7 @@ } REG_SET(REG_MCR, MCR_CHAN6_TE); -#if NOT_YET +#if 0 /* * Interrupts are always enabled, ie., * even when ASPEC_FLAG_CAPTURE_SIGNAL is not specified as @@ -634,7 +634,7 @@ return EDOOFUS; } if (offset > (SAA_MMAP_ACAP_SZ - 4096)) { - device_printf(sc->sc_dev, "Invalid mmap offset %d, " + device_printf(sc->sc_dev, "Invalid mmap offset %jd, " " max: %d\n", offset, (SAA_MMAP_ACAP_SZ - 4096)); diff -ruN kbtv-1.2.3.orig/saa/saa/kmod/saa713x_i2c.c kbtv-1.2.3/saa/saa/kmod/saa713x_i2c.c --- kbtv-1.2.3.orig/saa/saa/kmod/saa713x_i2c.c Tue Feb 13 04:21:03 2007 +++ kbtv-1.2.3/saa/saa/kmod/saa713x_i2c.c Tue Feb 13 04:47:27 2007 @@ -152,7 +152,7 @@ int saa_i2c_write(device_t dev, - char *buf, int len, + const char *buf, int len, int *bytes, int timeout) { uint8_t sts; diff -ruN kbtv-1.2.3.orig/saa/saa/kmod/saa713x_video.c kbtv-1.2.3/saa/saa/kmod/saa713x_video.c --- kbtv-1.2.3.orig/saa/saa/kmod/saa713x_video.c Tue Feb 13 04:21:03 2007 +++ kbtv-1.2.3/saa/saa/kmod/saa713x_video.c Tue Feb 13 04:32:11 2007 @@ -713,23 +713,23 @@ if (o->svs_vfmt & VFMT_PLANAR) { REG_WRITE(REG_DMA_BASE0(SAA_CHAN_YUV_Y), - (int)o->svs_buf_base + o->svs_buf_offset[0][0]); + (intptr_t)o->svs_buf_base + o->svs_buf_offset[0][0]); REG_WRITE(REG_DMA_BASE1(SAA_CHAN_YUV_Y), - (int)o->svs_buf_base + o->svs_buf_offset[1][0]); + (intptr_t)o->svs_buf_base + o->svs_buf_offset[1][0]); REG_WRITE(REG_DMA_PITCH(SAA_CHAN_YUV_Y), o->svs_buf_pitch[0]); REG_WRITE(REG_DMA_BASE0(SAA_CHAN_YUV_U), - (int)o->svs_buf_base + o->svs_buf_offset[0][1]); + (intptr_t)o->svs_buf_base + o->svs_buf_offset[0][1]); REG_WRITE(REG_DMA_BASE1(SAA_CHAN_YUV_U), - (int)o->svs_buf_base + o->svs_buf_offset[1][1]); + (intptr_t)o->svs_buf_base + o->svs_buf_offset[1][1]); REG_WRITE(REG_DMA_PITCH(SAA_CHAN_YUV_U), o->svs_buf_pitch[1]); REG_WRITE(REG_DMA_BASE0(SAA_CHAN_YUV_V), - (int)o->svs_buf_base + o->svs_buf_offset[0][2]); + (intptr_t)o->svs_buf_base + o->svs_buf_offset[0][2]); REG_WRITE(REG_DMA_BASE1(SAA_CHAN_YUV_V), - (int)o->svs_buf_base + o->svs_buf_offset[1][2]); + (intptr_t)o->svs_buf_base + o->svs_buf_offset[1][2]); REG_WRITE(REG_DMA_PITCH(SAA_CHAN_YUV_V), o->svs_buf_pitch[2]); @@ -749,9 +749,9 @@ & DMA_CTRL_PTA_MASK)); } else { REG_WRITE(REG_DMA_BASE0(t), - (int)o->svs_buf_base + o->svs_buf_offset[0][0]); + (intptr_t)o->svs_buf_base + o->svs_buf_offset[0][0]); REG_WRITE(REG_DMA_BASE1(t), - (int)o->svs_buf_base + o->svs_buf_offset[1][0]); + (intptr_t)o->svs_buf_base + o->svs_buf_offset[1][0]); REG_WRITE(REG_DMA_PITCH(t), o->svs_buf_pitch[0]); ctrl = (0x7 << DMA_CTRL_BURST_SHIFT) & DMA_CTRL_BURST_MASK; @@ -1308,9 +1308,9 @@ saa_load_cliplist(sc, &o->svs_clipmode, &o->svs_cliplist); REG_WRITE(REG_DMA_BASE0(t), - (int)o->svs_buf_base + o->svs_buf_offset[0][0]); + (intptr_t)o->svs_buf_base + o->svs_buf_offset[0][0]); REG_WRITE(REG_DMA_BASE1(t), - (int)o->svs_buf_base + o->svs_buf_offset[1][0]); + (intptr_t)o->svs_buf_base + o->svs_buf_offset[1][0]); REG_WRITE(REG_DMA_PITCH(t), o->svs_buf_pitch[0]); REG_WRITE(REG_DMA_CTRL(t), ((0x7 << DMA_CTRL_BURST_SHIFT) & DMA_CTRL_BURST_MASK) | @@ -1431,7 +1431,7 @@ * hence we dont't need svs_cap_bufsz[t] */ if (offset > (sc->sc_video_spec.svs_cap_bufsz - 4096)) { - device_printf(sc->sc_dev, "Invalid mmap offset %d, max: %d\n", + device_printf(sc->sc_dev, "Invalid mmap offset %jd, max: %d\n", offset, (sc->sc_video_spec.svs_cap_bufsz - 4096)); return EINVAL; @@ -1467,31 +1467,31 @@ if (sc->sc_video_spec.svs_vfmt & VFMT_PLANAR) { REG_WRITE(REG_DMA_BASE0(SAA_CHAN_YUV_Y), - (int)o->svs_buf_base + o->svs_buf_offset[0][0] + + (intptr_t)o->svs_buf_base + o->svs_buf_offset[0][0] + offset); REG_WRITE(REG_DMA_BASE1(SAA_CHAN_YUV_Y), - (int)o->svs_buf_base + o->svs_buf_offset[1][0] + + (intptr_t)o->svs_buf_base + o->svs_buf_offset[1][0] + offset); REG_WRITE(REG_DMA_BASE0(SAA_CHAN_YUV_U), - (int)o->svs_buf_base + o->svs_buf_offset[0][1] + + (intptr_t)o->svs_buf_base + o->svs_buf_offset[0][1] + offset); REG_WRITE(REG_DMA_BASE1(SAA_CHAN_YUV_U), - (int)o->svs_buf_base + o->svs_buf_offset[1][1] + + (intptr_t)o->svs_buf_base + o->svs_buf_offset[1][1] + offset); REG_WRITE(REG_DMA_BASE0(SAA_CHAN_YUV_V), - (int)o->svs_buf_base + o->svs_buf_offset[0][2] + + (intptr_t)o->svs_buf_base + o->svs_buf_offset[0][2] + offset); REG_WRITE(REG_DMA_BASE1(SAA_CHAN_YUV_V), - (int)o->svs_buf_base + o->svs_buf_offset[1][2] + + (intptr_t)o->svs_buf_base + o->svs_buf_offset[1][2] + offset); } else { REG_WRITE(REG_DMA_BASE0(t), - (int)o->svs_buf_base + o->svs_buf_offset[0][0] + + (intptr_t)o->svs_buf_base + o->svs_buf_offset[0][0] + offset); REG_WRITE(REG_DMA_BASE1(t), - (int)o->svs_buf_base + o->svs_buf_offset[1][0] + + (intptr_t)o->svs_buf_base + o->svs_buf_offset[1][0] + offset); } } --J2SCkAp4GZ/dPZZf Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="set_videoopt.c.diff" --- kbtv-1.2.3.orig/saa/saa/support/set_videoopt.c Tue Feb 13 04:21:03 2007 +++ kbtv-1.2.3/saa/saa/support/set_videoopt.c Tue Feb 13 04:43:45 2007 @@ -16,6 +16,9 @@ #define NTSC_LINE_COUNT 240 #define NTSC_LINE_OFFSET 16 +#define SECAM_LINE_COUNT 288 +#define SECAM_LINE_OFFSET 19 + static const char *opts = "s:o:i:b:f:g:w:x:A:a:C:c:d:l:L:m:M:B:T:S:H:D:"; static char *devname = 0; @@ -24,6 +27,7 @@ "-s : Video Standard, standard is:\n" " p - PAL (default)\n" " n - NTSC\n" + " s - SECAM\n" "-o : Line Start Offset Adjustment, N is:\n" " -11 < N < +11 (default 0)\n" "-i : Video Input Source, input is:\n" @@ -191,6 +195,14 @@ video_std.std_video_yinstart + NTSC_LINE_COUNT - 1; video_opt.svo_cstd = CSTD_NTSC; + break; + case 'S': + case 's': + video_std.std_video_yinstart = SECAM_LINE_OFFSET; + video_std.std_video_yinstop = + video_std.std_video_yinstart + + SECAM_LINE_COUNT - 1; + video_opt.svo_cstd = CSTD_SECAM; break; default: errx(1, "Invalid standard %s\n\n%s", --J2SCkAp4GZ/dPZZf--