diff options
-rw-r--r-- | drivers/usb/serial/Kconfig | 9 | ||||
-rw-r--r-- | drivers/usb/serial/Makefile | 1 | ||||
-rw-r--r-- | drivers/usb/serial/hp4x.c | 97 |
3 files changed, 107 insertions, 0 deletions
diff --git a/drivers/usb/serial/Kconfig b/drivers/usb/serial/Kconfig index b869076d9c7c..0c4aa00bb39d 100644 --- a/drivers/usb/serial/Kconfig +++ b/drivers/usb/serial/Kconfig | |||
@@ -395,6 +395,15 @@ config USB_SERIAL_PL2303 | |||
395 | To compile this driver as a module, choose M here: the | 395 | To compile this driver as a module, choose M here: the |
396 | module will be called pl2303. | 396 | module will be called pl2303. |
397 | 397 | ||
398 | config USB_SERIAL_HP4X | ||
399 | tristate "USB HP4x Calculators support" | ||
400 | depends on USB_SERIAL | ||
401 | help | ||
402 | Say Y here if you want to use an Hewlett-Packard 4x Calculator. | ||
403 | |||
404 | To compile this driver as a module, choose M here: the | ||
405 | module will be called hp4x. | ||
406 | |||
398 | config USB_SERIAL_SAFE | 407 | config USB_SERIAL_SAFE |
399 | tristate "USB Safe Serial (Encapsulated) Driver (EXPERIMENTAL)" | 408 | tristate "USB Safe Serial (Encapsulated) Driver (EXPERIMENTAL)" |
400 | depends on USB_SERIAL && EXPERIMENTAL | 409 | depends on USB_SERIAL && EXPERIMENTAL |
diff --git a/drivers/usb/serial/Makefile b/drivers/usb/serial/Makefile index 351b81855b18..b0aac47d1959 100644 --- a/drivers/usb/serial/Makefile +++ b/drivers/usb/serial/Makefile | |||
@@ -21,6 +21,7 @@ obj-$(CONFIG_USB_SERIAL_EDGEPORT_TI) += io_ti.o | |||
21 | obj-$(CONFIG_USB_SERIAL_EMPEG) += empeg.o | 21 | obj-$(CONFIG_USB_SERIAL_EMPEG) += empeg.o |
22 | obj-$(CONFIG_USB_SERIAL_FTDI_SIO) += ftdi_sio.o | 22 | obj-$(CONFIG_USB_SERIAL_FTDI_SIO) += ftdi_sio.o |
23 | obj-$(CONFIG_USB_SERIAL_GARMIN) += garmin_gps.o | 23 | obj-$(CONFIG_USB_SERIAL_GARMIN) += garmin_gps.o |
24 | obj-$(CONFIG_USB_SERIAL_HP4X) += hp4x.o | ||
24 | obj-$(CONFIG_USB_SERIAL_IPAQ) += ipaq.o | 25 | obj-$(CONFIG_USB_SERIAL_IPAQ) += ipaq.o |
25 | obj-$(CONFIG_USB_SERIAL_IPW) += ipw.o | 26 | obj-$(CONFIG_USB_SERIAL_IPW) += ipw.o |
26 | obj-$(CONFIG_USB_SERIAL_IR) += ir-usb.o | 27 | obj-$(CONFIG_USB_SERIAL_IR) += ir-usb.o |
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"); | ||