From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
To: Marcin Wojtas <mw@semihalf.com>
Cc: linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org, linux-clk@vger.kernel.org,
sboyd@codeaurora.org, mturquette@baylibre.com, andrew@lunn.ch,
jason@lakedaemon.net, tn@semihalf.com, nadavh@marvell.com,
alior@marvell.com, jaz@semihalf.com,
gregory.clement@free-electrons.com,
sebastian.hesselbarth@gmail.com
Subject: Re: [PATCH 1/2] clk: mvebu: set flags in CP110 gate clock
Date: Tue, 30 Aug 2016 15:10:10 +0200 [thread overview]
Message-ID: <20160830151010.0f85dfd7@free-electrons.com> (raw)
In-Reply-To: <1471933609-8456-2-git-send-email-mw@semihalf.com>
Hello,
On Tue, 23 Aug 2016 08:26:48 +0200, Marcin Wojtas wrote:
> diff --git a/drivers/clk/mvebu/cp110-system-controller.c b/drivers/clk/mvebu/cp110-system-controller.c
> index 7fa42d6..0835e1d 100644
> --- a/drivers/clk/mvebu/cp110-system-controller.c
> +++ b/drivers/clk/mvebu/cp110-system-controller.c
> @@ -144,6 +144,7 @@ static struct clk *cp110_register_gate(const char *name,
>
> init.name = name;
> init.ops = &cp110_gate_ops;
> + init.flags = CLK_IS_BASIC;
Is this really correct?
The documentation for CLK_IS_BASIC is pretty slim, but it says:
#define CLK_IS_BASIC BIT(5) /* Basic clk, can't do a to_clk_foo() */
However, we *do* have a to_clk_*() macro in this driver:
struct cp110_gate_clk {
struct clk_hw hw;
struct regmap *regmap;
u8 bit_idx;
};
#define to_cp110_gate_clk(clk) container_of(clk, struct cp110_gate_clk, hw)
If you read the commit log of commit
f7d8caadfd2813cbada82ce9041b13c38e8e5282, which introduced the flag, it
says:
clk: Add CLK_IS_BASIC flag to identify basic clocks
Most platforms end up using a mix of basic clock types and
some which use clk_hw_foo struct for filling in custom platform
information when the clocks don't fit into basic types supported.
In platform code, its useful to know if a clock is using a basic
type or clk_hw_foo, which helps platforms know if they can
safely use to_clk_hw_foo to derive the clk_hw_foo pointer from
clk_hw.
Mark all basic clocks with a CLK_IS_BASIC flag.
Signed-off-by: Rajendra Nayak <rnayak@ti.com>
Signed-off-by: Mike Turquette <mturquette@linaro.org>
We are in the case where we have our own clk_hw_foo structure, and a
to_clk_hw_foo macro to derive the clk_hw_foo from clk_hw.
According to this, the CP110 clocks are *not* basic clocks, and
therefore we shouldn't have this flag. Perhaps just the memset() is
missing.
Thanks,
Thomas
--
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux and Kernel 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 1/2] clk: mvebu: set flags in CP110 gate clock
Date: Tue, 30 Aug 2016 15:10:10 +0200 [thread overview]
Message-ID: <20160830151010.0f85dfd7@free-electrons.com> (raw)
In-Reply-To: <1471933609-8456-2-git-send-email-mw@semihalf.com>
Hello,
On Tue, 23 Aug 2016 08:26:48 +0200, Marcin Wojtas wrote:
> diff --git a/drivers/clk/mvebu/cp110-system-controller.c b/drivers/clk/mvebu/cp110-system-controller.c
> index 7fa42d6..0835e1d 100644
> --- a/drivers/clk/mvebu/cp110-system-controller.c
> +++ b/drivers/clk/mvebu/cp110-system-controller.c
> @@ -144,6 +144,7 @@ static struct clk *cp110_register_gate(const char *name,
>
> init.name = name;
> init.ops = &cp110_gate_ops;
> + init.flags = CLK_IS_BASIC;
Is this really correct?
The documentation for CLK_IS_BASIC is pretty slim, but it says:
#define CLK_IS_BASIC BIT(5) /* Basic clk, can't do a to_clk_foo() */
However, we *do* have a to_clk_*() macro in this driver:
struct cp110_gate_clk {
struct clk_hw hw;
struct regmap *regmap;
u8 bit_idx;
};
#define to_cp110_gate_clk(clk) container_of(clk, struct cp110_gate_clk, hw)
If you read the commit log of commit
f7d8caadfd2813cbada82ce9041b13c38e8e5282, which introduced the flag, it
says:
clk: Add CLK_IS_BASIC flag to identify basic clocks
Most platforms end up using a mix of basic clock types and
some which use clk_hw_foo struct for filling in custom platform
information when the clocks don't fit into basic types supported.
In platform code, its useful to know if a clock is using a basic
type or clk_hw_foo, which helps platforms know if they can
safely use to_clk_hw_foo to derive the clk_hw_foo pointer from
clk_hw.
Mark all basic clocks with a CLK_IS_BASIC flag.
Signed-off-by: Rajendra Nayak <rnayak@ti.com>
Signed-off-by: Mike Turquette <mturquette@linaro.org>
We are in the case where we have our own clk_hw_foo structure, and a
to_clk_hw_foo macro to derive the clk_hw_foo from clk_hw.
According to this, the CP110 clocks are *not* basic clocks, and
therefore we shouldn't have this flag. Perhaps just the memset() is
missing.
Thanks,
Thomas
--
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com
next prev parent reply other threads:[~2016-08-30 13:10 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-08-23 6:26 [PATCH 0/2] Armada 7k/8k CP110 system controller fixes Marcin Wojtas
2016-08-23 6:26 ` Marcin Wojtas
2016-08-23 6:26 ` [PATCH 1/2] clk: mvebu: set flags in CP110 gate clock Marcin Wojtas
2016-08-23 6:26 ` Marcin Wojtas
2016-08-23 14:16 ` Andrew Lunn
2016-08-23 14:16 ` Andrew Lunn
2016-08-24 8:28 ` Marcin Wojtas
2016-08-24 8:28 ` Marcin Wojtas
2016-08-25 0:13 ` Stephen Boyd
2016-08-25 0:13 ` Stephen Boyd
2016-08-30 13:10 ` Thomas Petazzoni [this message]
2016-08-30 13:10 ` Thomas Petazzoni
2016-08-30 13:34 ` Marcin Wojtas
2016-08-30 13:34 ` Marcin Wojtas
2016-08-23 6:26 ` [PATCH 2/2] clk: mvebu: dynamically allocate resources in Armada CP110 system controller Marcin Wojtas
2016-08-23 6:26 ` Marcin Wojtas
2016-08-25 0:16 ` Stephen Boyd
2016-08-25 0:16 ` Stephen Boyd
2016-08-30 15:31 ` Marcin Wojtas
2016-08-30 15:31 ` Marcin Wojtas
2016-08-30 18:43 ` Stephen Boyd
2016-08-30 18:43 ` Stephen Boyd
2016-08-30 14:15 ` Thomas Petazzoni
2016-08-30 14:15 ` 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=20160830151010.0f85dfd7@free-electrons.com \
--to=thomas.petazzoni@free-electrons.com \
--cc=alior@marvell.com \
--cc=andrew@lunn.ch \
--cc=gregory.clement@free-electrons.com \
--cc=jason@lakedaemon.net \
--cc=jaz@semihalf.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-clk@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mturquette@baylibre.com \
--cc=mw@semihalf.com \
--cc=nadavh@marvell.com \
--cc=sboyd@codeaurora.org \
--cc=sebastian.hesselbarth@gmail.com \
--cc=tn@semihalf.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.