From 88547baef53e45e1fe5ffa8cb1fd79314f7b07ab Mon Sep 17 00:00:00 2001 From: Ninad Malwade Date: Wed, 17 Mar 2010 10:53:00 +0530 Subject: 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 Tested-by: Ninad Malwade Reviewed-by: Varun Wadekar Tested-by: Varun Wadekar Reviewed-by: Gary King --- drivers/input/mouse/nvec_mouse.c | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) (limited to 'drivers/input') 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) -- cgit v1.2.3