diff options
author | Johan Hovold <johan@hovoldconsulting.com> | 2016-03-03 13:34:36 +0100 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@google.com> | 2016-03-04 18:26:08 -0800 |
commit | cb033188d8a783be55d03017954b8e7453799a5d (patch) | |
tree | c8605c337379a750a99b729714352953a383e35e /drivers/staging/greybus/connection.c | |
parent | 8fd9466b8c324bc87c5db58a46c33731d1ea50bf (diff) | |
download | op-kernel-dev-cb033188d8a783be55d03017954b8e7453799a5d.zip op-kernel-dev-cb033188d8a783be55d03017954b8e7453799a5d.tar.gz |
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.c | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/drivers/staging/greybus/connection.c b/drivers/staging/greybus/connection.c index 34e26dc..eaceafc 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; |