On Mon, Sep 17, 2018 at 6:40 PM Geert Uytterhoeven <geert+renesas@xxxxxxxxx> wrote: > In some SoCs multiple hardware blocks may share a reset control. > The existing reset control API for shared resets will only assert such a > reset when the drivers for all hardware blocks agree. > The existing exclusive reset control API still allows to assert such a > reset, but that impacts all other hardware blocks sharing the reset. > > Sometimes a driver needs to reset a specific hardware block, and be 100% > sure it has no impact on other hardware blocks. This is e.g. the case > for virtualization with device pass-through, where the host wants to > reset any exported device before and after exporting it for use by the > guest, for isolation. > > Hence a new flag for dedicated resets is added to the internal methods, > with a new public reset_control_get_dedicated() method, to obtain an > exclusive handle to a reset that is dedicated to one specific hardware > block. > > This supports both DT-based and lookup-based reset controls. > > Signed-off-by: Geert Uytterhoeven <geert+renesas@xxxxxxxxx> > --- > v4: > - New. > > Notes: > - Dedicated lookup-based reset controls were not tested, And untested code is buggy... > --- a/drivers/reset/core.c > +++ b/drivers/reset/core.c > @@ -541,9 +575,25 @@ __reset_controller_by_name(const char *name) > return NULL; > } > > +static bool __reset_is_dedicated(const struct reset_control_lookup *lookup) > +{ > + const struct reset_control_lookup *lookup2; > + > + list_for_each_entry(lookup, &reset_lookup_list, list) { ... as the list_for_each() should use "lookup2" instead of "lookup" (warning reported by kbuild robot). > + if (lookup2 == lookup) > + continue; > + > + if (lookup2->provider == lookup->provider && > + lookup2->index == lookup->index) > + return false; > + } > + > + return true; > +} Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds