greybus: more structure definitions added
authorGreg Kroah-Hartman <greg@kroah.com>
Mon, 1 Sep 2014 00:25:22 +0000 (17:25 -0700)
committerGreg Kroah-Hartman <greg@kroah.com>
Mon, 1 Sep 2014 00:25:22 +0000 (17:25 -0700)
drivers/staging/greybus/ap.c

index 39b83c5..3741428 100644 (file)
  * 
  *
  */
-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;