]> git.karo-electronics.de Git - linux-beck.git/commitdiff
greybus: connection: add control connection flag
authorJohan Hovold <johan@hovoldconsulting.com>
Fri, 27 May 2016 15:26:25 +0000 (17:26 +0200)
committerGreg Kroah-Hartman <gregkh@google.com>
Fri, 27 May 2016 19:19:29 +0000 (12:19 -0700)
Add control connection flag which will be set for control connections.

Also add a helper function to test if the flag is set.

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>
drivers/staging/greybus/connection.c
drivers/staging/greybus/connection.h

index 7e07ef832b7cef6c0e66e1b5ad896a7fa73c1612..2da713ca7feae1a3185a90b5e1ee1db1c9b0fa82 100644 (file)
@@ -227,7 +227,8 @@ gb_connection_create_static(struct gb_host_device *hd, u16 hd_cport_id,
 struct gb_connection *
 gb_connection_create_control(struct gb_interface *intf)
 {
-       return _gb_connection_create(intf->hd, -1, intf, NULL, 0, NULL, 0);
+       return _gb_connection_create(intf->hd, -1, intf, NULL, 0, NULL,
+                                       GB_CONNECTION_FLAG_CONTROL);
 }
 
 struct gb_connection *
@@ -412,11 +413,11 @@ static int gb_connection_control_connected(struct gb_connection *connection)
                return 0;
        }
 
-       control = connection->intf->control;
-
-       if (connection == control->connection)
+       if (gb_connection_is_control(connection))
                return 0;
 
+       control = connection->intf->control;
+
        ret = gb_control_connected_operation(control, cport_id);
        if (ret) {
                dev_err(&connection->bundle->dev,
@@ -438,11 +439,11 @@ gb_connection_control_disconnected(struct gb_connection *connection)
        if (gb_connection_is_static(connection))
                return;
 
-       control = connection->intf->control;
-
-       if (connection == control->connection)
+       if (gb_connection_is_control(connection))
                return;
 
+       control = connection->intf->control;
+
        ret = gb_control_disconnected_operation(control, cport_id);
        if (ret) {
                dev_warn(&connection->bundle->dev,
index f1592391acf177a9c0ddaf94bd02d22a78a89d4f..6120c088648a316e6535a2874b37a89c829948b6 100644 (file)
@@ -17,6 +17,7 @@
 #define GB_CONNECTION_FLAG_NO_FLOWCTRL BIT(1)
 #define GB_CONNECTION_FLAG_OFFLOADED   BIT(2)
 #define GB_CONNECTION_FLAG_CDSI1       BIT(3)
+#define GB_CONNECTION_FLAG_CONTROL     BIT(4)
 
 enum gb_connection_state {
        GB_CONNECTION_STATE_INVALID     = 0,
@@ -104,6 +105,11 @@ static inline bool gb_connection_is_offloaded(struct gb_connection *connection)
        return connection->flags & GB_CONNECTION_FLAG_OFFLOADED;
 }
 
+static inline bool gb_connection_is_control(struct gb_connection *connection)
+{
+       return connection->flags & GB_CONNECTION_FLAG_CONTROL;
+}
+
 static inline void *gb_connection_get_data(struct gb_connection *connection)
 {
        return connection->private;