]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
greybus: greybus_desc.h created
authorGreg Kroah-Hartman <greg@kroah.com>
Mon, 1 Sep 2014 01:08:52 +0000 (18:08 -0700)
committerGreg Kroah-Hartman <greg@kroah.com>
Mon, 1 Sep 2014 01:08:52 +0000 (18:08 -0700)
drivers/staging/greybus/ap.c
drivers/staging/greybus/greybus_desc.h [new file with mode: 0644]
drivers/staging/greybus/svc_msg.h

index 2d63b5c6f97c47c1b04b180f99bd4981d8a63dce..e2b60632f1db92a16c75de79e5864123dff5fbe5 100644 (file)
@@ -17,9 +17,9 @@
 #include <linux/kthread.h>
 #include <linux/device.h>
 #include "svc_msg.h"
+#include "greybus_desc.h"
 #include "greybus.h"
 
-
 struct ap_msg {
        u8 *data;
        int size;
diff --git a/drivers/staging/greybus/greybus_desc.h b/drivers/staging/greybus/greybus_desc.h
new file mode 100644 (file)
index 0000000..6a3674d
--- /dev/null
@@ -0,0 +1,95 @@
+/*
+ * Greybus device descriptor definition
+ *
+ * Defined in the "Greybus Application Protocol" document.
+ * See that document for any details on these values and structures.
+ *
+ * Copyright 2014 Google Inc.
+ */
+
+#ifndef __GREYBUS_DESC_H
+#define __GREYBUS_DESC_H
+
+struct greybus_decriptor_block_header {
+       __le16  size;
+       u8      version_major;
+       u8      version_minor;
+};
+
+enum greybus_descriptor_type {
+       GREYBUS_TYPE_INVALID            = 0x0000,
+       GREYBUS_TYPE_DEVICE_ID          = 0x0001,
+       GREYBUS_TYPE_SERIAL_NUMBER      = 0x0002,
+       GREYBUS_TYPE_DEVICE_STRING      = 0x0003,
+       GREYBUS_TYPE_CPORT              = 0x0004,
+       GREYBUS_TYPE_FUNCTION           = 0x0005,
+};
+
+struct greybus_descriptor_header {
+       __le16  size;
+       __le16  type;   /* enum greybus_descriptor_type */
+};
+
+
+struct greybus_descriptor_deviceid {
+       __le16  vendor;
+       __le16  product;
+       __le16  version;
+       u8      vendor_stringid;
+       u8      product_stringid;
+};
+
+struct greybus_descriptor_serial_number {
+       __le64  serial_number;
+};
+
+struct greybus_descriptor_string {
+       u8      id;
+       __le16  length;
+       u8      string[0];
+};
+
+struct greybus_descriptor_cport {
+       __le16  number;
+       u8      speed;  // FIXME
+       u8      reserved;
+};
+
+enum greybus_function_class {
+       GREYBUS_FUNCTION_CONTROL        = 0x00,
+       GREYBUS_FUNCTION_USB            = 0x01,
+       GREYBUS_FUNCTION_GPIO           = 0x02,
+       GREYBUS_FUNCTION_SPI            = 0x03,
+       GREYBUS_FUNCTION_UART           = 0x04,
+       GREYBUS_FUNCTION_PWM            = 0x05,
+       GREYBUS_FUNCTION_I2S            = 0x06,
+       GREYBUS_FUNCTION_I2C            = 0x07,
+       GREYBUS_FUNCTION_SDIO           = 0x08,
+       GREYBUS_FUNCTION_HID            = 0x09,
+       GREYBUS_FUNCTION_DISPLAY        = 0x0a,
+       GREYBUS_FUNCTION_CAMERA         = 0x0b,
+       GREYBUS_FUNCTION_SENSOR         = 0x0c,
+       GREYBUS_FUNCTION_VENDOR         = 0xff,
+};
+
+struct greybus_descriptor_function {
+       __le16  number;
+       __le16  cport;
+       u8      function_class;         /* enum greybus_function_class */
+       u8      function_subclass;
+       u8      function_protocol;
+       u8      reserved;
+};
+
+struct greybus_msg_descriptor {
+       struct greybus_descriptor_header        header;
+       union {
+               struct greybus_descriptor_deviceid      device_id;
+               struct greybus_descriptor_serial_number serial_number;
+               struct greybus_descriptor_string        string;
+               struct greybus_descriptor_cport         cport;
+               struct greybus_descriptor_function      function;
+       };
+};
+
+#endif /* __GREYBUS_DESC_H */
index 3f97a5e39c2767df10f8132e08aa3eb0efde8f56..f97b22c0ab6c74e0254781b9be9c22d8bbe17433 100644 (file)
@@ -6,6 +6,10 @@
  *
  * Copyright 2014 Google Inc.
  */
+
+#ifndef __SVC_MSG_H
+#define __SVC_MSG_H
+
 enum svc_function_type {
        SVC_FUNCTION_HANDSHAKE                  = 0x00,
        SVC_FUNCTION_UNIPRO_NETWORK_MANAGEMENT  = 0x01,
@@ -21,7 +25,7 @@ struct svc_msg_header {
        u8      type;           /* enum svc_function_type */
        u8      version_major;
        u8      version_minor;
-       u16     payload_length;
+       __le16  payload_length;
 };
 
 enum svc_function_handshake_type {
@@ -81,7 +85,7 @@ struct svc_function_ddb_get {
 struct svc_function_ddb_response {
        u8      device_id;
        u8      message_id;
-       u16     descriptor_length;
+       __le16  descriptor_length;
        u8      ddb[0];
 };
 
@@ -107,8 +111,8 @@ enum svc_function_battery_status {
 };
 
 struct svc_function_power_battery_status {
-       u16     charge_full;
-       u16     charge_now;
+       __le16  charge_full;
+       __le16  charge_now;
        u8      status; /* enum svc_function_battery_status */
 };
 
@@ -158,5 +162,4 @@ struct svc_msg {
        };
 };
 
-
-
+#endif /* __SVC_MSG_H */