aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging/quatech_usb2 (follow)
AgeCommit message (Collapse)AuthorFilesLines
2009-09-15Staging: quatech_usb2: Improvements to set_termios methodRichard Ash2-11/+27
This patch implements several improvements to the set_termios method suggested by Alan Cox: * Correct check for whether any changes are being requested. * Inform callers that mark/space parity isn't supported by always clearing the bit. * Pass back the actual used baud rate in case it doesn't match what was requested. Remaining known issues are that IXANY flow control is not supported, but we don't tell the caller that, and input and output XON/XOFF flow control are either both on or both off, but we don't indicate that back to the caller either. Signed-off-by: Richard Ash <richard@audacityteam.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-09-15Staging: quatech_usb2: Improve debug output and fix write_roomRichard Ash1-40/+42
This patch contains changes made in the course of successfully reading data from the device. These consist of a number of corrections and additions to debug messages, and a fix for incorrect calculation of the number of characters in the device FIFO which affected the operation of the write_room method. The use of semaphores to control access to port settings is replaced by the preferred use of mutexes as this is the only code that uses them. Aug 18 17:09:32 [kernel] BUG: unable to handle kernel paging request at f82f122c Aug 18 17:09:32 [kernel] IP: [<c11e1a63>] tty_port_close_start+0x8c/0x15e Aug 18 17:09:32 [kernel] *pde = 00000000 Aug 18 17:09:32 [kernel] Modules linked in: snd_seq snd_seq_device snd_pcm_oss snd_mixer_oss nls_iso8859_1 cifs xt_limit xt_NFLOG nfnetlink_log nfnetlink xt_tcpudp nf_conntrack_ipv4 nf_defrag_ipv4 xt_state nf_conntrack iptable_filter ip_tables x_tables i915 fb drm i2c_algo_bit cfbcopyarea i2c_core video backlight output cfbimgblt cfbfillrect quatech_usb2(C) usbserial uhci_hcd ehci_hcd snd_intel8x0 snd_ac97_codec ac97_bus usbcore tg3 snd_pcm snd_timer libphy snd intel_agp psmouse evdev ohci1394 soundcore ide_cd_mod cdrom ieee1394 snd_page_alloc agpgart floppy Aug 18 17:09:32 [kernel] Pid: 4192, comm: cat Tainted: G C (2.6.31-rc6-gkh #9) HP Compaq dc5100 MT(PW097ET) Aug 18 17:09:32 [kernel] EIP: 0060:[<c11e1a63>] EFLAGS: 00010046 CPU: 0 Aug 18 17:09:32 [kernel] EIP is at tty_port_close_start+0x8c/0x15e Aug 18 17:09:32 [kernel] EAX: 00000000 EBX: 00000246 ECX: ebacc380 EDX: 00000000 Aug 18 17:09:32 [kernel] ESI: f72f1204 EDI: e6073000 EBP: e60b3ce4 ESP: e60b3ccc Aug 18 17:09:32 [kernel] DS: 007b ES: 007b FS: 0000 GS: 00e0 SS: 0068 Aug 18 17:09:32 [kernel] bcc17886 e60b3d2c bcc17886 f72f1200 f72f1204 e6073000 e60b3d10 f8b01a67 Aug 18 17:09:32 [kernel] <0> 00000000 e60b3d10 c11d9343 e60730a0 ebacc380 bcc17886 e6073000 00000000 Aug 18 17:09:32 [kernel] <0> ebacc380 e60b3d90 c11da71c 00000000 f7802480 bcc17886 ebacc380 00000000 Aug 18 17:09:32 [kernel] [<f8b01a67>] ? serial_close+0x3c/0x9a [usbserial] Aug 18 17:09:32 [kernel] [<c11d9343>] ? tty_fasync+0x63/0xe3 Aug 18 17:09:32 [kernel] [<c11da71c>] ? tty_release_dev+0x159/0x47d Aug 18 17:09:32 [kernel] [<c11804c5>] ? prio_tree_remove+0x6c/0xc5 Aug 18 17:09:32 [kernel] [<c1081c5f>] ? put_object+0x46/0x5e Aug 18 17:09:32 [kernel] [<c11daa59>] ? tty_release+0x19/0x35 Aug 18 17:09:32 [kernel] [<c1086836>] ? __fput+0xed/0x1e4 Aug 18 17:09:32 [kernel] [<c1086951>] ? fput+0x24/0x39 Aug 18 17:09:32 [kernel] [<c108375e>] ? filp_close+0x4c/0x7b Aug 18 17:09:32 [kernel] [<c1028076>] ? put_files_struct+0xc3/0xd2 Aug 18 17:09:32 [kernel] [<c10280b1>] ? exit_files+0x2c/0x40 Aug 18 17:09:32 [kernel] [<c1028551>] ? do_exit+0xd0/0x5f5 Aug 18 17:09:32 [kernel] [<c1031751>] ? recalc_sigpending+0x1b/0x4b Aug 18 17:09:32 [kernel] [<c1031b8b>] ? dequeue_signal+0x96/0x154 Aug 18 17:09:32 [kernel] [<c1028ab1>] ? do_group_exit+0x3b/0x77 Aug 18 17:09:32 [kernel] [<c1032ec3>] ? get_signal_to_deliver+0x140/0x31b Aug 18 17:09:32 [kernel] [<c11d90af>] ? tty_put_char+0x43/0x4b Aug 18 17:09:32 [kernel] [<c1002633>] ? do_notify_resume+0xae/0x7fb Aug 18 17:09:32 [kernel] [<c11dabcd>] ? tty_read+0x8f/0xb5 Aug 18 17:09:32 [kernel] [<c11dd0be>] ? n_tty_read+0x0/0x5d2 Aug 18 17:09:32 [kernel] [<c1085560>] ? vfs_read+0xb4/0x178 Aug 18 17:09:32 [kernel] [<c11dab3e>] ? tty_read+0x0/0xb5 Aug 18 17:09:32 [kernel] [<c10856e4>] ? sys_read+0x52/0x8b Aug 18 17:09:32 [kernel] [<c1002f6a>] ? work_notifysig+0x13/0x19 Aug 18 17:09:32 [kernel] ---[ end trace 16f434ec7e2925bc ]--- Aug 18 17:09:32 [kernel] Fixing recursive fault but reboot is needed! My guess is that my driver is doing something "wrong" in terms of it's interface to the higher level layers and so is causing the oops. Are there any mechanisms to turn on more checking / debugging in the layers above the usb-serial layer to try and catch the cause of the problem? I've already got USB_DEBUG enabled, what others might be relevant (presumably USB_SERIAL_DEBUG isn't)? Signed-off-by: Richard Ash <richard@audacityteam.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-09-15Staging: quatech_usb2: vendor implementation of break_ctlRichard Ash1-40/+180
This patch imports the implementation of the break_ctl, throttle and unthrottle methods from the vendor driver into the staging driver. This compiles but is not yet tested. Signed-off-by: Richard Ash <richard@audacityteam.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-09-15Staging: quatech_usb2: vendor implementation of set_termios methodRichard Ash1-67/+263
This patch imports the implementation of the set_termios method from the vendor driver into the staging driver. The common terminal setting changes should be supported. Signed-off-by: Richard Ash <richard@audacityteam.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-09-15Staging: quatech_usb2: chars_in_buffer() fixRichard Ash1-29/+12
It seems I can't count. Patch to fix chars_in_buffer() method (broken in vendor driver), and subsequently simplify the close() method, making it somewhat less broken. There is quite a bit more improvement to do on this method though. Signed-off-by: Richard Ash <richard@audacityteam.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-09-15Staging: quatech_usb2: TIOCMGET and TIOCMSET removalRichard Ash1-18/+14
Patch to remove TIOCMGET and TIOCMSET from the driver ioctl method, as they never get used (error in vendor driver). Signed-off-by: Richard Ash <richard@audacityteam.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-09-15Staging: quatech_usb2: write_room rewriteRichard Ash1-27/+72
The following patch re-writes the write_room method to work in the obvious sort of way, so it keeps it's promises to the layers above. Based on feedback from Alan Cox. Signed-off-by: Richard Ash <richard@audacityteam.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-09-15Staging: quatech_usb2: close, read, and some ioctl supportRichard Ash1-48/+646
This patch implements close(), read(), write() and some ioctls, and fixes some implementation issues in open(). Compared to the previous patch it doesn't suffer an oops in the module code, however if you try to open any of the serial devices a second time then an oops occurs in tty_open(), presumably because my code isn't playing nicely on the previous close(): Aug 13 11:44:01 [kernel] WARNING: at drivers/char/tty_io.c:1268 tty_open+0x3e5/0x46d() Aug 13 11:44:01 [kernel] Hardware name: HP Compaq dc5100 MT(PW097ET) Aug 13 11:44:01 [kernel] Modules linked in: quatech_usb2(C) usbserial snd_seq snd_seq_device snd_pcm_oss snd_mixer_oss nls_iso8859_1 cifs xt_limit xt_NFLOG nfnetlink_log nfnetlink xt_tcpudp nf_conntrack_ipv4 nf_defrag_ipv4 xt_state nf_conntrack iptable_filter ip_tables x_tables i915 fb drm i2c_algo_bit cfbcopyarea i2c_core video backlight output cfbimgblt cfbfillrect snd_intel8x0 snd_ac97_codec ehci_hcd ac97_bus uhci_hcd snd_pcm snd_timer usbcore snd ohci1394 psmouse ide_cd_mod cdrom tg3 soundcore snd_page_alloc ieee1394 libphy intel_agp agpgart floppy evdev [last unloaded: usbserial] Aug 13 11:44:01 [kernel] Pid: 26765, comm: stty Tainted: G C 2.6.31-rc5-git3-gkh #7 Aug 13 11:44:01 [kernel] Call Trace: Aug 13 11:44:01 [kernel] [<c11dbef8>] ? tty_open+0x3e5/0x46d Aug 13 11:44:01 [kernel] [<c10264e2>] warn_slowpath_common+0x88/0xb0 Aug 13 11:44:01 [kernel] [<c11dbef8>] ? tty_open+0x3e5/0x46d Aug 13 11:44:01 [kernel] [<c102652b>] warn_slowpath_null+0x21/0x3b Aug 13 11:44:01 [kernel] [<c11dbef8>] tty_open+0x3e5/0x46d Aug 13 11:44:01 [kernel] [<c10883d1>] chrdev_open+0x77/0x113 Aug 13 11:44:01 [kernel] [<c1083a5d>] __dentry_open+0xb8/0x230 Aug 13 11:44:01 [kernel] [<c108835a>] ? chrdev_open+0x0/0x113 Aug 13 11:44:01 [kernel] [<c1084993>] nameidata_to_filp+0x61/0x6a Aug 13 11:44:01 [kernel] [<c1091144>] do_filp_open+0x248/0x7cd Aug 13 11:44:01 [kernel] [<c106f14f>] ? __do_fault+0x2ba/0x3b2 Aug 13 11:44:01 [kernel] [<c109a337>] ? alloc_fd+0x6a/0xf1 Aug 13 11:44:01 [kernel] [<c1083804>] do_sys_open+0x5f/0x12b Aug 13 11:44:01 [kernel] [<c1083947>] sys_open+0x2e/0x47 Aug 13 11:44:01 [kernel] [<c1002e4f>] sysenter_do_call+0x12/0x26 Aug 13 11:44:01 [kernel] ---[ end trace 1d6b9e2cd7636394 ]--- Aug 13 11:44:01 [kernel] BUG: unable to handle kernel NULL pointer dereference at 00000004 Aug 13 11:44:01 [kernel] IP: [<c1086538>] file_move+0x26/0x47 Aug 13 11:44:01 [kernel] *pde = 00000000 Aug 13 11:44:01 [kernel] Modules linked in: quatech_usb2(C) usbserial snd_seq snd_seq_device snd_pcm_oss snd_mixer_oss nls_iso8859_1 cifs xt_limit xt_NFLOG nfnetlink_log nfnetlink xt_tcpudp nf_conntrack_ipv4 nf_defrag_ipv4 xt_state nf_conntrack iptable_filter ip_tables x_tables i915 fb drm i2c_algo_bit cfbcopyarea i2c_core video backlight output cfbimgblt cfbfillrect snd_intel8x0 snd_ac97_codec ehci_hcd ac97_bus uhci_hcd snd_pcm snd_timer usbcore snd ohci1394 psmouse ide_cd_mod cdrom tg3 soundcore snd_page_alloc ieee1394 libphy intel_agp agpgart floppy evdev [last unloaded: usbserial] Aug 13 11:44:01 [kernel] Pid: 26765, comm: stty Tainted: G WC (2.6.31-rc5-git3-gkh #7) HP Compaq dc5100 MT(PW097ET) Aug 13 11:44:01 [kernel] EIP: 0060:[<c1086538>] EFLAGS: 00010282 CPU: 0 Aug 13 11:44:01 [kernel] EIP is at file_move+0x26/0x47 Aug 13 11:44:01 [kernel] EAX: 00000000 EBX: e593b508 ECX: ea7e9900 EDX: f734a888 Aug 13 11:44:01 [kernel] ESI: 00000000 EDI: 0bc00004 EBP: d8923e10 ESP: d8923e08 Aug 13 11:44:01 [kernel] DS: 007b ES: 007b FS: 0000 GS: 00e0 SS: 0068 Aug 13 11:44:01 [kernel] 2ba6efc8 c8c93180 d8923e48 c11dbca7 ea7e9900 eed37e6c 00000000 00008800 Aug 13 11:44:01 [kernel] <0> 00000000 e593b400 e593b400 00000004 2ba6efc8 c8c93188 00000000 eed37e6c Aug 13 11:44:01 [kernel] <0> d8923e68 c10883d1 ea7e9900 2ba6efc8 2ba6efc8 ea7e9900 eed37e6c ffffffe9 Aug 13 11:44:01 [kernel] [<c11dbca7>] ? tty_open+0x194/0x46d Aug 13 11:44:01 [kernel] [<c10883d1>] ? chrdev_open+0x77/0x113 Aug 13 11:44:01 [kernel] [<c1083a5d>] ? __dentry_open+0xb8/0x230 Aug 13 11:44:01 [kernel] [<c108835a>] ? chrdev_open+0x0/0x113 Aug 13 11:44:01 [kernel] [<c1084993>] ? nameidata_to_filp+0x61/0x6a Aug 13 11:44:01 [kernel] [<c1091144>] ? do_filp_open+0x248/0x7cd Aug 13 11:44:01 [kernel] [<c106f14f>] ? __do_fault+0x2ba/0x3b2 Aug 13 11:44:01 [kernel] [<c109a337>] ? alloc_fd+0x6a/0xf1 Aug 13 11:44:01 [kernel] [<c1083804>] ? do_sys_open+0x5f/0x12b Aug 13 11:44:01 [kernel] [<c1083947>] ? sys_open+0x2e/0x47 Aug 13 11:44:01 [kernel] [<c1002e4f>] ? sysenter_do_call+0x12/0x26 Aug 13 11:44:01 [kernel] ---[ end trace 1d6b9e2cd7636395 ]--- Read and Write also do not work at the moment, and I'm fairly sure that the URB completion callbacks are not running. Why this is I don't know, and haven't tried to investigate. Signed-off-by: Richard Ash <richard@audacityteam.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-09-15Staging: quatech_usb2: implement open functionalityRichard Ash1-69/+515
Part two of the driver implementation has finally got done. It implements the rest of open and the callback for reads from the box. I seem to have finally found a structure that can be made to work, with a single set of URBs for bulk read and write for the whole device, which are used by all the ports. I've rationalised a few things, but there will still be a lot of clean-up needed. This one definitely can panic the kernel when a port is opened for reading, but I'm off on holiday so I thought I'd post where I have got to so far. I haven't tried to debug why it panics with a null pointer dereference yet. Signed-off-by: Richard Ash <richard@audacityteam.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-09-15Staging: add Support for Quatech ESU2-100 USB 2.0 8-port serial adaptorRichard Ash3-0/+627
The patch is of the "works as far as it goes" variety, in that the module compiles and loads, the device nodes are registered and the unit switched on, but nothing actually works. On the other hand, it doesn't panic the kernel, as far as I know. Signed-off-by: Richard Ash <richard@audacityteam.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>