diff options
author | Arthur Huillet <arthur.huillet@agoctrl.org> | 2005-04-22 18:06:59 -0400 |
---|---|---|
committer | Greg KH <gregkh@suse.de> | 2005-04-22 18:06:59 -0400 |
commit | 36045fb77cb8b4043063ea54067907a1afd317b4 (patch) | |
tree | f997f900af829aeb155ee74fe7b187bd9c7cbce1 /drivers/usb/serial/hp4x.c | |
parent | 35f4a0c4416b4fd789f94328dc5940e79e1507b0 (diff) |
[PATCH] USB: add HP49G+ Calculator USB Serial support
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/usb/serial/hp4x.c')
-rw-r--r-- | drivers/usb/serial/hp4x.c | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/drivers/usb/serial/hp4x.c b/drivers/usb/serial/hp4x.c new file mode 100644 index 000000000000..020f9a15605b --- /dev/null +++ b/drivers/usb/serial/hp4x.c | |||
@@ -0,0 +1,97 @@ | |||
1 | /* | ||
2 | * HP4x Calculators Serial USB driver | ||
3 | * | ||
4 | * Copyright (C) 2005 Arthur Huillet (ahuillet@users.sf.net) | ||
5 | * Copyright (C) 2001-2004 Greg Kroah-Hartman (greg@kroah.com) | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or modify | ||
8 | * it under the terms of the GNU General Public License as published by | ||
9 | * the Free Software Foundation; either version 2 of the License, or | ||
10 | * (at your option) any later version. | ||
11 | * | ||
12 | * See Documentation/usb/usb-serial.txt for more information on using this driver | ||
13 | */ | ||
14 | |||
15 | #include <linux/config.h> | ||
16 | #include <linux/kernel.h> | ||
17 | #include <linux/errno.h> | ||
18 | #include <linux/init.h> | ||
19 | #include <linux/slab.h> | ||
20 | #include <linux/tty.h> | ||
21 | #include <linux/tty_driver.h> | ||
22 | #include <linux/tty_flip.h> | ||
23 | #include <linux/serial.h> | ||
24 | #include <linux/module.h> | ||
25 | #include <linux/moduleparam.h> | ||
26 | #include <linux/spinlock.h> | ||
27 | #include <asm/uaccess.h> | ||
28 | #include <linux/usb.h> | ||
29 | #include "usb-serial.h" | ||
30 | |||
31 | /* | ||
32 | * Version Information | ||
33 | */ | ||
34 | #define DRIVER_VERSION "v1.00" | ||
35 | #define DRIVER_DESC "HP4x (48/49) Generic Serial driver" | ||
36 | |||
37 | #define HP_VENDOR_ID 0x03f0 | ||
38 | #define HP49GP_PRODUCT_ID 0x0121 | ||
39 | |||
40 | static int debug; | ||
41 | |||
42 | static struct usb_device_id id_table [] = { | ||
43 | { USB_DEVICE(HP_VENDOR_ID, HP49GP_PRODUCT_ID) }, | ||
44 | { } /* Terminating entry */ | ||
45 | }; | ||
46 | |||
47 | MODULE_DEVICE_TABLE(usb, id_table); | ||
48 | |||
49 | static struct usb_driver hp49gp_driver = { | ||
50 | .owner = THIS_MODULE, | ||
51 | .name = "HP4X", | ||
52 | .probe = usb_serial_probe, | ||
53 | .disconnect = usb_serial_disconnect, | ||
54 | .id_table = id_table, | ||
55 | }; | ||
56 | |||
57 | static struct usb_serial_device_type hp49gp_device = { | ||
58 | .owner = THIS_MODULE, | ||
59 | .name = "HP4X", | ||
60 | .id_table = id_table, | ||
61 | .num_interrupt_in = NUM_DONT_CARE, | ||
62 | .num_bulk_in = NUM_DONT_CARE, | ||
63 | .num_bulk_out = NUM_DONT_CARE, | ||
64 | .num_ports = 1, | ||
65 | }; | ||
66 | |||
67 | static int __init hp49gp_init(void) | ||
68 | { | ||
69 | int retval; | ||
70 | retval = usb_serial_register(&hp49gp_device); | ||
71 | if (retval) | ||
72 | goto failed_usb_serial_register; | ||
73 | retval = usb_register(&hp49gp_driver); | ||
74 | if (retval) | ||
75 | goto failed_usb_register; | ||
76 | info(DRIVER_DESC " " DRIVER_VERSION); | ||
77 | return 0; | ||
78 | failed_usb_register: | ||
79 | usb_serial_deregister(&hp49gp_device); | ||
80 | failed_usb_serial_register: | ||
81 | return retval; | ||
82 | } | ||
83 | |||
84 | |||
85 | static void __exit hp49gp_exit(void) | ||
86 | { | ||
87 | usb_deregister(&hp49gp_driver); | ||
88 | usb_serial_deregister(&hp49gp_device); | ||
89 | } | ||
90 | |||
91 | |||
92 | module_init(hp49gp_init); | ||
93 | module_exit(hp49gp_exit); | ||
94 | |||
95 | MODULE_DESCRIPTION(DRIVER_DESC); | ||
96 | MODULE_VERSION(DRIVER_VERSION); | ||
97 | MODULE_LICENSE("GPL"); | ||