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 <elder@linaro.org>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
This commit is contained in:
Alex Elder 2014-11-17 08:08:45 -06:00 committed by Greg Kroah-Hartman
parent 2c43ce4967
commit 1e776f3183
3 changed files with 4 additions and 6 deletions

View file

@ -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;
}

View file

@ -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;
}

View file

@ -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 */