git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git]
/
drivers
/
input
/
mouse
/
rpcmouse.c
diff --git
a/drivers/input/mouse/rpcmouse.c
b/drivers/input/mouse/rpcmouse.c
index
09b6ffd
..
fbdcfd8
100644
(file)
--- a/
drivers/input/mouse/rpcmouse.c
+++ b/
drivers/input/mouse/rpcmouse.c
@@
-36,7
+36,7
@@
MODULE_LICENSE("GPL");
static short rpcmouse_lastx, rpcmouse_lasty;
static struct input_dev *rpcmouse_dev;
static short rpcmouse_lastx, rpcmouse_lasty;
static struct input_dev *rpcmouse_dev;
-static irqreturn_t rpcmouse_irq(int irq, void *dev_id
, struct pt_regs *regs
)
+static irqreturn_t rpcmouse_irq(int irq, void *dev_id)
{
struct input_dev *dev = dev_id;
short x, y, dx, dy, b;
{
struct input_dev *dev = dev_id;
short x, y, dx, dy, b;
@@
-51,8
+51,6
@@
static irqreturn_t rpcmouse_irq(int irq, void *dev_id, struct pt_regs *regs)
rpcmouse_lastx = x;
rpcmouse_lasty = y;
rpcmouse_lastx = x;
rpcmouse_lasty = y;
- input_regs(dev, regs);
-
input_report_rel(dev, REL_X, dx);
input_report_rel(dev, REL_Y, -dy);
input_report_rel(dev, REL_X, dx);
input_report_rel(dev, REL_Y, -dy);
@@
-68,7
+66,10
@@
static irqreturn_t rpcmouse_irq(int irq, void *dev_id, struct pt_regs *regs)
static int __init rpcmouse_init(void)
{
static int __init rpcmouse_init(void)
{
- if (!(rpcmouse_dev = input_allocate_device()))
+ int err;
+
+ rpcmouse_dev = input_allocate_device();
+ if (!rpcmouse_dev)
return -ENOMEM;
rpcmouse_dev->name = "Acorn RiscPC Mouse";
return -ENOMEM;
rpcmouse_dev->name = "Acorn RiscPC Mouse";
@@
-85,15
+86,24
@@
static int __init rpcmouse_init(void)
rpcmouse_lastx = (short) iomd_readl(IOMD_MOUSEX);
rpcmouse_lasty = (short) iomd_readl(IOMD_MOUSEY);
rpcmouse_lastx = (short) iomd_readl(IOMD_MOUSEX);
rpcmouse_lasty = (short) iomd_readl(IOMD_MOUSEY);
- if (request_irq(IRQ_VSYNCPULSE, rpcmouse_irq,
SA_SHIRQ
, "rpcmouse", rpcmouse_dev)) {
+ if (request_irq(IRQ_VSYNCPULSE, rpcmouse_irq,
IRQF_SHARED
, "rpcmouse", rpcmouse_dev)) {
printk(KERN_ERR "rpcmouse: unable to allocate VSYNC interrupt\n");
printk(KERN_ERR "rpcmouse: unable to allocate VSYNC interrupt\n");
-
input_free_device(rpcmouse_dev)
;
-
return -EBUSY
;
+
err = -EBUSY
;
+
goto err_free_dev
;
}
}
- input_register_device(rpcmouse_dev);
+ err = input_register_device(rpcmouse_dev);
+ if (err)
+ goto err_free_irq;
return 0;
return 0;
+
+ err_free_irq:
+ free_irq(IRQ_VSYNCPULSE, rpcmouse_dev);
+ err_free_dev:
+ input_free_device(rpcmouse_dev);
+
+ return err;
}
static void __exit rpcmouse_exit(void)
}
static void __exit rpcmouse_exit(void)