Skip to contentSkip to conversation

drivers/serial/8250_pci.c: don't probe non-serial softmodems

PATCH In review Sasha Khapyorsky 2 participants 4 messages Apr 19, 2005 – May 27, 2005 TTY layer and serial drivers

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 drivers/serial/8250_pci.c: don't probe non-serial softmodems

Hello Russel,

Some soft modem pci devices (known list in the patch) claim to have 'communication' class, and as result they are grabbed by serial driver. Actually those devices are useless for serial drivers (it is not "real" modem and doesn't have serial interface), but this prevents probing from soft modem drivers (there are few in ALSA).

The patch below makes it possible to define ids of such known non-serial devices and don't probe it by 8250_pci driver.

Thanks,
Sasha.

drivers/serial/8250_pci.c +19 -0
diff -wru linux-2.6.12-rc1_orig/drivers/serial/8250_pci.c linux-2.6.12-rc1/drivers/serial/8250_pci.c
@@ -1605,6 +1605,22 @@
 }
 
 /*
+ * pci devices with appropriate class declared, but known as
+ * non modems or serial
+ */
+static struct pci_device_id __devinitdata non_serial_pci_tbl[] = {
+	{	0x163c, 0x3052,   /* smartlink softmodem */
+		PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
+	{	0x134d, 0x2189,   /* HSP1688 softmodem */
+		PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
+	{	PCI_VENDOR_ID_AL, 0x5457,
+		PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
+	{	PCI_VENDOR_ID_AL, 0x5459,
+		PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
+	{ 0, }
+};
+
+/*
  * Probe one serial board.  Unfortunately, there is no rhyme nor reason
  * to the arrangement of serial ports on a PCI card.
  */
@@ -1616,6 +1632,9 @@
 	struct pci_serial_quirk *quirk;
 	int rc, nr_ports, i;
 
+	if (pci_match_device(non_serial_pci_tbl, dev))
+		return -ENODEV;
+
 	if (ent->driver_data >= ARRAY_SIZE(pci_boards)) {
 		printk(KERN_ERR "pci_init_one: invalid driver_data: %ld\n",
 			ent->driver_data);
#1 lore raw
Quoted 5 lines · Sasha Khapyorsky

Some soft modem pci devices (known list in the patch) claim to have 'communication' class, and as result they are grabbed by serial driver. Actually those devices are useless for serial drivers (it is not "real" modem and doesn't have serial interface), but this prevents probing from soft modem drivers (there are few in ALSA).

What class id are these devices?

Signature · 3 lines
Russell King
 Linux kernel    2.6 ARM Linux   - http://www.arm.linux.org.uk/
 maintainer of:  2.6 Serial core
#2 lore raw
Quoted 8 lines · Russell King
Quoted 5 lines · Sasha Khapyorsky

Some soft modem pci devices (known list in the patch) claim to have 'communication' class, and as result they are grabbed by serial driver. Actually those devices are useless for serial drivers (it is not "real" modem and doesn't have serial interface), but this prevents probing from soft modem drivers (there are few in ALSA).

What class id are these devices?

It is '0x0703' - PCI_CLASS_COMMUNICATION_MODEM

Sasha.

#3 lore raw
Quoted 11 lines · Sasha Khapyorsky
Quoted 8 lines · Russell King
Quoted 5 lines · Sasha Khapyorsky

Some soft modem pci devices (known list in the patch) claim to have 'communication' class, and as result they are grabbed by serial driver. Actually those devices are useless for serial drivers (it is not "real" modem and doesn't have serial interface), but this prevents probing from soft modem drivers (there are few in ALSA).

What class id are these devices?

It is '0x0703' - PCI_CLASS_COMMUNICATION_MODEM

Any updates, comments? What is the patch status?

Sasha.