From: mturquette@linaro.org (Mike Turquette)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2 1/5] clk: bcm281xx: add an initialized flag
Date: Fri, 23 May 2014 17:33:44 -0700 [thread overview]
Message-ID: <20140524003344.23136.68999@quantum> (raw)
In-Reply-To: <1400590362-11177-2-git-send-email-elder@linaro.org>
Quoting Alex Elder (2014-05-20 05:52:38)
> Add a flag that tracks whether a clock has already been initialized.
> This will be used by the next patch to avoid initializing a clock
> more than once when it's listed as a prerequisite.
>
> Signed-off-by: Alex Elder <elder@linaro.org>
> ---
> drivers/clk/bcm/clk-kona.c | 17 +++++++++++++++--
> drivers/clk/bcm/clk-kona.h | 7 +++++++
> 2 files changed, 22 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/clk/bcm/clk-kona.c b/drivers/clk/bcm/clk-kona.c
> index d603c4e..d8a7f38 100644
> --- a/drivers/clk/bcm/clk-kona.c
> +++ b/drivers/clk/bcm/clk-kona.c
> @@ -27,6 +27,9 @@
> #define CCU_ACCESS_PASSWORD 0xA5A500
> #define CLK_GATE_DELAY_LOOP 2000
>
> +#define clk_is_initialized(_clk) FLAG_TEST((_clk), KONA, INITIALIZED)
> +#define clk_set_initialized(_clk) FLAG_SET((_clk), KONA, INITIALIZED)
> +
> /* Bitfield operations */
>
> /* Produces a mask of set bits covering a range of a 32-bit value */
> @@ -1194,13 +1197,23 @@ static bool __peri_clk_init(struct kona_clk *bcm_clk)
>
> static bool __kona_clk_init(struct kona_clk *bcm_clk)
> {
> + bool ret;
> +
> + if (clk_is_initialized(bcm_clk))
> + return true;
> +
> switch (bcm_clk->type) {
> case bcm_clk_peri:
> - return __peri_clk_init(bcm_clk);
> + ret = __peri_clk_init(bcm_clk);
Hi Alex,
Going through this code, it's a bit hard to keep up ;-)
Does the call to __peri_clk_init enable the prereq clocks? If so, is
their clk->prepare_count and clk->enable_count properly incremented?
Thanks,
Mike
> + break;
> default:
> + ret = false;
> BUG();
> }
> - return -EINVAL;
> + if (ret)
> + clk_set_initialized(bcm_clk);
> +
> + return ret;
> }
>
> /* Set a CCU and all its clocks into their desired initial state */
> diff --git a/drivers/clk/bcm/clk-kona.h b/drivers/clk/bcm/clk-kona.h
> index 2537b30..10e238d 100644
> --- a/drivers/clk/bcm/clk-kona.h
> +++ b/drivers/clk/bcm/clk-kona.h
> @@ -406,6 +406,7 @@ struct kona_clk {
> struct clk_init_data init_data; /* includes name of this clock */
> struct ccu_data *ccu; /* ccu this clock is associated with */
> enum bcm_clk_type type;
> + u32 flags; /* BCM_CLK_KONA_FLAGS_* below */
> union {
> void *data;
> struct peri_clk_data *peri;
> @@ -414,6 +415,12 @@ struct kona_clk {
> #define to_kona_clk(_hw) \
> container_of(_hw, struct kona_clk, hw)
>
> +/*
> + * Kona clock flags:
> + * INITIALIZED clock has been initialized already
> + */
> +#define BCM_CLK_KONA_FLAGS_INITIALIZED ((u32)1 << 0) /* Clock initialized */
> +
> /* Initialization macro for an entry in a CCU's kona_clks[] array. */
> #define KONA_CLK(_ccu_name, _clk_name, _type) \
> { \
> --
> 1.9.1
>
WARNING: multiple messages have this Message-ID (diff)
From: Mike Turquette <mturquette-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
To: Alex Elder <elder-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>,
mporter-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org,
bcm-xK7y4jjYLqYh9ZMKESR00Q@public.gmane.org,
devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Cc: linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: Re: [PATCH v2 1/5] clk: bcm281xx: add an initialized flag
Date: Fri, 23 May 2014 17:33:44 -0700 [thread overview]
Message-ID: <20140524003344.23136.68999@quantum> (raw)
In-Reply-To: <1400590362-11177-2-git-send-email-elder-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
Quoting Alex Elder (2014-05-20 05:52:38)
> Add a flag that tracks whether a clock has already been initialized.
> This will be used by the next patch to avoid initializing a clock
> more than once when it's listed as a prerequisite.
>
> Signed-off-by: Alex Elder <elder-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
> ---
> drivers/clk/bcm/clk-kona.c | 17 +++++++++++++++--
> drivers/clk/bcm/clk-kona.h | 7 +++++++
> 2 files changed, 22 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/clk/bcm/clk-kona.c b/drivers/clk/bcm/clk-kona.c
> index d603c4e..d8a7f38 100644
> --- a/drivers/clk/bcm/clk-kona.c
> +++ b/drivers/clk/bcm/clk-kona.c
> @@ -27,6 +27,9 @@
> #define CCU_ACCESS_PASSWORD 0xA5A500
> #define CLK_GATE_DELAY_LOOP 2000
>
> +#define clk_is_initialized(_clk) FLAG_TEST((_clk), KONA, INITIALIZED)
> +#define clk_set_initialized(_clk) FLAG_SET((_clk), KONA, INITIALIZED)
> +
> /* Bitfield operations */
>
> /* Produces a mask of set bits covering a range of a 32-bit value */
> @@ -1194,13 +1197,23 @@ static bool __peri_clk_init(struct kona_clk *bcm_clk)
>
> static bool __kona_clk_init(struct kona_clk *bcm_clk)
> {
> + bool ret;
> +
> + if (clk_is_initialized(bcm_clk))
> + return true;
> +
> switch (bcm_clk->type) {
> case bcm_clk_peri:
> - return __peri_clk_init(bcm_clk);
> + ret = __peri_clk_init(bcm_clk);
Hi Alex,
Going through this code, it's a bit hard to keep up ;-)
Does the call to __peri_clk_init enable the prereq clocks? If so, is
their clk->prepare_count and clk->enable_count properly incremented?
Thanks,
Mike
> + break;
> default:
> + ret = false;
> BUG();
> }
> - return -EINVAL;
> + if (ret)
> + clk_set_initialized(bcm_clk);
> +
> + return ret;
> }
>
> /* Set a CCU and all its clocks into their desired initial state */
> diff --git a/drivers/clk/bcm/clk-kona.h b/drivers/clk/bcm/clk-kona.h
> index 2537b30..10e238d 100644
> --- a/drivers/clk/bcm/clk-kona.h
> +++ b/drivers/clk/bcm/clk-kona.h
> @@ -406,6 +406,7 @@ struct kona_clk {
> struct clk_init_data init_data; /* includes name of this clock */
> struct ccu_data *ccu; /* ccu this clock is associated with */
> enum bcm_clk_type type;
> + u32 flags; /* BCM_CLK_KONA_FLAGS_* below */
> union {
> void *data;
> struct peri_clk_data *peri;
> @@ -414,6 +415,12 @@ struct kona_clk {
> #define to_kona_clk(_hw) \
> container_of(_hw, struct kona_clk, hw)
>
> +/*
> + * Kona clock flags:
> + * INITIALIZED clock has been initialized already
> + */
> +#define BCM_CLK_KONA_FLAGS_INITIALIZED ((u32)1 << 0) /* Clock initialized */
> +
> /* Initialization macro for an entry in a CCU's kona_clks[] array. */
> #define KONA_CLK(_ccu_name, _clk_name, _type) \
> { \
> --
> 1.9.1
>
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
WARNING: multiple messages have this Message-ID (diff)
From: Mike Turquette <mturquette@linaro.org>
To: Alex Elder <elder@linaro.org>,
mporter@linaro.org, bcm@fixthebug.org,
devicetree@vger.kernel.org
Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2 1/5] clk: bcm281xx: add an initialized flag
Date: Fri, 23 May 2014 17:33:44 -0700 [thread overview]
Message-ID: <20140524003344.23136.68999@quantum> (raw)
In-Reply-To: <1400590362-11177-2-git-send-email-elder@linaro.org>
Quoting Alex Elder (2014-05-20 05:52:38)
> Add a flag that tracks whether a clock has already been initialized.
> This will be used by the next patch to avoid initializing a clock
> more than once when it's listed as a prerequisite.
>
> Signed-off-by: Alex Elder <elder@linaro.org>
> ---
> drivers/clk/bcm/clk-kona.c | 17 +++++++++++++++--
> drivers/clk/bcm/clk-kona.h | 7 +++++++
> 2 files changed, 22 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/clk/bcm/clk-kona.c b/drivers/clk/bcm/clk-kona.c
> index d603c4e..d8a7f38 100644
> --- a/drivers/clk/bcm/clk-kona.c
> +++ b/drivers/clk/bcm/clk-kona.c
> @@ -27,6 +27,9 @@
> #define CCU_ACCESS_PASSWORD 0xA5A500
> #define CLK_GATE_DELAY_LOOP 2000
>
> +#define clk_is_initialized(_clk) FLAG_TEST((_clk), KONA, INITIALIZED)
> +#define clk_set_initialized(_clk) FLAG_SET((_clk), KONA, INITIALIZED)
> +
> /* Bitfield operations */
>
> /* Produces a mask of set bits covering a range of a 32-bit value */
> @@ -1194,13 +1197,23 @@ static bool __peri_clk_init(struct kona_clk *bcm_clk)
>
> static bool __kona_clk_init(struct kona_clk *bcm_clk)
> {
> + bool ret;
> +
> + if (clk_is_initialized(bcm_clk))
> + return true;
> +
> switch (bcm_clk->type) {
> case bcm_clk_peri:
> - return __peri_clk_init(bcm_clk);
> + ret = __peri_clk_init(bcm_clk);
Hi Alex,
Going through this code, it's a bit hard to keep up ;-)
Does the call to __peri_clk_init enable the prereq clocks? If so, is
their clk->prepare_count and clk->enable_count properly incremented?
Thanks,
Mike
> + break;
> default:
> + ret = false;
> BUG();
> }
> - return -EINVAL;
> + if (ret)
> + clk_set_initialized(bcm_clk);
> +
> + return ret;
> }
>
> /* Set a CCU and all its clocks into their desired initial state */
> diff --git a/drivers/clk/bcm/clk-kona.h b/drivers/clk/bcm/clk-kona.h
> index 2537b30..10e238d 100644
> --- a/drivers/clk/bcm/clk-kona.h
> +++ b/drivers/clk/bcm/clk-kona.h
> @@ -406,6 +406,7 @@ struct kona_clk {
> struct clk_init_data init_data; /* includes name of this clock */
> struct ccu_data *ccu; /* ccu this clock is associated with */
> enum bcm_clk_type type;
> + u32 flags; /* BCM_CLK_KONA_FLAGS_* below */
> union {
> void *data;
> struct peri_clk_data *peri;
> @@ -414,6 +415,12 @@ struct kona_clk {
> #define to_kona_clk(_hw) \
> container_of(_hw, struct kona_clk, hw)
>
> +/*
> + * Kona clock flags:
> + * INITIALIZED clock has been initialized already
> + */
> +#define BCM_CLK_KONA_FLAGS_INITIALIZED ((u32)1 << 0) /* Clock initialized */
> +
> /* Initialization macro for an entry in a CCU's kona_clks[] array. */
> #define KONA_CLK(_ccu_name, _clk_name, _type) \
> { \
> --
> 1.9.1
>
next prev parent reply other threads:[~2014-05-24 0:33 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-05-20 12:52 [PATCH v2 0/5] clk: bcm: prerequisite and bus clock support Alex Elder
2014-05-20 12:52 ` Alex Elder
2014-05-20 12:52 ` Alex Elder
2014-05-20 12:52 ` [PATCH v2 1/5] clk: bcm281xx: add an initialized flag Alex Elder
2014-05-20 12:52 ` Alex Elder
2014-05-20 12:52 ` Alex Elder
2014-05-24 0:33 ` Mike Turquette [this message]
2014-05-24 0:33 ` Mike Turquette
2014-05-24 0:33 ` Mike Turquette
2014-05-29 13:26 ` Alex Elder
2014-05-29 13:26 ` Alex Elder
2014-05-20 12:52 ` [PATCH v2 2/5] clk: bcm281xx: implement prerequisite clocks Alex Elder
2014-05-20 12:52 ` Alex Elder
2014-05-24 0:53 ` Mike Turquette
2014-05-24 0:53 ` Mike Turquette
2014-05-29 13:26 ` Alex Elder
2014-05-29 13:26 ` Alex Elder
2014-05-29 13:26 ` Alex Elder
2014-05-29 16:35 ` Mike Turquette
2014-05-29 16:35 ` Mike Turquette
2014-05-29 16:53 ` Alex Elder
2014-05-29 16:53 ` Alex Elder
2014-05-29 16:53 ` Alex Elder
2014-05-29 17:47 ` Mike Turquette
2014-05-29 17:47 ` Mike Turquette
2014-05-30 3:20 ` Alex Elder
2014-05-30 3:20 ` Alex Elder
2014-05-30 3:20 ` Alex Elder
2014-05-30 14:05 ` Alex Elder
2014-05-30 14:05 ` Alex Elder
2014-05-30 14:05 ` Alex Elder
2014-05-20 12:52 ` [PATCH v2 3/5] clk: bcm281xx: add bus clock support Alex Elder
2014-05-20 12:52 ` Alex Elder
2014-05-20 12:52 ` [PATCH v2 4/5] clk: bcm281xx: define a bus clock Alex Elder
2014-05-20 12:52 ` Alex Elder
[not found] ` <1400590362-11177-1-git-send-email-elder-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2014-05-20 12:55 ` [PATCH v2 5/5] ARM: dts: add bus clock bsc3_apb for bcm281xx Alex Elder
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=20140524003344.23136.68999@quantum \
--to=mturquette@linaro.org \
--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 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.