linux-gpio.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Maxime Ripard <maxime.ripard@free-electrons.com>
To: Vishnu Patekar <vishnupatekar0510@gmail.com>
Cc: robh+dt@kernel.org, corbet@lwn.net, pawel.moll@arm.com,
	mark.rutland@arm.com, ijc+devicetree@hellion.org.uk,
	galak@codeaurora.org, linux@arm.linux.org.uk,
	emilio@elopez.com.ar, jenskuske@gmail.com, hdegoede@redhat.com,
	wens@csie.org, devicetree@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org, linux-sunxi@googlegroups.com,
	linux-gpio@vger.kernel.org, linus.walleij@linaro.org,
	mturquette@baylibre.com, sboyd@codeaurora.org,
	patchesrdh@mveas.com, linux-clk@vger.kernel.org
Subject: Re: [PATCH v4 02/13] clk: sunxi: add ahb1 clock for A83T
Date: Thu, 17 Mar 2016 11:40:42 +0100	[thread overview]
Message-ID: <20160317104042.GK30977@lukather> (raw)
In-Reply-To: <1458144276-31108-3-git-send-email-vishnupatekar0510@gmail.com>

[-- Attachment #1: Type: text/plain, Size: 3619 bytes --]

On Thu, Mar 17, 2016 at 12:04:25AM +0800, Vishnu Patekar wrote:
> AHB1 on A83T is similar to ahb1 on A31, except parents are different.
> clock index 0b1x is PLL6.
> 
> Signed-off-by: Vishnu Patekar <vishnupatekar0510@gmail.com>
> Acked-by: Chen-Yu Tsai <wens@csie.org>
> Acked-by: Rob Herring <robh@kernel.org>
> ---
>  Documentation/devicetree/bindings/clock/sunxi.txt |  1 +
>  drivers/clk/sunxi/clk-sunxi.c                     | 76 +++++++++++++++++++++++
>  2 files changed, 77 insertions(+)
> 
> diff --git a/Documentation/devicetree/bindings/clock/sunxi.txt b/Documentation/devicetree/bindings/clock/sunxi.txt
> index 834436f..cba9fe55 100644
> --- a/Documentation/devicetree/bindings/clock/sunxi.txt
> +++ b/Documentation/devicetree/bindings/clock/sunxi.txt
> @@ -30,6 +30,7 @@ Required properties:
>  	"allwinner,sun6i-a31-ar100-clk" - for the AR100 on A31
>  	"allwinner,sun9i-a80-cpus-clk" - for the CPUS on A80
>  	"allwinner,sun6i-a31-ahb1-clk" - for the AHB1 clock on A31
> +	"allwinner,sun8i-a83t-ahb1-clk" - for the AHB1 clock on A83T
>  	"allwinner,sun8i-h3-ahb2-clk" - for the AHB2 clock on H3
>  	"allwinner,sun6i-a31-ahb1-gates-clk" - for the AHB1 gates on A31
>  	"allwinner,sun8i-a23-ahb1-gates-clk" - for the AHB1 gates on A23
> diff --git a/drivers/clk/sunxi/clk-sunxi.c b/drivers/clk/sunxi/clk-sunxi.c
> index 91de0a0..a7aab65 100644
> --- a/drivers/clk/sunxi/clk-sunxi.c
> +++ b/drivers/clk/sunxi/clk-sunxi.c
> @@ -344,6 +344,67 @@ static void sun6i_ahb1_recalc(struct factors_request *req)
>  	req->rate >>= req->p;
>  }
>  
> +#define SUN8I_A83T_AHB1_PARENT_PLL6	2
> +/**
> + * sun8i_a83t_get_ahb_factors() - calculates m, p factors for AHB
> + * AHB rate is calculated as follows
> + * rate = parent_rate >> p
> + *
> + * if parent is pll6, then
> + * parent_rate = pll6 rate / (m + 1)
> + */
> +
> +static void sun8i_a83t_get_ahb1_factors(struct factors_request *req)
> +{
> +	u8 div, calcp, calcm = 1;
> +
> +	/*
> +	 * clock can only divide, so we will never be able to achieve
> +	 * frequencies higher than the parent frequency
> +	 */
> +	if (req->parent_rate && req->rate > req->parent_rate)
> +		req->rate = req->parent_rate;
> +
> +	div = DIV_ROUND_UP(req->parent_rate, req->rate);
> +
> +	/* calculate pre-divider if parent is pll6 */
> +	if (req->parent_index >= SUN8I_A83T_AHB1_PARENT_PLL6) {
> +		if (div < 4)
> +			calcp = 0;
> +		else if (div / 2 < 4)
> +			calcp = 1;
> +		else if (div / 4 < 4)
> +			calcp = 2;
> +		else
> +			calcp = 3;
> +
> +		calcm = DIV_ROUND_UP(div, 1 << calcp);
> +	} else {
> +		calcp = __roundup_pow_of_two(div);
> +		calcp = calcp > 3 ? 3 : calcp;
> +	}
> +
> +	req->rate = (req->parent_rate / calcm) >> calcp;
> +	req->p = calcp;
> +	req->m = calcm - 1;
> +}
> +
> +/**
> +* sun8i_a83t_ahb1_recalc() - calculates AHB clock rate from m, p factors and
> +*			 parent index
> +*/
> +static void sun8i_a83t_ahb1_recalc(struct factors_request *req)
> +{
> +	req->rate = req->parent_rate;
> +
> +/* apply pre-divider first if parent is pll6 */

The comment indentation is wrong

> +	if (req->parent_index >= SUN6I_AHB1_PARENT_PLL6)

And this is not the right define you're using.

I still believe that duplicating the same logic just because of
different dividers is not the way to go.

You could solve that easily by adding a table for the muxes, and
associate it with parents and dividers, that you could store in
clk_factors.

Maxime

-- 
Maxime Ripard, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

  reply	other threads:[~2016-03-17 10:40 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-03-16 16:04 [PATCH v4 00/13] Add A83T clk, r_pio, mmc rsb support Vishnu Patekar
     [not found] ` <1458144276-31108-1-git-send-email-vishnupatekar0510-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2016-03-16 16:04   ` [PATCH v4 01/13] pinctrl: sunxi: Add A83T R_PIO controller Vishnu Patekar
2016-03-17 14:51     ` Linus Walleij
2016-03-17 15:34       ` Vishnu Patekar
     [not found]         ` <CAEzqOZugVOGarjy9NjDOhwJeU6P26Ch2aX13Tec2N0z2Gb9g7A-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-03-22 13:12           ` Linus Walleij
     [not found]             ` <CACRpkda1gYciHz79ZaFsQmZdq8PwxtoR2LwCO3LteCGbNQE=gA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-03-22 13:16               ` Linus Walleij
2016-03-16 16:04   ` [PATCH v4 02/13] clk: sunxi: add ahb1 clock for A83T Vishnu Patekar
2016-03-17 10:40     ` Maxime Ripard [this message]
2016-04-04  3:07       ` Vishnu Patekar
     [not found]         ` <CAEzqOZvoMrvf-3=Tfi7MK9ZTm1EtJre5gsBdz=2wZ+D+hj056A-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-04-14 17:28           ` Maxime Ripard
2016-04-16 15:59             ` Vishnu Patekar
2016-03-16 16:04   ` [PATCH v4 03/13] clk: sunxi: Add APB1 " Vishnu Patekar
2016-03-17 10:41     ` Maxime Ripard
2016-03-16 16:04   ` [PATCH v4 04/13] ARM: dts: sun8i-a83t: Add basic clocks and resets Vishnu Patekar
2016-03-16 16:04   ` [PATCH v4 05/13] ARM: dts: sun8i-a83t: add mmc clock nodes Vishnu Patekar
2016-03-16 16:04   ` [PATCH v4 06/13] ARM: dts: sun8i-a83t: Add mmc controller nodes Vishnu Patekar
2016-03-16 16:04   ` [PATCH v4 07/13] ARM: dts: sun8i-a83t: Add PRCM related clocks and resets Vishnu Patekar
2016-03-16 16:04   ` [PATCH v4 08/13] ARM: dts: sun8i-a83t: Add R_PIO controller node to the dtsi Vishnu Patekar
2016-03-16 16:04   ` [PATCH v4 09/13] ARM: dts: sun8i-a83t: Add RSB controller device node to dtsi Vishnu Patekar
2016-03-16 16:04   ` [PATCH v4 10/13] ARM: dts: sun8i-a83t: add mmc0 CD pin Vishnu Patekar
2016-03-16 16:04   ` [PATCH v4 11/13] ARM: dts: sun8i: enable mmc for H8Homlet Board Vishnu Patekar
2016-03-16 16:04   ` [PATCH v4 12/13] ARM: dts: sun8i: Add A83T based Sinovoip Bpi-M3 Board Vishnu Patekar
2016-03-16 16:04   ` [PATCH v4 13/13] ARM: sunxi: Add Kconfig for sunxi clocks Vishnu Patekar
     [not found]     ` <1458144276-31108-14-git-send-email-vishnupatekar0510-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2016-03-16 17:20       ` Priit Laes

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=20160317104042.GK30977@lukather \
    --to=maxime.ripard@free-electrons.com \
    --cc=corbet@lwn.net \
    --cc=devicetree@vger.kernel.org \
    --cc=emilio@elopez.com.ar \
    --cc=galak@codeaurora.org \
    --cc=hdegoede@redhat.com \
    --cc=ijc+devicetree@hellion.org.uk \
    --cc=jenskuske@gmail.com \
    --cc=linus.walleij@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-clk@vger.kernel.org \
    --cc=linux-gpio@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-sunxi@googlegroups.com \
    --cc=linux@arm.linux.org.uk \
    --cc=mark.rutland@arm.com \
    --cc=mturquette@baylibre.com \
    --cc=patchesrdh@mveas.com \
    --cc=pawel.moll@arm.com \
    --cc=robh+dt@kernel.org \
    --cc=sboyd@codeaurora.org \
    --cc=vishnupatekar0510@gmail.com \
    --cc=wens@csie.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 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).