Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1368962 > unrolled thread

Re: [PATCH 15/18] ARM: vf610: PM: initial suspend/resume support

Started byShawn Guo <shawnguo@kernel.org>
First post2016-04-01 04:30 +0200
Last post2016-04-01 08:50 +0200
Articles 2 — 2 participants

Back to article view | Back to linux.kernel

This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by below is the oldest one visible, not the original post.


Contents

  Re: [PATCH 15/18] ARM: vf610: PM: initial suspend/resume support Shawn Guo <shawnguo@kernel.org> - 2016-04-01 04:30 +0200
    Re: [PATCH 15/18] ARM: vf610: PM: initial suspend/resume support Stefan Agner <stefan@agner.ch> - 2016-04-01 08:50 +0200

#1368962 — Re: [PATCH 15/18] ARM: vf610: PM: initial suspend/resume support

FromShawn Guo <shawnguo@kernel.org>
Date2016-04-01 04:30 +0200
SubjectRe: [PATCH 15/18] ARM: vf610: PM: initial suspend/resume support
Message-ID<riX0t-65Z-1@gated-at.bofh.it>
On Wed, Mar 09, 2016 at 06:16:56PM -0800, Stefan Agner wrote:
> Add system suspend and resume support for Vybrid SoC. The standby
> sleep state puts the SoC in STOP mode. The SoC can be woken through
> an interrupt from GPC (Global Power Controller). The GPC can use any
> interrupt as wake-up source. To save power the main PLL1 is bypassed
> and uses the 24MHz on-chip oscillator. However, memory clock need to
> be at full speed, hence the PLL2 needs to be on to keep the memory
> clocked. The mode is completely implemented in C since we can access
> the full memory at all times. The mode provides most power saving
> while being able to be woken by any IRQ as wake-up source.
> 
> The mem sleep state (Suspend-to-RAM) uses Vybrid's LPSTOP2 mode. This
> mode powergates most parts of the SoC expect some peripherials such as
> Wake-Up controller (WKPU) or LP RTC. Parts of the internal SRAM is
> retained too. The suspend code written in assembly runs from this SRAM.
> The code puts the main memory (DDR3) into self-refresh mode and takes
> it out of self-refresh mode on resume. Verified with Colibri VF50/VF61
> V1.2A.
> 
> Signed-off-by: Stefan Agner <stefan@agner.ch>
> ---
>  arch/arm/mach-imx/Makefile        |   3 +
>  arch/arm/mach-imx/common.h        |  10 +
>  arch/arm/mach-imx/mach-vf610.c    |   8 +
>  arch/arm/mach-imx/pm-vf610.c      | 634 ++++++++++++++++++++++++++++++++++++++
>  arch/arm/mach-imx/suspend-vf610.S | 437 ++++++++++++++++++++++++++
>  drivers/clk/imx/clk-vf610.c       |  17 +
>  6 files changed, 1109 insertions(+)
>  create mode 100644 arch/arm/mach-imx/pm-vf610.c
>  create mode 100644 arch/arm/mach-imx/suspend-vf610.S

I know this is how we implemented suspend for i.MX6.  But this is not
the direction moving forward.  When people was pushing a pile of code
adding suspend for i.MX7D, I refused to take it and asked them to push
those hardware details into firmware and use PSCI to implement suspend.
I would like to suggest the same for Vybrid.

Shawn

[toc] | [next] | [standalone]


#1369023

FromStefan Agner <stefan@agner.ch>
Date2016-04-01 08:50 +0200
Message-ID<rj145-vD-9@gated-at.bofh.it>
In reply to#1368962
On 2016-03-31 19:25, Shawn Guo wrote:
> On Wed, Mar 09, 2016 at 06:16:56PM -0800, Stefan Agner wrote:
>> Add system suspend and resume support for Vybrid SoC. The standby
>> sleep state puts the SoC in STOP mode. The SoC can be woken through
>> an interrupt from GPC (Global Power Controller). The GPC can use any
>> interrupt as wake-up source. To save power the main PLL1 is bypassed
>> and uses the 24MHz on-chip oscillator. However, memory clock need to
>> be at full speed, hence the PLL2 needs to be on to keep the memory
>> clocked. The mode is completely implemented in C since we can access
>> the full memory at all times. The mode provides most power saving
>> while being able to be woken by any IRQ as wake-up source.
>>
>> The mem sleep state (Suspend-to-RAM) uses Vybrid's LPSTOP2 mode. This
>> mode powergates most parts of the SoC expect some peripherials such as
>> Wake-Up controller (WKPU) or LP RTC. Parts of the internal SRAM is
>> retained too. The suspend code written in assembly runs from this SRAM.
>> The code puts the main memory (DDR3) into self-refresh mode and takes
>> it out of self-refresh mode on resume. Verified with Colibri VF50/VF61
>> V1.2A.
>>
>> Signed-off-by: Stefan Agner <stefan@agner.ch>
>> ---
>>  arch/arm/mach-imx/Makefile        |   3 +
>>  arch/arm/mach-imx/common.h        |  10 +
>>  arch/arm/mach-imx/mach-vf610.c    |   8 +
>>  arch/arm/mach-imx/pm-vf610.c      | 634 ++++++++++++++++++++++++++++++++++++++
>>  arch/arm/mach-imx/suspend-vf610.S | 437 ++++++++++++++++++++++++++
>>  drivers/clk/imx/clk-vf610.c       |  17 +
>>  6 files changed, 1109 insertions(+)
>>  create mode 100644 arch/arm/mach-imx/pm-vf610.c
>>  create mode 100644 arch/arm/mach-imx/suspend-vf610.S
> 
> I know this is how we implemented suspend for i.MX6.  But this is not
> the direction moving forward.  When people was pushing a pile of code
> adding suspend for i.MX7D, I refused to take it and asked them to push
> those hardware details into firmware and use PSCI to implement suspend.
> I would like to suggest the same for Vybrid.

Yeah I saw your comment on the i.MX7D patchset, and kind of hoped it
does not apply for Vybrid :-)

I see, need to look into PSCI closer, and see how much work it would be
to set that up and transfer the code into it...

--
Stefan

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web