* [PATCH v3 04/11] soc: renesas: rcar-sysc: Make rcar_sysc_power_is_off() static
[not found] ` <1457551127-21934-5-git-send-email-geert+renesas@glider.be>
@ 2016-03-10 9:19 ` Laurent Pinchart
0 siblings, 0 replies; 3+ messages in thread
From: Laurent Pinchart @ 2016-03-10 9:19 UTC (permalink / raw)
To: linux-arm-kernel
Hi Geert,
Thank you for the patch.
On Wednesday 09 March 2016 20:18:40 Geert Uytterhoeven wrote:
> As of commit b12ff41658171f53 ("ARM: shmobile: r8a7779: Remove legacy PM
> Domain remainings"), rcar_sysc_power_is_off() is no longer used from
> SoC-specific code.
>
> Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> ---
> v3:
> - New.
> ---
> drivers/soc/renesas/rcar-sysc.c | 2 +-
> include/linux/soc/renesas/rcar-sysc.h | 1 -
> 2 files changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/drivers/soc/renesas/rcar-sysc.c
> b/drivers/soc/renesas/rcar-sysc.c index 6b21ea2a65bf59b9..28af0b704fc008d2
> 100644
> --- a/drivers/soc/renesas/rcar-sysc.c
> +++ b/drivers/soc/renesas/rcar-sysc.c
> @@ -149,7 +149,7 @@ int rcar_sysc_power_up(const struct rcar_sysc_ch
> *sysc_ch) return rcar_sysc_power(sysc_ch, true);
> }
>
> -bool rcar_sysc_power_is_off(const struct rcar_sysc_ch *sysc_ch)
> +static bool rcar_sysc_power_is_off(const struct rcar_sysc_ch *sysc_ch)
> {
> unsigned int st;
>
> diff --git a/include/linux/soc/renesas/rcar-sysc.h
> b/include/linux/soc/renesas/rcar-sysc.h index
> 96f30c2883881d97..92fc613ab23db091 100644
> --- a/include/linux/soc/renesas/rcar-sysc.h
> +++ b/include/linux/soc/renesas/rcar-sysc.h
> @@ -11,7 +11,6 @@ struct rcar_sysc_ch {
>
> int rcar_sysc_power_down(const struct rcar_sysc_ch *sysc_ch);
> int rcar_sysc_power_up(const struct rcar_sysc_ch *sysc_ch);
> -bool rcar_sysc_power_is_off(const struct rcar_sysc_ch *sysc_ch);
> void __iomem *rcar_sysc_init(phys_addr_t base);
>
> #endif /* __LINUX_SOC_RENESAS_RCAR_SYSC_H__ */
--
Regards,
Laurent Pinchart
^ permalink raw reply [flat|nested] 3+ messages in thread
* [PATCH v3 05/11] soc: renesas: rcar-sysc: Enable Clock Domain for r8a7795 I/O devices
[not found] ` <1457551127-21934-6-git-send-email-geert+renesas@glider.be>
@ 2016-03-10 9:40 ` Laurent Pinchart
2016-03-10 9:51 ` Geert Uytterhoeven
0 siblings, 1 reply; 3+ messages in thread
From: Laurent Pinchart @ 2016-03-10 9:40 UTC (permalink / raw)
To: linux-arm-kernel
Hi Geert,
Thank you for the patch.
On Wednesday 09 March 2016 20:18:41 Geert Uytterhoeven wrote:
> On R-Car H3, some power areas (e.g. A3VP) contain I/O devices, which are
> also part of the CPG/MSSR Clock Domain. Hook up the CPG/MSSR Clock
> Domain attach/detach callbacks to enable power management using module
> clocks.
>
> This also allows to support the Clock Domain for devices in the
> "always-on" power area.
>
> Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
> Cc: Michael Turquette <mturquette@baylibre.com>
> Cc: Stephen Boyd <sboyd@codeaurora.org>
> ---
> v3:
> - Hook up the CPG/MSSR Clock Domain attach/detach callbacks instead of
> using our own copies,
>
> v2:
> - New.
> ---
> drivers/soc/renesas/rcar-sysc.c | 10 ++++++++++
> 1 file changed, 10 insertions(+)
>
> diff --git a/drivers/soc/renesas/rcar-sysc.c
> b/drivers/soc/renesas/rcar-sysc.c index 28af0b704fc008d2..2d6fbeb481883be7
> 100644
> --- a/drivers/soc/renesas/rcar-sysc.c
> +++ b/drivers/soc/renesas/rcar-sysc.c
> @@ -9,6 +9,7 @@
> * for more details.
> */
>
> +#include <linux/clk/renesas.h>
> #include <linux/delay.h>
> #include <linux/err.h>
> #include <linux/mm.h>
> @@ -251,6 +252,15 @@ static void __init rcar_sysc_pd_setup(struct
> device_node *np, gov = &pm_domain_always_on_gov;
> }
>
> +#ifdef CONFIG_ARCH_R8A7795
This is fine for now as the R8A7795 is the only ARM64 model in the R-Car
family, but how do you plan to move forward on this ? Will it be enabled for
ARM64 SoCs straight away, and for ARM32 SoCs when switching from the cpg to
the always-on power domain ?
> + if (!(pd->flags & (PD_CPU | PD_SCU))) {
> + /* Enable Clock Domain for I/O devices */
> + genpd->flags = GENPD_FLAG_PM_CLK;
> + genpd->attach_dev = cpg_mssr_attach_dev;
> + genpd->detach_dev = cpg_mssr_detach_dev;
> + }
> +#endif
> +
> pm_genpd_init(genpd, gov, false);
> genpd->dev_ops.active_wakeup = rcar_sysc_active_wakeup;
> genpd->power_off = rcar_sysc_pd_power_off;
--
Regards,
Laurent Pinchart
^ permalink raw reply [flat|nested] 3+ messages in thread
* [PATCH v3 05/11] soc: renesas: rcar-sysc: Enable Clock Domain for r8a7795 I/O devices
2016-03-10 9:40 ` [PATCH v3 05/11] soc: renesas: rcar-sysc: Enable Clock Domain for r8a7795 I/O devices Laurent Pinchart
@ 2016-03-10 9:51 ` Geert Uytterhoeven
0 siblings, 0 replies; 3+ messages in thread
From: Geert Uytterhoeven @ 2016-03-10 9:51 UTC (permalink / raw)
To: linux-arm-kernel
Hi Laurent,
On Thu, Mar 10, 2016 at 10:40 AM, Laurent Pinchart
<laurent.pinchart@ideasonboard.com> wrote:
> On Wednesday 09 March 2016 20:18:41 Geert Uytterhoeven wrote:
>> On R-Car H3, some power areas (e.g. A3VP) contain I/O devices, which are
>> also part of the CPG/MSSR Clock Domain. Hook up the CPG/MSSR Clock
>> Domain attach/detach callbacks to enable power management using module
>> clocks.
>>
>> This also allows to support the Clock Domain for devices in the
>> "always-on" power area.
>>
>> Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
>> --- a/drivers/soc/renesas/rcar-sysc.c
>> +++ b/drivers/soc/renesas/rcar-sysc.c
>> @@ -251,6 +252,15 @@ static void __init rcar_sysc_pd_setup(struct
>> device_node *np, gov = &pm_domain_always_on_gov;
>> }
>>
>> +#ifdef CONFIG_ARCH_R8A7795
>
> This is fine for now as the R8A7795 is the only ARM64 model in the R-Car
> family, but how do you plan to move forward on this ? Will it be enabled for
> ARM64 SoCs straight away, and for ARM32 SoCs when switching from the cpg to
> the always-on power domain ?
>
>> + if (!(pd->flags & (PD_CPU | PD_SCU))) {
>> + /* Enable Clock Domain for I/O devices */
>> + genpd->flags = GENPD_FLAG_PM_CLK;
>> + genpd->attach_dev = cpg_mssr_attach_dev;
>> + genpd->detach_dev = cpg_mssr_detach_dev;
>> + }
>> +#endif
When enabling the always-on power domain for R-Car H1 and Gen2, this
should become:
if (!(pd->flags & (PD_CPU | PD_SCU))) {
/* Enable Clock Domain for I/O devices */
genpd->flags = GENPD_FLAG_PM_CLK;
#ifdef CONFIG_ARCH_R8A7795 /* or CONFIG_ARM64 */
genpd->attach_dev = cpg_mssr_attach_dev;
genpd->detach_dev = cpg_mssr_detach_dev;
#else
genpd->attach_dev = cpg_mstp_attach_dev;
genpd->detach_dev = cpg_mstp_detach_dev;
#endif
It becomes more gory when migrating R-Car H1 and Gen2 to CPG/MSSR, and
maintaining backwards compatibility, as which callbacks to choose will depend
on the presence of "renesas,cpg-mstp-clocks" device nodes in DT, and a new
CONFIG_CLK_RENESAS_LEGACY option.
Needless to say, it'll be more complex if not all SoCs migrate at once...
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert at linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2016-03-10 9:51 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <1457551127-21934-1-git-send-email-geert+renesas@glider.be>
[not found] ` <1457551127-21934-5-git-send-email-geert+renesas@glider.be>
2016-03-10 9:19 ` [PATCH v3 04/11] soc: renesas: rcar-sysc: Make rcar_sysc_power_is_off() static Laurent Pinchart
[not found] ` <1457551127-21934-6-git-send-email-geert+renesas@glider.be>
2016-03-10 9:40 ` [PATCH v3 05/11] soc: renesas: rcar-sysc: Enable Clock Domain for r8a7795 I/O devices Laurent Pinchart
2016-03-10 9:51 ` Geert Uytterhoeven
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).