summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/staging/greybus/connection.c14
-rw-r--r--drivers/staging/greybus/connection.h3
2 files changed, 14 insertions, 3 deletions
diff --git a/drivers/staging/greybus/connection.c b/drivers/staging/greybus/connection.c
index 9187a369bcbb..c6e1d701a676 100644
--- a/drivers/staging/greybus/connection.c
+++ b/drivers/staging/greybus/connection.c
@@ -141,8 +141,9 @@ void gb_connection_bind_protocol(struct gb_connection *connection)
* Returns a pointer to the new connection if successful, or a null
* pointer otherwise.
*/
-struct gb_connection *gb_connection_create(struct gb_bundle *bundle,
- u16 cport_id, u8 protocol_id)
+struct gb_connection *
+gb_connection_create_range(struct gb_bundle *bundle, u16 cport_id,
+ u8 protocol_id, u32 ida_start, u32 ida_end)
{
struct gb_connection *connection;
struct greybus_host_device *hd = bundle->intf->hd;
@@ -165,7 +166,7 @@ struct gb_connection *gb_connection_create(struct gb_bundle *bundle,
if (!connection)
return NULL;
- retval = ida_simple_get(id_map, 0, CPORT_ID_MAX, GFP_KERNEL);
+ retval = ida_simple_get(id_map, ida_start, ida_end, GFP_KERNEL);
if (retval < 0) {
kfree(connection);
return NULL;
@@ -221,6 +222,13 @@ struct gb_connection *gb_connection_create(struct gb_bundle *bundle,
return connection;
}
+struct gb_connection *gb_connection_create(struct gb_bundle *bundle,
+ u16 cport_id, u8 protocol_id)
+{
+ return gb_connection_create_range(bundle, cport_id, protocol_id, 0,
+ CPORT_ID_MAX);
+}
+
/*
* Cancel all active operations on a connection.
*
diff --git a/drivers/staging/greybus/connection.h b/drivers/staging/greybus/connection.h
index fb7a1fb290ac..bba14b527fed 100644
--- a/drivers/staging/greybus/connection.h
+++ b/drivers/staging/greybus/connection.h
@@ -47,6 +47,9 @@ struct gb_connection {
struct gb_connection *gb_connection_create(struct gb_bundle *bundle,
u16 cport_id, u8 protocol_id);
+struct gb_connection *gb_connection_create_range(struct gb_bundle *bundle,
+ u16 cport_id, u8 protocol_id, u32 ida_start,
+ u32 ida_end);
void gb_connection_destroy(struct gb_connection *connection);
int gb_connection_init(struct gb_connection *connection);