summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorViresh Kumar <viresh.kumar@linaro.org>2015-08-12 09:19:32 +0530
committerGreg Kroah-Hartman <gregkh@google.com>2015-08-11 21:57:12 -0700
commit738599c0dd7fef4d28f416ff9b0b3bc1b07468d2 (patch)
tree8a0cb2199610fe221823694ad9401bc271c7f120 /drivers
parent3944a454f1d5634cdcd8b8844199d67a1110dccb (diff)
downloadop-kernel-dev-738599c0dd7fef4d28f416ff9b0b3bc1b07468d2.zip
op-kernel-dev-738599c0dd7fef4d28f416ff9b0b3bc1b07468d2.tar.gz
greybus: protocol: Create request structure from within gb_protocol_get_version()
The version request can only send the version of protocol for which it is initiated and gb_protocol_get_version() has all the information to create the request structure. Replace the 'request' and 'request_size' arguments to gb_protocol_get_version() with a bool to know if the version information of the protocol should be sent or not. Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org> Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/staging/greybus/connection.c2
-rw-r--r--drivers/staging/greybus/protocol.c12
-rw-r--r--drivers/staging/greybus/protocol.h3
3 files changed, 12 insertions, 5 deletions
diff --git a/drivers/staging/greybus/connection.c b/drivers/staging/greybus/connection.c
index 0ec5b0d..2b2be3f 100644
--- a/drivers/staging/greybus/connection.c
+++ b/drivers/staging/greybus/connection.c
@@ -421,7 +421,7 @@ int gb_connection_init(struct gb_connection *connection)
* this for SVC as that is initiated by the SVC.
*/
if (connection->hd_cport_id != GB_SVC_CPORT_ID) {
- ret = gb_protocol_get_version(connection, NULL, 0);
+ ret = gb_protocol_get_version(connection, false);
if (ret) {
dev_err(&connection->dev,
"Failed to get version CPort-%d (%d)\n",
diff --git a/drivers/staging/greybus/protocol.c b/drivers/staging/greybus/protocol.c
index b63e28c..5bdc2c0 100644
--- a/drivers/staging/greybus/protocol.c
+++ b/drivers/staging/greybus/protocol.c
@@ -163,12 +163,20 @@ struct gb_protocol *gb_protocol_get(u8 id, u8 major, u8 minor)
return protocol;
}
-int gb_protocol_get_version(struct gb_connection *connection, void *request,
- int request_size)
+int gb_protocol_get_version(struct gb_connection *connection, bool send_request)
{
struct gb_protocol_version_response response;
+ struct gb_protocol_version_response *request = NULL;
+ int request_size = 0;
int retval;
+ if (send_request) {
+ response.major = connection->protocol->major;
+ response.minor = connection->protocol->minor;
+ request = &response;
+ request_size = sizeof(*request);
+ }
+
retval = gb_operation_sync(connection, GB_REQUEST_TYPE_PROTOCOL_VERSION,
request, request_size, &response,
sizeof(response));
diff --git a/drivers/staging/greybus/protocol.h b/drivers/staging/greybus/protocol.h
index 34a7f18..87b5a10 100644
--- a/drivers/staging/greybus/protocol.h
+++ b/drivers/staging/greybus/protocol.h
@@ -44,8 +44,7 @@ int gb_protocol_deregister(struct gb_protocol *protocol);
__gb_protocol_register(protocol, THIS_MODULE)
struct gb_protocol *gb_protocol_get(u8 id, u8 major, u8 minor);
-int gb_protocol_get_version(struct gb_connection *connection, void *request,
- int request_size);
+int gb_protocol_get_version(struct gb_connection *connection, bool send_request);
void gb_protocol_put(struct gb_protocol *protocol);
OpenPOWER on IntegriCloud