136045fb77cb8b4043063ea54067907a1afd317b4Arthur Huillet/*
236045fb77cb8b4043063ea54067907a1afd317b4Arthur Huillet * HP4x Calculators Serial USB driver
336045fb77cb8b4043063ea54067907a1afd317b4Arthur Huillet *
436045fb77cb8b4043063ea54067907a1afd317b4Arthur Huillet * Copyright (C) 2005 Arthur Huillet (ahuillet@users.sf.net)
535ecc486a3f1811b85b7b22196b8b7422d713b51Greg Kroah-Hartman * Copyright (C) 2001-2005 Greg Kroah-Hartman (greg@kroah.com)
636045fb77cb8b4043063ea54067907a1afd317b4Arthur Huillet *
736045fb77cb8b4043063ea54067907a1afd317b4Arthur Huillet *	This program is free software; you can redistribute it and/or modify
836045fb77cb8b4043063ea54067907a1afd317b4Arthur Huillet *	it under the terms of the GNU General Public License as published by
936045fb77cb8b4043063ea54067907a1afd317b4Arthur Huillet *	the Free Software Foundation; either version 2 of the License, or
1036045fb77cb8b4043063ea54067907a1afd317b4Arthur Huillet *	(at your option) any later version.
1136045fb77cb8b4043063ea54067907a1afd317b4Arthur Huillet *
123a262b2ea7c0905026c0be3618dba1f825e5387aAlan Cox * See Documentation/usb/usb-serial.txt for more information on using this
133a262b2ea7c0905026c0be3618dba1f825e5387aAlan Cox * driver
1436045fb77cb8b4043063ea54067907a1afd317b4Arthur Huillet */
1536045fb77cb8b4043063ea54067907a1afd317b4Arthur Huillet
1636045fb77cb8b4043063ea54067907a1afd317b4Arthur Huillet#include <linux/kernel.h>
1736045fb77cb8b4043063ea54067907a1afd317b4Arthur Huillet#include <linux/init.h>
1836045fb77cb8b4043063ea54067907a1afd317b4Arthur Huillet#include <linux/tty.h>
1936045fb77cb8b4043063ea54067907a1afd317b4Arthur Huillet#include <linux/module.h>
2036045fb77cb8b4043063ea54067907a1afd317b4Arthur Huillet#include <linux/usb.h>
21a969888ce91673c7f4b86520d851a6f0d5a5fa7dGreg Kroah-Hartman#include <linux/usb/serial.h>
2236045fb77cb8b4043063ea54067907a1afd317b4Arthur Huillet
2336045fb77cb8b4043063ea54067907a1afd317b4Arthur Huillet/*
2436045fb77cb8b4043063ea54067907a1afd317b4Arthur Huillet * Version Information
2536045fb77cb8b4043063ea54067907a1afd317b4Arthur Huillet */
2636045fb77cb8b4043063ea54067907a1afd317b4Arthur Huillet#define DRIVER_VERSION "v1.00"
2736045fb77cb8b4043063ea54067907a1afd317b4Arthur Huillet#define DRIVER_DESC "HP4x (48/49) Generic Serial driver"
2836045fb77cb8b4043063ea54067907a1afd317b4Arthur Huillet
2936045fb77cb8b4043063ea54067907a1afd317b4Arthur Huillet#define HP_VENDOR_ID 0x03f0
3036045fb77cb8b4043063ea54067907a1afd317b4Arthur Huillet#define HP49GP_PRODUCT_ID 0x0121
3136045fb77cb8b4043063ea54067907a1afd317b4Arthur Huillet
327d40d7e85a25e01948bcb4dc3eda1355af318337Németh Mártonstatic const struct usb_device_id id_table[] = {
3336045fb77cb8b4043063ea54067907a1afd317b4Arthur Huillet	{ USB_DEVICE(HP_VENDOR_ID, HP49GP_PRODUCT_ID) },
3436045fb77cb8b4043063ea54067907a1afd317b4Arthur Huillet	{ }					/* Terminating entry */
3536045fb77cb8b4043063ea54067907a1afd317b4Arthur Huillet};
3636045fb77cb8b4043063ea54067907a1afd317b4Arthur Huillet
3736045fb77cb8b4043063ea54067907a1afd317b4Arthur HuilletMODULE_DEVICE_TABLE(usb, id_table);
3836045fb77cb8b4043063ea54067907a1afd317b4Arthur Huillet
3936045fb77cb8b4043063ea54067907a1afd317b4Arthur Huilletstatic struct usb_driver hp49gp_driver = {
40269bda1c123c7caf88e1deb2264f9086f0344192Greg Kroah-Hartman	.name =		"hp4X",
4136045fb77cb8b4043063ea54067907a1afd317b4Arthur Huillet	.probe =	usb_serial_probe,
4236045fb77cb8b4043063ea54067907a1afd317b4Arthur Huillet	.disconnect =	usb_serial_disconnect,
4336045fb77cb8b4043063ea54067907a1afd317b4Arthur Huillet	.id_table =	id_table,
4436045fb77cb8b4043063ea54067907a1afd317b4Arthur Huillet};
4536045fb77cb8b4043063ea54067907a1afd317b4Arthur Huillet
46ea65370d025f5005649e5cb37c4d025e92c6fc38Greg Kroah-Hartmanstatic struct usb_serial_driver hp49gp_device = {
4718fcac353fdc7cd072b0d24c8667042e675a4c11Greg Kroah-Hartman	.driver = {
4818fcac353fdc7cd072b0d24c8667042e675a4c11Greg Kroah-Hartman		.owner =	THIS_MODULE,
49269bda1c123c7caf88e1deb2264f9086f0344192Greg Kroah-Hartman		.name =		"hp4X",
5018fcac353fdc7cd072b0d24c8667042e675a4c11Greg Kroah-Hartman	},
5136045fb77cb8b4043063ea54067907a1afd317b4Arthur Huillet	.id_table =		id_table,
5236045fb77cb8b4043063ea54067907a1afd317b4Arthur Huillet	.num_ports =		1,
5336045fb77cb8b4043063ea54067907a1afd317b4Arthur Huillet};
5436045fb77cb8b4043063ea54067907a1afd317b4Arthur Huillet
5597b6b6d2339f67eb17d954930a908b762af66228Alan Sternstatic struct usb_serial_driver * const serial_drivers[] = {
5697b6b6d2339f67eb17d954930a908b762af66228Alan Stern	&hp49gp_device, NULL
5797b6b6d2339f67eb17d954930a908b762af66228Alan Stern};
5897b6b6d2339f67eb17d954930a908b762af66228Alan Stern
5968e9c9a7fdbddab3407596b3e7f1a4972d045444Greg Kroah-Hartmanmodule_usb_serial_driver(hp49gp_driver, serial_drivers);
6036045fb77cb8b4043063ea54067907a1afd317b4Arthur Huillet
6136045fb77cb8b4043063ea54067907a1afd317b4Arthur HuilletMODULE_DESCRIPTION(DRIVER_DESC);
6236045fb77cb8b4043063ea54067907a1afd317b4Arthur HuilletMODULE_VERSION(DRIVER_VERSION);
6336045fb77cb8b4043063ea54067907a1afd317b4Arthur HuilletMODULE_LICENSE("GPL");
64