From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
Cc: mturquette@linaro.org, linux-kernel@vger.kernel.org,
sboyd@codeaurora.org, linux-sh@vger.kernel.org, vksavl@gmail.com,
robh+dt@kernel.org, pawel.moll@arm.com,
ijc+devicetree@hellion.org.uk, galak@codeaurora.org,
devicetree@vger.kernel.org
Subject: Re: [PATCH v2] clk-rcar-gen2: RCAN clock support
Date: Mon, 05 Jan 2015 08:53:02 +0000 [thread overview]
Message-ID: <1550804.XpyQtHjy2T@avalon> (raw)
In-Reply-To: <3007073.i0ghnTEhxV@wasted.cogentembedded.com>
Hi Sergei,
Thank you for the patch.
On Thursday 25 December 2014 01:17:29 Sergei Shtylyov wrote:
> Add the RCAN clock support to the R-Car generation 2 CPG driver. This clock
> gets derived from the USB_EXTAL clock, dividing it by 6. The layout of
> the RCANCKCR register is similar to those of the clocks supported by the
> 'clk-div6' driver but has no divider field, and so can't be supported by
> that driver...
>
> Signed-off-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
>
> ---
> The patch is against the 'clk-next' branch of Mike Turquette's 'linux.git'
> repo.
>
> Changes in version 2:
> - switched to using the composite clock driver with the fixed factor and
> gated clock component drivers;
> - removed *static* from 'parent_name' definition, switching from assignment
> to initializer;
> - modified the binding document;
> - modified the changelog.
>
> Documentation/devicetree/bindings/clock/renesas,rcar-gen2-cpg-clocks.txt |
> 5 -
> drivers/clk/shmobile/clk-rcar-gen2.c | 40 ++++++++++
Could you please also add a #define for the RCAN clock in include/dt-
bindings/clock/r8a779*-clock.h ? Same comment for the ADSP clock in "[PATCH]
clk-rcar-gen2: ADSP clock support".
> 2 files changed, 43 insertions(+), 2 deletions(-)
>
> Index:
> linux/Documentation/devicetree/bindings/clock/renesas,rcar-gen2-cpg-clocks.
> txt ================================== ---
> linux.orig/Documentation/devicetree/bindings/clock/renesas,rcar-gen2-cpg-cl
> ocks.txt +++
> linux/Documentation/devicetree/bindings/clock/renesas,rcar-gen2-cpg-clocks.
> txt @@ -16,7 +16,7 @@ Required Properties:
> - clocks: Reference to the parent clock
> - #clock-cells: Must be 1
> - clock-output-names: The names of the clocks. Supported clocks are
> "main",
> - "pll0", "pll1", "pll3", "lb", "qspi", "sdh", "sd0", "sd1" and
> "z"
> + "pll0", "pll1", "pll3", "lb", "qspi", "sdh", "sd0", "sd1", "z",
> and "rcan"
>
>
> Example
> @@ -29,5 +29,6 @@ Example
> clocks = <&extal_clk>;
> #clock-cells = <1>;
> clock-output-names = "main", "pll0, "pll1", "pll3",
> - "lb", "qspi", "sdh", "sd0", "sd1", "z";
> + "lb", "qspi", "sdh", "sd0", "sd1", "z",
> + "rcan";
> };
> Index: linux/drivers/clk/shmobile/clk-rcar-gen2.c
> =================================> --- linux.orig/drivers/clk/shmobile/clk-rcar-gen2.c
> +++ linux/drivers/clk/shmobile/clk-rcar-gen2.c
> @@ -33,6 +33,7 @@ struct rcar_gen2_cpg {
> #define CPG_FRQCRC 0x000000e0
> #define CPG_FRQCRC_ZFC_MASK (0x1f << 8)
> #define CPG_FRQCRC_ZFC_SHIFT 8
> +#define CPG_RCANCKCR 0x00000270
>
> /*
> ---------------------------------------------------------------------------
> -- * Z Clock
> @@ -161,6 +162,43 @@ static struct clk * __init cpg_z_clk_reg
> return clk;
> }
>
> +static struct clk * __init cpg_rcan_clk_register(struct rcar_gen2_cpg *cpg,
> + struct device_node *np)
> +{
> + const char *parent_name = of_clk_get_parent_name(np, 1);
> + struct clk_fixed_factor *fixed;
> + struct clk_gate *gate;
> + struct clk *clk;
> +
> + fixed = kzalloc(sizeof(*fixed), GFP_KERNEL);
> + if (!fixed)
> + return ERR_PTR(-ENOMEM);
> +
> + fixed->mult = 1;
> + fixed->div = 6;
> +
> + gate = kzalloc(sizeof(*gate), GFP_KERNEL);
> + if (!gate) {
> + kfree(fixed);
> + return ERR_PTR(-ENOMEM);
> + }
> +
> + gate->reg = cpg->reg + CPG_RCANCKCR;
> + gate->bit_idx = 8;
> + gate->flags = CLK_GATE_SET_TO_DISABLE;
> + gate->lock = &cpg->lock;
> +
> + clk = clk_register_composite(NULL, "rcan", &parent_name, 1, NULL, NULL,
> + &fixed->hw, &clk_fixed_factor_ops,
> + &gate->hw, &clk_gate_ops, 0);
> + if (IS_ERR(clk)) {
> + kfree(gate);
> + kfree(fixed);
> + }
> +
> + return clk;
> +}
> +
> /*
> ---------------------------------------------------------------------------
> -- * CPG Clock Data
> */
> @@ -263,6 +301,8 @@ rcar_gen2_cpg_register_clock(struct devi
> shift = 0;
> } else if (!strcmp(name, "z")) {
> return cpg_z_clk_register(cpg);
> + } else if (!strcmp(name, "rcan")) {
> + return cpg_rcan_clk_register(cpg, np);
> } else {
> return ERR_PTR(-EINVAL);
> }
--
Regards,
Laurent Pinchart
WARNING: multiple messages have this Message-ID (diff)
From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
Cc: mturquette@linaro.org, linux-kernel@vger.kernel.org,
sboyd@codeaurora.org, linux-sh@vger.kernel.org, vksavl@gmail.com,
robh+dt@kernel.org, pawel.moll@arm.com,
ijc+devicetree@hellion.org.uk, galak@codeaurora.org,
devicetree@vger.kernel.org
Subject: Re: [PATCH v2] clk-rcar-gen2: RCAN clock support
Date: Mon, 05 Jan 2015 10:53:02 +0200 [thread overview]
Message-ID: <1550804.XpyQtHjy2T@avalon> (raw)
In-Reply-To: <3007073.i0ghnTEhxV@wasted.cogentembedded.com>
Hi Sergei,
Thank you for the patch.
On Thursday 25 December 2014 01:17:29 Sergei Shtylyov wrote:
> Add the RCAN clock support to the R-Car generation 2 CPG driver. This clock
> gets derived from the USB_EXTAL clock, dividing it by 6. The layout of
> the RCANCKCR register is similar to those of the clocks supported by the
> 'clk-div6' driver but has no divider field, and so can't be supported by
> that driver...
>
> Signed-off-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
>
> ---
> The patch is against the 'clk-next' branch of Mike Turquette's 'linux.git'
> repo.
>
> Changes in version 2:
> - switched to using the composite clock driver with the fixed factor and
> gated clock component drivers;
> - removed *static* from 'parent_name' definition, switching from assignment
> to initializer;
> - modified the binding document;
> - modified the changelog.
>
> Documentation/devicetree/bindings/clock/renesas,rcar-gen2-cpg-clocks.txt |
> 5 -
> drivers/clk/shmobile/clk-rcar-gen2.c | 40 ++++++++++
Could you please also add a #define for the RCAN clock in include/dt-
bindings/clock/r8a779*-clock.h ? Same comment for the ADSP clock in "[PATCH]
clk-rcar-gen2: ADSP clock support".
> 2 files changed, 43 insertions(+), 2 deletions(-)
>
> Index:
> linux/Documentation/devicetree/bindings/clock/renesas,rcar-gen2-cpg-clocks.
> txt =================================================================== ---
> linux.orig/Documentation/devicetree/bindings/clock/renesas,rcar-gen2-cpg-cl
> ocks.txt +++
> linux/Documentation/devicetree/bindings/clock/renesas,rcar-gen2-cpg-clocks.
> txt @@ -16,7 +16,7 @@ Required Properties:
> - clocks: Reference to the parent clock
> - #clock-cells: Must be 1
> - clock-output-names: The names of the clocks. Supported clocks are
> "main",
> - "pll0", "pll1", "pll3", "lb", "qspi", "sdh", "sd0", "sd1" and
> "z"
> + "pll0", "pll1", "pll3", "lb", "qspi", "sdh", "sd0", "sd1", "z",
> and "rcan"
>
>
> Example
> @@ -29,5 +29,6 @@ Example
> clocks = <&extal_clk>;
> #clock-cells = <1>;
> clock-output-names = "main", "pll0, "pll1", "pll3",
> - "lb", "qspi", "sdh", "sd0", "sd1", "z";
> + "lb", "qspi", "sdh", "sd0", "sd1", "z",
> + "rcan";
> };
> Index: linux/drivers/clk/shmobile/clk-rcar-gen2.c
> ===================================================================
> --- linux.orig/drivers/clk/shmobile/clk-rcar-gen2.c
> +++ linux/drivers/clk/shmobile/clk-rcar-gen2.c
> @@ -33,6 +33,7 @@ struct rcar_gen2_cpg {
> #define CPG_FRQCRC 0x000000e0
> #define CPG_FRQCRC_ZFC_MASK (0x1f << 8)
> #define CPG_FRQCRC_ZFC_SHIFT 8
> +#define CPG_RCANCKCR 0x00000270
>
> /*
> ---------------------------------------------------------------------------
> -- * Z Clock
> @@ -161,6 +162,43 @@ static struct clk * __init cpg_z_clk_reg
> return clk;
> }
>
> +static struct clk * __init cpg_rcan_clk_register(struct rcar_gen2_cpg *cpg,
> + struct device_node *np)
> +{
> + const char *parent_name = of_clk_get_parent_name(np, 1);
> + struct clk_fixed_factor *fixed;
> + struct clk_gate *gate;
> + struct clk *clk;
> +
> + fixed = kzalloc(sizeof(*fixed), GFP_KERNEL);
> + if (!fixed)
> + return ERR_PTR(-ENOMEM);
> +
> + fixed->mult = 1;
> + fixed->div = 6;
> +
> + gate = kzalloc(sizeof(*gate), GFP_KERNEL);
> + if (!gate) {
> + kfree(fixed);
> + return ERR_PTR(-ENOMEM);
> + }
> +
> + gate->reg = cpg->reg + CPG_RCANCKCR;
> + gate->bit_idx = 8;
> + gate->flags = CLK_GATE_SET_TO_DISABLE;
> + gate->lock = &cpg->lock;
> +
> + clk = clk_register_composite(NULL, "rcan", &parent_name, 1, NULL, NULL,
> + &fixed->hw, &clk_fixed_factor_ops,
> + &gate->hw, &clk_gate_ops, 0);
> + if (IS_ERR(clk)) {
> + kfree(gate);
> + kfree(fixed);
> + }
> +
> + return clk;
> +}
> +
> /*
> ---------------------------------------------------------------------------
> -- * CPG Clock Data
> */
> @@ -263,6 +301,8 @@ rcar_gen2_cpg_register_clock(struct devi
> shift = 0;
> } else if (!strcmp(name, "z")) {
> return cpg_z_clk_register(cpg);
> + } else if (!strcmp(name, "rcan")) {
> + return cpg_rcan_clk_register(cpg, np);
> } else {
> return ERR_PTR(-EINVAL);
> }
--
Regards,
Laurent Pinchart
next prev parent reply other threads:[~2015-01-05 8:53 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-12-24 22:17 [PATCH v2] clk-rcar-gen2: RCAN clock support Sergei Shtylyov
2014-12-24 22:17 ` Sergei Shtylyov
2015-01-05 8:53 ` Laurent Pinchart [this message]
2015-01-05 8:53 ` Laurent Pinchart
2015-01-05 8:58 ` Laurent Pinchart
2015-01-05 8:58 ` Laurent Pinchart
2015-01-05 13:23 ` Geert Uytterhoeven
2015-01-05 13:23 ` Geert Uytterhoeven
2015-01-05 13:33 ` Geert Uytterhoeven
2015-01-05 13:33 ` Geert Uytterhoeven
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=1550804.XpyQtHjy2T@avalon \
--to=laurent.pinchart@ideasonboard.com \
--cc=devicetree@vger.kernel.org \
--cc=galak@codeaurora.org \
--cc=ijc+devicetree@hellion.org.uk \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-sh@vger.kernel.org \
--cc=mturquette@linaro.org \
--cc=pawel.moll@arm.com \
--cc=robh+dt@kernel.org \
--cc=sboyd@codeaurora.org \
--cc=sergei.shtylyov@cogentembedded.com \
--cc=vksavl@gmail.com \
/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.