On Sat, Mar 16, 2024 at 12:19:04AM +0530, Ayush Singh wrote: > Add data structures for parsing mikroBUS manifests, which are based on > greybus manifest. > > Signed-off-by: Ayush Singh <ayushdevel1325@xxxxxxxxx> > --- > include/linux/greybus/greybus_manifest.h | 49 ++++++++++++++++++++++++ > 1 file changed, 49 insertions(+) > > diff --git a/include/linux/greybus/greybus_manifest.h b/include/linux/greybus/greybus_manifest.h > index bef9eb2093e9..83241e19d9b3 100644 > --- a/include/linux/greybus/greybus_manifest.h > +++ b/include/linux/greybus/greybus_manifest.h > @@ -23,6 +23,9 @@ enum greybus_descriptor_type { > GREYBUS_TYPE_STRING = 0x02, > GREYBUS_TYPE_BUNDLE = 0x03, > GREYBUS_TYPE_CPORT = 0x04, > + GREYBUS_TYPE_MIKROBUS = 0x05, > + GREYBUS_TYPE_PROPERTY = 0x06, > + GREYBUS_TYPE_DEVICE = 0x07, These need approval in the spec before we can add them here. And you are adding 3 different things here, not just one. Shouldn't this be 3 patches? > }; > > enum greybus_protocol { > @@ -151,6 +154,49 @@ struct greybus_descriptor_cport { > __u8 protocol_id; /* enum greybus_protocol */ > } __packed; > > +/* > + * A mikrobus descriptor is used to describe the details > + * about the bus ocnfiguration for the add-on board > + * connected to the mikrobus port. > + */ > +struct greybus_descriptor_mikrobus { > + __u8 pin_state[12]; > +} __packed; > + > +/* > + * A property descriptor is used to pass named properties > + * to device drivers through the unified device properties > + * interface under linux/property.h > + */ > +struct greybus_descriptor_property { > + __u8 length; > + __u8 id; > + __u8 propname_stringid; > + __u8 type; > + __u8 value[]; Don't we have a "counted-by" marking that we can use to show how big value[] here is? > +} __packed; > + > +/* > + * A device descriptor is used to describe the > + * details required by a add-on board device > + * driver. > + */ > +struct greybus_descriptor_device { > + __u8 id; > + __u8 driver_stringid; > + __u8 protocol; > + __u8 reg; > + __le32 max_speed_hz; > + __u8 irq; > + __u8 irq_type; > + __u8 mode; > + __u8 prop_link; > + __u8 gpio_link; > + __u8 reg_link; > + __u8 clock_link; > + __u8 pad[1]; Why the padding? And this looks like a greybus thing, not a mikrobus thing, right? Some description of exactly what this is and what it does would be good. thanks, greg k-h