summaryrefslogtreecommitdiff
path: root/drivers/staging/nvec/nvec_kbd.c
diff options
context:
space:
mode:
authorMarc Dietrich <marvin24@gmx.de>2013-04-29 21:14:52 (GMT)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-05-13 21:51:38 (GMT)
commitd398f56ed7ddf8a2f3ffdd15323bc31296d14c5d (patch)
tree7ca3e3210a3f775b7277d9e0c34b3a0faa42211c /drivers/staging/nvec/nvec_kbd.c
parent218468f40d08600803ecb389c8b5139bbf736fa4 (diff)
downloadlinux-fsl-qoriq-d398f56ed7ddf8a2f3ffdd15323bc31296d14c5d.tar.xz
staging: nvec: cleanup childs on remove
Disable device functions and unregister notifier if available. The serio device must not be "kzallocated". Otherwise serio_unregister_port will fail because the device is already freed. Signed-off-by: Marc Dietrich <marvin24@gmx.de> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/staging/nvec/nvec_kbd.c')
-rw-r--r--drivers/staging/nvec/nvec_kbd.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/drivers/staging/nvec/nvec_kbd.c b/drivers/staging/nvec/nvec_kbd.c
index fdbe0f3..a0ec52a 100644
--- a/drivers/staging/nvec/nvec_kbd.c
+++ b/drivers/staging/nvec/nvec_kbd.c
@@ -169,8 +169,15 @@ fail:
static int nvec_kbd_remove(struct platform_device *pdev)
{
+ struct nvec_chip *nvec = dev_get_drvdata(pdev->dev.parent);
+ char disable_kbd[] = { NVEC_KBD, DISABLE_KBD },
+ uncnfg_wake_key_reporting[] = { NVEC_KBD, CNFG_WAKE_KEY_REPORTING,
+ false };
+ nvec_write_async(nvec, uncnfg_wake_key_reporting, 3);
+ nvec_write_async(nvec, disable_kbd, 2);
+ nvec_unregister_notifier(nvec, &keys_dev.notifier);
+
input_unregister_device(keys_dev.input);
- input_free_device(keys_dev.input);
return 0;
}