public inbox for linux-arm-kernel@lists.infradead.org
 help / color / mirror / Atom feed
From: maxime.ripard@free-electrons.com (Maxime Ripard)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2 12/20] clk: sunxi: Add A23 APB0 support to sun6i-a31-apb0-clk
Date: Wed, 18 Jun 2014 12:26:23 +0200	[thread overview]
Message-ID: <20140618102623.GQ19730@lukather> (raw)
In-Reply-To: <1403016777-15121-13-git-send-email-wens@csie.org>

On Tue, Jun 17, 2014 at 10:52:49PM +0800, Chen-Yu Tsai wrote:
> The A23 has an almost identical PRCM clock tree. The difference in
> the APB0 clock is the smallest divisor is 1, instead of 2.
> 
> This patch extends the sun6i-a31-apb0-clk driver to take divider
> tables associated to compatibles, and adds a compatible for the A23
> variant.
> 
> Signed-off-by: Chen-Yu Tsai <wens@csie.org>
> ---
>  Documentation/devicetree/bindings/clock/sunxi.txt |  1 +
>  drivers/clk/sunxi/clk-sun6i-apb0.c                | 28 ++++++++++++++++++-----
>  2 files changed, 23 insertions(+), 6 deletions(-)
> 
> diff --git a/Documentation/devicetree/bindings/clock/sunxi.txt b/Documentation/devicetree/bindings/clock/sunxi.txt
> index af9e47d..e3a47ec 100644
> --- a/Documentation/devicetree/bindings/clock/sunxi.txt
> +++ b/Documentation/devicetree/bindings/clock/sunxi.txt
> @@ -28,6 +28,7 @@ Required properties:
>  	"allwinner,sun8i-a23-ahb1-gates-clk" - for the AHB1 gates on A23
>  	"allwinner,sun4i-a10-apb0-clk" - for the APB0 clock
>  	"allwinner,sun6i-a31-apb0-clk" - for the APB0 clock on A31
> +	"allwinner,sun8i-a23-apb0-clk" - for the APB0 clock on A23
>  	"allwinner,sun4i-a10-apb0-gates-clk" - for the APB0 gates on A10
>  	"allwinner,sun5i-a13-apb0-gates-clk" - for the APB0 gates on A13
>  	"allwinner,sun5i-a10s-apb0-gates-clk" - for the APB0 gates on A10s
> diff --git a/drivers/clk/sunxi/clk-sun6i-apb0.c b/drivers/clk/sunxi/clk-sun6i-apb0.c
> index 11f17c3..2197ac7 100644
> --- a/drivers/clk/sunxi/clk-sun6i-apb0.c
> +++ b/drivers/clk/sunxi/clk-sun6i-apb0.c
> @@ -11,6 +11,7 @@
>  #include <linux/clk-provider.h>
>  #include <linux/module.h>
>  #include <linux/of.h>
> +#include <linux/of_device.h>
>  #include <linux/platform_device.h>
>  
>  /*
> @@ -28,6 +29,21 @@ static const struct clk_div_table sun6i_a31_apb0_divs[] = {
>  	{ /* sentinel */ },
>  };
>  
> +/* The A23 APB0 clock has a standard power of 2 divisor */

Why not just pass CLK_DIVIDER_POWER_OF_TWO then, instead of a table?

> +static const struct clk_div_table sun8i_a23_apb0_divs[] = {
> +	{ .val = 0, .div = 1, },
> +	{ .val = 1, .div = 2, },
> +	{ .val = 2, .div = 4, },
> +	{ .val = 3, .div = 8, },
> +	{ /* sentinel */ },
> +};
> +
> +const struct of_device_id sun6i_a31_apb0_clk_dt_ids[] = {
> +	{ .compatible = "allwinner,sun6i-a31-apb0-clk", .data = &sun6i_a31_apb0_divs },
> +	{ .compatible = "allwinner,sun8i-a23-apb0-clk", .data = &sun8i_a23_apb0_divs },
> +	{ /* sentinel */ }
> +};
> +
>  static int sun6i_a31_apb0_clk_probe(struct platform_device *pdev)
>  {
>  	struct device_node *np = pdev->dev.of_node;
> @@ -36,12 +52,17 @@ static int sun6i_a31_apb0_clk_probe(struct platform_device *pdev)
>  	struct resource *r;
>  	void __iomem *reg;
>  	struct clk *clk;
> +	const struct of_device_id *device;
>  
>  	r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
>  	reg = devm_ioremap_resource(&pdev->dev, r);
>  	if (IS_ERR(reg))
>  		return PTR_ERR(reg);
>  
> +	device = of_match_device(sun6i_a31_apb0_clk_dt_ids, &pdev->dev);
> +	if (!device)
> +		return -EINVAL;
> +
>  	clk_parent = of_clk_get_parent_name(np, 0);
>  	if (!clk_parent)
>  		return -EINVAL;
> @@ -49,7 +70,7 @@ static int sun6i_a31_apb0_clk_probe(struct platform_device *pdev)
>  	of_property_read_string(np, "clock-output-names", &clk_name);
>  
>  	clk = clk_register_divider_table(&pdev->dev, clk_name, clk_parent,
> -					 0, reg, 0, 2, 0, sun6i_a31_apb0_divs,
> +					 0, reg, 0, 2, 0, device->data,

I'm not sure that it will actually work for the A31, since it does
define some dividers anyway, and the divider table is !NULL, even
though there's actually no dividers defined.

Maxime

-- 
Maxime Ripard, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20140618/7a467527/attachment.sig>

  reply	other threads:[~2014-06-18 10:26 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-06-17 14:52 [PATCH v2 00/20] ARM: sunxi: Introduce Allwinner A23 (sun8i) support Chen-Yu Tsai
2014-06-17 14:52 ` [PATCH v2 01/20] serial: 8250_dw: Add optional reset control support Chen-Yu Tsai
2014-06-18  9:08   ` Maxime Ripard
2014-06-17 14:52 ` [PATCH v2 02/20] clk: sunxi: register clock gates with clkdev Chen-Yu Tsai
2014-06-17 14:52 ` [PATCH v2 03/20] clk: sunxi: move "ahb_sdram" to protected clock list Chen-Yu Tsai
2014-06-18  9:10   ` Maxime Ripard
2014-06-17 14:52 ` [PATCH v2 04/20] clk: sunxi: Fix gate indexing for sun6i-a31-apb0-gates Chen-Yu Tsai
2014-06-18  9:38   ` Maxime Ripard
2014-06-17 14:52 ` [PATCH v2 05/20] clk: sunxi: Support factor clocks with N multiplier factor starting from 1 Chen-Yu Tsai
2014-06-17 21:23   ` Rob Herring
2014-06-18  9:42   ` Maxime Ripard
2014-06-17 14:52 ` [PATCH v2 06/20] clk: sunxi: Fix rate_recalc for sun6i PLL1 Chen-Yu Tsai
2014-06-17 14:52 ` [PATCH v2 07/20] clk: sunxi: Fix PLL6 calculation on sun6i Chen-Yu Tsai
2014-06-17 14:52 ` [PATCH v2 08/20] ARM: sun6i: DT: Rename PLL6 to PLL6x2 and add fixed-factor-clock for PLL6 Chen-Yu Tsai
2014-06-18  9:57   ` Maxime Ripard
2014-06-17 14:52 ` [PATCH v2 09/20] clk: sunxi: Add sun6i MBUS clock support Chen-Yu Tsai
2014-06-18 10:04   ` Maxime Ripard
2014-06-23  4:44     ` Chen-Yu Tsai
2014-06-17 14:52 ` [PATCH v2 10/20] clk: sunxi: Add support for table-based divider clocks Chen-Yu Tsai
2014-06-18 10:06   ` Maxime Ripard
2014-06-17 14:52 ` [PATCH v2 11/20] clk: sunxi: Add A23 clocks support Chen-Yu Tsai
2014-06-18 10:16   ` Maxime Ripard
2014-06-19  4:07     ` Chen-Yu Tsai
2014-06-17 14:52 ` [PATCH v2 12/20] clk: sunxi: Add A23 APB0 support to sun6i-a31-apb0-clk Chen-Yu Tsai
2014-06-18 10:26   ` Maxime Ripard [this message]
2014-06-19  4:33     ` Chen-Yu Tsai
2014-06-19  9:28       ` Maxime Ripard
2014-06-20  6:13         ` [linux-sunxi] " Chen-Yu Tsai
2014-06-25 16:41           ` maxime.ripard
2014-06-17 14:52 ` [PATCH v2 13/20] clk: sunxi: Add A23 specific compatible to sun6i-a31-apb0-gates-clk Chen-Yu Tsai
2014-06-18 10:17   ` Maxime Ripard
2014-06-17 14:52 ` [PATCH v2 14/20] pinctrl: sunxi: Add A23 PIO controller support Chen-Yu Tsai
2014-07-07 13:00   ` Linus Walleij
2014-06-17 14:52 ` [PATCH v2 15/20] pinctrl: sunxi: Add A23 R_PIO " Chen-Yu Tsai
2014-07-07 13:17   ` Linus Walleij
2014-06-17 14:52 ` [PATCH v2 16/20] mfd: sun6i-prcm: Add support for Allwinner A23 PRCM Chen-Yu Tsai
2014-06-18  8:29   ` Lee Jones
2014-06-18 12:24     ` Maxime Ripard
2014-06-20  7:38       ` Chen-Yu Tsai
2014-06-17 14:52 ` [PATCH v2 17/20] ARM: sunxi: Introduce Allwinner A23 support Chen-Yu Tsai
2014-06-18 12:26   ` Maxime Ripard
2014-06-20  5:56     ` [linux-sunxi] " Chen-Yu Tsai
2014-06-20  5:59       ` Fwd: " Chen-Yu Tsai
2014-06-17 14:52 ` [PATCH v2 18/20] ARM: sunxi: Add earlyprintk support using R_UART (sun6i/sun8i) Chen-Yu Tsai
2014-06-18 12:29   ` Maxime Ripard
2014-06-17 14:52 ` [PATCH v2 19/20] ARM: sunxi: Add Allwinner A23 dtsi Chen-Yu Tsai
2014-06-17 14:52 ` [PATCH v2 20/20] ARM: sun8i: dt: Add Ippo-q8h v5 support Chen-Yu Tsai

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=20140618102623.GQ19730@lukather \
    --to=maxime.ripard@free-electrons.com \
    --cc=linux-arm-kernel@lists.infradead.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