From 24d4253e1f15ccbe7255e20c1da1a608df3e2d4c Mon Sep 17 00:00:00 2001 From: Gregory Nutt Date: Fri, 28 Nov 2014 15:56:18 -0600 Subject: [PATCH] Fixes to get the discrete joystick driver and test working --- drivers/input/djoystick.c | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/drivers/input/djoystick.c b/drivers/input/djoystick.c index 2be11ec54b..49f88d234c 100644 --- a/drivers/input/djoystick.c +++ b/drivers/input/djoystick.c @@ -475,12 +475,9 @@ static int djoy_close(FAR struct file *filep) flags = irqsave(); closing = opriv->do_closing; - if (!closing) - { - opriv->do_closing = true; - } - + opriv->do_closing = true; irqrestore(flags); + if (closing) { /* Another thread is doing the close */ @@ -529,8 +526,7 @@ static int djoy_close(FAR struct file *filep) /* Enable/disable interrupt handling */ djoy_enable(priv); - djoy_givesem(&priv->du_exclsem); - return OK; + ret = OK; errout_with_exclsem: djoy_givesem(&priv->du_exclsem); @@ -853,7 +849,7 @@ int djoy_register(FAR const char *devname, /* And register the djoystick driver */ - ret = register_driver(devname, &djoy_fops, 0666, NULL); + ret = register_driver(devname, &djoy_fops, 0666, priv); if (ret < 0) { ivdbg("ERROR: register_driver failed: %d\n", ret);