From: Scott Wood <scottwood@freescale.com>
To: tang yuantian <Yuantian.Tang@freescale.com>
Cc: linuxppc-dev@lists.ozlabs.org, mturquette@linaro.org
Subject: Re: clk: mpc85xx: Update the driver to align to new clock bindings
Date: Wed, 19 Mar 2014 16:52:23 -0500 [thread overview]
Message-ID: <20140319215223.GA28070@home.buserror.net> (raw)
In-Reply-To: <1390267965-22408-1-git-send-email-Yuantian.Tang@freescale.com>
On Tue, Jan 21, 2014 at 09:32:45AM +0800, tang yuantian wrote:
> From: Tang Yuantian <yuantian.tang@freescale.com>
>
> The clock bindings for Freescale CoreNet platform are updated.
> So, the driver needs to be updated accordingly.
> The main changes include:
> - Added a new node to present the input system clock
> - Changed PLL and MUX's compatible string
>
> Signed-off-by: Tang Yuantian <Yuantian.Tang@freescale.com>
>
> ---
> drivers/clk/clk-ppc-corenet.c | 70 +++++++++++++++++++++++++++++--------------
> 1 file changed, 48 insertions(+), 22 deletions(-)
Acked-by: Scott Wood <scottwood@freescale.com>
Mike, does this need to go to linux-arm-kernel@lists.infradead.org as per
MAINTAINERS for drivers/clk?
> diff --git a/drivers/clk/clk-ppc-corenet.c b/drivers/clk/clk-ppc-corenet.c
> index c4f76ed..8b284be 100644
> --- a/drivers/clk/clk-ppc-corenet.c
> +++ b/drivers/clk/clk-ppc-corenet.c
> @@ -27,7 +27,6 @@ struct cmux_clk {
> #define CLKSEL_ADJUST BIT(0)
> #define to_cmux_clk(p) container_of(p, struct cmux_clk, hw)
>
> -static void __iomem *base;
> static unsigned int clocks_per_pll;
>
> static int cmux_set_parent(struct clk_hw *hw, u8 idx)
> @@ -100,7 +99,11 @@ static void __init core_mux_init(struct device_node *np)
> pr_err("%s: could not allocate cmux_clk\n", __func__);
> goto err_name;
> }
> - cmux_clk->reg = base + offset;
> + cmux_clk->reg = of_iomap(np, 0);
> + if (!cmux_clk->reg) {
> + pr_err("%s: could not map register\n", __func__);
> + goto err_clk;
> + }
dev_err? Though it looks like of_clk_init() makes it hard to pass a
reference to the parent device (or anything else but a function pointer
and device tree node) to the init function -- why?
> node = of_find_compatible_node(NULL, NULL, "fsl,p4080-clockgen");
> if (node && (offset >= 0x80))
> @@ -143,38 +146,39 @@ err_name:
>
> static void __init core_pll_init(struct device_node *np)
> {
> - u32 offset, mult;
> + u32 mult;
> int i, rc, count;
> const char *clk_name, *parent_name;
> struct clk_onecell_data *onecell_data;
> struct clk **subclks;
> + void __iomem *base;
>
> - rc = of_property_read_u32(np, "reg", &offset);
> - if (rc) {
> - pr_err("%s: could not get reg property\n", np->name);
> + base = of_iomap(np, 0);
> + if (!base) {
> + pr_err("clk-ppc: iomap error\n");
> return;
> }
>
> /* get the multiple of PLL */
> - mult = ioread32be(base + offset);
> + mult = ioread32be(base);
>
> /* check if this PLL is disabled */
> if (mult & PLL_KILL) {
> pr_debug("PLL:%s is disabled\n", np->name);
> - return;
> + goto err_map;
> }
> mult = (mult >> 1) & 0x3f;
>
> parent_name = of_clk_get_parent_name(np, 0);
> if (!parent_name) {
> pr_err("PLL: %s must have a parent\n", np->name);
> - return;
> + goto err_map;
> }
>
> count = of_property_count_strings(np, "clock-output-names");
> if (count < 0 || count > 4) {
> pr_err("%s: clock is not supported\n", np->name);
> - return;
> + goto err_map;
> }
>
> /* output clock number per PLL */
> @@ -183,7 +187,7 @@ static void __init core_pll_init(struct device_node *np)
> subclks = kzalloc(sizeof(struct clk *) * count, GFP_KERNEL);
> if (!subclks) {
> pr_err("%s: could not allocate subclks\n", __func__);
> - return;
> + goto err_map;
> }
>
> onecell_data = kzalloc(sizeof(struct clk_onecell_data), GFP_KERNEL);
> @@ -230,30 +234,52 @@ static void __init core_pll_init(struct device_node *np)
> goto err_cell;
> }
>
> + iounmap(base);
> return;
> err_cell:
> kfree(onecell_data);
> err_clks:
> kfree(subclks);
> +err_map:
> + iounmap(base);
> +}
Consider devres -- is there a devres version of of_iomap()?
-Scott
next prev parent reply other threads:[~2014-03-19 21:52 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-01-21 1:32 [PATCH] clk: mpc85xx: Update the driver to align to new clock bindings Tang Yuantian
2014-03-19 21:52 ` Scott Wood [this message]
2014-03-20 0:06 ` Mike Turquette
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=20140319215223.GA28070@home.buserror.net \
--to=scottwood@freescale.com \
--cc=Yuantian.Tang@freescale.com \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=mturquette@linaro.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).