Xref: utzoo comp.unix.questions:8516 comp.unix.wizards:10142 comp.bugs.4bsd:884 Path: utzoo!utgpu!water!watmath!clyde!att!osu-cis!tut.cis.ohio-state.edu!mailrus!ames!ncar!oddjob!mimsy!chris From: chris@mimsy.UUCP (Chris Torek) Newsgroups: comp.unix.questions,comp.unix.wizards,comp.bugs.4bsd Subject: Re: Funny dmf-32 behavior Message-ID: <12771@mimsy.UUCP> Date: 1 Aug 88 06:00:36 GMT References: <10103@g.ms.uky.edu> Followup-To: comp.unix.wizards Organization: U of Maryland, Dept. of Computer Science, Coll. Pk., MD 20742 Lines: 69 [Followups have been redirected to comp.unix.wizards only] >In article dinh@sm.unisys.com (Dinh Le) >writes: >>device dmf0 at uba? csr 0160340 flags 0xfc >> vector dmfsrint dmfsxint dmfdaint dmfdbint dmfrint dmfxint dmflint >>device dmf1 at uba? csr 0160340 flags 0xfc >> vector dmfsrint dmfsxint dmfdaint dmfdbint dmfrint dmfxint dmflint (Why are both csr addresses set to 0160340? Presumably the second dmf is at one of the standard alternative addresses, so this is not critical, but it is rather sloppy. Anyway...) >>[after changing `flags' and rebuilding the kernel, things broke] In article <10103@g.ms.uky.edu> david@ms.uky.edu (David Herron -- One of the vertebrae) writes: [ I thought Heron were family Ardeidae, not Vertebrae :-) ] >... the real information is the difference between ".asynch" and ".". >The driver has a little section of code in the probe routine which >looks in the device registers to see which of the sub-devices are "active". >As I recall the active sub-devices are selected by DIP switches on the >distribution panel though maybe they're on the board(?). I have no idea where the enables are, but: The DMF-32 provides four (!) interfaces, namely, a DR-11-like parallel port, a synchronous port, a Centronics-compatible line-printer port, and an 8-line asynchronous `port' (really 8 ports). Of those eight async lines, only two have modem control; this is an utter botch, but I suppose they ran out of space on the board. The lack of modem control on the 6 lines explains the `flags 0xfc'; however, the firmware on the DMF-32 pretends that the modem signals are always active, so the flags are in fact unnecessary. (I think.) At any rate, the DMF register set is defined such that any (or even all) of those interfaces may be omitted. This is in fact useful, since to support all those interfaces, the DMF-32 uses up 7 interrupt vectors (out of 128); if only the async port is present, a clever autoconfiguration sequence can adjust things so as to take only 2. (This is more significant than it might seem; while floor(128/7) indicates that you could run 18 DMF-32s, if you have other devices you may have specific chunks of the vector space preallocated and thus not usable.) All of this is merely background information, intended to support Dave Herron's description. The probe code in the DMF driver tests each of the bits for `interface present', and for each that is, prints its name. Hence, with everything: dmf0: parallel printer synch asynch. dmf0 at uba0 csr 160340 vec 740, ipl 15 If you have (e.g.) an Emulex or Able emulator with only the async interface: dmf0: asynch. dmf0 at uba0 csr 160340 vec 764, ipl 15 But if you see the device as dmf0: . dmf0 at uba0 csr 160340 vec 740, ipl 15 then nothing is enabled on it, and it is not going to be useful. -- In-Real-Life: Chris Torek, Univ of MD Comp Sci Dept (+1 301 454 7163) Domain: chris@mimsy.umd.edu Path: uunet!mimsy!chris