From: b20788@freescale.com (Anson Huang)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 1/3] ARM: imx: enable anatop suspend/resume
Date: Wed, 20 Mar 2013 16:45:54 -0400 [thread overview]
Message-ID: <20130320204554.GA13929@ubuntu> (raw)
In-Reply-To: <20130320072930.GC26941@S2101-09.ap.freescale.net>
On Wed, Mar 20, 2013 at 03:29:33PM +0800, Shawn Guo wrote:
> On Wed, Mar 20, 2013 at 01:39:38PM -0400, Anson Huang wrote:
> > anatop module have sereval configurations for user
> > to reduce the power consumption in suspend, provide
> > suspend/resume interface for further use and enable
> > fet_odrive to reduce CORE LDO leakage during suspend.
> >
> > Signed-off-by: Anson Huang <b20788@freescale.com>
> > ---
> > arch/arm/mach-imx/Kconfig | 4 ++++
> > arch/arm/mach-imx/Makefile | 1 +
> > arch/arm/mach-imx/anatop.c | 50 ++++++++++++++++++++++++++++++++++++++++
>
> I like the idea of having an anatop.c for all those anatop related
> setup. Please move those anatop related code in mach-imx6q.c
> into there as well. Leaving them out there beats the idea of having
> a centralized place for anatop configurations.
will do that in V2.
>
> > arch/arm/mach-imx/common.h | 3 +++
> > arch/arm/mach-imx/mach-imx6q.c | 1 +
> > arch/arm/mach-imx/pm-imx6q.c | 2 ++
> > 6 files changed, 61 insertions(+)
> > create mode 100644 arch/arm/mach-imx/anatop.c
> >
> > diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig
> > index 4c9c6f9..7abaa6e 100644
> > --- a/arch/arm/mach-imx/Kconfig
> > +++ b/arch/arm/mach-imx/Kconfig
> > @@ -74,6 +74,9 @@ config HAVE_IMX_MMDC
> > config HAVE_IMX_SRC
> > def_bool y if SMP
> >
> > +config HAVE_IMX_ANATOP
> > + bool
> > +
>
> Please have it added before "config HAVE_IMX_GPC". We are trying to
> have them sorted in alphabet.
Accepted
>
> > config IMX_HAVE_IOMUX_V1
> > bool
> >
> > @@ -816,6 +819,7 @@ config SOC_IMX6Q
> > select HAVE_IMX_GPC
> > select HAVE_IMX_MMDC
> > select HAVE_IMX_SRC
> > + select HAVE_IMX_ANATOP
>
> Ditto
Accepted
>
> > select HAVE_SMP
> > select MFD_SYSCON
> > select PINCTRL
> > diff --git a/arch/arm/mach-imx/Makefile b/arch/arm/mach-imx/Makefile
> > index c4ce090..f4badaa 100644
> > --- a/arch/arm/mach-imx/Makefile
> > +++ b/arch/arm/mach-imx/Makefile
> > @@ -95,6 +95,7 @@ obj-$(CONFIG_MACH_VPR200) += mach-vpr200.o
> > obj-$(CONFIG_HAVE_IMX_GPC) += gpc.o
> > obj-$(CONFIG_HAVE_IMX_MMDC) += mmdc.o
> > obj-$(CONFIG_HAVE_IMX_SRC) += src.o
> > +obj-$(CONFIG_HAVE_IMX_ANATOP) += anatop.o
>
> Ditto
Accepted
>
> > AFLAGS_headsmp.o :=-Wa,-march=armv7-a
> > obj-$(CONFIG_SMP) += headsmp.o platsmp.o
> > obj-$(CONFIG_HOTPLUG_CPU) += hotplug.o
> > diff --git a/arch/arm/mach-imx/anatop.c b/arch/arm/mach-imx/anatop.c
> > new file mode 100644
> > index 0000000..8f6ab27
> > --- /dev/null
> > +++ b/arch/arm/mach-imx/anatop.c
> > @@ -0,0 +1,50 @@
> > +/*
> > + * Copyright (C) 2013 Freescale Semiconductor, Inc.
> > + *
> > + * The code contained herein is licensed under the GNU General Public
> > + * License. You may obtain a copy of the GNU General Public License
> > + * Version 2 or later at the following locations:
> > + *
> > + * http://www.opensource.org/licenses/gpl-license.html
> > + * http://www.gnu.org/copyleft/gpl.html
> > + */
> > +
> > +#include <linux/err.h>
> > +#include <linux/io.h>
> > +#include <linux/of.h>
> > +#include <linux/of_address.h>
> > +#include <linux/mfd/syscon.h>
> > +#include <linux/regmap.h>
> > +
> > +#define REG_SET 0x4
> > +#define REG_CLR 0x8
> > +#define ANA_REG_CORE 0x140
>
> The abbreviation ANA is used here ...
>
> > +
> > +#define BM_ANADIG_REG_CORE_FET_ODRIVE 0x20000000
>
> ... while "ANADIG" is here. Please be consistent.
Accepted.
>
> > +
> > +static struct regmap *anatop;
> > +
> > +void imx_anatop_enable_fet_odrive(bool enable)
>
> static?
Accepted.
>
> > +{
> > + regmap_write(anatop, ANA_REG_CORE + (enable ?
> > + REG_SET : REG_CLR), BM_ANADIG_REG_CORE_FET_ODRIVE);
>
> This is a nit, but I think the following indent is nicer for reading.
>
> regmap_write(anatop, ANA_REG_CORE + (enable ? REG_SET : REG_CLR),
> BM_ANADIG_REG_CORE_FET_ODRIVE);
Accepted.
>
> > +}
> > +
> > +void imx_anatop_pre_suspend(void)
>
> static?
This function will be called outside this file, so we can NOT use static here.
>
> Shawn
>
> > +{
> > + imx_anatop_enable_fet_odrive(true);
> > +}
> > +
> > +void imx_anatop_post_resume(void)
> > +{
> > + imx_anatop_enable_fet_odrive(false);
> > +}
> > +
> > +void __init imx_anatop_init(void)
> > +{
> > + anatop = syscon_regmap_lookup_by_compatible("fsl,imx6q-anatop");
> > + if (IS_ERR(anatop)) {
> > + pr_err("%s: failed to find imx6q-anatop regmap!\n", __func__);
> > + return;
> > + }
> > +}
> > diff --git a/arch/arm/mach-imx/common.h b/arch/arm/mach-imx/common.h
> > index 5a800bf..004c2b3 100644
> > --- a/arch/arm/mach-imx/common.h
> > +++ b/arch/arm/mach-imx/common.h
> > @@ -129,6 +129,9 @@ extern void imx_src_prepare_restart(void);
> > extern void imx_gpc_init(void);
> > extern void imx_gpc_pre_suspend(void);
> > extern void imx_gpc_post_resume(void);
> > +extern void imx_anatop_init(void);
> > +extern void imx_anatop_pre_suspend(void);
> > +extern void imx_anatop_post_resume(void);
> > extern int imx6q_set_lpm(enum mxc_cpu_pwr_mode mode);
> > extern void imx6q_set_chicken_bit(void);
> >
> > diff --git a/arch/arm/mach-imx/mach-imx6q.c b/arch/arm/mach-imx/mach-imx6q.c
> > index 9ffd103..aa867db 100644
> > --- a/arch/arm/mach-imx/mach-imx6q.c
> > +++ b/arch/arm/mach-imx/mach-imx6q.c
> > @@ -197,6 +197,7 @@ static void __init imx6q_init_machine(void)
> >
> > of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
> >
> > + imx_anatop_init();
> > imx6q_pm_init();
> > imx6q_usb_init();
> > imx6q_1588_init();
> > diff --git a/arch/arm/mach-imx/pm-imx6q.c b/arch/arm/mach-imx/pm-imx6q.c
> > index 5faba7a..05b26cd 100644
> > --- a/arch/arm/mach-imx/pm-imx6q.c
> > +++ b/arch/arm/mach-imx/pm-imx6q.c
> > @@ -34,10 +34,12 @@ static int imx6q_pm_enter(suspend_state_t state)
> > case PM_SUSPEND_MEM:
> > imx6q_set_lpm(STOP_POWER_OFF);
> > imx_gpc_pre_suspend();
> > + imx_anatop_pre_suspend();
> > imx_set_cpu_jump(0, v7_cpu_resume);
> > /* Zzz ... */
> > cpu_suspend(0, imx6q_suspend_finish);
> > imx_smp_prepare();
> > + imx_anatop_post_resume();
> > imx_gpc_post_resume();
> > imx6q_set_lpm(WAIT_CLOCKED);
> > break;
> > --
> > 1.7.9.5
> >
> >
next prev parent reply other threads:[~2013-03-20 20:45 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-03-20 17:39 [PATCH 1/3] ARM: imx: enable anatop suspend/resume Anson Huang
2013-03-20 7:29 ` Shawn Guo
2013-03-20 20:45 ` Anson Huang [this message]
2013-03-20 7:51 ` Shawn Guo
2013-03-20 17:39 ` [PATCH 2/3] ARM: imx: enable periphery well bias for suspend Anson Huang
2013-03-20 7:49 ` Shawn Guo
2013-03-20 21:29 ` Anson Huang
2013-03-20 17:39 ` [PATCH 3/3] ARM: imx: enable RBC to support anatop LPM mode Anson Huang
2013-03-20 9:01 ` Shawn Guo
2013-03-20 22:06 ` Anson Huang
2013-03-20 9:15 ` Shawn Guo
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=20130320204554.GA13929@ubuntu \
--to=b20788@freescale.com \
--cc=linux-arm-kernel@lists.infradead.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 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).