* pointer otherwise.
*/
struct gb_connection *gb_connection_create(struct gb_interface *interface,
- u16 cport_id)
+ u16 cport_id, enum greybus_protocol protocol)
{
struct gb_connection *connection;
struct greybus_host_device *hd;
connection->hd = hd; /* XXX refcount? */
connection->interface = interface; /* XXX refcount? */
connection->interface_cport_id = cport_id;
+ connection->protocol = protocol;
+
INIT_LIST_HEAD(&connection->operations);
atomic_set(&connection->op_cycle, 0);
struct list_head hd_links;
struct list_head interface_links;
- /* protocol */
+ enum greybus_protocol protocol;
struct list_head operations;
atomic_t op_cycle;
};
struct gb_connection *gb_connection_create(struct gb_interface *interface,
- u16 cport_id);
+ u16 cport_id, enum greybus_protocol protocol);
void gb_connection_destroy(struct gb_connection *connection);
u16 gb_connection_op_id(struct gb_connection *connection);
/* Found one. Set up its function structure */
protocol = (enum greybus_protocol)desc_cport->protocol;
cport_id = le16_to_cpu(desc_cport->id);
- if (!gb_connection_create(interface, cport_id))
+ if (!gb_connection_create(interface, cport_id, protocol))
return 0; /* Error */
count++;