Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 7 Oct 1996 21:42:52 -0400 (EDT)
From:      rhh@ct.picker.com (Randall Hopper)
To:        hackers@freebsd.org
Subject:   Driver debugging ? -- CMOS hosed by outw loop
Message-ID:  <199610080142.VAA27292@elmer.ct.picker.com>

next in thread | raw e-mail | index | archive | help
     I'm in the process of trying to port a Linux driver.  Got it linked in
and probing OK, but it's losing it when it tries to initialize the voice
channels on the synth chip.

     With ddb I've isolated it down to a single tight loop in the attach()
that's doing nothing but outw'ing to the synth chip, looping 32 times to
initialize each of the 32 channels.  Each loop only contains 41 outw's.
This is from published vendor docs.

     If I let this rip to the end of the loop, and then do a cpu_reset(),
my CMOS is hosed.  If I cpu_reset() before the loop, its not.  So the
problem's in the loop.  ok...

     Now this is where it gets strange.  If I only let it run the first 16
iterations (init the first 16 channels), the CMOS isn't hosed.  If I let it
run the first 17, it is.  BUT if I let it run the 17th alone, the CMOS
"isn't" hosed.

     By the way, the port addresses involved here aren't anywhere near
0x70/0x71 where the CMOS latches are.  They're 0x620-3, 0xA20-3, and
0xE20-3.  Another bit of info -- if I run the entire loop (all 32
iterations) in DOS (yes, I was really grasping for a hold on this), no CMOS
corruption.

     There's obviously something that I don't know here.  Can someone who
has more experience offer any suggestions as to what might be going on?

Thanks in advance,

Randall Hopper 
rhh@ct.picker.com








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