linux-clk.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 1/3] clk: intel: Use devm_clk_hw_register() instead of clk_hw_register()
@ 2020-07-16  6:30 Rahul Tanwar
  2020-07-16  6:30 ` [PATCH v2 2/3] clk: intel: Improve locking in the driver Rahul Tanwar
                   ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: Rahul Tanwar @ 2020-07-16  6:30 UTC (permalink / raw)
  To: sboyd, mturquette, linux-clk
  Cc: linux-kernel, andriy.shevchenko, qi-ming.wu, yixin.zhu,
	cheol.yong.kim, rahul.tanwar.linux, Rahul Tanwar

To ensure that clks are unregistered in case of any failure, use
devm_clk_hw_register() instead of clk_hw_register().

Signed-off-by: Rahul Tanwar <rahul.tanwar@linux.intel.com>
---
 drivers/clk/x86/clk-cgu-pll.c | 2 +-
 drivers/clk/x86/clk-cgu.c     | 8 ++++----
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/drivers/clk/x86/clk-cgu-pll.c b/drivers/clk/x86/clk-cgu-pll.c
index c03cc6b85b9f..3179557b5f78 100644
--- a/drivers/clk/x86/clk-cgu-pll.c
+++ b/drivers/clk/x86/clk-cgu-pll.c
@@ -128,7 +128,7 @@ lgm_clk_register_pll(struct lgm_clk_provider *ctx,
 	pll->hw.init = &init;
 
 	hw = &pll->hw;
-	ret = clk_hw_register(dev, hw);
+	ret = devm_clk_hw_register(dev, hw);
 	if (ret)
 		return ERR_PTR(ret);
 
diff --git a/drivers/clk/x86/clk-cgu.c b/drivers/clk/x86/clk-cgu.c
index 56af0e04ec1e..88ebeb53b109 100644
--- a/drivers/clk/x86/clk-cgu.c
+++ b/drivers/clk/x86/clk-cgu.c
@@ -119,7 +119,7 @@ lgm_clk_register_mux(struct lgm_clk_provider *ctx,
 	mux->hw.init = &init;
 
 	hw = &mux->hw;
-	ret = clk_hw_register(dev, hw);
+	ret = devm_clk_hw_register(dev, hw);
 	if (ret)
 		return ERR_PTR(ret);
 
@@ -247,7 +247,7 @@ lgm_clk_register_divider(struct lgm_clk_provider *ctx,
 	div->hw.init = &init;
 
 	hw = &div->hw;
-	ret = clk_hw_register(dev, hw);
+	ret = devm_clk_hw_register(dev, hw);
 	if (ret)
 		return ERR_PTR(ret);
 
@@ -361,7 +361,7 @@ lgm_clk_register_gate(struct lgm_clk_provider *ctx,
 	gate->hw.init = &init;
 
 	hw = &gate->hw;
-	ret = clk_hw_register(dev, hw);
+	ret = devm_clk_hw_register(dev, hw);
 	if (ret)
 		return ERR_PTR(ret);
 
@@ -624,7 +624,7 @@ int lgm_clk_register_ddiv(struct lgm_clk_provider *ctx,
 		ddiv->hw.init = &init;
 
 		hw = &ddiv->hw;
-		ret = clk_hw_register(dev, hw);
+		ret = devm_clk_hw_register(dev, hw);
 		if (ret) {
 			dev_err(dev, "register clk: %s failed!\n", list->name);
 			return ret;
-- 
2.11.0


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH v2 2/3] clk: intel: Improve locking in the driver
  2020-07-16  6:30 [PATCH v2 1/3] clk: intel: Use devm_clk_hw_register() instead of clk_hw_register() Rahul Tanwar
@ 2020-07-16  6:30 ` Rahul Tanwar
  2020-07-24  8:57   ` Stephen Boyd
  2020-07-16  6:30 ` [PATCH v2 3/3] clk: intel: Avoid unnecessary memset by improving code Rahul Tanwar
  2020-07-24  8:57 ` [PATCH v2 1/3] clk: intel: Use devm_clk_hw_register() instead of clk_hw_register() Stephen Boyd
  2 siblings, 1 reply; 7+ messages in thread
From: Rahul Tanwar @ 2020-07-16  6:30 UTC (permalink / raw)
  To: sboyd, mturquette, linux-clk
  Cc: linux-kernel, andriy.shevchenko, qi-ming.wu, yixin.zhu,
	cheol.yong.kim, rahul.tanwar.linux, Rahul Tanwar

Remove/reduce unnecessary spin locking of the code.

Signed-off-by: Rahul Tanwar <rahul.tanwar@linux.intel.com>
---
 drivers/clk/x86/clk-cgu.c | 17 +++++------------
 1 file changed, 5 insertions(+), 12 deletions(-)

diff --git a/drivers/clk/x86/clk-cgu.c b/drivers/clk/x86/clk-cgu.c
index 88ebeb53b109..c379fedfb9f2 100644
--- a/drivers/clk/x86/clk-cgu.c
+++ b/drivers/clk/x86/clk-cgu.c
@@ -420,18 +420,14 @@ lgm_clk_ddiv_recalc_rate(struct clk_hw *hw, unsigned long parent_rate)
 {
 	struct lgm_clk_ddiv *ddiv = to_lgm_clk_ddiv(hw);
 	unsigned int div0, div1, exdiv;
-	unsigned long flags;
 	u64 prate;
 
-	spin_lock_irqsave(&ddiv->lock, flags);
 	div0 = lgm_get_clk_val(ddiv->membase, ddiv->reg,
 			       ddiv->shift0, ddiv->width0) + 1;
 	div1 = lgm_get_clk_val(ddiv->membase, ddiv->reg,
 			       ddiv->shift1, ddiv->width1) + 1;
 	exdiv = lgm_get_clk_val(ddiv->membase, ddiv->reg,
 				ddiv->shift2, ddiv->width2);
-	spin_unlock_irqrestore(&ddiv->lock, flags);
-
 	prate = (u64)parent_rate;
 	do_div(prate, div0);
 	do_div(prate, div1);
@@ -548,24 +544,21 @@ lgm_clk_ddiv_round_rate(struct clk_hw *hw, unsigned long rate,
 		div = div * 2;
 		div = DIV_ROUND_CLOSEST_ULL((u64)div, 5);
 	}
+	spin_unlock_irqrestore(&ddiv->lock, flags);
 
-	if (div <= 0) {
-		spin_unlock_irqrestore(&ddiv->lock, flags);
+	if (div <= 0)
 		return *prate;
-	}
 
-	if (lgm_clk_get_ddiv_val(div, &ddiv1, &ddiv2) != 0) {
-		if (lgm_clk_get_ddiv_val(div + 1, &ddiv1, &ddiv2) != 0) {
-			spin_unlock_irqrestore(&ddiv->lock, flags);
+	if (lgm_clk_get_ddiv_val(div, &ddiv1, &ddiv2) != 0)
+		if (lgm_clk_get_ddiv_val(div + 1, &ddiv1, &ddiv2) != 0)
 			return -EINVAL;
-		}
-	}
 
 	rate64 = *prate;
 	do_div(rate64, ddiv1);
 	do_div(rate64, ddiv2);
 
 	/* if predivide bit is enabled, modify rounded rate by factor of 2.5 */
+	spin_lock_irqsave(&ddiv->lock, flags);
 	if (lgm_get_clk_val(ddiv->membase, ddiv->reg, ddiv->shift2, 1)) {
 		rate64 = rate64 * 2;
 		rate64 = DIV_ROUND_CLOSEST_ULL(rate64, 5);
-- 
2.11.0


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH v2 3/3] clk: intel: Avoid unnecessary memset by improving code
  2020-07-16  6:30 [PATCH v2 1/3] clk: intel: Use devm_clk_hw_register() instead of clk_hw_register() Rahul Tanwar
  2020-07-16  6:30 ` [PATCH v2 2/3] clk: intel: Improve locking in the driver Rahul Tanwar
@ 2020-07-16  6:30 ` Rahul Tanwar
  2020-07-24  8:56   ` Stephen Boyd
  2020-07-24  8:58   ` Stephen Boyd
  2020-07-24  8:57 ` [PATCH v2 1/3] clk: intel: Use devm_clk_hw_register() instead of clk_hw_register() Stephen Boyd
  2 siblings, 2 replies; 7+ messages in thread
From: Rahul Tanwar @ 2020-07-16  6:30 UTC (permalink / raw)
  To: sboyd, mturquette, linux-clk
  Cc: linux-kernel, andriy.shevchenko, qi-ming.wu, yixin.zhu,
	cheol.yong.kim, rahul.tanwar.linux, Rahul Tanwar

memset can be avoided in a loop if the variables used are declared
inside the loop. Move such variables declaration inside the loop
to avoid memset.

Signed-off-by: Rahul Tanwar <rahul.tanwar@linux.intel.com>
---
 drivers/clk/x86/clk-cgu.c | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/drivers/clk/x86/clk-cgu.c b/drivers/clk/x86/clk-cgu.c
index c379fedfb9f2..9a1be7035fd0 100644
--- a/drivers/clk/x86/clk-cgu.c
+++ b/drivers/clk/x86/clk-cgu.c
@@ -581,19 +581,18 @@ int lgm_clk_register_ddiv(struct lgm_clk_provider *ctx,
 			  unsigned int nr_clk)
 {
 	struct device *dev = ctx->dev;
-	struct clk_init_data init = {};
-	struct lgm_clk_ddiv *ddiv;
 	struct clk_hw *hw;
 	unsigned int idx;
 	int ret;
 
 	for (idx = 0; idx < nr_clk; idx++, list++) {
-		ddiv = NULL;
+		struct clk_init_data init = {};
+		struct lgm_clk_ddiv *ddiv = NULL;
+
 		ddiv = devm_kzalloc(dev, sizeof(*ddiv), GFP_KERNEL);
 		if (!ddiv)
 			return -ENOMEM;
 
-		memset(&init, 0, sizeof(init));
 		init.name = list->name;
 		init.ops = &lgm_clk_ddiv_ops;
 		init.flags = list->flags;
-- 
2.11.0


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH v2 3/3] clk: intel: Avoid unnecessary memset by improving code
  2020-07-16  6:30 ` [PATCH v2 3/3] clk: intel: Avoid unnecessary memset by improving code Rahul Tanwar
@ 2020-07-24  8:56   ` Stephen Boyd
  2020-07-24  8:58   ` Stephen Boyd
  1 sibling, 0 replies; 7+ messages in thread
From: Stephen Boyd @ 2020-07-24  8:56 UTC (permalink / raw)
  To: Rahul Tanwar, linux-clk, mturquette
  Cc: linux-kernel, andriy.shevchenko, qi-ming.wu, yixin.zhu,
	cheol.yong.kim, rahul.tanwar.linux, Rahul Tanwar

Quoting Rahul Tanwar (2020-07-15 23:30:32)
> memset can be avoided in a loop if the variables used are declared
> inside the loop. Move such variables declaration inside the loop
> to avoid memset.
> 
> Signed-off-by: Rahul Tanwar <rahul.tanwar@linux.intel.com>
> ---
>  drivers/clk/x86/clk-cgu.c | 7 +++----
>  1 file changed, 3 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/clk/x86/clk-cgu.c b/drivers/clk/x86/clk-cgu.c
> index c379fedfb9f2..9a1be7035fd0 100644
> --- a/drivers/clk/x86/clk-cgu.c
> +++ b/drivers/clk/x86/clk-cgu.c
> @@ -581,19 +581,18 @@ int lgm_clk_register_ddiv(struct lgm_clk_provider *ctx,
>                           unsigned int nr_clk)
>  {
>         struct device *dev = ctx->dev;
> -       struct clk_init_data init = {};
> -       struct lgm_clk_ddiv *ddiv;
>         struct clk_hw *hw;
>         unsigned int idx;
>         int ret;
>  
>         for (idx = 0; idx < nr_clk; idx++, list++) {
> -               ddiv = NULL;
> +               struct clk_init_data init = {};
> +               struct lgm_clk_ddiv *ddiv = NULL;

Assigning to NULL isn't necessary...

> +
>                 ddiv = devm_kzalloc(dev, sizeof(*ddiv), GFP_KERNEL);

because it's assigned right here. I'll just fix it.

>                 if (!ddiv)
>                         return -ENOMEM;
>  
> -               memset(&init, 0, sizeof(init));
>                 init.name = list->name;
>                 init.ops = &lgm_clk_ddiv_ops;
>                 init.flags = list->flags;

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v2 1/3] clk: intel: Use devm_clk_hw_register() instead of clk_hw_register()
  2020-07-16  6:30 [PATCH v2 1/3] clk: intel: Use devm_clk_hw_register() instead of clk_hw_register() Rahul Tanwar
  2020-07-16  6:30 ` [PATCH v2 2/3] clk: intel: Improve locking in the driver Rahul Tanwar
  2020-07-16  6:30 ` [PATCH v2 3/3] clk: intel: Avoid unnecessary memset by improving code Rahul Tanwar
@ 2020-07-24  8:57 ` Stephen Boyd
  2 siblings, 0 replies; 7+ messages in thread
From: Stephen Boyd @ 2020-07-24  8:57 UTC (permalink / raw)
  To: Rahul Tanwar, linux-clk, mturquette
  Cc: linux-kernel, andriy.shevchenko, qi-ming.wu, yixin.zhu,
	cheol.yong.kim, rahul.tanwar.linux, Rahul Tanwar

Quoting Rahul Tanwar (2020-07-15 23:30:30)
> To ensure that clks are unregistered in case of any failure, use
> devm_clk_hw_register() instead of clk_hw_register().
> 
> Signed-off-by: Rahul Tanwar <rahul.tanwar@linux.intel.com>
> ---

Applied to clk-next

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v2 2/3] clk: intel: Improve locking in the driver
  2020-07-16  6:30 ` [PATCH v2 2/3] clk: intel: Improve locking in the driver Rahul Tanwar
@ 2020-07-24  8:57   ` Stephen Boyd
  0 siblings, 0 replies; 7+ messages in thread
From: Stephen Boyd @ 2020-07-24  8:57 UTC (permalink / raw)
  To: Rahul Tanwar, linux-clk, mturquette
  Cc: linux-kernel, andriy.shevchenko, qi-ming.wu, yixin.zhu,
	cheol.yong.kim, rahul.tanwar.linux, Rahul Tanwar

Quoting Rahul Tanwar (2020-07-15 23:30:31)
> Remove/reduce unnecessary spin locking of the code.
> 
> Signed-off-by: Rahul Tanwar <rahul.tanwar@linux.intel.com>
> ---

Applied to clk-next

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v2 3/3] clk: intel: Avoid unnecessary memset by improving code
  2020-07-16  6:30 ` [PATCH v2 3/3] clk: intel: Avoid unnecessary memset by improving code Rahul Tanwar
  2020-07-24  8:56   ` Stephen Boyd
@ 2020-07-24  8:58   ` Stephen Boyd
  1 sibling, 0 replies; 7+ messages in thread
From: Stephen Boyd @ 2020-07-24  8:58 UTC (permalink / raw)
  To: Rahul Tanwar, linux-clk, mturquette
  Cc: linux-kernel, andriy.shevchenko, qi-ming.wu, yixin.zhu,
	cheol.yong.kim, rahul.tanwar.linux, Rahul Tanwar

Quoting Rahul Tanwar (2020-07-15 23:30:32)
> memset can be avoided in a loop if the variables used are declared
> inside the loop. Move such variables declaration inside the loop
> to avoid memset.
> 
> Signed-off-by: Rahul Tanwar <rahul.tanwar@linux.intel.com>
> ---

Applied to clk-next

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2020-07-24  8:58 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-07-16  6:30 [PATCH v2 1/3] clk: intel: Use devm_clk_hw_register() instead of clk_hw_register() Rahul Tanwar
2020-07-16  6:30 ` [PATCH v2 2/3] clk: intel: Improve locking in the driver Rahul Tanwar
2020-07-24  8:57   ` Stephen Boyd
2020-07-16  6:30 ` [PATCH v2 3/3] clk: intel: Avoid unnecessary memset by improving code Rahul Tanwar
2020-07-24  8:56   ` Stephen Boyd
2020-07-24  8:58   ` Stephen Boyd
2020-07-24  8:57 ` [PATCH v2 1/3] clk: intel: Use devm_clk_hw_register() instead of clk_hw_register() Stephen Boyd

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).