RE: devfs + PCI serial card = no extra serial ports (probably unsupported card)

Robert White
2003-03-08T02:07:40Z

I had a similar problem, but the actual problem had nothing to do with the
devfs, the PCI serial card in question was not in the list of PCI devices.
(It was a one-off P.O.S.. from CompUSA.) Neither the serial ports nor
parallel port were recognized. The box claimed it was an 16PCI592 but the
chip maker had reved the chip ID.

The solution was to use scanpci to get the vendor and device numbers and
then add the numbers to pci_ids.h and then put an entry into the
serial_pci_tbl array in serial.c. It took a little investigative work to
find which PCI ids were for the card (I took it out, did a scanpci, put it
back in and did it again and looked at what changed. [I was very newbie at
the time 8-)])

Consider these two diffs, they added support for the card to the driver. I
had to guess at some of the values but fortunately there was a very similar
listing in serial.c already.

After that, the card appears in the device file system normally.

===== cut here =====
--- /tmp/pci_ids.h.orig 2003-03-07 17:59:07.000000000 -0800
+++ linux/include/linux/pci_ids.h 2002-07-29 01:51:19.000000000 -0700
@@ -1477,6 +1477,8 @@
#define PCI_DEVICE_ID_OXSEMI_16PCI952 0x950A
#define PCI_DEVICE_ID_OXSEMI_16PCI95N 0x9511
#define PCI_DEVICE_ID_OXSEMI_16PCI954PP 0x9513
+#define PCI_DEVICE_ID_OXSEMI_16PCI952DS 0x9521 // later rev or
something
+#define PCI_DEVICE_ID_OXSEMI_16PCI952PP 0x9513 // the Parallel Port
device

#define PCI_VENDOR_ID_AIRONET 0x14b9
#define PCI_DEVICE_ID_AIRONET_4800_1 0x0001
--- /tmp/serial.c.orig 2003-03-07 17:59:56.000000000 -0800
+++ linux/drivers/char/serial.c 2002-07-29 01:42:35.000000000 -0700
@@ -4658,6 +4658,9 @@
{ PCI_VENDOR_ID_OXSEMI, PCI_DEVICE_ID_OXSEMI_16PCI952,
PCI_ANY_ID, PCI_ANY_ID, 0, 0,
pbn_b0_2_115200 },
+ { PCI_VENDOR_ID_OXSEMI, PCI_DEVICE_ID_OXSEMI_16PCI952DS,
+ PCI_ANY_ID, PCI_ANY_ID, 0, 0,
+ pbn_b0_bt_2_115200 },

/* Digitan DS560-558, from jimd@esoft.com */
{ PCI_VENDOR_ID_ATT, PCI_DEVICE_ID_ATT_VENUS_MODEM,
===== cut here =====

(Note that this caused the devices to appear as /dev/(tts|cua)/4 and
/dev/(tts|cua)/5 even though I only have one other available serial port.
The first four (0..3) are reserved for the built in/reserved COM1 though
COM4 no matter what. This is expected.)

Alternately, if the card came with drivers, the manufacturer may have simply
chosen not to support the devfs filesystem. Nothing much you can do in that
case except yell at the manufacturer.

Rob.

-----Original Message-----
From: linux-kernel-owner@vger.kernel.org
[mailto:linux-kernel-owner@vger.kernel.org]On Behalf Of Bryan Whitehead
Sent: Friday, March 07, 2003 3:18 PM
To: Ed Vance
Cc: linux-newbie@vger.kernel.org; linux-kernel@vger.kernel.org
Subject: Re: devfs + PCI serial card = no extra serial ports

> What serial driver initialization messages do you get from dmesg?
> Is the "MANY_PORTS" flag present in the list of enabled options?
> Which distribution and rev level are you using?

My boot messages say this:
Serial driver version 5.05c (2001-07-08) with HUB-6 MANY_PORTS MULTIPORT
SHARE_IRQ SERIAL_PCI ISAPNP enabled
ttyS00 at 0x03f8 (irq = 4) is a 16550A
ttyS01 at 0x02f8 (irq = 3) is a 16550A

It only sets up my built-into-motherboard serial ports. The add on card
gets ignored.

I would have thought with SERIAL_PCI enabled I would have no problem.
But it doesn't seem to be so.

doing the quick/dirty setserial stuff with my own mknod's work. but it's
a big "messy". I'd at least like to get this fixed so next kernel
version I don't need to do a quick hack todo something as simple as
getting a serial port working.

I can post my entire dmesg if needed allong with my complete /proc/pci.
I'm also willing to play with patches. (if this is already fixed in a
later kernel than 2.4.19 I'd be willing to give it a go).

> Ed
>
> -----Original Message-----
> From: Bryan Whitehead [mailto:driver@jpl.nasa.gov]
> Sent: Friday, March 07, 2003 2:55 PM
> To: linux-kernel@vger.kernel.org
> Cc: linux-newbie@vger.kernel.org
> Subject: Re: devfs + PCI serial card = no extra serial ports
>
>
>
> BTW, this is with 2.4.19 (kernel shipped with distro).... I'm willing to
> test any patches / rebuild kernel to get this working.....
>
>
> Bryan Whitehead wrote:
>
>>It seems devfsd has an annoying "feature". I bought a PCI card to get a
>>couple (2) more serial ports. The kernel doesn't seem to set up the
>>serial ports at boot, so devfs never creates an entry. However, post
>>boot, since there is no entries, I cannot configure the serial ports
>>with setserial. So basically devfsd = no PCI based serial add on?
>>
>>03:05.0 Serial controller: NetMos Technology 222N-2 I/O Card (2S+1P)
>>(rev 01) (prog-if 02 [16550])
>> Subsystem: LSI Logic / Symbios Logic (formerly NCR): Unknown device
>>0002
>> Flags: medium devsel, IRQ 17
>> I/O ports at ecf8 [size=8]
>> I/O ports at ece8 [size=8]
>> I/O ports at ecd8 [size=8]
>> I/O ports at ecc8 [size=8]
>> I/O ports at ecb8 [size=8]
>> I/O ports at eca0 [size=16]
>>
>>
>>mknod ttyS2 c 4 66
>>mknod ttyS3 c 4 67
>>setserial ttyS2 port 0xecf8 UART 16550A irq 17 Baud_base 9600
>>setserial ttyS3 port 0xece8 UART 16550A irq 17 Baud_base 9600
>>
>>I hoped after "setting up" the serial ports with setserial some magic
>>would happen and they would apear in /dev/tts... but I was wrong.
>>
>>gets me working serial ports... but it's not in /dev... :O
>>
>>Am I just screwed?
>>
>>If so, what would be a good add on PCI based solution for more serial
>>ports that WORKS with devfsd? (I don't want to disable devfs as this
>>opens up a different set of problems)
>>
>>Thanks for any replay!
>>
>
>
>

--
Bryan Whitehead
SysAdmin - JPL - Interferometry Systems and Technology
Phone: 818 354 2903
driver@jpl.nasa.gov

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/