> Subject: Re: [U-Boot] [PATCH v4 07/13] dm: clk: Define clk_get_parent() for > clk operations > > > > > -----Original Message----- > > From: Lukasz Majewski [mailto:lu...@denx.de] > > Sent: 2019年5月17日 6:11 > > To: Stefano Babic <sba...@denx.de>; Fabio Estevam > > <feste...@gmail.com>; Marek Vasut <ma...@denx.de>; Simon Glass > > <s...@chromium.org>; Tom Rini <tr...@konsulko.com>; > > u-boot@lists.denx.de; Jagan Teki <ja...@amarulasolutions.com>; Peng > > Fan <peng....@nxp.com>; Marcel Ziswiler > <marcel.ziswi...@toradex.com>; > > Adam Ford <aford...@gmail.com> > > Cc: Lukasz Majewski <lu...@denx.de>; Neil Armstrong > > <narmstr...@baylibre.com>; Philipp Tomsich > > <philipp.toms...@theobroma-systems.com>; Andreas Dannenberg > > <dannenb...@ti.com>; Fabrice Gasnier <fabrice.gasn...@st.com>; Liviu > > Dudau <liviu.du...@foss.arm.com> > > Subject: [PATCH v4 07/13] dm: clk: Define clk_get_parent() for clk > > operations > > > > This commit adds the clk_get_parent() function, which is responsible > > for getting the parent's struct clock pointer. > > > > U-boot's DM support for getting parent is different (the parent > > relationship is in udevice) than the one in common clock framework > > (CCF) in Linux. To obtain the pointer to struct clk of parent the > > pdev->driver_data field is read. > > > > Signed-off-by: Lukasz Majewski <lu...@denx.de> > > > > --- > > > > Changes in v4: None > > Changes in v3: > > - New patch > > > > drivers/clk/clk-uclass.c | 15 +++++++++++++++ > > include/clk.h | 9 +++++++++ > > 2 files changed, 24 insertions(+) > > > > diff --git a/drivers/clk/clk-uclass.c b/drivers/clk/clk-uclass.c index > > 79b3b0494c..1a726dafaa 100644 > > --- a/drivers/clk/clk-uclass.c > > +++ b/drivers/clk/clk-uclass.c > > @@ -379,6 +379,21 @@ ulong clk_get_rate(struct clk *clk) > > return ops->get_rate(clk); > > } > > > > +struct clk *clk_get_parent(struct clk *clk) { > > + struct udevice *pdev; > > + struct clk *pclk; > > + > > + debug("%s(clk=%p)\n", __func__, clk); > > + > > + pdev = dev_get_parent(clk->dev); > > + pclk = (struct clk *)dev_get_driver_data(pdev); > > This has a trick is that force driver_data to struct clk *, and this requires > all clk > wrappers needs take clk as the first element in the wrapper structure. > So better add a comment here. Then it is fine to me, and
Sorry, drop my upper comments. The code is correct. So Reviewed-by: Peng Fan <peng....@nxp.com> > > Reviewed-by: Peng Fan <peng....@nxp.com> > > > + if (!pclk) > > + return ERR_PTR(-ENODEV); > > + > > + return pclk; > > +} > > + > > ulong clk_set_rate(struct clk *clk, ulong rate) { > > const struct clk_ops *ops = clk_dev_ops(clk->dev); diff --git > > a/include/clk.h b/include/clk.h index 89dc64bfaf..0873b1e507 100644 > > --- a/include/clk.h > > +++ b/include/clk.h > > @@ -259,6 +259,15 @@ int clk_free(struct clk *clk); ulong > > clk_get_rate(struct clk *clk); > > > > /** > > + * clk_get_parent() - Get current clock's parent. > > + * > > + * @clk: A clock struct that was previously successfully requested by > > + * clk_request/get_by_*(). > > + * @return pointer to parent's struct clk, or error code passed as > > +pointer */ struct clk *clk_get_parent(struct clk *clk); > > + > > +/** > > * clk_set_rate() - Set current clock rate. > > * > > * @clk: A clock struct that was previously successfully requested by > > -- > > 2.11.0 > > _______________________________________________ > U-Boot mailing list > U-Boot@lists.denx.de > https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.d > enx.de%2Flistinfo%2Fu-boot&data=02%7C01%7CPeng.Fan%40nxp.com > %7C9d8b9fb6d116473a8af508d6da8b1d64%7C686ea1d3bc2b4c6fa92cd99c5 > c301635%7C0%7C0%7C636936688386713361&sdata=68OR%2Fa6jjixt2 > h5bs0darbR4%2B5Yz88JD51RfjSCfK3Q%3D&reserved=0 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot