greybus: svc: connection: ask SVC to create connections
Ask the SVC to do all the necessary bits for creating a new connection. This is skipped for the initial SVC connection. Tested-by: Viresh Kumar <viresh.kumar@linaro.org> Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org> Signed-off-by: Perry Hung <perry@leaflabs.com> Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>hifive-unleashed-5.1
parent
7e275465fa
commit
75a60ed20d
|
@ -251,7 +251,12 @@ gb_connection_create_range(struct greybus_host_device *hd,
|
||||||
|
|
||||||
spin_unlock_irq(&gb_connections_lock);
|
spin_unlock_irq(&gb_connections_lock);
|
||||||
|
|
||||||
/* XXX Will have to establish connections to get version */
|
if (hd_cport_id != GB_SVC_CPORT_ID) {
|
||||||
|
gb_svc_connection_create(hd->svc,
|
||||||
|
hd->endo->ap_intf_id, hd_cport_id,
|
||||||
|
bundle->intf->interface_id, cport_id);
|
||||||
|
}
|
||||||
|
|
||||||
gb_connection_bind_protocol(connection);
|
gb_connection_bind_protocol(connection);
|
||||||
if (!connection->protocol)
|
if (!connection->protocol)
|
||||||
dev_warn(&connection->dev,
|
dev_warn(&connection->dev,
|
||||||
|
|
|
@ -103,6 +103,7 @@ struct greybus_host_device {
|
||||||
|
|
||||||
struct gb_endo *endo;
|
struct gb_endo *endo;
|
||||||
struct gb_connection *initial_svc_connection;
|
struct gb_connection *initial_svc_connection;
|
||||||
|
struct gb_svc *svc;
|
||||||
|
|
||||||
/* Private data for the host driver */
|
/* Private data for the host driver */
|
||||||
unsigned long hd_priv[0] __aligned(sizeof(s64));
|
unsigned long hd_priv[0] __aligned(sizeof(s64));
|
||||||
|
|
|
@ -430,6 +430,7 @@ static int gb_svc_connection_init(struct gb_connection *connection)
|
||||||
if (!svc)
|
if (!svc)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
|
connection->hd->svc = svc;
|
||||||
svc->connection = connection;
|
svc->connection = connection;
|
||||||
connection->private = svc;
|
connection->private = svc;
|
||||||
|
|
||||||
|
@ -445,6 +446,7 @@ static void gb_svc_connection_exit(struct gb_connection *connection)
|
||||||
{
|
{
|
||||||
struct gb_svc *svc = connection->private;
|
struct gb_svc *svc = connection->private;
|
||||||
|
|
||||||
|
connection->hd->svc = NULL;
|
||||||
connection->private = NULL;
|
connection->private = NULL;
|
||||||
kfree(svc);
|
kfree(svc);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue