diff options
author | Ninad Malwade <nmalwade@nvidia.com> | 2010-03-17 10:53:00 +0530 |
---|---|---|
committer | Gary King <gking@nvidia.com> | 2010-03-17 08:36:27 -0800 |
commit | 88547baef53e45e1fe5ffa8cb1fd79314f7b07ab (patch) | |
tree | 56a408c2fd3bafac9083e33a7646fb230afb978d /drivers/input | |
parent | bcd820aacce5fad00566edbe1504ecbe344f5fa5 (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/input')
-rw-r--r-- | drivers/input/mouse/nvec_mouse.c | 27 |
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)
|