diff options
author | Viresh Kumar <viresh.kumar@linaro.org> | 2015-04-01 20:31:59 +0530 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@google.com> | 2015-04-05 18:12:04 +0200 |
commit | 83a0cb593b5517a13f88c8f9ae9ce7e43af4b54b (patch) | |
tree | a890db2eb5eb736b62ca68ce4ff903519b72be62 | |
parent | c9d9d0d443afab6c4c1ce295c283f0caab56db16 (diff) | |
download | op-kernel-dev-83a0cb593b5517a13f88c8f9ae9ce7e43af4b54b.zip op-kernel-dev-83a0cb593b5517a13f88c8f9ae9ce7e43af4b54b.tar.gz |
greybus: Add bundle descriptor type
A bundle corresponds to a device and a greybus driver binds to it. This patch
adds a type and descriptor for bundle.
This also shuffles the values of 'enum greybus_descriptor_type' to align
them with Greybus Specifications.
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
-rw-r--r-- | drivers/staging/greybus/greybus_manifest.h | 30 | ||||
-rw-r--r-- | drivers/staging/greybus/manifest.c | 2 |
2 files changed, 30 insertions, 2 deletions
diff --git a/drivers/staging/greybus/greybus_manifest.h b/drivers/staging/greybus/greybus_manifest.h index 9ab1c82..96702f4 100644 --- a/drivers/staging/greybus/greybus_manifest.h +++ b/drivers/staging/greybus/greybus_manifest.h @@ -17,11 +17,12 @@ enum greybus_descriptor_type { GREYBUS_TYPE_INVALID = 0x00, - GREYBUS_TYPE_MODULE = 0x01, + GREYBUS_TYPE_INTERFACE = 0x01, GREYBUS_TYPE_STRING = 0x02, - GREYBUS_TYPE_INTERFACE = 0x03, + GREYBUS_TYPE_BUNDLE = 0x03, GREYBUS_TYPE_CPORT = 0x04, GREYBUS_TYPE_CLASS = 0x05, + GREYBUS_TYPE_MODULE = 0x06, }; enum greybus_protocol { @@ -109,6 +110,30 @@ struct greybus_descriptor_interface { }; /* + * An bundle descriptor defines an identification number and a class type for + * each bundle. + * + * @id: Uniquely identifies a bundle within a interface, its sole purpose is to + * allow CPort descriptors to specify which bundle they are associated with. + * The first bundle will have id 0, second will have 1 and so on. + * + * The largest CPort id associated with an bundle (defined by a + * CPort descriptor in the manifest) is used to determine how to + * encode the device id and module number in UniPro packets + * that use the bundle. + * + * @class_type: It is used by kernel to know the functionality provided by the + * bundle and will be matched against drivers functinality while probing greybus + * driver. It should contain one of the values defined in + * 'enum greybus_class_type'. + * + */ +struct greybus_descriptor_bundle { + __u8 id; /* interface-relative id (0..) */ + __u8 class_type; +}; + +/* * A CPort descriptor indicates the id of the bundle within the * module it's associated with, along with the CPort id used to * address the CPort. The protocol id defines the format of messages @@ -139,6 +164,7 @@ struct greybus_descriptor { struct greybus_descriptor_module module; struct greybus_descriptor_string string; struct greybus_descriptor_interface interface; + struct greybus_descriptor_bundle bundle; struct greybus_descriptor_cport cport; struct greybus_descriptor_class class; }; diff --git a/drivers/staging/greybus/manifest.c b/drivers/staging/greybus/manifest.c index c29a0c8..c00e378 100644 --- a/drivers/staging/greybus/manifest.c +++ b/drivers/staging/greybus/manifest.c @@ -26,6 +26,8 @@ static const char *get_descriptor_type_string(u8 type) return "interface"; case GREYBUS_TYPE_CPORT: return "cport"; + case GREYBUS_TYPE_BUNDLE: + return "bundle"; case GREYBUS_TYPE_CLASS: return "class"; default: |