All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alex Elder <elder@ieee.org>
To: Javi Merino <javi.merino@arm.com>, akpm@linux-foundation.org
Cc: Mike Turquette <mturquette@linaro.org>,
	Stephen Boyd <sboyd@codeaurora.org>,
	intel-gfx@lists.freedesktop.org, emil.l.velikov@gmail.com,
	linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org,
	Alex Elder <elder@linaro.org>,
	jepler@unpythonic.net
Subject: Re: [PATCH v2 2/4] clk: bcm/kona: use DIV_ROUND_CLOSEST_ULL()
Date: Tue, 24 Mar 2015 13:03:27 -0500	[thread overview]
Message-ID: <5511A6EF.8010103@ieee.org> (raw)
In-Reply-To: <1427205825-5444-3-git-send-email-javi.merino@arm.com>

On 03/24/2015 09:03 AM, Javi Merino wrote:
> Now that the kernel provides DIV_ROUND_CLOSEST_ULL(), drop the internal
> implementation and use the kernel one.
> 
> Cc: Mike Turquette <mturquette@linaro.org>
> Cc: Stephen Boyd <sboyd@codeaurora.org>
> Cc: Alex Elder <elder@linaro.org>

Acked-by: Alex Elder <elder@linaro.org>

> Signed-off-by: Javi Merino <javi.merino@arm.com>
> ---
>  drivers/clk/bcm/clk-kona.c | 28 +++++++---------------------
>  drivers/clk/bcm/clk-kona.h |  1 -
>  2 files changed, 7 insertions(+), 22 deletions(-)
> 
> diff --git a/drivers/clk/bcm/clk-kona.c b/drivers/clk/bcm/clk-kona.c
> index 05abae89262e..a0ef4f75d457 100644
> --- a/drivers/clk/bcm/clk-kona.c
> +++ b/drivers/clk/bcm/clk-kona.c
> @@ -15,6 +15,7 @@
>  #include "clk-kona.h"
>  
>  #include <linux/delay.h>
> +#include <linux/kernel.h>
>  
>  /*
>   * "Policies" affect the frequencies of bus clocks provided by a
> @@ -51,21 +52,6 @@ static inline u32 bitfield_replace(u32 reg_val, u32 shift, u32 width, u32 val)
>  
>  /* Divider and scaling helpers */
>  
> -/*
> - * Implement DIV_ROUND_CLOSEST() for 64-bit dividend and both values
> - * unsigned.  Note that unlike do_div(), the remainder is discarded
> - * and the return value is the quotient (not the remainder).
> - */
> -u64 do_div_round_closest(u64 dividend, unsigned long divisor)
> -{
> -	u64 result;
> -
> -	result = dividend + ((u64)divisor >> 1);
> -	(void)do_div(result, divisor);
> -
> -	return result;
> -}
> -
>  /* Convert a divider into the scaled divisor value it represents. */
>  static inline u64 scaled_div_value(struct bcm_clk_div *div, u32 reg_div)
>  {
> @@ -87,7 +73,7 @@ u64 scaled_div_build(struct bcm_clk_div *div, u32 div_value, u32 billionths)
>  	combined = (u64)div_value * BILLION + billionths;
>  	combined <<= div->u.s.frac_width;
>  
> -	return do_div_round_closest(combined, BILLION);
> +	return DIV_ROUND_CLOSEST_ULL(combined, BILLION);
>  }
>  
>  /* The scaled minimum divisor representable by a divider */
> @@ -731,7 +717,7 @@ static unsigned long clk_recalc_rate(struct ccu_data *ccu,
>  		scaled_rate = scale_rate(pre_div, parent_rate);
>  		scaled_rate = scale_rate(div, scaled_rate);
>  		scaled_div = divider_read_scaled(ccu, pre_div);
> -		scaled_parent_rate = do_div_round_closest(scaled_rate,
> +		scaled_parent_rate = DIV_ROUND_CLOSEST_ULL(scaled_rate,
>  							scaled_div);
>  	} else  {
>  		scaled_parent_rate = scale_rate(div, parent_rate);
> @@ -743,7 +729,7 @@ static unsigned long clk_recalc_rate(struct ccu_data *ccu,
>  	 * rate.
>  	 */
>  	scaled_div = divider_read_scaled(ccu, div);
> -	result = do_div_round_closest(scaled_parent_rate, scaled_div);
> +	result = DIV_ROUND_CLOSEST_ULL(scaled_parent_rate, scaled_div);
>  
>  	return (unsigned long)result;
>  }
> @@ -790,7 +776,7 @@ static long round_rate(struct ccu_data *ccu, struct bcm_clk_div *div,
>  		scaled_rate = scale_rate(pre_div, parent_rate);
>  		scaled_rate = scale_rate(div, scaled_rate);
>  		scaled_pre_div = divider_read_scaled(ccu, pre_div);
> -		scaled_parent_rate = do_div_round_closest(scaled_rate,
> +		scaled_parent_rate = DIV_ROUND_CLOSEST_ULL(scaled_rate,
>  							scaled_pre_div);
>  	} else {
>  		scaled_parent_rate = scale_rate(div, parent_rate);
> @@ -802,7 +788,7 @@ static long round_rate(struct ccu_data *ccu, struct bcm_clk_div *div,
>  	 * the best we can do.
>  	 */
>  	if (!divider_is_fixed(div)) {
> -		best_scaled_div = do_div_round_closest(scaled_parent_rate,
> +		best_scaled_div = DIV_ROUND_CLOSEST_ULL(scaled_parent_rate,
>  							rate);
>  		min_scaled_div = scaled_div_min(div);
>  		max_scaled_div = scaled_div_max(div);
> @@ -815,7 +801,7 @@ static long round_rate(struct ccu_data *ccu, struct bcm_clk_div *div,
>  	}
>  
>  	/* OK, figure out the resulting rate */
> -	result = do_div_round_closest(scaled_parent_rate, best_scaled_div);
> +	result = DIV_ROUND_CLOSEST_ULL(scaled_parent_rate, best_scaled_div);
>  
>  	if (scaled_div)
>  		*scaled_div = best_scaled_div;
> diff --git a/drivers/clk/bcm/clk-kona.h b/drivers/clk/bcm/clk-kona.h
> index 2537b3072910..6849a64baf6d 100644
> --- a/drivers/clk/bcm/clk-kona.h
> +++ b/drivers/clk/bcm/clk-kona.h
> @@ -503,7 +503,6 @@ extern struct clk_ops kona_peri_clk_ops;
>  
>  /* Externally visible functions */
>  
> -extern u64 do_div_round_closest(u64 dividend, unsigned long divisor);
>  extern u64 scaled_div_max(struct bcm_clk_div *div);
>  extern u64 scaled_div_build(struct bcm_clk_div *div, u32 div_value,
>  				u32 billionths);
> 

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

WARNING: multiple messages have this Message-ID (diff)
From: Alex Elder <elder@ieee.org>
To: Javi Merino <javi.merino@arm.com>, akpm@linux-foundation.org
Cc: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org,
	linux-kernel@vger.kernel.org, emil.l.velikov@gmail.com,
	jepler@unpythonic.net, daniel@ffwll.ch,
	Mike Turquette <mturquette@linaro.org>,
	Stephen Boyd <sboyd@codeaurora.org>,
	Alex Elder <elder@linaro.org>
Subject: Re: [PATCH v2 2/4] clk: bcm/kona: use DIV_ROUND_CLOSEST_ULL()
Date: Tue, 24 Mar 2015 13:03:27 -0500	[thread overview]
Message-ID: <5511A6EF.8010103@ieee.org> (raw)
In-Reply-To: <1427205825-5444-3-git-send-email-javi.merino@arm.com>

On 03/24/2015 09:03 AM, Javi Merino wrote:
> Now that the kernel provides DIV_ROUND_CLOSEST_ULL(), drop the internal
> implementation and use the kernel one.
> 
> Cc: Mike Turquette <mturquette@linaro.org>
> Cc: Stephen Boyd <sboyd@codeaurora.org>
> Cc: Alex Elder <elder@linaro.org>

Acked-by: Alex Elder <elder@linaro.org>

> Signed-off-by: Javi Merino <javi.merino@arm.com>
> ---
>  drivers/clk/bcm/clk-kona.c | 28 +++++++---------------------
>  drivers/clk/bcm/clk-kona.h |  1 -
>  2 files changed, 7 insertions(+), 22 deletions(-)
> 
> diff --git a/drivers/clk/bcm/clk-kona.c b/drivers/clk/bcm/clk-kona.c
> index 05abae89262e..a0ef4f75d457 100644
> --- a/drivers/clk/bcm/clk-kona.c
> +++ b/drivers/clk/bcm/clk-kona.c
> @@ -15,6 +15,7 @@
>  #include "clk-kona.h"
>  
>  #include <linux/delay.h>
> +#include <linux/kernel.h>
>  
>  /*
>   * "Policies" affect the frequencies of bus clocks provided by a
> @@ -51,21 +52,6 @@ static inline u32 bitfield_replace(u32 reg_val, u32 shift, u32 width, u32 val)
>  
>  /* Divider and scaling helpers */
>  
> -/*
> - * Implement DIV_ROUND_CLOSEST() for 64-bit dividend and both values
> - * unsigned.  Note that unlike do_div(), the remainder is discarded
> - * and the return value is the quotient (not the remainder).
> - */
> -u64 do_div_round_closest(u64 dividend, unsigned long divisor)
> -{
> -	u64 result;
> -
> -	result = dividend + ((u64)divisor >> 1);
> -	(void)do_div(result, divisor);
> -
> -	return result;
> -}
> -
>  /* Convert a divider into the scaled divisor value it represents. */
>  static inline u64 scaled_div_value(struct bcm_clk_div *div, u32 reg_div)
>  {
> @@ -87,7 +73,7 @@ u64 scaled_div_build(struct bcm_clk_div *div, u32 div_value, u32 billionths)
>  	combined = (u64)div_value * BILLION + billionths;
>  	combined <<= div->u.s.frac_width;
>  
> -	return do_div_round_closest(combined, BILLION);
> +	return DIV_ROUND_CLOSEST_ULL(combined, BILLION);
>  }
>  
>  /* The scaled minimum divisor representable by a divider */
> @@ -731,7 +717,7 @@ static unsigned long clk_recalc_rate(struct ccu_data *ccu,
>  		scaled_rate = scale_rate(pre_div, parent_rate);
>  		scaled_rate = scale_rate(div, scaled_rate);
>  		scaled_div = divider_read_scaled(ccu, pre_div);
> -		scaled_parent_rate = do_div_round_closest(scaled_rate,
> +		scaled_parent_rate = DIV_ROUND_CLOSEST_ULL(scaled_rate,
>  							scaled_div);
>  	} else  {
>  		scaled_parent_rate = scale_rate(div, parent_rate);
> @@ -743,7 +729,7 @@ static unsigned long clk_recalc_rate(struct ccu_data *ccu,
>  	 * rate.
>  	 */
>  	scaled_div = divider_read_scaled(ccu, div);
> -	result = do_div_round_closest(scaled_parent_rate, scaled_div);
> +	result = DIV_ROUND_CLOSEST_ULL(scaled_parent_rate, scaled_div);
>  
>  	return (unsigned long)result;
>  }
> @@ -790,7 +776,7 @@ static long round_rate(struct ccu_data *ccu, struct bcm_clk_div *div,
>  		scaled_rate = scale_rate(pre_div, parent_rate);
>  		scaled_rate = scale_rate(div, scaled_rate);
>  		scaled_pre_div = divider_read_scaled(ccu, pre_div);
> -		scaled_parent_rate = do_div_round_closest(scaled_rate,
> +		scaled_parent_rate = DIV_ROUND_CLOSEST_ULL(scaled_rate,
>  							scaled_pre_div);
>  	} else {
>  		scaled_parent_rate = scale_rate(div, parent_rate);
> @@ -802,7 +788,7 @@ static long round_rate(struct ccu_data *ccu, struct bcm_clk_div *div,
>  	 * the best we can do.
>  	 */
>  	if (!divider_is_fixed(div)) {
> -		best_scaled_div = do_div_round_closest(scaled_parent_rate,
> +		best_scaled_div = DIV_ROUND_CLOSEST_ULL(scaled_parent_rate,
>  							rate);
>  		min_scaled_div = scaled_div_min(div);
>  		max_scaled_div = scaled_div_max(div);
> @@ -815,7 +801,7 @@ static long round_rate(struct ccu_data *ccu, struct bcm_clk_div *div,
>  	}
>  
>  	/* OK, figure out the resulting rate */
> -	result = do_div_round_closest(scaled_parent_rate, best_scaled_div);
> +	result = DIV_ROUND_CLOSEST_ULL(scaled_parent_rate, best_scaled_div);
>  
>  	if (scaled_div)
>  		*scaled_div = best_scaled_div;
> diff --git a/drivers/clk/bcm/clk-kona.h b/drivers/clk/bcm/clk-kona.h
> index 2537b3072910..6849a64baf6d 100644
> --- a/drivers/clk/bcm/clk-kona.h
> +++ b/drivers/clk/bcm/clk-kona.h
> @@ -503,7 +503,6 @@ extern struct clk_ops kona_peri_clk_ops;
>  
>  /* Externally visible functions */
>  
> -extern u64 do_div_round_closest(u64 dividend, unsigned long divisor);
>  extern u64 scaled_div_max(struct bcm_clk_div *div);
>  extern u64 scaled_div_build(struct bcm_clk_div *div, u32 div_value,
>  				u32 billionths);
> 


  reply	other threads:[~2015-03-24 18:03 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-03-24 14:03 [PATCH v2 0/4] Consolidate DIV_ROUND_CLOSEST_ULL() Javi Merino
2015-03-24 14:03 ` Javi Merino
2015-03-24 14:03 ` [PATCH v2 1/4] kernel.h: Implement DIV_ROUND_CLOSEST_ULL Javi Merino
2015-03-24 14:03   ` Javi Merino
2015-03-24 14:29   ` Jeff Epler
2015-03-24 14:03 ` [PATCH v2 2/4] clk: bcm/kona: use DIV_ROUND_CLOSEST_ULL() Javi Merino
2015-03-24 14:03   ` Javi Merino
2015-03-24 18:03   ` Alex Elder [this message]
2015-03-24 18:03     ` Alex Elder
2015-03-24 14:03 ` [PATCH v2 3/4] cpuidle: menu: " Javi Merino
2015-03-24 14:03   ` Javi Merino
2015-03-24 20:22   ` Rafael J. Wysocki
2015-03-25 11:40   ` Rafael J. Wysocki
2015-03-24 14:03 ` [PATCH v2 4/4] media: cxd2820r: " Javi Merino
2015-03-24 14:03   ` Javi Merino

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5511A6EF.8010103@ieee.org \
    --to=elder@ieee.org \
    --cc=akpm@linux-foundation.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=elder@linaro.org \
    --cc=emil.l.velikov@gmail.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=javi.merino@arm.com \
    --cc=jepler@unpythonic.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mturquette@linaro.org \
    --cc=sboyd@codeaurora.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.