diff --git a/drivers/staging/greybus/connection.c b/drivers/staging/greybus/connection.c index c3207c828a45..3f644ca8759e 100644 --- a/drivers/staging/greybus/connection.c +++ b/drivers/staging/greybus/connection.c @@ -295,15 +295,17 @@ gb_connection_svc_connection_destroy(struct gb_connection *connection) /* Inform Interface about active CPorts */ static int gb_connection_control_connected(struct gb_connection *connection) { - struct gb_protocol *protocol = connection->protocol; struct gb_control *control; u16 cport_id = connection->intf_cport_id; int ret; - if (protocol->flags & GB_PROTOCOL_SKIP_CONTROL_CONNECTED) + if (gb_connection_is_static(connection)) return 0; - control = connection->bundle->intf->control; + control = connection->intf->control; + + if (connection == control->connection) + return 0; ret = gb_control_connected_operation(control, cport_id); if (ret) { @@ -319,15 +321,17 @@ static int gb_connection_control_connected(struct gb_connection *connection) static void gb_connection_control_disconnected(struct gb_connection *connection) { - struct gb_protocol *protocol = connection->protocol; struct gb_control *control; u16 cport_id = connection->intf_cport_id; int ret; - if (protocol->flags & GB_PROTOCOL_SKIP_CONTROL_DISCONNECTED) + if (gb_connection_is_static(connection)) return; - control = connection->bundle->intf->control; + control = connection->intf->control; + + if (connection == control->connection) + return; ret = gb_control_disconnected_operation(control, cport_id); if (ret) { diff --git a/drivers/staging/greybus/control.c b/drivers/staging/greybus/control.c index 1c4994b84629..12a9ecac4111 100644 --- a/drivers/staging/greybus/control.c +++ b/drivers/staging/greybus/control.c @@ -159,7 +159,5 @@ static struct gb_protocol control_protocol = { .minor = GB_CONTROL_VERSION_MINOR, .connection_init = gb_control_connection_init, .connection_exit = gb_control_connection_exit, - .flags = GB_PROTOCOL_SKIP_CONTROL_CONNECTED | - GB_PROTOCOL_SKIP_CONTROL_DISCONNECTED, }; gb_builtin_protocol_driver(control_protocol); diff --git a/drivers/staging/greybus/protocol.h b/drivers/staging/greybus/protocol.h index f24281b39db5..1f25c13bb0e8 100644 --- a/drivers/staging/greybus/protocol.h +++ b/drivers/staging/greybus/protocol.h @@ -14,8 +14,6 @@ struct gb_connection; struct gb_operation; /* Possible flags for protocol drivers */ -#define GB_PROTOCOL_SKIP_CONTROL_CONNECTED BIT(0) /* Don't sent connected requests */ -#define GB_PROTOCOL_SKIP_CONTROL_DISCONNECTED BIT(1) /* Don't sent disconnected requests */ #define GB_PROTOCOL_SKIP_VERSION BIT(3) /* Don't send get_version() requests */ typedef int (*gb_connection_init_t)(struct gb_connection *); diff --git a/drivers/staging/greybus/svc.c b/drivers/staging/greybus/svc.c index 0bbcddaefbb4..245cf4d43570 100644 --- a/drivers/staging/greybus/svc.c +++ b/drivers/staging/greybus/svc.c @@ -864,8 +864,6 @@ static struct gb_protocol svc_protocol = { .connection_init = gb_svc_connection_init, .connection_exit = gb_svc_connection_exit, .request_recv = gb_svc_request_recv, - .flags = GB_PROTOCOL_SKIP_CONTROL_CONNECTED | - GB_PROTOCOL_SKIP_CONTROL_DISCONNECTED | - GB_PROTOCOL_SKIP_VERSION, + .flags = GB_PROTOCOL_SKIP_VERSION, }; gb_builtin_protocol_driver(svc_protocol);