On 06/01/2017 01:36 PM, patrice.chot...@st.com wrote: > From: Patrice Chotard <patrice.chot...@st.com> > > Add reset_count() method to be able to get the number > of resets contained into a resets property. This will allow > to allocate the right amount of memory in order to keep resets > reference. These resets reference can be used later on error path > or in .remove callback to release these resets. > > Signed-off-by: Patrice Chotard <patrice.chot...@st.com> > --- > v5: _ replace fdtdec_parse_phandle_with_args() by > dev_read_phandle_with_args() > v4: _ add reset_count() method > > drivers/reset/reset-uclass.c | 13 +++++++++++++ > include/reset.h | 11 +++++++++++ > 2 files changed, 24 insertions(+) > > diff --git a/drivers/reset/reset-uclass.c b/drivers/reset/reset-uclass.c > index 4fd82b9..4b17d4c 100644 > --- a/drivers/reset/reset-uclass.c > +++ b/drivers/reset/reset-uclass.c > @@ -97,6 +97,19 @@ int reset_get_by_name(struct udevice *dev, const char > *name, > return reset_get_by_index(dev, index, reset_ctl); > } > > +int reset_count(struct udevice *dev) > +{ > + int count; > + struct ofnode_phandle_args args; > + > + for (count = 0; ; count++) { > + if (dev_read_phandle_with_args(dev, > + "resets", "#reset-cells", 0, > + count, &args))
Don't we have some generic thing in libfdt to count number of phandle args ? This looks weird to me ... > + return count; > + } > +} > + > int reset_request(struct reset_ctl *reset_ctl) > { > struct reset_ops *ops = reset_dev_ops(reset_ctl->dev); > diff --git a/include/reset.h b/include/reset.h > index 4f2e35f..e8e68b6 100644 > --- a/include/reset.h > +++ b/include/reset.h > @@ -100,6 +100,17 @@ int reset_get_by_name(struct udevice *dev, const char > *name, > struct reset_ctl *reset_ctl); > > /** > + * reset_count - Get reset count contained in the "resets" property. > + * > + * This returns the count of reset found into the "resets" property. This > + * allows to allocate the right amount of memory to keep reset reference. > + * > + * @dev: The client device. > + * @return number of resets found. > + */ > +int reset_count(struct udevice *dev); > + > +/** > * reset_request - Request a reset signal. > * > * @reset_ctl: A reset control struct. > -- Best regards, Marek Vasut _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot