/* SPDX-License-Identifier: GPL-2.0 */ /* * Greybus manifest definition * * See "Greybus Application Protocol" document (version 0.1) for * details on these values and structures. * * Copyright 2014-2015 Google Inc. * Copyright 2014-2015 Linaro Ltd. * * Released under the GPLv2 and BSD licenses. */ #ifndef __GREYBUS_MANIFEST_H #define __GREYBUS_MANIFEST_H #include <linux/bits.h> #include <linux/types.h> enum greybus_descriptor_type { … }; enum greybus_protocol { … }; enum greybus_class_type { … }; enum { … }; /* * The string in a string descriptor is not NUL-terminated. The * size of the descriptor will be rounded up to a multiple of 4 * bytes, by padding the string with 0x00 bytes if necessary. */ struct greybus_descriptor_string { … } __packed; /* * An interface descriptor describes information about an interface as a whole, * *not* the functions within it. */ struct greybus_descriptor_interface { … } __packed; /* * An bundle descriptor defines an identification number and a class 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: 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 { … } __packed; /* * 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 * exchanged using the CPort. */ struct greybus_descriptor_cport { … } __packed; struct greybus_descriptor_header { … } __packed; struct greybus_descriptor { … } __packed; struct greybus_manifest_header { … } __packed; struct greybus_manifest { … } __packed; #endif /* __GREYBUS_MANIFEST_H */