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:
parent
2c43ce4967
commit
1e776f3183
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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 */
|
||||
|
|
Loading…
Reference in a new issue