From: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
To: Marek Szyprowski <m.szyprowski@samsung.com>
Cc: linux-clk@vger.kernel.org, linux-pm@vger.kernel.org,
linux-samsung-soc@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
Stephen Boyd <sboyd@codeaurora.org>,
Michael Turquette <mturquette@baylibre.com>,
Ulf Hansson <ulf.hansson@linaro.org>,
Sylwester Nawrocki <s.nawrocki@samsung.com>,
Chanwoo Choi <cw00.choi@samsung.com>,
Inki Dae <inki.dae@samsung.com>,
Krzysztof Kozlowski <k.kozlowski@samsung.com>
Subject: Re: [PATCH 5/5] clocks: exynos5433: add runtime pm support
Date: Thu, 01 Sep 2016 18:55:38 +0200 [thread overview]
Message-ID: <2519946.fIx2ZfLU7C@amdc1976> (raw)
In-Reply-To: <1472737551-15272-6-git-send-email-m.szyprowski@samsung.com>
Hi,
On Thursday, September 01, 2016 03:45:51 PM Marek Szyprowski wrote:
> Add runtime pm support for all clock controller units (CMU), which belongs
> to power domains and require special handling during on/off operations.
> Typically special values has to be written to MUX registers to change
> internal clocks parents to OSC clock before turning power off. During such
> operation all clocks, which enters CMU has to be enabled to let MUX to
> stabilize. Also for each CMU there is one special parent clock, which has
> to be enabled all the time when any access to CMU registers is done.
>
> This patch solves most of the mysterious external abort and freeze issues
> caused by a lack of proper parent CMU clock enabled or incorrect turn off
> procedure.
>
> Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
> ---
> drivers/clk/samsung/clk-exynos5433.c | 462 +++++++++++++++++++++++++++--------
> 1 file changed, 363 insertions(+), 99 deletions(-)
>
> diff --git a/drivers/clk/samsung/clk-exynos5433.c b/drivers/clk/samsung/clk-exynos5433.c
> index ea1608682d7f..9fb896b56ddf 100644
> --- a/drivers/clk/samsung/clk-exynos5433.c
> +++ b/drivers/clk/samsung/clk-exynos5433.c
> @@ -9,9 +9,14 @@
> * Common Clock Framework support for Exynos5443 SoC.
> */
>
> +#include <linux/clk.h>
> #include <linux/clk-provider.h>
> #include <linux/of.h>
> #include <linux/of_address.h>
> +#include <linux/of_device.h>
> +#include <linux/platform_device.h>
> +#include <linux/pm_runtime.h>
> +#include <linux/slab.h>
>
> #include <dt-bindings/clock/exynos5433.h>
>
> @@ -19,6 +24,37 @@
> #include "clk-cpu.h"
> #include "clk-pll.h"
>
> +struct exynos5433_cmu_info {
> + /* total number of clocks with IDs assigned*/
> + unsigned int nr_clk_ids;
> + /* list of pll clocks and respective count */
> + const struct samsung_pll_clock *pll_clks;
> + unsigned int nr_pll_clks;
> + /* list of mux clocks and respective count */
> + const struct samsung_mux_clock *mux_clks;
> + unsigned int nr_mux_clks;
> + /* list of div clocks and respective count */
> + const struct samsung_div_clock *div_clks;
> + unsigned int nr_div_clks;
> + /* list of gate clocks and respective count */
> + const struct samsung_gate_clock *gate_clks;
> + unsigned int nr_gate_clks;
> + /* list of fixed clocks and respective count */
> + const struct samsung_fixed_rate_clock *fixed_clks;
> + unsigned int nr_fixed_clks;
> + /* list of fixed factor clocks and respective count */
> + const struct samsung_fixed_factor_clock *fixed_factor_clks;
> + unsigned int nr_fixed_factor_clks;
> + /* list and number of clocks registers */
> + const unsigned long *clk_regs;
> + unsigned int nr_clk_regs;
> + /* list and number of clocks registers to set before suspend */
> + const struct samsung_clk_reg_dump *suspend_regs;
> + unsigned int nr_suspend_regs;
> + /* name of the parent clock needed for CMU register access */
> + const char *clk_name;
> +};
Have you considered extending struct samsung_cmu_info instead
(all instances are __initdata anyway so slight increase of struct's
size shouldn't be a problem)?
> +static const struct samsung_clk_reg_dump g2d_suspend_regs[] = {
> + {MUX_SEL_G2D0, 0},
Minor nit: preferred CodingStyle is:
{ MUX_SEL_G2D0, 0 },
( ditto for other struct samsung_clk_reg_dump instances )
> + clk_table = devm_kcalloc(dev, info->nr_clk_ids, sizeof(struct clk *),
> + GFP_KERNEL);
> + if (!clk_table) {
> + dev_err(dev, "could not allocate clock lookup table\n");
> + return -ENOMEM;
> + }
checkpatch.pl complains with:
WARNING: Possible unnecessary 'out of memory' message
#681: FILE: drivers/clk/samsung/clk-exynos5433.c:5541:
+ if (!clk_table) {
+ dev_err(dev, "could not allocate clock lookup table\n");
Best regards,
--
Bartlomiej Zolnierkiewicz
Samsung R&D Institute Poland
Samsung Electronics
WARNING: multiple messages have this Message-ID (diff)
From: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
To: Marek Szyprowski <m.szyprowski@samsung.com>
Cc: Ulf Hansson <ulf.hansson@linaro.org>,
linux-samsung-soc@vger.kernel.org, linux-pm@vger.kernel.org,
Michael Turquette <mturquette@baylibre.com>,
Stephen Boyd <sboyd@codeaurora.org>,
Krzysztof Kozlowski <k.kozlowski@samsung.com>,
Inki Dae <inki.dae@samsung.com>,
Chanwoo Choi <cw00.choi@samsung.com>,
Sylwester Nawrocki <s.nawrocki@samsung.com>,
linux-clk@vger.kernel.org, linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH 5/5] clocks: exynos5433: add runtime pm support
Date: Thu, 01 Sep 2016 18:55:38 +0200 [thread overview]
Message-ID: <2519946.fIx2ZfLU7C@amdc1976> (raw)
In-Reply-To: <1472737551-15272-6-git-send-email-m.szyprowski@samsung.com>
Hi,
On Thursday, September 01, 2016 03:45:51 PM Marek Szyprowski wrote:
> Add runtime pm support for all clock controller units (CMU), which belongs
> to power domains and require special handling during on/off operations.
> Typically special values has to be written to MUX registers to change
> internal clocks parents to OSC clock before turning power off. During such
> operation all clocks, which enters CMU has to be enabled to let MUX to
> stabilize. Also for each CMU there is one special parent clock, which has
> to be enabled all the time when any access to CMU registers is done.
>
> This patch solves most of the mysterious external abort and freeze issues
> caused by a lack of proper parent CMU clock enabled or incorrect turn off
> procedure.
>
> Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
> ---
> drivers/clk/samsung/clk-exynos5433.c | 462 +++++++++++++++++++++++++++--------
> 1 file changed, 363 insertions(+), 99 deletions(-)
>
> diff --git a/drivers/clk/samsung/clk-exynos5433.c b/drivers/clk/samsung/clk-exynos5433.c
> index ea1608682d7f..9fb896b56ddf 100644
> --- a/drivers/clk/samsung/clk-exynos5433.c
> +++ b/drivers/clk/samsung/clk-exynos5433.c
> @@ -9,9 +9,14 @@
> * Common Clock Framework support for Exynos5443 SoC.
> */
>
> +#include <linux/clk.h>
> #include <linux/clk-provider.h>
> #include <linux/of.h>
> #include <linux/of_address.h>
> +#include <linux/of_device.h>
> +#include <linux/platform_device.h>
> +#include <linux/pm_runtime.h>
> +#include <linux/slab.h>
>
> #include <dt-bindings/clock/exynos5433.h>
>
> @@ -19,6 +24,37 @@
> #include "clk-cpu.h"
> #include "clk-pll.h"
>
> +struct exynos5433_cmu_info {
> + /* total number of clocks with IDs assigned*/
> + unsigned int nr_clk_ids;
> + /* list of pll clocks and respective count */
> + const struct samsung_pll_clock *pll_clks;
> + unsigned int nr_pll_clks;
> + /* list of mux clocks and respective count */
> + const struct samsung_mux_clock *mux_clks;
> + unsigned int nr_mux_clks;
> + /* list of div clocks and respective count */
> + const struct samsung_div_clock *div_clks;
> + unsigned int nr_div_clks;
> + /* list of gate clocks and respective count */
> + const struct samsung_gate_clock *gate_clks;
> + unsigned int nr_gate_clks;
> + /* list of fixed clocks and respective count */
> + const struct samsung_fixed_rate_clock *fixed_clks;
> + unsigned int nr_fixed_clks;
> + /* list of fixed factor clocks and respective count */
> + const struct samsung_fixed_factor_clock *fixed_factor_clks;
> + unsigned int nr_fixed_factor_clks;
> + /* list and number of clocks registers */
> + const unsigned long *clk_regs;
> + unsigned int nr_clk_regs;
> + /* list and number of clocks registers to set before suspend */
> + const struct samsung_clk_reg_dump *suspend_regs;
> + unsigned int nr_suspend_regs;
> + /* name of the parent clock needed for CMU register access */
> + const char *clk_name;
> +};
Have you considered extending struct samsung_cmu_info instead
(all instances are __initdata anyway so slight increase of struct's
size shouldn't be a problem)?
> +static const struct samsung_clk_reg_dump g2d_suspend_regs[] = {
> + {MUX_SEL_G2D0, 0},
Minor nit: preferred CodingStyle is:
{ MUX_SEL_G2D0, 0 },
( ditto for other struct samsung_clk_reg_dump instances )
> + clk_table = devm_kcalloc(dev, info->nr_clk_ids, sizeof(struct clk *),
> + GFP_KERNEL);
> + if (!clk_table) {
> + dev_err(dev, "could not allocate clock lookup table\n");
> + return -ENOMEM;
> + }
checkpatch.pl complains with:
WARNING: Possible unnecessary 'out of memory' message
#681: FILE: drivers/clk/samsung/clk-exynos5433.c:5541:
+ if (!clk_table) {
+ dev_err(dev, "could not allocate clock lookup table\n");
Best regards,
--
Bartlomiej Zolnierkiewicz
Samsung R&D Institute Poland
Samsung Electronics
WARNING: multiple messages have this Message-ID (diff)
From: b.zolnierkie@samsung.com (Bartlomiej Zolnierkiewicz)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 5/5] clocks: exynos5433: add runtime pm support
Date: Thu, 01 Sep 2016 18:55:38 +0200 [thread overview]
Message-ID: <2519946.fIx2ZfLU7C@amdc1976> (raw)
In-Reply-To: <1472737551-15272-6-git-send-email-m.szyprowski@samsung.com>
Hi,
On Thursday, September 01, 2016 03:45:51 PM Marek Szyprowski wrote:
> Add runtime pm support for all clock controller units (CMU), which belongs
> to power domains and require special handling during on/off operations.
> Typically special values has to be written to MUX registers to change
> internal clocks parents to OSC clock before turning power off. During such
> operation all clocks, which enters CMU has to be enabled to let MUX to
> stabilize. Also for each CMU there is one special parent clock, which has
> to be enabled all the time when any access to CMU registers is done.
>
> This patch solves most of the mysterious external abort and freeze issues
> caused by a lack of proper parent CMU clock enabled or incorrect turn off
> procedure.
>
> Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
> ---
> drivers/clk/samsung/clk-exynos5433.c | 462 +++++++++++++++++++++++++++--------
> 1 file changed, 363 insertions(+), 99 deletions(-)
>
> diff --git a/drivers/clk/samsung/clk-exynos5433.c b/drivers/clk/samsung/clk-exynos5433.c
> index ea1608682d7f..9fb896b56ddf 100644
> --- a/drivers/clk/samsung/clk-exynos5433.c
> +++ b/drivers/clk/samsung/clk-exynos5433.c
> @@ -9,9 +9,14 @@
> * Common Clock Framework support for Exynos5443 SoC.
> */
>
> +#include <linux/clk.h>
> #include <linux/clk-provider.h>
> #include <linux/of.h>
> #include <linux/of_address.h>
> +#include <linux/of_device.h>
> +#include <linux/platform_device.h>
> +#include <linux/pm_runtime.h>
> +#include <linux/slab.h>
>
> #include <dt-bindings/clock/exynos5433.h>
>
> @@ -19,6 +24,37 @@
> #include "clk-cpu.h"
> #include "clk-pll.h"
>
> +struct exynos5433_cmu_info {
> + /* total number of clocks with IDs assigned*/
> + unsigned int nr_clk_ids;
> + /* list of pll clocks and respective count */
> + const struct samsung_pll_clock *pll_clks;
> + unsigned int nr_pll_clks;
> + /* list of mux clocks and respective count */
> + const struct samsung_mux_clock *mux_clks;
> + unsigned int nr_mux_clks;
> + /* list of div clocks and respective count */
> + const struct samsung_div_clock *div_clks;
> + unsigned int nr_div_clks;
> + /* list of gate clocks and respective count */
> + const struct samsung_gate_clock *gate_clks;
> + unsigned int nr_gate_clks;
> + /* list of fixed clocks and respective count */
> + const struct samsung_fixed_rate_clock *fixed_clks;
> + unsigned int nr_fixed_clks;
> + /* list of fixed factor clocks and respective count */
> + const struct samsung_fixed_factor_clock *fixed_factor_clks;
> + unsigned int nr_fixed_factor_clks;
> + /* list and number of clocks registers */
> + const unsigned long *clk_regs;
> + unsigned int nr_clk_regs;
> + /* list and number of clocks registers to set before suspend */
> + const struct samsung_clk_reg_dump *suspend_regs;
> + unsigned int nr_suspend_regs;
> + /* name of the parent clock needed for CMU register access */
> + const char *clk_name;
> +};
Have you considered extending struct samsung_cmu_info instead
(all instances are __initdata anyway so slight increase of struct's
size shouldn't be a problem)?
> +static const struct samsung_clk_reg_dump g2d_suspend_regs[] = {
> + {MUX_SEL_G2D0, 0},
Minor nit: preferred CodingStyle is:
{ MUX_SEL_G2D0, 0 },
( ditto for other struct samsung_clk_reg_dump instances )
> + clk_table = devm_kcalloc(dev, info->nr_clk_ids, sizeof(struct clk *),
> + GFP_KERNEL);
> + if (!clk_table) {
> + dev_err(dev, "could not allocate clock lookup table\n");
> + return -ENOMEM;
> + }
checkpatch.pl complains with:
WARNING: Possible unnecessary 'out of memory' message
#681: FILE: drivers/clk/samsung/clk-exynos5433.c:5541:
+ if (!clk_table) {
+ dev_err(dev, "could not allocate clock lookup table\n");
Best regards,
--
Bartlomiej Zolnierkiewicz
Samsung R&D Institute Poland
Samsung Electronics
next prev parent reply other threads:[~2016-09-01 16:55 UTC|newest]
Thread overview: 68+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-09-01 13:45 [PATCH 0/5] Add runtime PM support for clocks (on Exynos SoC example) Marek Szyprowski
2016-09-01 13:45 ` Marek Szyprowski
2016-09-01 13:45 ` Marek Szyprowski
2016-09-01 13:45 ` [PATCH 1/5] clk: add support for runtime pm Marek Szyprowski
2016-09-01 13:45 ` Marek Szyprowski
2016-09-01 13:45 ` Marek Szyprowski
2016-09-01 15:10 ` [PATCH] clk: fix boolreturn.cocci warnings kbuild test robot
2016-09-01 15:10 ` kbuild test robot
2016-09-01 15:10 ` kbuild test robot
2016-09-01 15:10 ` [PATCH 1/5] clk: add support for runtime pm kbuild test robot
2016-09-01 15:10 ` kbuild test robot
2016-09-01 15:10 ` kbuild test robot
2016-09-08 0:19 ` Stephen Boyd
2016-09-08 0:19 ` Stephen Boyd
2016-09-12 10:18 ` Marek Szyprowski
2016-09-12 10:18 ` Marek Szyprowski
2016-09-12 22:31 ` Stephen Boyd
2016-09-12 22:31 ` Stephen Boyd
2016-09-13 9:07 ` Marek Szyprowski
2016-09-13 9:07 ` Marek Szyprowski
2016-09-14 21:39 ` Stephen Boyd
2016-09-14 21:39 ` Stephen Boyd
2016-09-15 8:32 ` Marek Szyprowski
2016-09-15 8:32 ` Marek Szyprowski
2016-09-13 7:24 ` Ulf Hansson
2016-09-13 7:24 ` Ulf Hansson
2016-09-13 8:49 ` Ulf Hansson
2016-09-13 8:49 ` Ulf Hansson
2016-09-13 13:13 ` Marek Szyprowski
2016-09-13 13:13 ` Marek Szyprowski
2016-09-13 15:03 ` Ulf Hansson
2016-09-13 15:03 ` Ulf Hansson
2016-09-14 10:11 ` Marek Szyprowski
2016-09-14 10:11 ` Marek Szyprowski
2016-09-01 13:45 ` [PATCH 2/5] clock: samsung: " Marek Szyprowski
2016-09-01 13:45 ` Marek Szyprowski
2016-09-01 13:45 ` Marek Szyprowski
2016-09-01 13:45 ` [PATCH 3/5] clocks: exynos4x12: add runtime pm support for ISP clocks Marek Szyprowski
2016-09-01 13:45 ` Marek Szyprowski
2016-09-01 13:45 ` Marek Szyprowski
2016-09-01 21:49 ` kbuild test robot
2016-09-01 21:49 ` kbuild test robot
2016-09-01 21:49 ` kbuild test robot
2016-09-01 13:45 ` [PATCH 4/5] ARM: dts: exynos: add support for ISP power domain to exynos4x12 clocks device Marek Szyprowski
2016-09-01 13:45 ` Marek Szyprowski
2016-09-01 13:45 ` Marek Szyprowski
2016-09-08 0:22 ` Stephen Boyd
2016-09-08 0:22 ` Stephen Boyd
2016-09-12 10:23 ` Marek Szyprowski
2016-09-12 10:23 ` Marek Szyprowski
2016-09-12 22:28 ` Stephen Boyd
2016-09-12 22:28 ` Stephen Boyd
2016-09-15 12:06 ` Marek Szyprowski
2016-09-15 12:06 ` Marek Szyprowski
2016-09-15 12:06 ` Marek Szyprowski
2016-09-15 14:13 ` Ulf Hansson
2016-09-15 14:13 ` Ulf Hansson
2016-09-01 13:45 ` [PATCH 5/5] clocks: exynos5433: add runtime pm support Marek Szyprowski
2016-09-01 13:45 ` Marek Szyprowski
2016-09-01 16:55 ` Bartlomiej Zolnierkiewicz [this message]
2016-09-01 16:55 ` Bartlomiej Zolnierkiewicz
2016-09-01 16:55 ` Bartlomiej Zolnierkiewicz
2016-09-01 23:00 ` kbuild test robot
2016-09-01 23:00 ` kbuild test robot
2016-09-01 23:00 ` kbuild test robot
2016-09-02 19:05 ` kbuild test robot
2016-09-02 19:05 ` kbuild test robot
2016-09-02 19:05 ` kbuild test robot
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=2519946.fIx2ZfLU7C@amdc1976 \
--to=b.zolnierkie@samsung.com \
--cc=cw00.choi@samsung.com \
--cc=inki.dae@samsung.com \
--cc=k.kozlowski@samsung.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-clk@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=linux-samsung-soc@vger.kernel.org \
--cc=m.szyprowski@samsung.com \
--cc=mturquette@baylibre.com \
--cc=s.nawrocki@samsung.com \
--cc=sboyd@codeaurora.org \
--cc=ulf.hansson@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 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.