From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dinh Nguyen Subject: Re: [PATCH v4 1/2] ARM: socfpga: support suspend to ram Date: Tue, 26 May 2015 08:48:57 -0500 Message-ID: <556479C9.5070208@opensource.altera.com> References: <1432317735-29413-1-git-send-email-atull@opensource.altera.com> <1432317735-29413-2-git-send-email-atull@opensource.altera.com> Mime-Version: 1.0 Content-Type: text/plain; charset="windows-1252" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <1432317735-29413-2-git-send-email-atull@opensource.altera.com> Sender: linux-kernel-owner@vger.kernel.org To: Alan Tull , Rob Herring Cc: Pavel Machek , Arnd Bergmann , Steffen Trumtrar , Pawel Moll , Mark Rutland , Ian Campbell , Kumar Gala , devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Russell King , linux-arm-kernel@lists.infradead.org, Delicious Quinoq List-Id: devicetree@vger.kernel.org Hi Alan, On 5/22/15 1:02 PM, Alan Tull wrote: > Add code that requests that the sdr controller go into > self-refresh mode. This code is run from ocram. > > This patch assumes that u-boot has already configured sdr: > sdr.ctrlcfg.lowpwreq.selfrfshmask = 3 > sdr.ctrlcfg.lowpwrtiming.clkdisablecycles = 8 > sdr.ctrlcfg.dramtiming4.selfrfshexit = 512 > > Suspend-to-RAM and EDAC support are mutually exclusive on SOCFPGA > platforms. CONFIG_SOCFPGA_SUSPEND enables suspend-to-RAM and > prevents selecting CONFIG_EDAC_ALTERA_MC. > > How to suspend to ram: > $ echo enabled > \ > /sys/devices/soc/ffc02000.serial0/tty/ttyS0/power/wakeup > > $ echo -n mem > /sys/power/state > > Signed-off-by: Alan Tull > Cc: Pavel Machek > Cc: Arnd Bergmann > Cc: Dinh Nguyen > Cc: Steffen Trumtrar > --- > v2: use Generic on-chip SRAM driver to allocate ocram > rm fncpy_align since generic allocator handles alignment > check __arm_ioremap_exec return code > check for NULL pointers > add a comment regarding sdram controller configuration > v3: fix renamed #define > propagate socfpga_setup_ocram_self_refresh error code > v4: Kconfig: don't need to select GENERIC_ALLOCATER > add CONFIG_SOCFPGA_SUSPEND > make s2r and EDAC support mutually exclusive > socfpga.c: add sdr_ctl_base_addr > return error if ocram not available in device tree > update copyright years > --- > + > +static int socfpga_pm_suspend(unsigned long arg) > +{ > + u32 ret; > + > + if (!sdr_ctl_base_addr || !socfpga_scu_base_addr) > + return -EFAULT; > + > + ret = socfpga_sdram_self_refresh_in_ocram( > + (u32)sdr_ctl_base_addr, (u32)socfpga_scu_base_addr); > + I had a patch that removed socfpga_scu_base_addr from being a global and just a local variable in: f6e14376fb20 ARM: socfpga: use of_iomap to map the SCU This patch will be in v4.2 and is currently in arm-soc/next or at my fork: kernel/git/dinguyen/linux.git socfpga_for_next_arria10 So you will either need to make socfpga_scu_base_addr global again, or you can use the asm instruction to get the SCU base addr. Sorry about that.. Dinh