Package: sl-modem-source Version: 2.9.9a-1 Severity: wishlist
Some of the ALI chipset modems supported by this driver are detected by the Linux kernel on boot and identified as modems. Their PCI address is then assigned to the default serial driver intended for real modems. Up until the 2.6.10 driver, there was a workaround allowing the serial driver to be released in such cases; starting with 2.6.10, there is no such workaround. When the slmodem driver is to be loaded, it finds the hardware is already taken and refuses to load: slamr: device 10b9:5457 is grabbed by another driver This behavior requires a simple fix in the 8250_pci.c serial driver in the kernel, along the lines below -- the patch is said to be from Sasha Khapyorsky <[EMAIL PROTECTED]>, the upstream author of the driver, and was sent to me by Jacques Goldberg on the linmodems.org discussion list. Tested on my system and solves the problem. As this is not a bug in the sl-modem driver, I'm unsure how best to file the bug and the proposed patch; please feel free to forward it to the Debian kernel patcher if that seems appropriate to you; at some point it should go to the mainline kernel. In the meantime it might help people here who run into this problem. The diff is against the latest 2.6.10-6 Debian kernel source. Dave --- 8250_pci.c 2005-04-09 00:23:31.000000000 -0700 +++ 8250_pci.c-2.6.10.patched 2005-03-13 02:14:13.000000000 -0800 @@ -1605,6 +1605,20 @@ } /* + * pci devices with appropriate class declared, but known as + * non modems or serial + */ +static struct pci_device_id __devinitdata non_serial_pci_tbl[] = { + { PCI_VENDOR_ID_AL, PCI_DEVICE_ID_AL_M5451, + 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 +1630,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); -- System Information: Debian Release: sid APT prefers unstable APT policy: (500, 'unstable') Architecture: i386 (i686) Kernel: Linux 2.6.10-ac8 Locale: LANG=en_US, LC_CTYPE=en_US (charmap=ISO-8859-1) Versions of packages sl-modem-daemon depends on: ii debconf 1.4.47 Debian configuration management sy ii kernel-image-2.6.10-ac8 [ke 2 Linux kernel binary image for vers ii libasound2 1.0.8-3 ALSA library ii libc6 2.3.2.ds1-20 GNU C Library: Shared libraries an ii sl-modem-modules-2.6.10-ac8 2.9.9a-1+2 Smart Link modem modules for Linux ii sl-modem-source 2.9.9a-1 SmartLink software modem driver - -- debconf information excluded -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]