Commit 2ecd536d authored by Greg Kroah-Hartman's avatar Greg Kroah-Hartman
Browse files

greybus: more structure definitions added

parent be1e2e9c
Loading
Loading
Loading
Loading
+123 −2
Original line number Diff line number Diff line
@@ -24,14 +24,135 @@
 * 
 *
 */
struct svc_msg {
enum svc_function_type {
	SVC_FUNCTION_HANDSHAKE			= 0x00,
	SVC_FUNCTION_UNIPRO_NETWORK_MANAGEMENT	= 0x01,
	SVC_FUNCTION_HOTPLUG			= 0x02,
	SVC_FUNCTION_DDB			= 0x03,
	SVC_FUNCTION_POWER			= 0x04,
	SVC_FUNCTION_EPM			= 0x05,
	SVC_FUNCTION_SUSPEND			= 0x06,
};

struct svc_msg_header {
	u8	function;
	u8	type;
	u8	type;		/* enum svc_function_type */
	u8	version_major;
	u8	version_minor;
	u16	payload_length;
};

enum svc_function_handshake_type {
	SVC_HANDSHAKE_SVC_HELLO		= 0x00,
	SVC_HANDSHAKE_AP_HELLO		= 0x01,
	SVC_HANDSHAKE_MODULE_HELLO	= 0x02,
};

struct svc_function_handshake {
	u8	handshake_type;	/* enum svc_function_handshake_type */
};

struct svc_function_unipro_set_route {
	u8	source_device_id;
	u8	source_cport_id;
	u8	destination_device_id;
	u8	destination_cport_id;
};

struct svc_function_unipro_link_up {
	u8	device_id;
};

enum svc_function_management_event {
	SVC_MANAGEMENT_SET_ROUTE	= 0x00,
	SVC_MANAGEMENT_LINK_UP		= 0x01,
};

struct svc_function_unipro_management {
	u8	management_packet_type;	/* enum svc_function_management_event */
	union {
		struct svc_function_unipro_set_route	set_route;
		struct svc_function_unipro_link_up	link_up;
	};
};

enum svc_function_hotplug_event {
	SVC_HOTPLUG_EVENT	= 0x00,
	SVC_HOTUNPLUG_EVENT	= 0x01,
};

struct svc_function_hotplug {
	u8	hotplug_event;	/* enum svc_function_hotplug_event */
	u8	device_id;
};

enum svc_function_ddb_type {
	SVC_DDB_GET		= 0x00,
	SVC_DDB_RESPONSE	= 0x01,
};

struct svc_function_ddb_get {
	u8	device_id;
	u8	message_id;
};

struct svc_function_ddb_response {
	u8	device_id;
	u8	message_id;
	u16	descriptor_length;
	u8	ddb[0];
};

struct svc_function_ddb {
	u8	ddb_type;	/* enum svc_function_ddb_type */
	union {
		struct svc_function_ddb_get		ddb_get;
		struct svc_function_ddb_response	ddb_response;
	};
};

enum svc_function_power_type {
	SVC_POWER_BATTERY_STATUS		= 0x00,
	SVC_POWER_BATTERY_STATUS_REQUEST	= 0x01,
};

enum svc_function_battery_status {
	SVC_BATTERY_UNKNOWN		= 0x00,
	SVC_BATTERY_CHARGING		= 0x01,
	SVC_BATTERY_DISCHARGING		= 0x02,
	SVC_BATTERY_NOT_CHARGING	= 0x03,
	SVC_BATTERY_FULL		= 0x04,
};

struct svc_function_power_battery_status {
	u16	charge_full;
	u16	charge_now;
	u8	status;	/* enum svc_function_battery_status */
};

struct svc_function_power_battery_status_request {

};

struct svc_function_power {
	u8	power_type;	/* enum svc_function_power_type */
	union {
		struct svc_function_power_battery_status		status;
		struct svc_function_power_battery_status_request	request;
	};
};

struct svc_msg {
	struct svc_msg_header	header;
	union {
		struct svc_function_handshake		handshake;
		struct svc_function_unipro_management	management;
		struct svc_function_hotplug		hotplug;
		struct svc_function_ddb			ddb;
		u8				data[0];
	};
};


struct ap_msg {
	u8 *data;