summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorNinad Malwade <nmalwade@nvidia.com>2010-03-17 10:53:00 +0530
committerGary King <gking@nvidia.com>2010-03-17 08:36:27 -0800
commit88547baef53e45e1fe5ffa8cb1fd79314f7b07ab (patch)
tree56a408c2fd3bafac9083e33a7646fb230afb978d /drivers
parentbcd820aacce5fad00566edbe1504ecbe344f5fa5 (diff)
tegra nvec: suspend/resume without nvec mouse connected
- when mouse is not present or connected to board, do not register the mouse driver with EC bus driver. - Bug 663803 Change-Id: Iec11af103c4ab00a9d01e66969fceb6161cec1e2 Reviewed-on: http://git-master/r/862 Reviewed-by: Ninad Malwade <nmalwade@nvidia.com> Tested-by: Ninad Malwade <nmalwade@nvidia.com> Reviewed-by: Varun Wadekar <vwadekar@nvidia.com> Tested-by: Varun Wadekar <vwadekar@nvidia.com> Reviewed-by: Gary King <gking@nvidia.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/input/mouse/nvec_mouse.c27
1 files changed, 23 insertions, 4 deletions
diff --git a/drivers/input/mouse/nvec_mouse.c b/drivers/input/mouse/nvec_mouse.c
index 06014b92dd17..dabb52c5d8d9 100644
--- a/drivers/input/mouse/nvec_mouse.c
+++ b/drivers/input/mouse/nvec_mouse.c
@@ -441,13 +441,27 @@ static struct nvec_device nvec_mouse_device = {
static int __init nvec_mouse_init(void)
{
- int err;
+ int err = 0;
+ struct nvec_mouse *mouse;
+
+ mouse = kzalloc(sizeof(struct nvec_mouse), GFP_KERNEL);
+ if (!mouse) {
+ pr_err("**nvec_mouse_init: kzalloc for mouse: fail\n");
+ err = -ENOMEM;
+ return err;
+ }
+
+ if (!NvOdmMouseDeviceOpen(&mouse->hDevice)) {
+ pr_err("NvOdmMouseDeviceOpen failed\n");
+ err = -ENODEV;
+ goto fail;
+ }
err = nvec_register_driver(&nvec_mouse);
if (err)
{
pr_err("**nvec_mouse_init: nvec_register_driver: fail\n");
- return err;
+ goto fail_register;
}
err = nvec_register_device(&nvec_mouse_device);
@@ -455,10 +469,15 @@ static int __init nvec_mouse_init(void)
{
pr_err("**nvec_mouse_init: nvec_device_add: fail\n");
nvec_unregister_driver(&nvec_mouse);
- return err;
+ goto fail_register;
}
- return 0;
+fail_register:
+ NvOdmMouseDeviceClose(mouse->hDevice);
+fail:
+ kfree(mouse);
+ mouse = NULL;
+ return err;
}
static void __exit nvec_mouse_exit(void)