Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 09 Feb 2007 00:16:31 -0800
From:      Daniel Rudy <dr2867@pacbell.net>
To:        freebsd-hackers@freebsd.org
Subject:   PING: Someone on the core team. (Modem Problem)
Message-ID:  <45CC2DDF.6040600@pacbell.net>

next in thread | raw e-mail | index | archive | help

I'm having a problem with a Zoom PCI Fax Modem Model 2920A.  The modem
has the latest firmware version, but there seems to be a problem with
the sio driver.  Note that this *IS* a controller based modem.

Here's the relevant information from dmesg:

sio0: configured irq 19 not in bitmap of probed irqs 0
sio0: port may not be enabled
sio0: <Lucent kermit based PCI Modem> port
0xdc00-0xdcff,0xe000-0xe0ff,0xe400-0xe407 mem 0xeb107000-0xeb1070ff
 irq 19 at device 11.0 on pci0
sio0: type 16550A

I have no idea WHY it's saying IRQ 19 as IRQ 19 is used by sis0.  Here's
the output from vmstat -i:

interrupt                          total       rate
irq1: atkbd0                           6          0
irq6: fdc0                            10          0
irq14: ata0                          887          1
irq15: ata1                           47          0
irq18: sis2                          333          0
irq19: sis0                            1          0
cpu0: timer                      1000810       1993
Total                            1002094       1996

And here is the output of pciconf -lv:

sio0@pci0:11:0: class=0x070303 card=0x048011c1 chip=0x048011c1 rev=0x00
hdr=0x00
    vendor   = 'Lucent/Agere Systems (Was: AT&T MicroElectronics)'
    device   = 'Venus WinModem (V90, 56KFlex)'
    class    = simple comms
    subclass = generic modem


Now I know that device says WinModem, but this is most definitely *NOT*
a WinModem.  I made sure of that and even confirmed it with Zoom.  They
claim that it should work with any system that has a PCI slot running
any OS that supports serial IO and a 16550A UART.

Here's the problem.  Anything that this modem outputs, requires multiple
inputs for it to read out on the screen.  Here's an example:

gateway# cu -l /dev/cuad0 -s 57600
Connected
at&v

    Option               Selection       AT Cmd
    ---------------      ------------    --------
    Comm Standard        Bell            B
    CommandCharEcho      Enabled         E
    Speaker Volume       Medium          L
    Speaker Control      OnUntilCarrier  M
    Result Codes         Enabled         Q
    Dialer Type          Tone            T/P
    ResultCode Form      Text            V
    ExtendResultCode     Enabled         X
    DialTone Detect      Enabled         X
    BusyTone Detect      Enabled         X
    LSD Action           Standard RS232  &C
    DTR Action           Standard RS232  &D
Press any key to continue; ESC to quit.

    Option               Selection       AT Cmd
    ---------------      ------------    --------
    V22b Guard Tone      Disabled        &G
    Flow Control         Hardware        &K
    Error Control Mode   V42,MNP,Buffer  \N
    Data Compression     V42bis/MNP5     %C
    AutoAnswerRing#      0               S0
    AT Escape Char       43              S2
    CarriageReturn Char  13              S3
    Linefeed Char        10              S4
    Backspace Char       8               S5
    Blind Dial Pause     2 sec           S6
    NoAnswer Timeout     65 sec          S7
    "," Pause Time       2 sec           S8
Press any key to continue; ESC to quit.

    Option               Selection       AT Cmd
    ---------------      ------------    --------
    No Carrier Disc      2000 msec       S10
    DTMF Dial Speed      95 msec         S11
    Escape GuardTime     1000 msec       S12
    Data Calling Tone    Disabled        S35
    Line Rate            33600           S37
Press any key to continue; ESC to quit.

    Stored Phone Numbers
    --------------------
     &Z0=
     &Z1=
     &Z2=

OK


In order to get that output, I have to hit either enter or space 61
times (yes sixty-one is not a typo) to get it.  When it prints, it only
prints out about 16 characters at a time (which happens to be the size
of the FIFO buffer in a generic 16550A UART).  The same modem works fine
in Windows, and Zoom claims it works in Linux (I don't have a Linux box
to try it in), but not FreeBSD.  I think it has something to do with
that shared interrupt on IRQ19 with sis0, which is a network adapter.
As to why FreeBSD is assigning two devices to the same IRQ I have no
idea, especially since there are plenty of IRQs available that can be
used (serial, parallel are turned off in the BIOS).

I have 2 of these modems, different firmware revisions, and they are
both doing the same thing.  Plus this machine has sis0, sis1, and sis2
and all interfaces must be up and working for the box to work in the
application that I'm using it in.

-- 
Daniel Rudy



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