gb_svc_connection_create(hd->svc,
hd->endo->ap_intf_id, hd_cport_id,
bundle->intf->interface_id, cport_id);
+ if (hd->driver->connection_create)
+ hd->driver->connection_create(connection);
}
gb_connection_bind_protocol(connection);
list_del(&connection->hd_links);
spin_unlock_irq(&gb_connections_lock);
+ if (connection->hd->driver->connection_destroy)
+ connection->hd->driver->connection_destroy(connection);
+
if (connection->protocol)
gb_protocol_put(connection->protocol);
connection->protocol = NULL;
struct greybus_host_driver {
size_t hd_priv_size;
+ void (*connection_create)(struct gb_connection *connection);
+ void (*connection_destroy)(struct gb_connection *connection);
int (*message_send)(struct greybus_host_device *hd, u16 dest_cport_id,
struct gb_message *message, gfp_t gfp_mask);
void (*message_cancel)(struct gb_message *message);