Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 26 Apr 1999 13:47:03 +1000 (EST)
From:      John Birrell <jb@cimlogic.com.au>
To:        gurney_j@resnet.uoregon.edu
Cc:        multimedia@FreeBSD.ORG, hasty@rah.star-gate.com, fsmp@FreeBSD.ORG
Subject:   Re: brooktree driver problems??
Message-ID:  <199904260347.NAA20510@cimlogic.com.au>
In-Reply-To: <19990425185312.25505@hydrogen.nike.efn.org> from John-Mark Gurney at "Apr 25, 1999  6:53:12 pm"

next in thread | previous in thread | raw e-mail | index | archive | help
John-Mark Gurney wrote:
> the first problem I came across was the driver sending my program around
> 280-380 signals per sec...  this is definately NOT 30fps...  I set the
> geometry using the METEORSETGEO ioctl to width 160, height 120, frame 1,
> and fmt METEOR_GEO_YUV_12...  and similar things happen when I set the
> geo to 320x240...  as I read the driver, this shouldn't happen, but it
> is...

The extra signals are the result of the card reporting errors that are
silently handled by the driver. Setting the geometry from user-space
is not handled properly by the driver. The number of rows/columns must
be a function of the hactive/hinactive/vactive/vinactive hardware
setting that the driver makes, and the RISC program must be built
to WRITE or SKIP _exactly_ that many rows/columns, otherwise the
hardware complains. You can see this with fxtv in small size, by adding
the following code to the driver:

printf( " STATUS dstatus %x istatus %lx risc_count %x \n",
	dstatus, bktr_status, bt848->risc_count );
if ((bktr_status & BT848_INT_FBUS) != 0)
	printf( " ---> BT848_INT_FBUS in %s data\n",
	    (bktr_status & BT848_INT_FIELD) ? "even":"odd");
if ((bktr_status & BT848_INT_FTRGT) != 0)
	printf( " ---> BT848_INT_FTRGT in %s data\n",
	    (bktr_status & BT848_INT_FIELD) ? "even":"odd");
if ((bktr_status & BT848_INT_FDSR) != 0)
	printf( " ---> BT848_INT_FDSR in %s data\n",
	    (bktr_status & BT848_INT_FIELD) ? "even":"odd");
if ((bktr_status & BT848_INT_PPERR) != 0)
	printf( " ---> BT848_INT_PPERR in %s data\n",
	    (bktr_status & BT848_INT_FIELD) ? "even":"odd");
if ((bktr_status & BT848_INT_RIPERR) != 0)
	printf( " ---> BT848_INT_RIPERR in %s data\n",
	    (bktr_status & BT848_INT_FIELD) ? "even":"odd");
if ((bktr_status & BT848_INT_PABORT) != 0)
	printf( " ---> BT848_INT_PABORT in %s data\n",
	    (bktr_status & BT848_INT_FIELD) ? "even":"odd");
if ((bktr_status & BT848_INT_OCERR) != 0)
	printf( " ---> BT848_INT_OCERR in %s data\n",
	    (bktr_status & BT848_INT_FIELD) ? "even":"odd");
if ((bktr_status & BT848_INT_SCERR) != 0)
	printf( " ---> BT848_INT_SCERR in %s data\n",
	    (bktr_status & BT848_INT_FIELD) ? "even":"odd");

after (about) line 1481 where all these errors are tested. On my system,
fxtv in small mode causes continual SCERR errors which the data sheet
refers to as a "severe error". I don't think that the driver should
allow a user-space application to specify parameters that the
driver and hardware don't like.

-- 
John Birrell - jb@cimlogic.com.au; jb@freebsd.org http://www.cimlogic.com.au/
CIMlogic Pty Ltd, GPO Box 117A, Melbourne Vic 3001, Australia +61 418 353 137


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-multimedia" in the body of the message




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