greybus: svc: save pointer to struct gb_svc in struct gb_interface
Its another special protocol (just like control protocol) and is required to be accessed from other files, lets save a pointer to it in interface structure. Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org> Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
This commit is contained in:
parent
ab69c4cea3
commit
6ceb8fdeae
@ -14,6 +14,7 @@
|
||||
struct gb_interface {
|
||||
struct device dev;
|
||||
struct gb_control *control;
|
||||
struct gb_svc *svc;
|
||||
|
||||
struct list_head bundles;
|
||||
struct list_head links; /* greybus_host_device->interfaces */
|
||||
|
@ -9,12 +9,6 @@
|
||||
|
||||
#include "greybus.h"
|
||||
|
||||
struct gb_svc {
|
||||
struct gb_connection *connection;
|
||||
u8 version_major;
|
||||
u8 version_minor;
|
||||
};
|
||||
|
||||
/* Define get_version() routine */
|
||||
define_get_version(gb_svc, SVC);
|
||||
|
||||
@ -217,6 +211,9 @@ static int gb_svc_connection_init(struct gb_connection *connection)
|
||||
if (ret)
|
||||
kfree(svc);
|
||||
|
||||
/* Set interface's svc connection */
|
||||
connection->bundle->intf->svc = svc;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -224,9 +221,11 @@ static void gb_svc_connection_exit(struct gb_connection *connection)
|
||||
{
|
||||
struct gb_svc *svc = connection->private;
|
||||
|
||||
if (!svc)
|
||||
if (WARN_ON(connection->bundle->intf->svc != svc))
|
||||
return;
|
||||
|
||||
connection->bundle->intf->svc = NULL;
|
||||
|
||||
kfree(svc);
|
||||
}
|
||||
|
||||
|
@ -10,7 +10,12 @@
|
||||
#ifndef __SVC_H
|
||||
#define __SVC_H
|
||||
|
||||
struct gb_svc;
|
||||
struct gb_svc {
|
||||
struct gb_connection *connection;
|
||||
u8 version_major;
|
||||
u8 version_minor;
|
||||
};
|
||||
|
||||
|
||||
int gb_svc_intf_device_id(struct gb_svc *svc, u8 intf_id, u8 device_id);
|
||||
int gb_svc_intf_reset(struct gb_svc *svc, u8 intf_id);
|
||||
|
Loading…
x
Reference in New Issue
Block a user