Hello list, the kobil_sct driver requires interrupt-out transfers to write the data to the device. This works fine with the ochi hcd, but fails with the uhci hcd. I attached the output from /var/log/messages. usb_submit_urb returns -22 (-EINVAL).
I tested it on a centrino notebook, but it should fail with all PC with uhci host controller. So what must I do to fix the driver? (Or is it a bug in the uhci hcd?) Why do the ohci and uhci behave different? Kernel is 2.6.4-52 (SuSE 9.1 dist) I'm not in the office until 19th of May. So it could take some time until I can response. Many thanks in advance Thomas Wahrenbruch
May 14 16:44:09 linux kernel: drivers/usb/serial/usb-serial.c: USB Serial support registered for KOBIL USB smart card terminal May 14 16:44:09 linux kernel: drivers/usb/core/usb.c: registered new driver kobil May 14 16:44:09 linux kernel: drivers/usb/serial/kobil_sct.c: 14/05/2004 KOBIL Systems GmbH - http://www.kobil.com May 14 16:44:09 linux kernel: drivers/usb/serial/kobil_sct.c: KOBIL USB Smart Card Terminal Driver (experimental) May 14 16:44:18 linux kernel: usb 2-2: new low speed USB device using address 7 May 14 16:44:18 linux kernel: usb 2-2: Product: USB Adapter B May 14 16:44:18 linux kernel: usb 2-2: Manufacturer: KOBIL May 14 16:44:18 linux kernel: usb 2-2: SerialNumber: Prod.# FFFFFF2F May 14 16:44:18 linux kernel: usbserial 2-2:1.0: KOBIL USB smart card terminal converter detected May 14 16:44:18 linux kernel: KOBIL B1 PRO / KAAN PRO detected May 14 16:44:18 linux kernel: drivers/usb/serial/kobil_sct.c: kobil_startup Found interrupt out endpoint. Address: 1 May 14 16:44:18 linux kernel: drivers/usb/serial/kobil_sct.c: kobil_startup Found interrupt in endpoint. Address: 129 May 14 16:44:18 linux kernel: usb 2-2: KOBIL USB smart card terminal converter now attached to ttyUSB0 (or usb/tts/0 for devfs) May 14 16:44:18 linux /etc/hotplug/usb.agent[25702]: need a device for this command May 14 16:44:19 linux /etc/hotplug/tty.agent[25704]: add tty device /class/tty/ttyUSB0 May 14 16:44:46 linux kernel: drivers/usb/serial/kobil_sct.c: kobil_open - port 0 May 14 16:44:46 linux kernel: drivers/usb/serial/kobil_sct.c: kobil_open - port 0 Allocating port->write_urb May 14 16:44:46 linux kernel: drivers/usb/serial/kobil_sct.c: kobil_open - port 0 Send get_HW_version URB returns: 8 May 14 16:44:46 linux kernel: drivers/usb/serial/kobil_sct.c: Harware version: 1.1.6 May 14 16:44:46 linux kernel: drivers/usb/serial/kobil_sct.c: kobil_open - port 0 Send get_FW_version URB returns: 8 May 14 16:44:46 linux kernel: drivers/usb/serial/kobil_sct.c: Firmware version: 1.1.9 May 14 16:44:46 linux kernel: drivers/usb/serial/kobil_sct.c: kobil_open - port 0 Send set_baudrate URB returns: 0 May 14 16:44:46 linux kernel: drivers/usb/serial/kobil_sct.c: kobil_open - port 0 Send reset_all_queues URB returns: 0 May 14 16:44:46 linux kernel: drivers/usb/serial/kobil_sct.c: kobil_open - port 0 Send read URB returns: 0 May 14 16:44:46 linux kernel: drivers/usb/serial/kobil_sct.c: kobil_close - port 0 May 14 16:44:46 linux kernel: drivers/usb/serial/kobil_sct.c: kobil_read_int_callback - port 0 May 14 16:44:46 linux kernel: drivers/usb/serial/kobil_sct.c: kobil_read_int_callback - port 0 Read int status not zero: -2 May 14 16:44:46 linux kernel: drivers/usb/serial/kobil_sct.c: kobil_open - port 0 May 14 16:44:46 linux kernel: drivers/usb/serial/kobil_sct.c: kobil_open - port 0 Allocating port->write_urb May 14 16:44:46 linux kernel: drivers/usb/serial/kobil_sct.c: kobil_open - port 0 Send get_HW_version URB returns: 8 May 14 16:44:46 linux kernel: drivers/usb/serial/kobil_sct.c: Harware version: 1.1.6 May 14 16:44:46 linux kernel: drivers/usb/serial/kobil_sct.c: kobil_open - port 0 Send get_FW_version URB returns: 8 May 14 16:44:46 linux kernel: drivers/usb/serial/kobil_sct.c: Firmware version: 1.1.9 May 14 16:44:46 linux kernel: drivers/usb/serial/kobil_sct.c: kobil_open - port 0 Send set_baudrate URB returns: 0 May 14 16:44:46 linux kernel: drivers/usb/serial/kobil_sct.c: kobil_open - port 0 Send reset_all_queues URB returns: 0 May 14 16:44:46 linux kernel: drivers/usb/serial/kobil_sct.c: kobil_open - port 0 Send read URB returns: 0 May 14 16:44:46 linux kernel: drivers/usb/serial/kobil_sct.c: kobil_ioctl - port 0 setting port to: 9600 1 StopBit Even Parity May 14 16:44:46 linux kernel: drivers/usb/serial/kobil_sct.c: kobil_ioctl - port 0 Send set_baudrate URB returns: 0 May 14 16:44:46 linux kernel: drivers/usb/serial/kobil_sct.c: kobil_ioctl - port 0 setting port to: 9600 1 StopBit Even Parity May 14 16:44:46 linux kernel: drivers/usb/serial/kobil_sct.c: kobil_ioctl - port 0 Send set_baudrate URB returns: 0 May 14 16:44:46 linux kernel: drivers/usb/serial/kobil_sct.c: kobil_read_int_callback - port 0 May 14 16:44:46 linux kernel: drivers/usb/serial/kobil_sct.c: kobil_read_int_callback - port 0 Send read URB returns: 0 May 14 16:44:46 linux kernel: drivers/usb/serial/kobil_sct.c: kobil_read_int_callback - port 0 May 14 16:44:46 linux kernel: drivers/usb/serial/kobil_sct.c: kobil_read_int_callback - port 0 Send read URB returns: 0 May 14 16:44:46 linux kernel: drivers/usb/serial/kobil_sct.c: kobil_tiocmget - port 0 Send get_status_line_state URB returns: 8. Statusline: 15 May 14 16:44:46 linux kernel: drivers/usb/serial/kobil_sct.c: kobil_tiocmset - port 0 Setting DTR May 14 16:44:46 linux kernel: drivers/usb/serial/kobil_sct.c: kobil_read_int_callback - port 0 May 14 16:44:46 linux kernel: drivers/usb/serial/kobil_sct.c: kobil_read_int_callback - port 0 Send read URB returns: 0 May 14 16:44:46 linux kernel: drivers/usb/serial/kobil_sct.c: kobil_tiocmset - port 0 Send set_status_line URB returns: 0 May 14 16:44:46 linux kernel: drivers/usb/serial/kobil_sct.c: kobil_read_int_callback - port 0 May 14 16:44:46 linux kernel: drivers/usb/serial/kobil_sct.c: kobil_read_int_callback - port 0 Send read URB returns: 0 May 14 16:44:46 linux kernel: drivers/usb/serial/kobil_sct.c: kobil_read_int_callback - port 0 May 14 16:44:47 linux kernel: drivers/usb/serial/kobil_sct.c: kobil_read_int_callback - port 0 Send read URB returns: 0 May 14 16:44:47 linux kernel: drivers/usb/serial/kobil_sct.c: kobil_read_int_callback - port 0 May 14 16:44:47 linux kernel: drivers/usb/serial/kobil_sct.c: kobil_read_int_callback - port 0 Send read URB returns: 0 May 14 16:44:47 linux kernel: drivers/usb/serial/kobil_sct.c: kobil_read_int_callback - port 0 May 14 16:44:47 linux kernel: drivers/usb/serial/kobil_sct.c: kobil_read_int_callback - port 0 Send read URB returns: 0 May 14 16:44:47 linux kernel: drivers/usb/serial/kobil_sct.c: kobil_tiocmget - port 0 Send get_status_line_state URB returns: 8. Statusline: 15 May 14 16:44:47 linux kernel: drivers/usb/serial/kobil_sct.c: kobil_tiocmset - port 0 Clearing DTR May 14 16:44:47 linux kernel: drivers/usb/serial/kobil_sct.c: kobil_tiocmset - port 0 Send set_status_line URB returns: 0 May 14 16:44:47 linux kernel: drivers/usb/serial/kobil_sct.c: kobil_read_int_callback - port 0 .... May 14 16:44:51 linux kernel: drivers/usb/serial/kobil_sct.c: kobil_read_int_callback - port 0 Send read URB returns: 0 May 14 16:44:51 linux kernel: drivers/usb/serial/kobil_sct.c: kobil_read_int_callback - port 0 May 14 16:44:51 linux kernel: drivers/usb/serial/kobil_sct.c: kobil_read_int_callback - port 0 Send read URB returns: 0 May 14 16:44:51 linux kernel: drivers/usb/serial/kobil_sct.c: kobil_read_int_callback - port 0 May 14 16:44:51 linux kernel: drivers/usb/serial/kobil_sct.c: kobil_read_int_callback - port 0 Send read URB returns: 0 May 14 16:44:51 linux kernel: drivers/usb/serial/kobil_sct.c: kobil_read_int_callback - port 0 May 14 16:44:51 linux kernel: drivers/usb/serial/kobil_sct.c: kobil_read_int_callback - port 0 Send read URB returns: 0 May 14 16:44:51 linux kernel: drivers/usb/serial/kobil_sct.c: kobil_read_int_callback - port 0 May 14 16:44:51 linux kernel: drivers/usb/serial/kobil_sct.c: kobil_read_int_callback - port 0 Send read URB returns: 0 May 14 16:44:51 linux kernel: drivers/usb/serial/kobil_sct.c: kobil_read_int_callback - port 0 May 14 16:44:51 linux kernel: drivers/usb/serial/kobil_sct.c: kobil_read_int_callback - port 0 Send read URB returns: 0 May 14 16:44:51 linux kernel: drivers/usb/serial/kobil_sct.c: kobil_read_int_callback - port 0 May 14 16:44:51 linux kernel: drivers/usb/serial/kobil_sct.c: kobil_read_int_callback - port 0 Send read URB returns: 0 May 14 16:44:51 linux kernel: drivers/usb/serial/kobil_sct.c: kobil_read_int_callback - port 0 May 14 16:44:51 linux kernel: drivers/usb/serial/kobil_sct.c: kobil_read_int_callback - port 0 Send read URB returns: 0 May 14 16:44:51 linux kernel: drivers/usb/serial/kobil_sct.c: kobil_write - length = 4, data = 00 c0 00 c0 May 14 16:44:51 linux kernel: drivers/usb/serial/kobil_sct.c: kobil_read_int_callback - port 0 May 14 16:44:51 linux kernel: drivers/usb/serial/kobil_sct.c: kobil_read_int_callback - port 0 Read int status not zero: -2 May 14 16:44:51 linux kernel: drivers/usb/serial/kobil_sct.c: kobil_write - port 0 Send write URB returns: -22 May 14 16:44:51 linux kernel: drivers/usb/serial/kobil_sct.c: kobil_write - port 0 Send read URB returns: 0 May 14 16:44:51 linux kernel: drivers/usb/serial/kobil_sct.c: kobil_read_int_callback - port 0 May 14 16:44:51 linux kernel: drivers/usb/serial/kobil_sct.c: kobil_read_int_callback - port 0 Send read URB returns: 0 May 14 16:44:51 linux kernel: drivers/usb/serial/kobil_sct.c: kobil_read_int_callback - port 0 May 14 16:44:51 linux kernel: drivers/usb/serial/kobil_sct.c: kobil_read_int_callback - port 0 Send read URB returns: 0 May 14 16:44:51 linux kernel: drivers/usb/serial/kobil_sct.c: kobil_read_int_callback - port 0 May 14 16:44:51 linux kernel: drivers/usb/serial/kobil_sct.c: kobil_read_int_callback - port 0 Send read URB returns: 0 May 14 16:44:51 linux kernel: drivers/usb/serial/kobil_sct.c: kobil_read_int_callback - port 0 May 14 16:44:51 linux kernel: drivers/usb/serial/kobil_sct.c: kobil_read_int_callback - port 0 Send read URB returns: 0 May 14 16:44:51 linux kernel: drivers/usb/serial/kobil_sct.c: kobil_read_int_callback - port 0 May 14 16:44:51 linux kernel: drivers/usb/serial/kobil_sct.c: kobil_read_int_callback - port 0 Send read URB returns: 0
0000:00:00.0 Host bridge: Intel Corp. 82855PM Processor to I/O Controller (rev 03) Subsystem: Acer Incorporated [ALI]: Unknown device 001f Flags: bus master, fast devsel, latency 0 Memory at e0000000 (32-bit, prefetchable) Capabilities: [e4] #09 [f104] Capabilities: [a0] AGP version 2.0 0000:00:01.0 PCI bridge: Intel Corp. 82855PM Processor to AGP Controller (rev 03) (prog-if 00 [Normal decode]) Flags: bus master, 66Mhz, fast devsel, latency 96 Bus: primary=00, secondary=01, subordinate=01, sec-latency=64 I/O behind bridge: 00003000-00003fff Memory behind bridge: d0100000-d01fffff Prefetchable memory behind bridge: d8000000-dfffffff Expansion ROM at 00003000 [disabled] [size=4K] 0000:00:1d.0 USB Controller: Intel Corp. 82801DB USB (Hub #1) (rev 03) (prog-if 00 [UHCI]) Subsystem: Acer Incorporated [ALI]: Unknown device 001f Flags: bus master, medium devsel, latency 0, IRQ 10 I/O ports at 1800 [size=32] 0000:00:1d.1 USB Controller: Intel Corp. 82801DB USB (Hub #2) (rev 03) (prog-if 00 [UHCI]) Subsystem: Acer Incorporated [ALI]: Unknown device 001f Flags: bus master, medium devsel, latency 0, IRQ 5 I/O ports at 1820 [size=32] 0000:00:1d.2 USB Controller: Intel Corp. 82801DB USB (Hub #3) (rev 03) (prog-if 00 [UHCI]) Subsystem: Acer Incorporated [ALI]: Unknown device 001f Flags: bus master, medium devsel, latency 0, IRQ 10 I/O ports at 1840 [size=32] 0000:00:1d.7 USB Controller: Intel Corp. 82801DB USB2 (rev 03) (prog-if 20 [EHCI]) Subsystem: Acer Incorporated [ALI]: Unknown device 001f Flags: bus master, medium devsel, latency 0, IRQ 10 Memory at d0000000 (32-bit, non-prefetchable) Capabilities: [50] Power Management version 2 Capabilities: [58] #0a [2080] 0000:00:1e.0 PCI bridge: Intel Corp. 82801BAM/CAM PCI Bridge (rev 83) (prog-if 00 [Normal decode]) Flags: bus master, fast devsel, latency 0 Bus: primary=00, secondary=02, subordinate=02, sec-latency=64 I/O behind bridge: 00004000-00004fff Memory behind bridge: d0200000-d05fffff 0000:00:1f.0 ISA bridge: Intel Corp. 82801DBM LPC Interface Controller (rev 03) Flags: bus master, medium devsel, latency 0 0000:00:1f.1 IDE interface: Intel Corp. 82801DBM Ultra ATA Storage Controller (rev 03) (prog-if 8a [Master SecP PriP]) Subsystem: Acer Incorporated [ALI]: Unknown device 001f Flags: bus master, medium devsel, latency 0, IRQ 10 I/O ports at <unassigned> I/O ports at <unassigned> I/O ports at <unassigned> I/O ports at <unassigned> I/O ports at 1860 [size=16] Memory at 20000000 (32-bit, non-prefetchable) [size=1K] 0000:00:1f.3 SMBus: Intel Corp. 82801DB/DBM SMBus Controller (rev 03) Subsystem: Acer Incorporated [ALI]: Unknown device 001f Flags: medium devsel, IRQ 10 I/O ports at 1880 [size=32] 0000:00:1f.5 Multimedia audio controller: Intel Corp. 82801DB AC'97 Audio Controller (rev 03) Subsystem: Acer Incorporated [ALI]: Unknown device 001f Flags: bus master, medium devsel, latency 0, IRQ 10 I/O ports at 1c00 I/O ports at 18c0 [size=64] Memory at d0000c00 (32-bit, non-prefetchable) [size=512] Memory at d0000800 (32-bit, non-prefetchable) [size=256] Capabilities: [50] Power Management version 2 0000:00:1f.6 Modem: Intel Corp. 82801DB AC'97 Modem Controller (rev 03) (prog-if 00 [Generic]) Subsystem: Acer Incorporated [ALI]: Unknown device 001f Flags: medium devsel, IRQ 10 I/O ports at 2400 I/O ports at 2000 [size=128] Capabilities: [50] Power Management version 2 0000:01:00.0 VGA compatible controller: ATI Technologies Inc Radeon R250 Lf [Radeon Mobility 9000 M9] (rev 02) (prog-if 00 [VGA]) Subsystem: Acer Incorporated [ALI]: Unknown device 001f Flags: bus master, stepping, fast Back2Back, 66Mhz, medium devsel, latency 66, IRQ 10 Memory at d8000000 (32-bit, prefetchable) I/O ports at 3000 [size=256] Memory at d0100000 (32-bit, non-prefetchable) [size=64K] Capabilities: [58] AGP version 2.0 Capabilities: [50] Power Management version 2 0000:02:02.0 Ethernet controller: Broadcom Corporation BCM4401 100Base-T (rev 01) Subsystem: Acer Incorporated [ALI]: Unknown device 001f Flags: bus master, fast devsel, latency 64, IRQ 5 Memory at d0204000 (32-bit, non-prefetchable) Capabilities: [40] Power Management version 2 0000:02:04.0 Network controller: Intel Corp. PRO/Wireless LAN 2100 3B Mini PCI Adapter (rev 04) Subsystem: Intel Corp.: Unknown device 2527 Flags: bus master, medium devsel, latency 64, IRQ 10 Memory at d0206000 (32-bit, non-prefetchable) Capabilities: [dc] Power Management version 2 0000:02:06.0 CardBus bridge: O2 Micro, Inc.: Unknown device 7114 (rev 20) Subsystem: Acer Incorporated [ALI]: Unknown device 001f Flags: bus master, stepping, slow devsel, latency 168, IRQ 10 Memory at d0207000 (32-bit, non-prefetchable) Bus: primary=02, secondary=03, subordinate=06, sec-latency=176 Memory window 0: d0400000-d04ff000 (prefetchable) Memory window 1: d0300000-d03ff000 I/O window 0: 00004400-000044ff I/O window 1: 00004000-000040ff 16-bit legacy interface ports at 0001 0000:02:06.1 CardBus bridge: O2 Micro, Inc.: Unknown device 7114 (rev 20) Subsystem: Acer Incorporated [ALI]: Unknown device 001f Flags: bus master, stepping, slow devsel, latency 168, IRQ 10 Memory at 20001000 (32-bit, non-prefetchable) Bus: primary=02, secondary=07, subordinate=0a, sec-latency=176 Memory window 0: 20400000-207ff000 (prefetchable) Memory window 1: 20800000-20bff000 I/O window 0: 00004800-000048ff I/O window 1: 00004c00-00004cff 16-bit legacy interface ports at 0001 0000:02:06.2 System peripheral: O2 Micro, Inc.: Unknown device 7110 Subsystem: Acer Incorporated [ALI]: Unknown device 001f Flags: slow devsel, IRQ 10 Memory at d0208000 (32-bit, non-prefetchable) Capabilities: [a0] Power Management version 2 0000:02:07.0 FireWire (IEEE 1394): Texas Instruments TSB43AB21 IEEE-1394a-2000 Controller (PHY/Link) (prog-if 10 [OHCI]) Subsystem: Acer Incorporated [ALI]: Unknown device 001f Flags: bus master, medium devsel, latency 64, IRQ 10 Memory at d0209000 (32-bit, non-prefetchable) Memory at d0200000 (32-bit, non-prefetchable) [size=16K] Capabilities: [44] Power Management version 2