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>