Subject: Re: Quadra AV DMA?
To: Ken Nakata <kenn@physics.rutgers.edu>
From: Michael R Zucca <mrz5149@cs.rit.edu>
List: port-mac68k
Date: 02/16/1998 12:39:08
> Michael R Zucca wrote on Thu, 12 Feb 1998 23:00:03 -0500 (EST):
> > I'm working on a CIVIC driver but progress is somewhat slow since I'm having
> > a heck of a time trying to figure out all of the CIVIC's registers. I'm
> 
> How are you doing that?  I mean, by trial & errors?  For that matter,
> how did you figure out the chip's I/O address to begin with?

It depends on the machine. Many machine's tech notes are well put together
and they tell you where the DAC and controller registers live. The AV
technotes, however, were very poor in this department.

So then we go to disassembly and tracing. There's also instinct and a
certain amount of resourcefulness involved. Good example: I know alot of
newer machines use a global in 0xDD8 as a pointer to an area in ROM that
has offsets to critical IO addresses, particularly video addresses.
I poked around until I found the base address for the CLUT/DAC.

Another bonus for the CIVIC chip is that it is very badly supported in
the MkLinux code. :-) The upshot of finding this is that it tells me at
least where the interrupt registers live. It also tells me that I can
use a 6100 with an AV board as a platform to experiment on. This is
important because using the 840AV can be tricky. It's hard to know
where the video controller space ends in device space. On a 6100 I know
that anything in pseudo-slot $E is video related so it makes things
clearer.

The trouble with the CIVIC is that it is a complicated little controller
chip. It does a lot and supports all kinds of weird things associated with
video mixing. So mapping out its functionality should be challenging.

Oh yeah, trial and error also help too. There's nothing quite like goofing
around, setting various bits, and watching the screen go haywire. :-)

In any case, finding this stuff is a lengthy process. It often takes hours
to poke around and theorize as to what bit does what.