All of lore.kernel.org
 help / color / mirror / Atom feed
From: b38343@freescale.com (Robin Gong)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v1] rtc: snvs: add poweroff function
Date: Fri, 26 Sep 2014 10:21:12 +0800	[thread overview]
Message-ID: <20140926022110.GA21831@Robin-OptiPlex-780> (raw)
In-Reply-To: <20140926012410.GD21077@dragon>

On Fri, Sep 26, 2014 at 09:24:11AM +0800, Shawn Guo wrote:
> On Thu, Sep 25, 2014 at 10:13:53AM +0800, Robin Gong wrote:
> > On i.mx6 chips, PMIC_ON_REQ can be pulled by snvs LPCR. That can be
> > used poweroff system if PMIC_ON_REQ connected with external PMIC or
> > power control circuit.Power up again if PMIC_ON_REQ pulled high.
> > 
> > Signed-off-by: Robin Gong <b38343@freescale.com>
> 
> I'm not sure it's a good idea to plug poweroff support into RTC driver.
> If RTC driver is built out, poweroff function is gone too.
> 
> Shawn
>
Yes, that's true since there is no real SNVS driver, only snvs-rtc and
snvs-caam driver. I'll pick up the patch about the driver which located
in drivers/power/reset.
> > ---
> >  Documentation/devicetree/bindings/crypto/fsl-sec4.txt |  4 ++++
> >  drivers/rtc/rtc-snvs.c                                | 18 ++++++++++++++++++
> >  2 files changed, 22 insertions(+)
> > 
> > diff --git a/Documentation/devicetree/bindings/crypto/fsl-sec4.txt b/Documentation/devicetree/bindings/crypto/fsl-sec4.txt
> > index e402277..00d67f2 100644
> > --- a/Documentation/devicetree/bindings/crypto/fsl-sec4.txt
> > +++ b/Documentation/devicetree/bindings/crypto/fsl-sec4.txt
> > @@ -363,11 +363,15 @@ Secure Non-Volatile Storage (SNVS) Low Power (LP) RTC Node
> >        Value type: <prop-encoded-array>
> >        Definition: A standard property.  Specifies the physical
> >            address and length of the SNVS LP configuration registers.
> > +  - fsl,poweroff
> > +      Usage: opertional, recommend if PMIC_ON_REQ connected with external
> > +	PMIC or power control circuit.
> >  
> >  EXAMPLE
> >  	sec_mon_rtc_lp at 314000 {
> >  		compatible = "fsl,sec-v4.0-mon-rtc-lp";
> >  		reg = <0x34 0x58>;
> > +		fsl,poweroff;
> >  	};
> >  
> >  =====================================================================
> > diff --git a/drivers/rtc/rtc-snvs.c b/drivers/rtc/rtc-snvs.c
> > index fa384fe..ef32541 100644
> > --- a/drivers/rtc/rtc-snvs.c
> > +++ b/drivers/rtc/rtc-snvs.c
> > @@ -29,6 +29,8 @@
> >  #define SNVS_LPCR_SRTC_ENV	(1 << 0)
> >  #define SNVS_LPCR_LPTA_EN	(1 << 1)
> >  #define SNVS_LPCR_LPWUI_EN	(1 << 3)
> > +#define SNVS_LPCR_DP		(1 << 5)
> > +#define SNVS_LPCR_TOP		(1 << 6)
> >  #define SNVS_LPSR_LPTA		(1 << 0)
> >  
> >  #define SNVS_LPPGDR_INIT	0x41736166
> > @@ -41,6 +43,8 @@ struct snvs_rtc_data {
> >  	spinlock_t lock;
> >  };
> >  
> > +static void __iomem *snvs_base;
> > +
> >  static u32 rtc_read_lp_counter(void __iomem *ioaddr)
> >  {
> >  	u64 read1, read2;
> > @@ -241,8 +245,17 @@ static irqreturn_t snvs_rtc_irq_handler(int irq, void *dev_id)
> >  	return events ? IRQ_HANDLED : IRQ_NONE;
> >  }
> >  
> > +static void snvs_poweroff(void)
> > +{
> > +	u32 value;
> > +
> > +	value = readl(snvs_base + SNVS_LPCR);
> > +	writel(value | SNVS_LPCR_DP | SNVS_LPCR_TOP, snvs_base + SNVS_LPCR);
> > +}
> > +
> >  static int snvs_rtc_probe(struct platform_device *pdev)
> >  {
> > +	struct device_node *np = pdev->dev.of_node;
> >  	struct snvs_rtc_data *data;
> >  	struct resource *res;
> >  	int ret;
> > @@ -260,6 +273,11 @@ static int snvs_rtc_probe(struct platform_device *pdev)
> >  	if (data->irq < 0)
> >  		return data->irq;
> >  
> > +	if (np && of_get_property(np, "fsl,poweroff", NULL)) {
> > +		snvs_base = data->ioaddr;
> > +		pm_power_off = snvs_poweroff;
> > +	}
> > +
> >  	platform_set_drvdata(pdev, data);
> >  
> >  	spin_lock_init(&data->lock);
> > -- 
> > 1.9.1
> > 

WARNING: multiple messages have this Message-ID (diff)
From: Robin Gong <b38343@freescale.com>
To: Shawn Guo <shawn.guo@freescale.com>
Cc: robh+dt@kernel.org, pawel.moll@arm.com, mark.rutland@arm.com,
	ijc+devicetree@hellion.org.uk, galak@codeaurora.org,
	a.zummo@towertech.it, grant.likely@linaro.org,
	kernel@pengutronix.de, LW@KARO-electronics.de,
	linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH v1] rtc: snvs: add poweroff function
Date: Fri, 26 Sep 2014 10:21:12 +0800	[thread overview]
Message-ID: <20140926022110.GA21831@Robin-OptiPlex-780> (raw)
In-Reply-To: <20140926012410.GD21077@dragon>

On Fri, Sep 26, 2014 at 09:24:11AM +0800, Shawn Guo wrote:
> On Thu, Sep 25, 2014 at 10:13:53AM +0800, Robin Gong wrote:
> > On i.mx6 chips, PMIC_ON_REQ can be pulled by snvs LPCR. That can be
> > used poweroff system if PMIC_ON_REQ connected with external PMIC or
> > power control circuit.Power up again if PMIC_ON_REQ pulled high.
> > 
> > Signed-off-by: Robin Gong <b38343@freescale.com>
> 
> I'm not sure it's a good idea to plug poweroff support into RTC driver.
> If RTC driver is built out, poweroff function is gone too.
> 
> Shawn
>
Yes, that's true since there is no real SNVS driver, only snvs-rtc and
snvs-caam driver. I'll pick up the patch about the driver which located
in drivers/power/reset.
> > ---
> >  Documentation/devicetree/bindings/crypto/fsl-sec4.txt |  4 ++++
> >  drivers/rtc/rtc-snvs.c                                | 18 ++++++++++++++++++
> >  2 files changed, 22 insertions(+)
> > 
> > diff --git a/Documentation/devicetree/bindings/crypto/fsl-sec4.txt b/Documentation/devicetree/bindings/crypto/fsl-sec4.txt
> > index e402277..00d67f2 100644
> > --- a/Documentation/devicetree/bindings/crypto/fsl-sec4.txt
> > +++ b/Documentation/devicetree/bindings/crypto/fsl-sec4.txt
> > @@ -363,11 +363,15 @@ Secure Non-Volatile Storage (SNVS) Low Power (LP) RTC Node
> >        Value type: <prop-encoded-array>
> >        Definition: A standard property.  Specifies the physical
> >            address and length of the SNVS LP configuration registers.
> > +  - fsl,poweroff
> > +      Usage: opertional, recommend if PMIC_ON_REQ connected with external
> > +	PMIC or power control circuit.
> >  
> >  EXAMPLE
> >  	sec_mon_rtc_lp@314000 {
> >  		compatible = "fsl,sec-v4.0-mon-rtc-lp";
> >  		reg = <0x34 0x58>;
> > +		fsl,poweroff;
> >  	};
> >  
> >  =====================================================================
> > diff --git a/drivers/rtc/rtc-snvs.c b/drivers/rtc/rtc-snvs.c
> > index fa384fe..ef32541 100644
> > --- a/drivers/rtc/rtc-snvs.c
> > +++ b/drivers/rtc/rtc-snvs.c
> > @@ -29,6 +29,8 @@
> >  #define SNVS_LPCR_SRTC_ENV	(1 << 0)
> >  #define SNVS_LPCR_LPTA_EN	(1 << 1)
> >  #define SNVS_LPCR_LPWUI_EN	(1 << 3)
> > +#define SNVS_LPCR_DP		(1 << 5)
> > +#define SNVS_LPCR_TOP		(1 << 6)
> >  #define SNVS_LPSR_LPTA		(1 << 0)
> >  
> >  #define SNVS_LPPGDR_INIT	0x41736166
> > @@ -41,6 +43,8 @@ struct snvs_rtc_data {
> >  	spinlock_t lock;
> >  };
> >  
> > +static void __iomem *snvs_base;
> > +
> >  static u32 rtc_read_lp_counter(void __iomem *ioaddr)
> >  {
> >  	u64 read1, read2;
> > @@ -241,8 +245,17 @@ static irqreturn_t snvs_rtc_irq_handler(int irq, void *dev_id)
> >  	return events ? IRQ_HANDLED : IRQ_NONE;
> >  }
> >  
> > +static void snvs_poweroff(void)
> > +{
> > +	u32 value;
> > +
> > +	value = readl(snvs_base + SNVS_LPCR);
> > +	writel(value | SNVS_LPCR_DP | SNVS_LPCR_TOP, snvs_base + SNVS_LPCR);
> > +}
> > +
> >  static int snvs_rtc_probe(struct platform_device *pdev)
> >  {
> > +	struct device_node *np = pdev->dev.of_node;
> >  	struct snvs_rtc_data *data;
> >  	struct resource *res;
> >  	int ret;
> > @@ -260,6 +273,11 @@ static int snvs_rtc_probe(struct platform_device *pdev)
> >  	if (data->irq < 0)
> >  		return data->irq;
> >  
> > +	if (np && of_get_property(np, "fsl,poweroff", NULL)) {
> > +		snvs_base = data->ioaddr;
> > +		pm_power_off = snvs_poweroff;
> > +	}
> > +
> >  	platform_set_drvdata(pdev, data);
> >  
> >  	spin_lock_init(&data->lock);
> > -- 
> > 1.9.1
> > 

WARNING: multiple messages have this Message-ID (diff)
From: Robin Gong <b38343@freescale.com>
To: Shawn Guo <shawn.guo@freescale.com>
Cc: <robh+dt@kernel.org>, <pawel.moll@arm.com>,
	<mark.rutland@arm.com>, <ijc+devicetree@hellion.org.uk>,
	<galak@codeaurora.org>, <a.zummo@towertech.it>,
	<grant.likely@linaro.org>, <kernel@pengutronix.de>,
	<LW@KARO-electronics.de>, <linux-arm-kernel@lists.infradead.org>,
	<devicetree@vger.kernel.org>, <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v1] rtc: snvs: add poweroff function
Date: Fri, 26 Sep 2014 10:21:12 +0800	[thread overview]
Message-ID: <20140926022110.GA21831@Robin-OptiPlex-780> (raw)
In-Reply-To: <20140926012410.GD21077@dragon>

On Fri, Sep 26, 2014 at 09:24:11AM +0800, Shawn Guo wrote:
> On Thu, Sep 25, 2014 at 10:13:53AM +0800, Robin Gong wrote:
> > On i.mx6 chips, PMIC_ON_REQ can be pulled by snvs LPCR. That can be
> > used poweroff system if PMIC_ON_REQ connected with external PMIC or
> > power control circuit.Power up again if PMIC_ON_REQ pulled high.
> > 
> > Signed-off-by: Robin Gong <b38343@freescale.com>
> 
> I'm not sure it's a good idea to plug poweroff support into RTC driver.
> If RTC driver is built out, poweroff function is gone too.
> 
> Shawn
>
Yes, that's true since there is no real SNVS driver, only snvs-rtc and
snvs-caam driver. I'll pick up the patch about the driver which located
in drivers/power/reset.
> > ---
> >  Documentation/devicetree/bindings/crypto/fsl-sec4.txt |  4 ++++
> >  drivers/rtc/rtc-snvs.c                                | 18 ++++++++++++++++++
> >  2 files changed, 22 insertions(+)
> > 
> > diff --git a/Documentation/devicetree/bindings/crypto/fsl-sec4.txt b/Documentation/devicetree/bindings/crypto/fsl-sec4.txt
> > index e402277..00d67f2 100644
> > --- a/Documentation/devicetree/bindings/crypto/fsl-sec4.txt
> > +++ b/Documentation/devicetree/bindings/crypto/fsl-sec4.txt
> > @@ -363,11 +363,15 @@ Secure Non-Volatile Storage (SNVS) Low Power (LP) RTC Node
> >        Value type: <prop-encoded-array>
> >        Definition: A standard property.  Specifies the physical
> >            address and length of the SNVS LP configuration registers.
> > +  - fsl,poweroff
> > +      Usage: opertional, recommend if PMIC_ON_REQ connected with external
> > +	PMIC or power control circuit.
> >  
> >  EXAMPLE
> >  	sec_mon_rtc_lp@314000 {
> >  		compatible = "fsl,sec-v4.0-mon-rtc-lp";
> >  		reg = <0x34 0x58>;
> > +		fsl,poweroff;
> >  	};
> >  
> >  =====================================================================
> > diff --git a/drivers/rtc/rtc-snvs.c b/drivers/rtc/rtc-snvs.c
> > index fa384fe..ef32541 100644
> > --- a/drivers/rtc/rtc-snvs.c
> > +++ b/drivers/rtc/rtc-snvs.c
> > @@ -29,6 +29,8 @@
> >  #define SNVS_LPCR_SRTC_ENV	(1 << 0)
> >  #define SNVS_LPCR_LPTA_EN	(1 << 1)
> >  #define SNVS_LPCR_LPWUI_EN	(1 << 3)
> > +#define SNVS_LPCR_DP		(1 << 5)
> > +#define SNVS_LPCR_TOP		(1 << 6)
> >  #define SNVS_LPSR_LPTA		(1 << 0)
> >  
> >  #define SNVS_LPPGDR_INIT	0x41736166
> > @@ -41,6 +43,8 @@ struct snvs_rtc_data {
> >  	spinlock_t lock;
> >  };
> >  
> > +static void __iomem *snvs_base;
> > +
> >  static u32 rtc_read_lp_counter(void __iomem *ioaddr)
> >  {
> >  	u64 read1, read2;
> > @@ -241,8 +245,17 @@ static irqreturn_t snvs_rtc_irq_handler(int irq, void *dev_id)
> >  	return events ? IRQ_HANDLED : IRQ_NONE;
> >  }
> >  
> > +static void snvs_poweroff(void)
> > +{
> > +	u32 value;
> > +
> > +	value = readl(snvs_base + SNVS_LPCR);
> > +	writel(value | SNVS_LPCR_DP | SNVS_LPCR_TOP, snvs_base + SNVS_LPCR);
> > +}
> > +
> >  static int snvs_rtc_probe(struct platform_device *pdev)
> >  {
> > +	struct device_node *np = pdev->dev.of_node;
> >  	struct snvs_rtc_data *data;
> >  	struct resource *res;
> >  	int ret;
> > @@ -260,6 +273,11 @@ static int snvs_rtc_probe(struct platform_device *pdev)
> >  	if (data->irq < 0)
> >  		return data->irq;
> >  
> > +	if (np && of_get_property(np, "fsl,poweroff", NULL)) {
> > +		snvs_base = data->ioaddr;
> > +		pm_power_off = snvs_poweroff;
> > +	}
> > +
> >  	platform_set_drvdata(pdev, data);
> >  
> >  	spin_lock_init(&data->lock);
> > -- 
> > 1.9.1
> > 

  reply	other threads:[~2014-09-26  2:21 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-09-25  2:13 [PATCH v1] rtc: snvs: add poweroff function Robin Gong
2014-09-25  2:13 ` Robin Gong
2014-09-25  2:13 ` Robin Gong
2014-09-26  1:24 ` Shawn Guo
2014-09-26  1:24   ` Shawn Guo
2014-09-26  1:24   ` Shawn Guo
2014-09-26  2:21   ` Robin Gong [this message]
2014-09-26  2:21     ` Robin Gong
2014-09-26  2:21     ` Robin Gong

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=20140926022110.GA21831@Robin-OptiPlex-780 \
    --to=b38343@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.