From 1e776f31838f1037319fe54ea7e676a8871c6603 Mon Sep 17 00:00:00 2001 From: Alex Elder Date: Mon, 17 Nov 2014 08:08:45 -0600 Subject: [PATCH] greybus: get rid of cport_id_map_lock The only time we get a cport id is when setting up a new connection. We already have a (coarser-grained) spin lock that's used to protect the connection lists, and we can use that same lock for protecting the hd's connection id map. Signed-off-by: Alex Elder Signed-off-by: Greg Kroah-Hartman --- drivers/staging/greybus/connection.c | 8 ++++---- drivers/staging/greybus/core.c | 1 - drivers/staging/greybus/greybus.h | 1 - 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/drivers/staging/greybus/connection.c b/drivers/staging/greybus/connection.c index ecd7931..cb6e2e1 100644 --- a/drivers/staging/greybus/connection.c +++ b/drivers/staging/greybus/connection.c @@ -42,9 +42,9 @@ static bool gb_connection_hd_cport_id_alloc(struct gb_connection *connection) struct ida *ida = &connection->hd->cport_id_map; int id; - spin_lock(&connection->hd->cport_id_map_lock); + spin_lock_irq(&gb_connections_lock); id = ida_simple_get(ida, 0, HOST_DEV_CPORT_ID_MAX, GFP_KERNEL); - spin_unlock(&connection->hd->cport_id_map_lock); + spin_unlock_irq(&gb_connections_lock); if (id < 0) return false; @@ -60,9 +60,9 @@ static void gb_connection_hd_cport_id_free(struct gb_connection *connection) { struct ida *ida = &connection->hd->cport_id_map; - spin_lock(&connection->hd->cport_id_map_lock); + spin_lock_irq(&gb_connections_lock); ida_simple_remove(ida, connection->hd_cport_id); - spin_unlock(&connection->hd->cport_id_map_lock); + spin_unlock_irq(&gb_connections_lock); connection->hd_cport_id = CPORT_ID_BAD; } diff --git a/drivers/staging/greybus/core.c b/drivers/staging/greybus/core.c index 96bd974..26e4b44 100644 --- a/drivers/staging/greybus/core.c +++ b/drivers/staging/greybus/core.c @@ -188,7 +188,6 @@ struct greybus_host_device *greybus_create_hd(struct greybus_host_driver *driver INIT_LIST_HEAD(&hd->modules); INIT_LIST_HEAD(&hd->connections); ida_init(&hd->cport_id_map); - spin_lock_init(&hd->cport_id_map_lock); return hd; } diff --git a/drivers/staging/greybus/greybus.h b/drivers/staging/greybus/greybus.h index bb39528..90469bb 100644 --- a/drivers/staging/greybus/greybus.h +++ b/drivers/staging/greybus/greybus.h @@ -168,7 +168,6 @@ struct greybus_host_device { struct list_head modules; struct list_head connections; struct ida cport_id_map; - spinlock_t cport_id_map_lock; u8 device_id; /* Private data for the host driver */ -- 2.7.4