From 80ebe8a63134f4418765d6ae9ddcba7427094da8 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Sun, 31 Aug 2014 18:08:52 -0700 Subject: [PATCH] greybus: greybus_desc.h created --- drivers/staging/greybus/ap.c | 2 +- drivers/staging/greybus/greybus_desc.h | 95 ++++++++++++++++++++++++++ drivers/staging/greybus/svc_msg.h | 15 ++-- 3 files changed, 105 insertions(+), 7 deletions(-) create mode 100644 drivers/staging/greybus/greybus_desc.h diff --git a/drivers/staging/greybus/ap.c b/drivers/staging/greybus/ap.c index 2d63b5c6f97c..e2b60632f1db 100644 --- a/drivers/staging/greybus/ap.c +++ b/drivers/staging/greybus/ap.c @@ -17,9 +17,9 @@ #include #include #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 index 000000000000..6a3674dcc5d7 --- /dev/null +++ b/drivers/staging/greybus/greybus_desc.h @@ -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 */ diff --git a/drivers/staging/greybus/svc_msg.h b/drivers/staging/greybus/svc_msg.h index 3f97a5e39c27..f97b22c0ab6c 100644 --- a/drivers/staging/greybus/svc_msg.h +++ b/drivers/staging/greybus/svc_msg.h @@ -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 */ -- 2.39.5