aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging/greybus/connection.c
diff options
context:
space:
mode:
authorJohan Hovold <johan@hovoldconsulting.com>2016-03-03 13:34:36 +0100
committerGreg Kroah-Hartman <gregkh@google.com>2016-03-04 18:26:08 -0800
commitcb033188d8a783be55d03017954b8e7453799a5d (patch)
treec8605c337379a750a99b729714352953a383e35e /drivers/staging/greybus/connection.c
parentgreybus: control: Add TimeSync control commands (diff)
downloadlinux-dev-cb033188d8a783be55d03017954b8e7453799a5d.tar.xz
linux-dev-cb033188d8a783be55d03017954b8e7453799a5d.zip
greybus: connection: add connection-flag interface
Add interface for associating a flag bitmask with a connection when creating it. Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org> Signed-off-by: Johan Hovold <johan@hovoldconsulting.com> Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Diffstat (limited to 'drivers/staging/greybus/connection.c')
-rw-r--r--drivers/staging/greybus/connection.c24
1 files changed, 20 insertions, 4 deletions
diff --git a/drivers/staging/greybus/connection.c b/drivers/staging/greybus/connection.c
index 34e26dc6e249..eaceafc4f8dd 100644
--- a/drivers/staging/greybus/connection.c
+++ b/drivers/staging/greybus/connection.c
@@ -119,6 +119,7 @@ static void gb_connection_init_name(struct gb_connection *connection)
* @bundle: remote-interface bundle (may be NULL)
* @cport_id: remote-interface cport id, or 0 for static connections
* @handler: request handler (may be NULL)
+ * @flags: connection flags
*
* Create a Greybus connection, representing the bidirectional link
* between a CPort on a (local) Greybus host device and a CPort on
@@ -137,7 +138,8 @@ static struct gb_connection *
_gb_connection_create(struct gb_host_device *hd, int hd_cport_id,
struct gb_interface *intf,
struct gb_bundle *bundle, int cport_id,
- gb_request_handler_t handler)
+ gb_request_handler_t handler,
+ unsigned long flags)
{
struct gb_connection *connection;
struct ida *id_map = &hd->cport_id_map;
@@ -180,6 +182,7 @@ _gb_connection_create(struct gb_host_device *hd, int hd_cport_id,
connection->intf = intf;
connection->bundle = bundle;
connection->handler = handler;
+ connection->flags = flags;
connection->state = GB_CONNECTION_STATE_DISABLED;
atomic_set(&connection->op_cycle, 0);
@@ -226,13 +229,14 @@ struct gb_connection *
gb_connection_create_static(struct gb_host_device *hd, u16 hd_cport_id,
gb_request_handler_t handler)
{
- return _gb_connection_create(hd, hd_cport_id, NULL, NULL, 0, handler);
+ return _gb_connection_create(hd, hd_cport_id, NULL, NULL, 0, handler,
+ 0);
}
struct gb_connection *
gb_connection_create_control(struct gb_interface *intf)
{
- return _gb_connection_create(intf->hd, -1, intf, NULL, 0, NULL);
+ return _gb_connection_create(intf->hd, -1, intf, NULL, 0, NULL, 0);
}
struct gb_connection *
@@ -242,10 +246,22 @@ gb_connection_create(struct gb_bundle *bundle, u16 cport_id,
struct gb_interface *intf = bundle->intf;
return _gb_connection_create(intf->hd, -1, intf, bundle, cport_id,
- handler);
+ handler, 0);
}
EXPORT_SYMBOL_GPL(gb_connection_create);
+struct gb_connection *
+gb_connection_create_flags(struct gb_bundle *bundle, u16 cport_id,
+ gb_request_handler_t handler,
+ unsigned long flags)
+{
+ struct gb_interface *intf = bundle->intf;
+
+ return _gb_connection_create(intf->hd, -1, intf, bundle, cport_id,
+ handler, flags);
+}
+EXPORT_SYMBOL_GPL(gb_connection_create_flags);
+
static int gb_connection_hd_cport_enable(struct gb_connection *connection)
{
struct gb_host_device *hd = connection->hd;