*BSD News Article 18836


Return to BSD News archive

Path: sserve!newshost.anu.edu.au!munnari.oz.au!news.Hawaii.Edu!ames!agate!doc.ic.ac.uk!sun.rhbnc.ac.uk!simon
From: simon@dcs.rhbnc.ac.uk (Simon Richardson)
Newsgroups: comp.os.386bsd.bugs
Subject: Re: Question about ns16550 serial ports
Date: 24 Jul 1993 13:03:31 GMT
Organization: Univ. of London, Royal Holloway College.
Lines: 43
Message-ID: <22rbv3$372@sun.rhbnc.ac.uk>
References: <52560002@hpuamsa.neth.hp.com>
NNTP-Posting-Host: lt5.cs.rhbnc.ac.uk

reink@hpuamsa.neth.hp.com (Reinier Kleipool) writes:
> 
> Hello,
> 
>   You do not give any information about your card other than that is has 
> 8 16550 chips on it. The problem you probably have is that the uarts do
> not give their interrupts on the irq line the kernel driver exepects them
> to arrive. YUou should find out which irq lines your card is using.
> you must then build a kernel with the right settings for these IRQ's.
>   Also you will have a problem if a 8 UARTS are interrupting at the same
> IRQ line of the PC. The kernel driver will heve to poll the UARTS to
> find out which UART generated the interrupt. I do not think that the
> 'standard' driver will do this correctly.
> 
> Reinier Kleipool.


I caan *promise* you that the standard driver does not do this.  What is
worse, with normal ISA hardware they are not wire-OR'ed properly, so you
cannot have 2 interrupts on 1 line and still expect it to work (someone at
IBM cocked up the original PC design: he wrote "pull down" when he meant
"pull up" and nothing ever worked since.)  So there are no daisy-chained
interrupts on the PC at all, unless the daisy-chaining is done on the
interface board before the ISA bus.  On most multi-serial boards that I have
seen, interrupts are selectable for each UART: 2-15 being a typical range.

I actually got the "2 serial on 1 interrupt" part going for the com driver:
but because of the hardware problem one serial port would occasionally lock
up waiting for action at the other to clear the interrupt contention (great
fun when the terminals are in different rooms :-(. )  Polling for 9600 baud
is too cpu-consuming.  So it is two serial ports per machine for me, I'm
afraid.  (Then I bought some ne2000 ethernet cards to escape this limit -
but that's another (long) story...)


	Simon

---

"A thousand violins cloy very rapidly without percussion"
						John Fowles