From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
To: Stephen Boyd <sboyd@codeaurora.org>
Cc: Michael Turquette <mturquette@baylibre.com>,
linux-clk@vger.kernel.org, devicetree@vger.kernel.org,
Rob Herring <robh+dt@kernel.org>,
Ian Campbell <ijc+devicetree@hellion.org.uk>,
Pawel Moll <pawel.moll@arm.com>,
Mark Rutland <mark.rutland@arm.com>,
Kumar Gala <galak@codeaurora.org>,
Jason Cooper <jason@lakedaemon.net>, Andrew Lunn <andrew@lunn.ch>,
Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>,
Gregory Clement <gregory.clement@free-electrons.com>,
Nadav Haklai <nadavh@marvell.com>,
Lior Amsalem <alior@marvell.com>, Hanna Hawa <hannah@marvell.com>,
linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH v4 5/5] clk: mvebu: new driver for Armada CP110 system controller
Date: Wed, 13 Apr 2016 17:30:04 +0200 [thread overview]
Message-ID: <20160413173004.026e587e@free-electrons.com> (raw)
In-Reply-To: <20160402012541.GB18567@codeaurora.org>
Hello,
On Fri, 1 Apr 2016 18:25:41 -0700, Stephen Boyd wrote:
> > +#include <linux/kernel.h>
> > +#include <linux/clk.h>
>
> What's this for?
>
> > +#include <linux/clk-provider.h>
> > +#include <linux/io.h>
>
> What's this for?
Both removed.
> > +static int cp110_gate_enable(struct clk_hw *hw)
> > +{
> > + struct cp110_gate_clk *gate =
> > + container_of(hw, struct cp110_gate_clk, hw);
>
> Consider a macro to make this fit on one line.
Done!
> > + init.name = name;
> > + init.ops = &cp110_gate_ops;
> > + init.flags = CLK_IS_BASIC;
>
> No basic please.
Fixed!
> > +static void __init cp110_syscon_clk_init(struct device_node *np)
>
> Any reason this can't be a platform driver?
Changed to be a platform driver.
> > +{
> > + struct regmap *regmap;
> > + const char *name, *apll_name, *core_name, *eip_name, *nand_name;
> > + u32 nand_clk_ctrl;
> > + int clkidx = 0, i;
> > +
> > + regmap = syscon_node_to_regmap(np);
>
> Isn't this the only driver for the node? Why not just make the
> regmap ourselves in the driver here?
It is for now. However, I expect that we will probably have sub-nodes
for various other devices whose registers belong to this system
controller. More specifically, there are some pin-muxing registers in
there. Using the syscon facility entirely automates the creation of the
regmap, and makes it easily accessible to other devices who might want
to poke into some of the system controller registers.
> > + /*
> > + * Register core clocks
> > + */
>
> Ok. Not really useful comment.
Removed!
> > + /* NAND can be either APLL/2.5 or core clock */
> > + of_property_read_string_index(np, "core-clock-output-names",
> > + 4, &nand_name);
> > + if (nand_clk_ctrl & NF_CLOCK_SEL_400_MASK)
> > + cp110_clks[4] =
>
> Weird indentation here. Please use tabs throughout.
Yeah, seems like I copy/pasted or something. Fixed to use tabs.
> > + of_clk_add_provider(np, cp110_of_clk_get, &cp110_clk_data);
>
> What if this fails?
Error checking added everywhere. There are numerous other clk drivers
that don't do error checking, so I did the same, especially since a
failure to register a clock is most likely going to be fatal to the
system booting. No clock -> no UART, no UART -> the system doesn't boot
up to userspace.
But fair enough, I've added error checking in the ->probe() function
(of both the AP806 and CP110 clk drivers).
Thanks again for the review!
Thomas
--
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
WARNING: multiple messages have this Message-ID (diff)
From: thomas.petazzoni@free-electrons.com (Thomas Petazzoni)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v4 5/5] clk: mvebu: new driver for Armada CP110 system controller
Date: Wed, 13 Apr 2016 17:30:04 +0200 [thread overview]
Message-ID: <20160413173004.026e587e@free-electrons.com> (raw)
In-Reply-To: <20160402012541.GB18567@codeaurora.org>
Hello,
On Fri, 1 Apr 2016 18:25:41 -0700, Stephen Boyd wrote:
> > +#include <linux/kernel.h>
> > +#include <linux/clk.h>
>
> What's this for?
>
> > +#include <linux/clk-provider.h>
> > +#include <linux/io.h>
>
> What's this for?
Both removed.
> > +static int cp110_gate_enable(struct clk_hw *hw)
> > +{
> > + struct cp110_gate_clk *gate =
> > + container_of(hw, struct cp110_gate_clk, hw);
>
> Consider a macro to make this fit on one line.
Done!
> > + init.name = name;
> > + init.ops = &cp110_gate_ops;
> > + init.flags = CLK_IS_BASIC;
>
> No basic please.
Fixed!
> > +static void __init cp110_syscon_clk_init(struct device_node *np)
>
> Any reason this can't be a platform driver?
Changed to be a platform driver.
> > +{
> > + struct regmap *regmap;
> > + const char *name, *apll_name, *core_name, *eip_name, *nand_name;
> > + u32 nand_clk_ctrl;
> > + int clkidx = 0, i;
> > +
> > + regmap = syscon_node_to_regmap(np);
>
> Isn't this the only driver for the node? Why not just make the
> regmap ourselves in the driver here?
It is for now. However, I expect that we will probably have sub-nodes
for various other devices whose registers belong to this system
controller. More specifically, there are some pin-muxing registers in
there. Using the syscon facility entirely automates the creation of the
regmap, and makes it easily accessible to other devices who might want
to poke into some of the system controller registers.
> > + /*
> > + * Register core clocks
> > + */
>
> Ok. Not really useful comment.
Removed!
> > + /* NAND can be either APLL/2.5 or core clock */
> > + of_property_read_string_index(np, "core-clock-output-names",
> > + 4, &nand_name);
> > + if (nand_clk_ctrl & NF_CLOCK_SEL_400_MASK)
> > + cp110_clks[4] =
>
> Weird indentation here. Please use tabs throughout.
Yeah, seems like I copy/pasted or something. Fixed to use tabs.
> > + of_clk_add_provider(np, cp110_of_clk_get, &cp110_clk_data);
>
> What if this fails?
Error checking added everywhere. There are numerous other clk drivers
that don't do error checking, so I did the same, especially since a
failure to register a clock is most likely going to be fatal to the
system booting. No clock -> no UART, no UART -> the system doesn't boot
up to userspace.
But fair enough, I've added error checking in the ->probe() function
(of both the AP806 and CP110 clk drivers).
Thanks again for the review!
Thomas
--
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
next prev parent reply other threads:[~2016-04-13 15:30 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-03-27 9:26 [PATCH v4 0/5] clk: mvebu: clock drivers for Marvell Armada 7K/8K Thomas Petazzoni
2016-03-27 9:26 ` Thomas Petazzoni
2016-03-27 9:26 ` [PATCH v4 1/5] clk: unconditionally recurse into clk/mvebu/ Thomas Petazzoni
2016-03-27 9:26 ` Thomas Petazzoni
2016-04-02 1:25 ` Stephen Boyd
2016-04-02 1:25 ` Stephen Boyd
2016-03-27 9:26 ` [PATCH v4 2/5] dt-bindings: arm: add DT binding for Marvell AP806 system controller Thomas Petazzoni
2016-03-27 9:26 ` Thomas Petazzoni
2016-04-02 1:26 ` Stephen Boyd
2016-04-02 1:26 ` Stephen Boyd
2016-03-27 9:26 ` [PATCH v4 3/5] clk: mvebu: new driver for Armada " Thomas Petazzoni
2016-03-27 9:26 ` Thomas Petazzoni
2016-03-27 9:26 ` Thomas Petazzoni
2016-04-02 1:27 ` Stephen Boyd
2016-04-02 1:27 ` Stephen Boyd
2016-04-02 1:27 ` Stephen Boyd
2016-04-13 14:32 ` Thomas Petazzoni
2016-04-13 14:32 ` Thomas Petazzoni
2016-04-13 14:32 ` Thomas Petazzoni
2016-03-27 9:26 ` [PATCH v4 4/5] dt-bindings: arm: add DT binding for Marvell CP110 " Thomas Petazzoni
2016-03-27 9:26 ` Thomas Petazzoni
2016-03-28 19:47 ` Rob Herring
2016-03-28 19:47 ` Rob Herring
2016-04-11 15:59 ` Thomas Petazzoni
2016-04-11 15:59 ` Thomas Petazzoni
2016-04-13 16:01 ` Thomas Petazzoni
2016-04-13 16:01 ` Thomas Petazzoni
2016-04-14 7:49 ` Thomas Petazzoni
2016-04-14 7:49 ` Thomas Petazzoni
2016-04-14 19:19 ` Geert Uytterhoeven
2016-04-14 19:19 ` Geert Uytterhoeven
2016-04-23 14:22 ` Thomas Petazzoni
2016-04-23 14:22 ` Thomas Petazzoni
2016-04-24 9:15 ` Geert Uytterhoeven
2016-04-24 9:15 ` Geert Uytterhoeven
2016-03-27 9:26 ` [PATCH v4 5/5] clk: mvebu: new driver for Armada " Thomas Petazzoni
2016-03-27 9:26 ` Thomas Petazzoni
2016-04-02 1:25 ` Stephen Boyd
2016-04-02 1:25 ` Stephen Boyd
2016-04-13 15:30 ` Thomas Petazzoni [this message]
2016-04-13 15:30 ` Thomas Petazzoni
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=20160413173004.026e587e@free-electrons.com \
--to=thomas.petazzoni@free-electrons.com \
--cc=alior@marvell.com \
--cc=andrew@lunn.ch \
--cc=devicetree@vger.kernel.org \
--cc=galak@codeaurora.org \
--cc=gregory.clement@free-electrons.com \
--cc=hannah@marvell.com \
--cc=ijc+devicetree@hellion.org.uk \
--cc=jason@lakedaemon.net \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-clk@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=mturquette@baylibre.com \
--cc=nadavh@marvell.com \
--cc=pawel.moll@arm.com \
--cc=robh+dt@kernel.org \
--cc=sboyd@codeaurora.org \
--cc=sebastian.hesselbarth@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.