Funny dmf-32 behavior

Chris Torek chris at mimsy.UUCP
Mon Aug 1 16:00:36 AEST 1988


[Followups have been redirected to comp.unix.wizards only]

>In article <sEhS+rC at far-side.sm.unisys.com> dinh at 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 at g.ms.uky.edu> david at 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 at mimsy.umd.edu	Path:	uunet!mimsy!chris



More information about the Comp.unix.wizards mailing list