greybus: split svc msg out into separate header file
authorGreg Kroah-Hartman <greg@kroah.com>
Mon, 1 Sep 2014 00:43:38 +0000 (17:43 -0700)
committerGreg Kroah-Hartman <greg@kroah.com>
Mon, 1 Sep 2014 00:43:38 +0000 (17:43 -0700)
drivers/staging/greybus/ap.c
drivers/staging/greybus/svc_msg.h [new file with mode: 0644]

index 3741428..2d63b5c 100644 (file)
 #include <linux/uaccess.h>
 #include <linux/kthread.h>
 #include <linux/device.h>
+#include "svc_msg.h"
 #include "greybus.h"
 
-/*
- * AP <-> SVC message structure format:
- *
- * 
- *
- */
-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;           /* 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;
diff --git a/drivers/staging/greybus/svc_msg.h b/drivers/staging/greybus/svc_msg.h
new file mode 100644 (file)
index 0000000..3f97a5e
--- /dev/null
@@ -0,0 +1,162 @@
+/*
+ * Greybus AP <-> SVC message structure format.
+ *
+ * Defined in the "Greybus Application Protocol" document.
+ * See that document for any details on these values and structures.
+ *
+ * Copyright 2014 Google Inc.
+ */
+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;           /* 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 {
+       u8      epm_command_type;       /* enum svc_function_epm_command_type */
+       u8      device_id;
+};
+
+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;
+       };
+};
+
+enum svc_function_epm_command_type {
+       SVC_EPM_ENABLE  = 0x00,
+       SVC_EPM_DISABLE = 0x01,
+};
+
+struct svc_function_epm {
+       u8      epm_command_type;       /* enum svc_function_epm_command_type */
+       u8      device_id;
+};
+
+enum svc_function_suspend_command_type {
+       SVC_SUSPEND_FIXME_1     = 0x00, // FIXME
+       SVC_SUSPEND_FIXME_2     = 0x01,
+};
+
+struct svc_function_suspend {
+       u8      suspend_command_type;   /* enum function_suspend_command_type */
+       u8      device_id;
+};
+
+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;
+               struct svc_function_power               power;
+               struct svc_function_epm                 epm;
+               struct svc_function_suspend             suspend;
+       };
+};
+
+
+