From mboxrd@z Thu Jan 1 00:00:00 1970 From: Kay Sievers Date: Wed, 02 Feb 2005 04:13:26 +0000 Subject: Re: Problem with udev & Vodafone UMTS card Message-Id: <20050202041326.GA31572@vrfy.org> List-Id: References: <87ekga9alm.fsf@yerbouti.a42.de> In-Reply-To: <87ekga9alm.fsf@yerbouti.a42.de> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: linux-hotplug@vger.kernel.org On Wed, Feb 02, 2005 at 02:44:05AM +0100, Marc Packenius wrote: > Greg KH writes: > > On Mon, Jan 24, 2005 at 05:17:53PM +0100, Kay Sievers wrote: > >> On Mon, 2005-01-24 at 16:58 +0100, Marc Packenius wrote: > >> > Kay Sievers writes: > >> > > On Mon, 2005-01-24 at 15:15 +0100, Marc Packenius wrote: > >> > >> after installing udev on a Debian/sid-powered Toshiba Satellite > >> > >> notebook, the Vodafone UMTS card stopped working. > >> > >> > >> > >> This pc-card includes a USB controller and feeds three serial character > >> > >> devices when installed properly. They're called "/dev/ttyUSB[0-2]". > >> > >> > >> > >> When using udev, those device nodes are not created properly, instead > >> > >> the dev directory shows files with the filename "/dev/[0-2]", e.g. > >> > >> "/dev/0". > >> > > >> > >> => /var/log/daemon.log <= > >> > >> Jan 24 14:59:35 mudshark udev[3157]: creating device node '/dev/0' > >> > >> Jan 24 14:59:35 mudshark udev[3169]: creating device node '/dev/1' > >> > >> Jan 24 14:59:35 mudshark udev[3179]: creating device node '/dev/2' > >> > >> That's a kernel bug and not a udev issue. You may try to work around > >> this by placing: > >> KERNEL="*", NAME="ttyUSB%n" > >> > >> in a /etc/udev/rules.d/ file. > >> > >> Greg, any idea what is causing this in the serial driver? > > > No I do not. What kernel version is this? What driver is this (the > > usb-serial generic driver, or some other usb-serial driver?) > > That's with kernels that I built locally on a Debian/sid system. I can > reproduce the behaviour with Debian-patched 2.6.8 to 2.6.10 and vanilla > 2.6.10. > > The driver is usb-serial generic. Inserting the card and loading the > driver using > > modprobe -v usbserial vendor=0xaf0 product=0x5000 This patch may fix it. We call the probe function before the driver struct is initialized. You may be able to work around this bug by loading the module without the card inserted. Signed-off-by: Kay Sievers === drivers/usb/serial/usb-serial.c 1.128 vs edited ==--- 1.128/drivers/usb/serial/usb-serial.c 2004-12-21 02:15:10 +01:00 +++ edited/drivers/usb/serial/usb-serial.c 2005-02-02 04:51:32 +01:00 @@ -1286,6 +1286,19 @@ static int __init usb_serial_init(void) if (!usb_serial_tty_driver) return -ENOMEM; + usb_serial_tty_driver->owner = THIS_MODULE; + usb_serial_tty_driver->driver_name = "usbserial"; + usb_serial_tty_driver->devfs_name = "usb/tts/"; + usb_serial_tty_driver->name = "ttyUSB"; + usb_serial_tty_driver->major = SERIAL_TTY_MAJOR; + usb_serial_tty_driver->minor_start = 0; + usb_serial_tty_driver->type = TTY_DRIVER_TYPE_SERIAL; + usb_serial_tty_driver->subtype = SERIAL_TYPE_NORMAL; + usb_serial_tty_driver->flags = TTY_DRIVER_REAL_RAW | TTY_DRIVER_NO_DEVFS; + usb_serial_tty_driver->init_termios = tty_std_termios; + usb_serial_tty_driver->init_termios.c_cflag = B9600 | CS8 | CREAD | HUPCL | CLOCAL; + tty_set_operations(usb_serial_tty_driver, &serial_ops); + /* Initialize our global data */ for (i = 0; i < SERIAL_TTY_MINORS; ++i) { serial_table[i] = NULL; @@ -1304,18 +1317,6 @@ static int __init usb_serial_init(void) goto exit_generic; } - usb_serial_tty_driver->owner = THIS_MODULE; - usb_serial_tty_driver->driver_name = "usbserial"; - usb_serial_tty_driver->devfs_name = "usb/tts/"; - usb_serial_tty_driver->name = "ttyUSB"; - usb_serial_tty_driver->major = SERIAL_TTY_MAJOR; - usb_serial_tty_driver->minor_start = 0; - usb_serial_tty_driver->type = TTY_DRIVER_TYPE_SERIAL; - usb_serial_tty_driver->subtype = SERIAL_TYPE_NORMAL; - usb_serial_tty_driver->flags = TTY_DRIVER_REAL_RAW | TTY_DRIVER_NO_DEVFS; - usb_serial_tty_driver->init_termios = tty_std_termios; - usb_serial_tty_driver->init_termios.c_cflag = B9600 | CS8 | CREAD | HUPCL | CLOCAL; - tty_set_operations(usb_serial_tty_driver, &serial_ops); result = tty_register_driver(usb_serial_tty_driver); if (result) { err("%s - tty_register_driver failed", __FUNCTION__); ------------------------------------------------------- This SF.Net email is sponsored by: IntelliVIEW -- Interactive Reporting Tool for open source databases. Create drag-&-drop reports. Save time by over 75%! Publish reports on the web. Export to DOC, XLS, RTF, etc. Download a FREE copy at http://www.intelliview.com/go/osdn_nl _______________________________________________ Linux-hotplug-devel mailing list http://linux-hotplug.sourceforge.net Linux-hotplug-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel