From mboxrd@z Thu Jan 1 00:00:00 1970 From: Peng Fan Date: Fri, 17 May 2019 05:57:41 +0000 Subject: [U-Boot] [PATCH v4 07/13] dm: clk: Define clk_get_parent() for clk operations In-Reply-To: <20190516221042.3583-8-lukma@denx.de> References: <20190516221042.3583-1-lukma@denx.de> <20190516221042.3583-8-lukma@denx.de> Message-ID: List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de > 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 > > --- > > 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); > + 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 > -- Reviewed-by: Peng Fan > 2.11.0