Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 18 Jul 96 18:08:38 WET
From:      <E00114@vnet.atea.be> (Rob Schofield)
To:        <freebsd-hardware@freebsd.org>
Subject:   Multiple COM ports with same IRQ
Message-ID:  <vines.mmb7%2BgqYvlA@vnet.atea.be>

next in thread | raw e-mail | index | archive | help
Has anyone tried converging two or more more COM ports on one IRQ, ala 
multi-port board method? Let me explain...

Using sio for multiport configuration is reasonably straightforward according 
to the Handbook. However, if you've got more UARTs than the standard IBM pair 
(ie., COM1 & 2) the naughty "convention" is to have COM1 & 3 on IRQ4 and COM2 
& 4 on IRQ3. Under DOS, this is a functional limitation and causes problems. 
If there's no free IRQ lines left in your box, then you can't just re-assign 
COM3 & 4 IRQs to something other than IRQ4 or 3.

EISA boxes can use shared interrupts, level or edge triggered. ISA boxes can 
have hardware installed (accidentally?) with devices sharing the same IRQ, but 
the drivers cannot deal with it.

So - here's the nub; suppose we have an ISA/EISA box with sio0 (DOS = COM1) 
attached to a mouse, IO add XXX, interrupt 4; sio1 (COM 2) at IO XXY and sio2 
(COM 3) at IO XXZ, sharing interupt 3 (you could also plonk in COM4 on the 
same IRQ). Then, under FreeBSD, configure sio to recognise the 3 ISA devices 
at the three IO adds XXX, XXY and XXZ, with sio 2 & 3 considered to be a 
multiport board comprising 2 UARTS sharing one master IRQ:

device sio0 at isa? port 0xXXX tty irq 4 vector siointr

options "COM_MULTIPORT"

device sio1 at isa? port 0xXXY tty flags 0x???
device sio2 at isa? port 0xXXZ tty flags 0x??? irq 3 vector siointr

- plus the neccessary /dev device entries as well. XXX is at a lower IO add 
then XXY, and XXY is lower than XXZ.

Considering the UARTS will generate edge interrupt rather than level, will 
this work? Will sio grab the "dual port" interrupt then interrogate the 
individual status regs of the UARTS? I'm not too concerned with operation 
under DOS here, so I'm only concerned with FBSD.

Somebody tell me I'm an idiot and why this won't work (otherwise someone would 
have done it by now, wouldn't they?)

Rob Schofield

--
Happiness is a smoking processor.......
Rob Schofield M.Sc. AMIEE
schofiel@xs4all.nl   http://www.xs4all.nl/~schofiel



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?vines.mmb7%2BgqYvlA>