*BSD News Article 21042


Return to BSD News archive

Path: sserve!newshost.anu.edu.au!munnari.oz.au!news.Hawaii.Edu!ames!elroy.jpl.nasa.gov!swrinde!cs.utexas.edu!uunet!destroyer!mudos.pc.cc.cmu.edu!mudos.pc.cc.cmu.edu!not-for-mail
From: mju@mudos.pc.cc.cmu.edu (Marc Unangst)
Newsgroups: comp.os.386bsd.questions
Subject: AST 4-port with NetBSD 0.9?
Date: 16 Sep 1993 20:51:37 -0400
Organization: The Programmers' Pit Stop, Pittsburgh, PA
Lines: 36
Message-ID: <27b1n7$bgb@mudos.pc.cc.cmu.edu>
NNTP-Posting-Host: localhost.pc.cc.cmu.edu

According to the 386BSD FAQ, 386BSD/NetBSD/FreeBSD all support the AST
4-port serial card.  However, I can't seem to get mine to work
correctly under NetBSD 0.9.  I tried cribbing the config entries from
the SUN_LAMP configuration, but that didn't work.  Here are the config
lines that I'm currently using:

device		com2	at isa? port 0x2a0 tty irq 5 flags 0x401 vector comintr
device		com3	at isa? port 0x2a8 tty irq 5 flags 0x401 vector comintr
device		com4	at isa? port 0x2b0 tty irq 5 flags 0x401 vector comintr
device		com5	at isa? port 0x2b8 tty irq 5 flags 0x401 vector comintr

When I boot the machine, the com driver correctly recognizes the 16550
on each port, so the I/O address is correct and it at least sees the
card.  However, when I try to talk to a device connected to one of the
ports, I don't get anything.  In fact, "cu" hangs the port when I try
to disconnect, and I have to reboot the machine to free it.

The same device with the same cable works fine on tty01 (regular DOS
COM2: port), and worked fine on the AST 4-port card under SVR4 with
the SAS driver.  In fact, the whole card worked fine under SVR4.

I have a feeling that something is wrong with the interrupt
configuration, since missed interrupts would explain the problems I'm
having.  I also looked through com.c and didn't see any code to handle
shared interrupts, or any code to interpret the "flags 0x401" entry.
If I understand the operation of the 4-port card correctly, when the
CPU receives an interrupt from the card, it needs to read the
interrupt vector I/O port to find out which port generated the
interrupt, and then service that port.  However, com.c doesn't seem to
have anything to do this.  Does the com driver really not support
shared interrupts, or have I simply misconfigured something?

-- 
Marc Unangst, N8VRH         | "Free software is NOT the same thing as
mju@mudos.pc.cc.cmu.edu     |  free beer."
                            |     -Philip Knapp in comp.os.linux