Commit 710ecb06 authored by Matt Porter's avatar Matt Porter Committed by Greg Kroah-Hartman
Browse files

greybus: update svc_msg_header fields and users to match spec



The Greybus spec has been updated to clarify some of the original
intent of the SVC message definition. The svc_msg_header was:

struct svc_msg_header {
	__u8 function;
	__u8 message_type;
...
}

and is now

struct svc_msg_header {
	__u8 function_id;
	__u8 message_type;
...
}

to match the spec. The function_id carries enum svc_function_id values
and message_type is now clarified to be a session layer level field
that is simply "data" or "error".

Change all references of function type to function id. For now, don't
parse the message_type field but add the two allowable svc_msg_type enums.

Signed-off-by: default avatarMatt Porter <mporter@linaro.org>
Signed-off-by: default avatarGreg Kroah-Hartman <greg@kroah.com>
parent 772149b6
Loading
Loading
Loading
Loading
+6 −6
Original line number Diff line number Diff line
@@ -29,7 +29,7 @@ struct ap_msg {

static struct workqueue_struct *ap_workqueue;

static struct svc_msg *svc_msg_alloc(enum svc_function_type type)
static struct svc_msg *svc_msg_alloc(enum svc_function_id id)
{
	struct svc_msg *svc_msg;

@@ -37,8 +37,8 @@ static struct svc_msg *svc_msg_alloc(enum svc_function_type type)
	if (!svc_msg)
		return NULL;

	// FIXME - verify we are only sending message types we should be
	svc_msg->header.type = type;
	// FIXME - verify we are only sending function IDs we should be
	svc_msg->header.function_id = id;
	return svc_msg;
}

@@ -187,7 +187,7 @@ static void ap_process_event(struct work_struct *work)
	}

	/* Look at the message to figure out what to do with it */
	switch (svc_msg->header.type) {
	switch (svc_msg->header.function_id) {
	case SVC_FUNCTION_HANDSHAKE:
		svc_handshake(&svc_msg->handshake, hd);
		break;
@@ -210,8 +210,8 @@ static void ap_process_event(struct work_struct *work)
		svc_suspend(&svc_msg->suspend, hd);
		break;
	default:
		dev_err(hd->parent, "received invalid SVC message type %d\n",
			svc_msg->header.type);
		dev_err(hd->parent, "received invalid SVC function ID %d\n",
			svc_msg->header.function_id);
	}

	/* clean the message up */
+8 −3
Original line number Diff line number Diff line
@@ -12,7 +12,7 @@

#pragma pack(push, 1)

enum svc_function_type {
enum svc_function_id {
	SVC_FUNCTION_HANDSHAKE			= 0x00,
	SVC_FUNCTION_UNIPRO_NETWORK_MANAGEMENT	= 0x01,
	SVC_FUNCTION_HOTPLUG			= 0x02,
@@ -22,9 +22,14 @@ enum svc_function_type {
	SVC_FUNCTION_SUSPEND			= 0x06,
};

enum svc_msg_type {
	SVC_MSG_DATA				= 0x00,
	SVC_MSG_ERROR				= 0xff,
};

struct svc_msg_header {
	__u8	function;
	__u8	type;		/* enum svc_function_type */
	__u8	function_id;	/* enum svc_function_id */
	__u8	message_type;
	__u8	version_major;
	__u8	version_minor;
	__le16	payload_length;