Piccolo aggiornamento dei driver per la topgun.
Codice: Seleziona tutto
diff -ru topgun-0.2/Makefile topgun-0.3.1/Makefile
--- topgun-0.2/Makefile 2008-04-15 00:44:02.000000000 +0200
+++ topgun-0.3.1/Makefile 2011-11-17 13:04:54.874277113 +0100
@@ -11,6 +11,7 @@
rm -f lcdtopgun.o lcdtopgun.ko
rm -f lcdtopgun.mod.c lcdtopgun.mod.o
rm -f Module.symvers
+ rm -f modules.order
rm -f .lcdtopgun*
rm -fr .tmp_versions
diff -ru topgun-0.2/lcdtopgun.c topgun-0.3.1/lcdtopgun.c
--- topgun-0.2/lcdtopgun.c 2008-04-15 02:03:12.000000000 +0200
+++ topgun-0.3.1/lcdtopgun.c 2011-11-30 11:57:08.786148463 +0100
@@ -3,16 +3,25 @@
*
* (c) 2006 Christophe Thibault <chris@aegis-corp.org>
* 2008 Adolfo R. Brandes <arbrandes@gmail.com>
+ * 2011 Stefano Ansaloni <>
*
* Based on GunCon2 linux driver by Brian Goines
* and the Xpad linux driver by Marko Friedemann
*
* History:
*
+ * 2011-11-30 - 0.3.1: (Stefano Ansaloni) Fix "info" macro
+ * - Rewrote the "info" macro (for aesthetics reasons).
+ * - Use "printk" instead of "info" in "usb_topgun_init()".
+ * - Tested up to linux kernel 3.1.4.
+ *
+ * 2011-11-17 - 0.3: (Stefano Ansaloni) General update
+ * - Compiles and runs on newer kernels (tested up to 3.1.1).
+ *
* 2008-04-14 - 0.2: (Adolfo R. Brandes) General update
* - Compiles and runs on newer kernels (tested up to 2.6.24).
* - Rewrote the setting of bits, based on xpad360.
- * - Added module option debug=1
+ * - Added module option debug=1.
*/
/*
@@ -54,11 +63,16 @@
/*
* Version Information
*/
-#define DRIVER_VERSION "v0.2"
+#define DRIVER_VERSION "v0.3.1"
#define DRIVER_AUTHOR "Christophe Thibault <chris@aegis-corp.org>"
#define DRIVER_DESC "USB EMS LCD TopGun driver"
#define DRIVER_LICENSE "GPL"
+/*
+ * Missing macro (at least on linux >= 3.0)
+ */
+#define info(format, arg...) printk(KERN_INFO format "\n" , ## arg)
+
MODULE_AUTHOR(DRIVER_AUTHOR);
MODULE_DESCRIPTION(DRIVER_DESC);
MODULE_LICENSE(DRIVER_LICENSE);
@@ -124,7 +138,7 @@
#endif
if (debug) {
- printk(KERN_INFO "topgun_debug: data :");
+ printk(KERN_INFO "lcdtopgun_debug: data :");
for(i = 0; i < 20; i++) {
printk("0x%02x ", data[i]);
}
@@ -167,7 +181,7 @@
static int usb_topgun_open(struct input_dev *dev)
{
- struct usb_topgun *topgun = dev->private;
+ struct usb_topgun *topgun = input_get_drvdata(dev);
int status;
if (topgun->open++)
@@ -185,7 +199,7 @@
static void usb_topgun_close(struct input_dev *dev)
{
- struct usb_topgun *topgun = dev->private;
+ struct usb_topgun *topgun = input_get_drvdata(dev);
if (!--topgun->open)
usb_unlink_urb(topgun->irq);
@@ -198,7 +212,7 @@
struct input_dev *input_dev;
struct usb_endpoint_descriptor *endpoint;
struct usb_host_interface *interface;
- int pipe, maxp, i;
+ int pipe, maxp, i, ret_reg;
char path[64];
char *buf;
@@ -224,7 +238,7 @@
return -ENOMEM;
}
- topgun->data = usb_buffer_alloc(usbdev, 8, GFP_ATOMIC, &topgun->data_dma);
+ topgun->data = usb_alloc_coherent(usbdev, 8, GFP_ATOMIC, &topgun->data_dma);
if (!topgun->data) {
input_free_device(input_dev);
kfree(topgun);
@@ -233,7 +247,7 @@
topgun->irq = usb_alloc_urb(0, GFP_KERNEL);
if (!topgun->irq) {
- usb_buffer_free(usbdev, 8, topgun->data, topgun->data_dma);
+ usb_free_coherent(usbdev, 8, topgun->data, topgun->data_dma);
input_free_device(input_dev);
kfree(topgun);
return -ENODEV;
@@ -264,14 +278,13 @@
input_dev->name = topgun->name;
input_dev->phys = topgun->phys;
usb_to_input_id(usbdev, &input_dev->id);
- input_dev->cdev.dev = &intf->dev;
- input_dev->private = topgun;
+ input_set_drvdata(input_dev, topgun);
input_dev->open = usb_topgun_open;
input_dev->close = usb_topgun_close;
/* Start name manipulation. */
if (!(buf = kmalloc(63, GFP_KERNEL))) {
- usb_buffer_free(usbdev, 8, topgun->data, topgun->data_dma);
+ usb_free_coherent(usbdev, 8, topgun->data, topgun->data_dma);
kfree(topgun);
return -ENOMEM;
}
@@ -297,7 +310,7 @@
topgun->irq->transfer_dma = topgun->data_dma;
topgun->irq->transfer_flags |= URB_NO_TRANSFER_DMA_MAP;
- input_register_device(topgun->dev);
+ ret_reg = input_register_device(topgun->dev);
if (debug)
printk(KERN_INFO "input: %s on %s\n", topgun->name, path);
@@ -316,7 +329,7 @@
usb_unlink_urb(topgun->irq);
input_unregister_device(topgun->dev);
usb_free_urb(topgun->irq);
- usb_buffer_free(interface_to_usbdev(intf), 8, topgun->data, topgun->data_dma);
+ usb_free_coherent(interface_to_usbdev(intf), 8, topgun->data, topgun->data_dma);
kfree(topgun);
}
}
@@ -332,7 +345,7 @@
{
int retval = usb_register(&usb_topgun_driver);
if (retval == 0)
- info(DRIVER_DESC " " DRIVER_VERSION " initialized" );
+ printk(KERN_INFO "%s: " DRIVER_DESC " " DRIVER_VERSION " initialized\n" , usb_topgun_driver.name);
return retval;
}