Subject: Re: USR PCI RapidCom Modem
To: None <port-i386@NetBSD.ORG>
From: Kent Polk <kent@tiamat.goathill.org>
List: port-i386
Date: 11/27/1999 20:15:39
On 20 Nov 1999 04:30:00 -0600, Rene Hexel wrote:
>Kent Polk wrote:
>
>> Any suggestions on the best way to try to configure it?
>
>  Add the vendor/product codes to "pcidevs" in /sys/dev/pci.  Then
>rebuild the corresponding .c/.h files using 'make -f Makefile.pcidevs'. 
>Chances are good that the device acts like a normal serial
>communications (UART) device.  To make this work, add an entry for your
>modem to 'pucdata.c' (also in /sys/dev/pci).  Then configure/build a
>kernel with
>
>puc*    at pci? dev ? function ?  # PCI "universal" comm. cards
>com*    at puc? port ?            # 16x450s on puc boards

Ok... I can't find any documentation in dev/pci to explain exactly
what things are what and I haven't gotten it to work.

I added the USR defs in pcidevs and the following to pucdata.c :

        /* 3Com US Robotics PCI 16550-compatible modem card  */
        {   "USR Modem PCI ",
            {   0x12b9, 0x1000, 0,      0       },
            {   0xffff, 0xffff, 0,      0       },
            {
                { PUC_PORT_TYPE_COM, 0x10, 0x00 },
            },
        },

It appears that the first rval (pcireg_t rval[4]) is the manufacturer
id, but I can't determine what the others are for. The rmasks I'm
purely guessing at but since there's only one device on the card
I figure these would be a good start.

I assume the port bar is the base offset register, so I entered
the address obtained from the card dump, and I didn't see evidence
of an offset needed from the card dump.

Results:

$ ktrace dmesg
dmesg: kvm_read: kvm_read: Bad address (0x0)
$ kdump
   368 ktrace   RET   ktrace 0
   368 ktrace   CALL  __sysctl(0xefbfd34c,0x2,0xba68,0xefbfd348,0,0)
   368 ktrace   RET   __sysctl 0
   368 ktrace   CALL  break(0xbab0)
   368 ktrace   RET   break 0
   368 ktrace   CALL  break(0xbffc)
   368 ktrace   RET   break 0
   368 ktrace   CALL  break(0xcffc)
   368 ktrace   RET   break 0
   368 ktrace   CALL  execve(0xefbfd3b0,0xefbfd82c,0xefbfd834)
   368 ktrace   NAMI  "/sbin/dmesg"

Thanks