Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a2cf2e59 authored by Johan Hovold's avatar Johan Hovold Committed by Greg Kroah-Hartman
Browse files

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: default avatarJohan Hovold <johan@hovoldconsulting.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@google.com>
parent b1f8bfea
Loading
Loading
Loading
Loading
+10 −4
Original line number Diff line number Diff line
@@ -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 {
+4 −4
Original line number Diff line number Diff line
@@ -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;