From: Alex Elder Date: Mon, 17 Nov 2014 14:08:45 +0000 (-0600) Subject: greybus: get rid of cport_id_map_lock X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=1e776f31838f1037319fe54ea7e676a8871c6603;p=GitHub%2Fmoto-9609%2Fandroid_kernel_motorola_exynos9610.git 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 --- diff --git a/drivers/staging/greybus/connection.c b/drivers/staging/greybus/connection.c index ecd7931e024d..cb6e2e1c085c 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 96bd97481cf2..26e4b44bdf44 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 bb395280e7d3..90469bb83b27 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 */