On Wed, 31 Aug 2016, Loic Pallardy wrote: > Remoteproc needs to know if a resource table has spare resource > allowing resoure table extension. > This function parse resource table to detect spare resource. > If any, it returns available spare bytes and index of spare resource. > > Signed-off-by: Loic Pallardy <loic.pallardy@xxxxxx> > --- > drivers/remoteproc/remoteproc_core.c | 29 +++++++++++++++++++++++++++++ > 1 file changed, 29 insertions(+) > > diff --git a/drivers/remoteproc/remoteproc_core.c b/drivers/remoteproc/remoteproc_core.c > index ffb56c0..30e9c70 100644 > --- a/drivers/remoteproc/remoteproc_core.c > +++ b/drivers/remoteproc/remoteproc_core.c > @@ -951,6 +951,35 @@ int rproc_request_resource(struct rproc *rproc, u32 type, u32 action, void *reso > } > EXPORT_SYMBOL(rproc_request_resource); > > +static int __get_rsc_tbl_spare_size(struct rproc *rproc, size_t? > + struct resource_table *table_ptr, int len, > + int *spare_index) > +{ > + struct device *dev = &rproc->dev; > + int i; > + > + for (i = 0; i < table_ptr->num; i++) { > + int offset = table_ptr->offset[i]; > + struct fw_rsc_hdr *hdr = (void *)table_ptr + offset; > + struct fw_rsc_spare *spare = (void *)hdr + sizeof(*hdr); > + > + dev_dbg(dev, "rsc: type %d\n", hdr->type); This doesn't need to be in upstream code. > + if (hdr->type >= RSC_LAST) { > + dev_warn(dev, "unsupported resource %d\n", hdr->type); > + continue; > + } If we're only interested in RSC_SPARE, I think we can omit this check. No need to police the resource table everywhere. > + if (hdr->type != RSC_SPARE) > + continue; > + > + *spare_index = i; > + return spare->len; > + } > + > + return 0; > +} > + > static int __verify_rsc_tbl_entry(struct rproc *rproc, > struct rproc_request_resource *request, > struct resource_table *table, int size) -- Lee Jones Linaro STMicroelectronics Landing Team Lead Linaro.org │ Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog -- To unsubscribe from this list: send the line "unsubscribe linux-remoteproc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html