Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 30 Jul 1997 08:59:50 +0930 (CST)
From:      Michael Smith <msmith@atrad.adelaide.edu.au>
To:        mouth@ibm.net (John Kelly)
Cc:        msmith@atrad.adelaide.edu.au, freebsd@atipa.com, hackers@FreeBSD.ORG, terry@lambert.org
Subject:   Re: Sharing interrupts
Message-ID:  <199707292329.IAA15471@genesis.atrad.adelaide.edu.au>
In-Reply-To: <33df1cb8.2144876@smtp-gw01.ny.us.ibm.net> from John Kelly at "Jul 29, 97 04:53:40 pm"

next in thread | previous in thread | raw e-mail | index | archive | help
John Kelly stands accused of saying:
> >More specifically, you can only allow _one_ device to drive an ISA
> >IRQ line at any given time.  
> 
> Not strictly true, see below.

That depends on whether you feel like violating the bus standard.

> >ISA bus drivers use totem-pole outputs, so a device which has control
> >of an interrupt line but not asserting an interrupt still counts as
> >"driving"
> 
> A standard totem-pole output is either driving the line to ground
> (logic low) or 3.5-4.5 volts (logic high).  But if the device has a
> tri-state driver, that third state is "floating," and it can be on the
> line at the same time in the floating state without interfering with
> another device.

A device with a tristated output is not _driving_ the line.  This is
consistent with my original statement.

> But in any event, that's not what I'm talking about.  I'm talking
> about sharing an edge-triggered, ISA interrupt among two or more
> serial cards (with single or multiple UARTS per card).

This can only be done correctly using extra logic.

> >See the comments and procedure in sioprobe() in i286/isa/sio.c and
> 
> I have, and that documentation does not tell the electrical story.

Specifically, it describes the problems with gating tristated drive to
the IRQ lines, with regard to the electrical behaviour of an undriven
line.

> >cross-reference the 8250 datasheet for an understanding of the quirks
> >and complexities involved in getting this right.  It is _not_ trivial.
> 
> I have.  It's not hard at all.

It sounds suspiciously like you are either Marilyn Vos Savant, or
underestimating the situation.

> In the 8259 datasheet, what many people overlook are its electrical
> characteristics.  As I said in another post, with a little knowledge
> of electricity, a few $0.50 parts, and a soldering iron, you can share
> a single, edge-triggered, ISA interrupt among two or more serial
> cards.

Very few boards these days use the 8259.  Most, if not all, of the
current chipsets use a logically equivalent macrocell, however their
electrical characteristics are likely to be very different to those of
a 70's vintage NMOS device.

> I'll post the gory details if anyone wants to know.

Using diodes and resistors to convert totem-pole outputs into
open-collector-like outputs is highschool electronics.  You will note
my employer's field in my .sig; my work profile covers bus and
interface design as well as OS and UI development.

You're quite welcome to butcher your cards and live with the potential
uncertainties involved in what you're doing, and I have no problems
with you sharing the information with others that want to do the same.
The problem arises when you claim that this is a universal case : it
isn't, and your statements are not helpful when it comes to getting
the message across.

-- 
]] Mike Smith, Software Engineer        msmith@gsoft.com.au             [[
]] Genesis Software                     genesis@gsoft.com.au            [[
]] High-speed data acquisition and      (GSM mobile)     0411-222-496   [[
]] realtime instrument control.         (ph)          +61-8-8267-3493   [[
]] Unix hardware collector.             "Where are your PEZ?" The Tick  [[



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199707292329.IAA15471>