Subject: Re: LoFI (DEcaudio) documentation?
To: Aaron J. Grier <>
From: Jonathan Stone <jonathan@DSG.Stanford.EDU>
List: port-alpha
Date: 06/16/1998 14:36:51
I wrote:

>> Anyone know where to find documentation for writing a LoFi driver? 

>> ISTR someone said documentation was available. Could someone give me a
>> refresher to it? (I looked for the archive cgd use to maintain, but
>> that's gone.)

Aaron J. grier writes:

>  techreports/abstracts/93_9.html -- for the abstract
> -- the paper
>I've got a copy at as well...

Thanks.  That's what I was looking for -- block-diagram and
programming info on the LoFi, not the 56K per se.

I have a driver that sorta works, but using the DEC CRL AudioFile (AF)
API.  Doing anything with the stereo output requires some DSP code; AF
handled all of that at userlevel.  I _think_ we can embed their 56k
binary code in a kernel (its redistributable even for charge as long
as it's for DEC hardware, which this is.) otherwise -- ugh.

Obviously, the goal is to eventually support audio(4) and audio(9) on
all channels, plus ISDN support "somehow" (bsdisdn?). For now I'm only
aiming at the phone-quality "monitor" port via one of the am73c90s.

The loFi is totally PIO-driven (to and from onboard RAM) and access to
the onboard RAM can stargve out the DSP, which will make this gly.
And it has lots of channels:
     *  stereo Line out L/R  (44Khz DAC)
     * stereo headphones L/R (44Khz DAC)
     * Mic in (codec 1)
     * Line in (codec 1)
     * line out (codec 1 )
     * local box speaker (codec 1)
     * monitor speaker (codec 0)
     * ISDN-S with DTMF/dialtone  hardware (codec 0)
     * POTS (US/canada) (codec 0, external D2249, mitel8870)
     * 56001 DSP serial output (claimed semi-standard in early 90s;
	 works with Ariel ProPort hardware, whatever that is).

The LoFi support could be something like:

     lofi0 at tc
     audioamd0 at lofi0
     audio* at audoiamd0
     audioamd1 at lofi0
     audio* at audoiamd1	# really phone/ISDN
     dsp56k0 at lofi0		# Moto 56001 DSP
     audio* at dsp56k0		# stereo output

or it could be more like
   lofi0 at tc
   audio* at lofi0		# hides all the channels internally

What's the best way to do this?