greybus: svc: define the version request
authorJohan Hovold <johan@hovoldconsulting.com>
Fri, 29 Apr 2016 15:08:36 +0000 (17:08 +0200)
committerGreg Kroah-Hartman <gregkh@google.com>
Fri, 29 Apr 2016 21:27:05 +0000 (14:27 -0700)
Define the SVC version request, which need not need to stay the same as
the legacy version request.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
drivers/staging/greybus/greybus_protocols.h
drivers/staging/greybus/svc.c

index c074402633c66ebbdd22b9b41d77015fcc14c0bc..07988fb10e0d9104abdf6199344accb4c0ea1274 100644 (file)
@@ -781,6 +781,7 @@ struct gb_spi_transfer_response {
 #define GB_SVC_VERSION_MINOR           0x01
 
 /* Greybus SVC request types */
+#define GB_SVC_TYPE_PROTOCOL_VERSION           0x01
 #define GB_SVC_TYPE_SVC_HELLO                  0x02
 #define GB_SVC_TYPE_INTF_DEVICE_ID             0x03
 #define GB_SVC_TYPE_INTF_HOTPLUG               0x04
@@ -808,10 +809,15 @@ struct gb_spi_transfer_response {
 #define GB_SVC_TYPE_INTF_ACTIVATE              0x27
 #define GB_SVC_TYPE_INTF_MAILBOX_EVENT         0x29
 
-/*
- * SVC version request/response has the same payload as
- * gb_protocol_version_request/response.
- */
+struct gb_svc_version_request {
+       __u8    major;
+       __u8    minor;
+} __packed;
+
+struct gb_svc_version_response {
+       __u8    major;
+       __u8    minor;
+} __packed;
 
 /* SVC protocol hello request */
 struct gb_svc_hello_request {
index 78fe4dc37131560c781d8848d3cda029e939abbe..577e680f6a90e131d2590ac3b63274f86ca137ef 100644 (file)
@@ -465,8 +465,8 @@ static int gb_svc_version_request(struct gb_operation *op)
 {
        struct gb_connection *connection = op->connection;
        struct gb_svc *svc = gb_connection_get_data(connection);
-       struct gb_protocol_version_request *request;
-       struct gb_protocol_version_response *response;
+       struct gb_svc_version_request *request;
+       struct gb_svc_version_response *response;
 
        if (op->request->payload_size < sizeof(*request)) {
                dev_err(&svc->dev, "short version request (%zu < %zu)\n",
@@ -1192,7 +1192,7 @@ static int gb_svc_request_handler(struct gb_operation *op)
         * need to protect 'state' for any races.
         */
        switch (type) {
-       case GB_REQUEST_TYPE_PROTOCOL_VERSION:
+       case GB_SVC_TYPE_PROTOCOL_VERSION:
                if (svc->state != GB_SVC_STATE_RESET)
                        ret = -EINVAL;
                break;
@@ -1213,7 +1213,7 @@ static int gb_svc_request_handler(struct gb_operation *op)
        }
 
        switch (type) {
-       case GB_REQUEST_TYPE_PROTOCOL_VERSION:
+       case GB_SVC_TYPE_PROTOCOL_VERSION:
                ret = gb_svc_version_request(op);
                if (!ret)
                        svc->state = GB_SVC_STATE_PROTOCOL_VERSION;