From mboxrd@z Thu Jan 1 00:00:00 1970 From: atull Subject: Re: [PATCHv5 1/2] ARM: socfpga: support suspend to ram Date: Fri, 29 May 2015 15:55:47 -0500 Message-ID: References: <1432847977-18880-1-git-send-email-atull@opensource.altera.com> <1432847977-18880-2-git-send-email-atull@opensource.altera.com> <5567D9C4.7090903@opensource.altera.com> Mime-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Return-path: In-Reply-To: <5567D9C4.7090903-yzvPICuk2ABMcg4IHK0kFoH6Mc4MB0Vx@public.gmane.org> Sender: devicetree-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org To: Dinh Nguyen Cc: Rob Herring , Pavel Machek , Arnd Bergmann , Steffen Trumtrar , Pawel Moll , Mark Rutland , Ian Campbell , Kumar Gala , devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Russell King , linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org, Delicious Quinoq List-Id: devicetree@vger.kernel.org On Fri, 29 May 2015, Dinh Nguyen wrote: > > > On 5/28/15 4:19 PM, Alan Tull wrote: > > Add code that requests that the sdr controller go into > > self-refresh mode. This code is run from ocram. > > > > Suspend-to-RAM and EDAC support are mutually exclusive on > > SOCFPGA. If the EDAC is enabled, it will prevent the > > platform from going into suspend. > > > > Example of how to request 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 > > v5: remove compile time dependency > > edac driver will prevent suspend > > don't configure scu standby mode; done in enable_scu(). > > fix comments about required sdram controller configuration > > --- > > arch/arm/mach-socfpga/Kconfig | 10 ++- > > arch/arm/mach-socfpga/Makefile | 1 + > > arch/arm/mach-socfpga/core.h | 6 +- > > arch/arm/mach-socfpga/pm.c | 149 ++++++++++++++++++++++++++++++++++ > > arch/arm/mach-socfpga/self-refresh.S | 136 +++++++++++++++++++++++++++++++ > > arch/arm/mach-socfpga/socfpga.c | 6 +- > > drivers/edac/altera_edac.c | 20 +++++ > > 7 files changed, 325 insertions(+), 3 deletions(-) > > create mode 100644 arch/arm/mach-socfpga/pm.c > > create mode 100644 arch/arm/mach-socfpga/self-refresh.S > > > > Which branch are you basing this patch on? I got a trivial patch > conflict in Kconfig when I applied to arm-soc/for-next and v4.1-rc5. > > Also, I'm getting these sparse warnings: > > arch/arm/mach-socfpga/pm.c:86:25: warning: incorrect type in argument 1 > (different address spaces) > arch/arm/mach-socfpga/pm.c:86:25: expected void * > arch/arm/mach-socfpga/pm.c:86:25: got void [noderef] > *[assigned] suspend_ocram_base > arch/arm/mach-socfpga/pm.c:108:52: warning: cast removes address space > of expression > > Dinh > The problem is that fncpy wants parameter 1 to be void* and __arm_ioremap_exec wants 'void __ioram *'. I get other warnings if I declare 'void *suspend_ocram_base' or cast it as (void *) for fncpy(). It looks like we are stuck with this warning. However sparse kindly pointed out that I needed to fix a declaration in altera_edac.c: -const struct dev_pm_ops altr_sdram_pm_ops = { +static const struct dev_pm_ops altr_sdram_pm_ops = { I'll fix that in the next rev. Alan -- 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