Skip to content

Commit

Permalink
greybus: hid: remove custom locking from gb_hid_open/close
Browse files Browse the repository at this point in the history
Now that HID core enforces serialization of transport driver open/close
calls we can remove custom locking from greybus hid driver.

Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
Reviewed-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
  • Loading branch information
Dmitry Torokhov authored and Jiri Kosina committed Jun 8, 2017
1 parent e399396 commit d9d2401
Showing 1 changed file with 14 additions and 29 deletions.
43 changes: 14 additions & 29 deletions drivers/staging/greybus/hid.c
Original file line number Diff line number Diff line change
@@ -32,8 +32,6 @@ struct gb_hid {
char *inbuf;
};

static DEFINE_MUTEX(gb_hid_open_mutex);

/* Routines to get controller's information over greybus */

/* Operations performed on greybus */
@@ -346,41 +344,28 @@ static void gb_hid_stop(struct hid_device *hid)
static int gb_hid_open(struct hid_device *hid)
{
struct gb_hid *ghid = hid->driver_data;
int ret = 0;

mutex_lock(&gb_hid_open_mutex);
if (!hid->open++) {
ret = gb_hid_set_power(ghid, GB_HID_TYPE_PWR_ON);
if (ret < 0)
hid->open--;
else
set_bit(GB_HID_STARTED, &ghid->flags);
}
mutex_unlock(&gb_hid_open_mutex);
int ret;

return ret;
ret = gb_hid_set_power(ghid, GB_HID_TYPE_PWR_ON);
if (ret < 0)
return ret;

set_bit(GB_HID_STARTED, &ghid->flags);
return 0;
}

static void gb_hid_close(struct hid_device *hid)
{
struct gb_hid *ghid = hid->driver_data;
int ret;

/*
* Protecting hid->open to make sure we don't restart data acquistion
* due to a resumption we no longer care about..
*/
mutex_lock(&gb_hid_open_mutex);
if (!--hid->open) {
clear_bit(GB_HID_STARTED, &ghid->flags);

/* Save some power */
ret = gb_hid_set_power(ghid, GB_HID_TYPE_PWR_OFF);
if (ret)
dev_err(&ghid->connection->bundle->dev,
"failed to power off (%d)\n", ret);
}
mutex_unlock(&gb_hid_open_mutex);
clear_bit(GB_HID_STARTED, &ghid->flags);

/* Save some power */
ret = gb_hid_set_power(ghid, GB_HID_TYPE_PWR_OFF);
if (ret)
dev_err(&ghid->connection->bundle->dev,
"failed to power off (%d)\n", ret);
}

static int gb_hid_power(struct hid_device *hid, int lvl)

0 comments on commit d9d2401

Please sign in to comment.