diff options
author | Johan Hovold <johan@hovoldconsulting.com> | 2016-04-29 17:08:36 +0200 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@google.com> | 2016-04-29 14:27:05 -0700 |
commit | a2cf2e594626ce8c1e6944f6a44a7d481b84b82d (patch) | |
tree | d1e96f12876d1d8924efffb1631c3d011d355ade /drivers/staging/greybus | |
parent | b1f8bfea65183b4575e3dde64641f7340a3dfa38 (diff) |
greybus: svc: define the version request
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>
Diffstat (limited to 'drivers/staging/greybus')
-rw-r--r-- | drivers/staging/greybus/greybus_protocols.h | 14 | ||||
-rw-r--r-- | drivers/staging/greybus/svc.c | 8 |
2 files changed, 14 insertions, 8 deletions
diff --git a/drivers/staging/greybus/greybus_protocols.h b/drivers/staging/greybus/greybus_protocols.h index c074402633c6..07988fb10e0d 100644 --- a/drivers/staging/greybus/greybus_protocols.h +++ b/drivers/staging/greybus/greybus_protocols.h @@ -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 { diff --git a/drivers/staging/greybus/svc.c b/drivers/staging/greybus/svc.c index 78fe4dc37131..577e680f6a90 100644 --- a/drivers/staging/greybus/svc.c +++ b/drivers/staging/greybus/svc.c @@ -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; |