> Subject: [PATCH v3 08/11] dm: clk: Define clk_get_by_id() for clk operations > > This commit adds the clk_get_by_id() function, which is responsible for > getting > the udevice with matching clk->id. Such approach allows re-usage of inherit > DM list relationship for the same class (UCLASS_CLK). > As a result - we don't need any other external list - it is just enough to > look for > UCLASS_CLK related udevices. > > Signed-off-by: Lukasz Majewski <lu...@denx.de> > > --- > > Changes in v3: > - Replace -ENODEV with -ENOENT > - Use **clkp instead of **c > > drivers/clk/clk-uclass.c | 22 ++++++++++++++++++++++ > include/clk.h | 11 +++++++++++ > 2 files changed, 33 insertions(+) > > diff --git a/drivers/clk/clk-uclass.c b/drivers/clk/clk-uclass.c index > da6624d4f2..85dae5321a 100644 > --- a/drivers/clk/clk-uclass.c > +++ b/drivers/clk/clk-uclass.c > @@ -451,6 +451,28 @@ int clk_disable_bulk(struct clk_bulk *bulk) > return 0; > } > > +int clk_get_by_id(ulong id, struct clk **clkp) { > + struct udevice *dev; > + struct uclass *uc; > + int ret; > + > + ret = uclass_get(UCLASS_CLK, &uc); > + if (ret) > + return ret; > + > + uclass_foreach_dev(dev, uc) { > + struct clk *clk = (struct clk *)dev_get_driver_data(dev); > + > + if (clk && clk->id == id) { > + *clkp = clk; > + return 0; > + } > + } > + > + return -ENOENT; > +} > + > UCLASS_DRIVER(clk) = { > .id = UCLASS_CLK, > .name = "clk", > diff --git a/include/clk.h b/include/clk.h index 98c3e12fb4..a4ecca9fbc > 100644 > --- a/include/clk.h > +++ b/include/clk.h > @@ -326,4 +326,15 @@ static inline bool clk_valid(struct clk *clk) { > return !!clk->dev; > } > + > +/** > + * clk_get_by_id() - Get the clock by its ID > + * > + * @id: The clock ID to search for > + * > + * @clkp: A pointer to clock struct that has been found among added > clocks > + * to UCLASS_CLK > + * @return zero on success, or -ENOENT on error */ int > +clk_get_by_id(ulong id, struct clk **clkp);
Reviewed-by: Peng Fan <peng....@nxp.com> > #endif > -- > 2.11.0 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot