RE: [PATCH 2/4] rtc: OMAP: Add system pm_power_off to rtc driver

2012-11-16 Thread AnilKumar, Chimata
On Fri, Nov 16, 2012 at 11:43:36, AnilKumar, Chimata wrote:
 On Mon, Nov 12, 2012 at 15:17:48, AnilKumar, Chimata wrote:
  On Tue, Nov 06, 2012 at 11:15:34, Bedia, Vaibhav wrote:
   On Mon, Nov 05, 2012 at 15:12:27, AnilKumar, Chimata wrote:
   [...]
 
+#define SHUTDOWN_TIME_SEC  2
+#define SECS_IN_MIN60
+#define WAIT_AFTER (SECS_IN_MIN - 
SHUTDOWN_TIME_SEC)
+#define WAIT_TIME_MS   (SHUTDOWN_TIME_SEC * 1000)
+
 static void __iomem*rtc_base;
 
   [...]
+
+   /* Wait few seconds instead of rollover */
+   do {
+   omap_rtc_read_time(NULL, tm);
+   if (WAIT_AFTER = tm.tm_sec)
+   mdelay(WAIT_TIME_MS);
+   } while (WAIT_AFTER = tm.tm_sec);
   
   This hardcoded wait for rollover doesn't look good. I see some
   helper functions in rtc-lib.c which probably could be used for
   converting the current time to elapsed seconds, add the delay and
   then convert it back to the time to be programmed in RTC without
   worrying about rollover. Why not use that?
  
  I am not aware of those APIs, can you point some?
 
 I have gone through rtc-lib.c, these are the API's I am seeing
 in the library
 
 1. rtc_time_to_tm: Convert seconds since 01-01-1970 00:00:00 to
 Gregorian date
 2. rtc_tm_to_time: Convert Gregorian date to seconds since
 01-01-1970 00:00:00
 
 Steps I followed:-
 
 1: unsigned long time;
 2: omap_rtc_read_time(NULL, tm);
 3: rtc_tm_to_time(tm, time);
 4: pr_info(Time 1 %lu\n, time);
 5: time += 2; /* (2sec) */
 6: rtc_time_to_tm(time, tm);
 7: rtc_tm_to_time(tm, time); /* Only for printing time value */
 8: pr_info(Time 2 %lu\n, time); 
 
 With the above steps I am seeing completely two different time
 values at step4 and step8
 

Nevermind it working now.

Thanks
AnilKumar
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


RE: [PATCH 2/4] rtc: OMAP: Add system pm_power_off to rtc driver

2012-11-15 Thread AnilKumar, Chimata
On Mon, Nov 12, 2012 at 15:17:48, AnilKumar, Chimata wrote:
 On Tue, Nov 06, 2012 at 11:15:34, Bedia, Vaibhav wrote:
  On Mon, Nov 05, 2012 at 15:12:27, AnilKumar, Chimata wrote:
  [...]

   +#define SHUTDOWN_TIME_SEC2
   +#define SECS_IN_MIN  60
   +#define WAIT_AFTER   (SECS_IN_MIN - 
   SHUTDOWN_TIME_SEC)
   +#define WAIT_TIME_MS (SHUTDOWN_TIME_SEC * 1000)
   +
static void __iomem  *rtc_base;

  [...]
   +
   + /* Wait few seconds instead of rollover */
   + do {
   + omap_rtc_read_time(NULL, tm);
   + if (WAIT_AFTER = tm.tm_sec)
   + mdelay(WAIT_TIME_MS);
   + } while (WAIT_AFTER = tm.tm_sec);
  
  This hardcoded wait for rollover doesn't look good. I see some
  helper functions in rtc-lib.c which probably could be used for
  converting the current time to elapsed seconds, add the delay and
  then convert it back to the time to be programmed in RTC without
  worrying about rollover. Why not use that?
 
 I am not aware of those APIs, can you point some?

I have gone through rtc-lib.c, these are the API's I am seeing
in the library

1. rtc_time_to_tm: Convert seconds since 01-01-1970 00:00:00 to
Gregorian date
2. rtc_tm_to_time: Convert Gregorian date to seconds since
01-01-1970 00:00:00

Steps I followed:-

1: unsigned long time;
2: omap_rtc_read_time(NULL, tm);
3: rtc_tm_to_time(tm, time);
4: pr_info(Time 1 %lu\n, time);
5: time += 2; /* (2sec) */
6: rtc_time_to_tm(time, tm);
7: rtc_tm_to_time(tm, time); /* Only for printing time value */
8: pr_info(Time 2 %lu\n, time); 

With the above steps I am seeing completely two different time
values at step4 and step8

Thanks
AnilKumar
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


RE: [PATCH 2/4] rtc: OMAP: Add system pm_power_off to rtc driver

2012-11-13 Thread AnilKumar, Chimata
+Mark

On Mon, Nov 12, 2012 at 15:17:13, AnilKumar, Chimata wrote:
 On Tue, Nov 06, 2012 at 22:26:54, Cousson, Benoit wrote:
  Hi Anil,
  
  On 11/06/2012 06:07 AM, AnilKumar, Chimata wrote:
   On Mon, Nov 05, 2012 at 22:13:25, Cousson, Benoit wrote:
   Hi Anil / Colin,
  
   On 11/05/2012 10:42 AM, AnilKumar Ch wrote:
   From: Colin Foe-Parker colin.foepar...@logicpd.com
  
   Add system power off control to rtc driver which is the in-charge
   of controlling the BeagleBone system power. The power_off routine
   can be hooked up to pm_power_off system call.
  
   System power off sequence:-
   * Set PMIC STATUS_OFF when PMIC_POWER_EN is pulled low
   * Enable PMIC_POWER_EN in rtc module
   * Set rtc ALARM2 time
   * Enable ALARM2 interrupt
  
   Added while (1); after the above steps to make sure that no other
   process acquire cpu. Otherwise we might see an unexpected behaviour
   because we are shutting down all the power rails of SoC except RTC.
  
   Signed-off-by: Colin Foe-Parker colin.foepar...@logicpd.com
   [anilku...@ti.com: move poweroff additions to rtc driver]
   Signed-off-by: AnilKumar Ch anilku...@ti.com
   ---
Documentation/devicetree/bindings/rtc/rtc-omap.txt |5 ++
drivers/rtc/rtc-omap.c |   79 
   +++-
2 files changed, 83 insertions(+), 1 deletion(-)
  
   diff --git a/Documentation/devicetree/bindings/rtc/rtc-omap.txt 
   b/Documentation/devicetree/bindings/rtc/rtc-omap.txt
   index b47aa41..8d9f4f9 100644
   --- a/Documentation/devicetree/bindings/rtc/rtc-omap.txt
   +++ b/Documentation/devicetree/bindings/rtc/rtc-omap.txt
   @@ -6,6 +6,10 @@ Required properties:
- interrupts: rtc timer, alarm interrupts in order
- interrupt-parent: phandle for the interrupt controller

   +Optional properties:
   +- ti,system-power-controller: Telling whether or not rtc is controlling
   +  the system power.
  
   I don't know how it is connected at board level, but I'm not sure the
   binding is the proper one.
   
   Hi Benoit,

   |   __  ___  |
   |  |  ||   | |
   |  |RTC   ||   | |
   |  |PMIC  |  Line  |   | |
   |  |PWR_EN|===|PWR_EN | |
   |  |__||___| |
   |  AM335x SoC   TPS65217 |
   ||
   ||
 BeagleBone
   
   This is how RTC PMIC_PWR_EN is connected to PWR_EN of TPS65217 PMIC. Only 
   when
   RTC pull low in PMIC_PWR_EN then PMIC will go to power off state provided 
   TPS65217
   status should be changed to STATUS_OFF.
   
   ALARM2 event should be trigger to configure PMIC_PWR_EN properly then the 
   Line
   driven low so that PMIC will go to shutdown mode.
  
  Thanks for the nice diagram :-)
 
 I missed this mail thread so delayed in response
 
  
  I'm wondering if we cannot abuse the gpio binding to describe that
  connection instead of creating two custom attributes (PMIC + RTC).
  
  Ideally we should do that without having to change the RTC to use the
  gpiolib at all.
  
  
  rtc: rtc@44e3e000 {
  compatible = ti,da830-rtc;
  reg = 0x44e3e000 0x1000;
  interrupts = 75, 76;
  ti,hwmods = rtc;
  
  /* expose the PWR_EN functionality of this RTC*/
  gpio-controller;
  #gpio-cells = 0; /* assuming we can use 0 ??? */
  };
  
  ...
  
  tps: tps@24 {
  compatible = ti,tps65217;
  /*
   * Enable the power enable feature from
   * the input line if that attribute is there.
   */
  gpio-power-en = rtc; /* PWR_EN */
  
  ...
  }   
  
  Any thought?
 
 No, these two are independent controllers. PMIC can go to power
 off mode if we pull PWR_EN to low. We can pull down that line
 by any means like PRCM or GPIO or some other. So these two flags
 should be independent from each other.
 
 Thanks
 AnilKumar
 

--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 2/4] rtc: OMAP: Add system pm_power_off to rtc driver

2012-11-13 Thread Mark Brown
On Wed, Nov 14, 2012 at 05:01:45AM +, AnilKumar, Chimata wrote:
 +Mark

...without any words as to why I'm being added or what the content in
the message is?


signature.asc
Description: Digital signature


RE: [PATCH 2/4] rtc: OMAP: Add system pm_power_off to rtc driver

2012-11-13 Thread AnilKumar, Chimata
On Wed, Nov 14, 2012 at 10:31:42, AnilKumar, Chimata wrote:
 +Mark
 
 On Mon, Nov 12, 2012 at 15:17:13, AnilKumar, Chimata wrote:
  On Tue, Nov 06, 2012 at 22:26:54, Cousson, Benoit wrote:
   Hi Anil,
   
   On 11/06/2012 06:07 AM, AnilKumar, Chimata wrote:
On Mon, Nov 05, 2012 at 22:13:25, Cousson, Benoit wrote:
Hi Anil / Colin,
   
On 11/05/2012 10:42 AM, AnilKumar Ch wrote:
From: Colin Foe-Parker colin.foepar...@logicpd.com
   
Add system power off control to rtc driver which is the in-charge
of controlling the BeagleBone system power. The power_off routine
can be hooked up to pm_power_off system call.
   
System power off sequence:-
* Set PMIC STATUS_OFF when PMIC_POWER_EN is pulled low
* Enable PMIC_POWER_EN in rtc module
* Set rtc ALARM2 time
* Enable ALARM2 interrupt
   
Added while (1); after the above steps to make sure that no other
process acquire cpu. Otherwise we might see an unexpected behaviour
because we are shutting down all the power rails of SoC except RTC.
   
Signed-off-by: Colin Foe-Parker colin.foepar...@logicpd.com
[anilku...@ti.com: move poweroff additions to rtc driver]
Signed-off-by: AnilKumar Ch anilku...@ti.com
---
 Documentation/devicetree/bindings/rtc/rtc-omap.txt |5 ++
 drivers/rtc/rtc-omap.c |   79 
+++-
 2 files changed, 83 insertions(+), 1 deletion(-)
   
diff --git a/Documentation/devicetree/bindings/rtc/rtc-omap.txt 
b/Documentation/devicetree/bindings/rtc/rtc-omap.txt
index b47aa41..8d9f4f9 100644
--- a/Documentation/devicetree/bindings/rtc/rtc-omap.txt
+++ b/Documentation/devicetree/bindings/rtc/rtc-omap.txt
@@ -6,6 +6,10 @@ Required properties:
 - interrupts: rtc timer, alarm interrupts in order
 - interrupt-parent: phandle for the interrupt controller
 
+Optional properties:
+- ti,system-power-controller: Telling whether or not rtc is 
controlling
+  the system power.
   
I don't know how it is connected at board level, but I'm not sure the
binding is the proper one.

Hi Benoit,
 
|   __  ___  |
|  |  ||   | |
|  |RTC   ||   | |
|  |PMIC  |  Line  |   | |
|  |PWR_EN|===|PWR_EN | |
|  |__||___| |
|  AM335x SoC   TPS65217 |
||
||
  BeagleBone

This is how RTC PMIC_PWR_EN is connected to PWR_EN of TPS65217 PMIC. 
Only when
RTC pull low in PMIC_PWR_EN then PMIC will go to power off state 
provided TPS65217
status should be changed to STATUS_OFF.

ALARM2 event should be trigger to configure PMIC_PWR_EN properly then 
the Line
driven low so that PMIC will go to shutdown mode.

Mark,

Details regarding how PMIC PWR_EN is connected to RTC module

Thanks
AnilKumar

   
   Thanks for the nice diagram :-)
  
  I missed this mail thread so delayed in response
  
   
   I'm wondering if we cannot abuse the gpio binding to describe that
   connection instead of creating two custom attributes (PMIC + RTC).
   
   Ideally we should do that without having to change the RTC to use the
   gpiolib at all.
   
   
   rtc: rtc@44e3e000 {
 compatible = ti,da830-rtc;
 reg = 0x44e3e000 0x1000;
 interrupts = 75, 76;
 ti,hwmods = rtc;
   
 /* expose the PWR_EN functionality of this RTC*/
 gpio-controller;
 #gpio-cells = 0; /* assuming we can use 0 ??? */
   };
   
   ...
   
   tps: tps@24 {
 compatible = ti,tps65217;
 /*
* Enable the power enable feature from
* the input line if that attribute is there.
*/
 gpio-power-en = rtc; /* PWR_EN */
   
 ...
   } 
   
   Any thought?
  
  No, these two are independent controllers. PMIC can go to power
  off mode if we pull PWR_EN to low. We can pull down that line
  by any means like PRCM or GPIO or some other. So these two flags
  should be independent from each other.
  
  Thanks
  AnilKumar
  
 
 

--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 2/4] rtc: OMAP: Add system pm_power_off to rtc driver

2012-11-13 Thread Mark Brown
On Wed, Nov 14, 2012 at 05:50:46AM +, AnilKumar, Chimata wrote:
 On Wed, Nov 14, 2012 at 10:31:42, AnilKumar, Chimata wrote:

*Please* cut out irrelevant context from your mails.

 Details regarding how PMIC PWR_EN is connected to RTC module

OK...  but what am I expected to do with this information?


signature.asc
Description: Digital signature


RE: [PATCH 2/4] rtc: OMAP: Add system pm_power_off to rtc driver

2012-11-12 Thread AnilKumar, Chimata
On Tue, Nov 06, 2012 at 22:26:54, Cousson, Benoit wrote:
 Hi Anil,
 
 On 11/06/2012 06:07 AM, AnilKumar, Chimata wrote:
  On Mon, Nov 05, 2012 at 22:13:25, Cousson, Benoit wrote:
  Hi Anil / Colin,
 
  On 11/05/2012 10:42 AM, AnilKumar Ch wrote:
  From: Colin Foe-Parker colin.foepar...@logicpd.com
 
  Add system power off control to rtc driver which is the in-charge
  of controlling the BeagleBone system power. The power_off routine
  can be hooked up to pm_power_off system call.
 
  System power off sequence:-
  * Set PMIC STATUS_OFF when PMIC_POWER_EN is pulled low
  * Enable PMIC_POWER_EN in rtc module
  * Set rtc ALARM2 time
  * Enable ALARM2 interrupt
 
  Added while (1); after the above steps to make sure that no other
  process acquire cpu. Otherwise we might see an unexpected behaviour
  because we are shutting down all the power rails of SoC except RTC.
 
  Signed-off-by: Colin Foe-Parker colin.foepar...@logicpd.com
  [anilku...@ti.com: move poweroff additions to rtc driver]
  Signed-off-by: AnilKumar Ch anilku...@ti.com
  ---
   Documentation/devicetree/bindings/rtc/rtc-omap.txt |5 ++
   drivers/rtc/rtc-omap.c |   79 
  +++-
   2 files changed, 83 insertions(+), 1 deletion(-)
 
  diff --git a/Documentation/devicetree/bindings/rtc/rtc-omap.txt 
  b/Documentation/devicetree/bindings/rtc/rtc-omap.txt
  index b47aa41..8d9f4f9 100644
  --- a/Documentation/devicetree/bindings/rtc/rtc-omap.txt
  +++ b/Documentation/devicetree/bindings/rtc/rtc-omap.txt
  @@ -6,6 +6,10 @@ Required properties:
   - interrupts: rtc timer, alarm interrupts in order
   - interrupt-parent: phandle for the interrupt controller
   
  +Optional properties:
  +- ti,system-power-controller: Telling whether or not rtc is controlling
  +  the system power.
 
  I don't know how it is connected at board level, but I'm not sure the
  binding is the proper one.
  
  Hi Benoit,
   
  |   __  ___  |
  |  |  ||   | |
  |  |RTC   ||   | |
  |  |PMIC  |  Line  |   | |
  |  |PWR_EN|===|PWR_EN | |
  |  |__||___| |
  |  AM335x SoC   TPS65217 |
  ||
  ||
BeagleBone
  
  This is how RTC PMIC_PWR_EN is connected to PWR_EN of TPS65217 PMIC. Only 
  when
  RTC pull low in PMIC_PWR_EN then PMIC will go to power off state provided 
  TPS65217
  status should be changed to STATUS_OFF.
  
  ALARM2 event should be trigger to configure PMIC_PWR_EN properly then the 
  Line
  driven low so that PMIC will go to shutdown mode.
 
 Thanks for the nice diagram :-)

I missed this mail thread so delayed in response

 
 I'm wondering if we cannot abuse the gpio binding to describe that
 connection instead of creating two custom attributes (PMIC + RTC).
 
 Ideally we should do that without having to change the RTC to use the
 gpiolib at all.
 
 
 rtc: rtc@44e3e000 {
   compatible = ti,da830-rtc;
   reg = 0x44e3e000 0x1000;
   interrupts = 75, 76;
   ti,hwmods = rtc;
 
   /* expose the PWR_EN functionality of this RTC*/
   gpio-controller;
   #gpio-cells = 0; /* assuming we can use 0 ??? */
 };
 
 ...
 
 tps: tps@24 {
   compatible = ti,tps65217;
   /*
  * Enable the power enable feature from
  * the input line if that attribute is there.
  */
   gpio-power-en = rtc; /* PWR_EN */
 
   ...
 } 
 
 Any thought?

No, these two are independent controllers. PMIC can go to power
off mode if we pull PWR_EN to low. We can pull down that line
by any means like PRCM or GPIO or some other. So these two flags
should be independent from each other.

Thanks
AnilKumar
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


RE: [PATCH 2/4] rtc: OMAP: Add system pm_power_off to rtc driver

2012-11-12 Thread AnilKumar, Chimata
On Tue, Nov 06, 2012 at 11:15:34, Bedia, Vaibhav wrote:
 On Mon, Nov 05, 2012 at 15:12:27, AnilKumar, Chimata wrote:
 [...]
   
  +#define SHUTDOWN_TIME_SEC  2
  +#define SECS_IN_MIN60
  +#define WAIT_AFTER (SECS_IN_MIN - SHUTDOWN_TIME_SEC)
  +#define WAIT_TIME_MS   (SHUTDOWN_TIME_SEC * 1000)
  +
   static void __iomem*rtc_base;
   
 [...]
  +
  +   /* Wait few seconds instead of rollover */
  +   do {
  +   omap_rtc_read_time(NULL, tm);
  +   if (WAIT_AFTER = tm.tm_sec)
  +   mdelay(WAIT_TIME_MS);
  +   } while (WAIT_AFTER = tm.tm_sec);
 
 This hardcoded wait for rollover doesn't look good. I see some
 helper functions in rtc-lib.c which probably could be used for
 converting the current time to elapsed seconds, add the delay and
 then convert it back to the time to be programmed in RTC without
 worrying about rollover. Why not use that?

I am not aware of those APIs, can you point some?

 
  +
  +   /* Add shutdown time to the current value */
  +   tm.tm_sec += SHUTDOWN_TIME_SEC;
  +
  +   if (tm2bcd(tm)  0)
  +   return;
  +
  +   pr_info(System will go to power_off state in approx. %d secs\n,
  +   SHUTDOWN_TIME_SEC);
  +
  +   /* Set the ALARM2 time */
  +   rtc_write(tm.tm_sec, OMAP_RTC_ALARM2_SECONDS_REG);
  +   rtc_write(tm.tm_min, OMAP_RTC_ALARM2_MINUTES_REG);
  +   rtc_write(tm.tm_hour, OMAP_RTC_ALARM2_HOURS_REG);
  +   rtc_write(tm.tm_mday, OMAP_RTC_ALARM2_DAYS_REG);
  +   rtc_write(tm.tm_mon, OMAP_RTC_ALARM2_MONTHS_REG);
  +   rtc_write(tm.tm_year, OMAP_RTC_ALARM2_YEARS_REG);
  +
  +   /* Enable alarm2 interrupt */
  +   val = readl(rtc_base + OMAP_RTC_INTERRUPTS_REG);
  +   writel(val | OMAP_RTC_INTERRUPTS_IT_ALARM2,
  +   rtc_base + OMAP_RTC_INTERRUPTS_REG);
  +
 
 These registers are not present in older versions of the IP so how
 does that get handled?

I think, earlier this feature is not supported/not used.

 
 You also need to describe the connection between the ALARM2 and the
 power off logic in detail.

Sure, I will add.

Thanks
AnilKumar
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 2/4] rtc: OMAP: Add system pm_power_off to rtc driver

2012-11-06 Thread Benoit Cousson
Hi Anil,

On 11/06/2012 06:07 AM, AnilKumar, Chimata wrote:
 On Mon, Nov 05, 2012 at 22:13:25, Cousson, Benoit wrote:
 Hi Anil / Colin,

 On 11/05/2012 10:42 AM, AnilKumar Ch wrote:
 From: Colin Foe-Parker colin.foepar...@logicpd.com

 Add system power off control to rtc driver which is the in-charge
 of controlling the BeagleBone system power. The power_off routine
 can be hooked up to pm_power_off system call.

 System power off sequence:-
 * Set PMIC STATUS_OFF when PMIC_POWER_EN is pulled low
 * Enable PMIC_POWER_EN in rtc module
 * Set rtc ALARM2 time
 * Enable ALARM2 interrupt

 Added while (1); after the above steps to make sure that no other
 process acquire cpu. Otherwise we might see an unexpected behaviour
 because we are shutting down all the power rails of SoC except RTC.

 Signed-off-by: Colin Foe-Parker colin.foepar...@logicpd.com
 [anilku...@ti.com: move poweroff additions to rtc driver]
 Signed-off-by: AnilKumar Ch anilku...@ti.com
 ---
  Documentation/devicetree/bindings/rtc/rtc-omap.txt |5 ++
  drivers/rtc/rtc-omap.c |   79 
 +++-
  2 files changed, 83 insertions(+), 1 deletion(-)

 diff --git a/Documentation/devicetree/bindings/rtc/rtc-omap.txt 
 b/Documentation/devicetree/bindings/rtc/rtc-omap.txt
 index b47aa41..8d9f4f9 100644
 --- a/Documentation/devicetree/bindings/rtc/rtc-omap.txt
 +++ b/Documentation/devicetree/bindings/rtc/rtc-omap.txt
 @@ -6,6 +6,10 @@ Required properties:
  - interrupts: rtc timer, alarm interrupts in order
  - interrupt-parent: phandle for the interrupt controller
  
 +Optional properties:
 +- ti,system-power-controller: Telling whether or not rtc is controlling
 +  the system power.

 I don't know how it is connected at board level, but I'm not sure the
 binding is the proper one.
 
 Hi Benoit,
  
 |   __  ___  |
 |  |  ||   | |
 |  |RTC   ||   | |
 |  |PMIC  |  Line  |   | |
 |  |PWR_EN|===|PWR_EN | |
 |  |__||___| |
 |  AM335x SoC   TPS65217 |
 ||
 ||
   BeagleBone
 
 This is how RTC PMIC_PWR_EN is connected to PWR_EN of TPS65217 PMIC. Only when
 RTC pull low in PMIC_PWR_EN then PMIC will go to power off state provided 
 TPS65217
 status should be changed to STATUS_OFF.
 
 ALARM2 event should be trigger to configure PMIC_PWR_EN properly then the 
 Line
 driven low so that PMIC will go to shutdown mode.

Thanks for the nice diagram :-)

I'm wondering if we cannot abuse the gpio binding to describe that
connection instead of creating two custom attributes (PMIC + RTC).

Ideally we should do that without having to change the RTC to use the
gpiolib at all.


rtc: rtc@44e3e000 {
compatible = ti,da830-rtc;
reg = 0x44e3e000 0x1000;
interrupts = 75, 76;
ti,hwmods = rtc;

/* expose the PWR_EN functionality of this RTC*/
gpio-controller;
#gpio-cells = 0; /* assuming we can use 0 ??? */
};

...

tps: tps@24 {
compatible = ti,tps65217;
/*
 * Enable the power enable feature from
 * the input line if that attribute is there.
 */
gpio-power-en = rtc; /* PWR_EN */

...
}   

Any thought?

Regards,
Benoit



--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 2/4] rtc: OMAP: Add system pm_power_off to rtc driver

2012-11-05 Thread Benoit Cousson
Hi Anil / Colin,

On 11/05/2012 10:42 AM, AnilKumar Ch wrote:
 From: Colin Foe-Parker colin.foepar...@logicpd.com
 
 Add system power off control to rtc driver which is the in-charge
 of controlling the BeagleBone system power. The power_off routine
 can be hooked up to pm_power_off system call.
 
 System power off sequence:-
 * Set PMIC STATUS_OFF when PMIC_POWER_EN is pulled low
 * Enable PMIC_POWER_EN in rtc module
 * Set rtc ALARM2 time
 * Enable ALARM2 interrupt
 
 Added while (1); after the above steps to make sure that no other
 process acquire cpu. Otherwise we might see an unexpected behaviour
 because we are shutting down all the power rails of SoC except RTC.
 
 Signed-off-by: Colin Foe-Parker colin.foepar...@logicpd.com
 [anilku...@ti.com: move poweroff additions to rtc driver]
 Signed-off-by: AnilKumar Ch anilku...@ti.com
 ---
  Documentation/devicetree/bindings/rtc/rtc-omap.txt |5 ++
  drivers/rtc/rtc-omap.c |   79 
 +++-
  2 files changed, 83 insertions(+), 1 deletion(-)
 
 diff --git a/Documentation/devicetree/bindings/rtc/rtc-omap.txt 
 b/Documentation/devicetree/bindings/rtc/rtc-omap.txt
 index b47aa41..8d9f4f9 100644
 --- a/Documentation/devicetree/bindings/rtc/rtc-omap.txt
 +++ b/Documentation/devicetree/bindings/rtc/rtc-omap.txt
 @@ -6,6 +6,10 @@ Required properties:
  - interrupts: rtc timer, alarm interrupts in order
  - interrupt-parent: phandle for the interrupt controller
  
 +Optional properties:
 +- ti,system-power-controller: Telling whether or not rtc is controlling
 +  the system power.

I don't know how it is connected at board level, but I'm not sure the
binding is the proper one.
It does not look super generic, and I'm wondering if we should not use
instead some regulator binding to reflect the connection of the RTC to a
regulator.

But without the board / soc spec it is hard to tell :-(

Regards,
Benoit


 +
  Example:
  
  rtc@1c23000 {
 @@ -14,4 +18,5 @@ rtc@1c23000 {
   interrupts = 19
 19;
   interrupt-parent = intc;
 + ti,system-power-controller;
  };
 diff --git a/drivers/rtc/rtc-omap.c b/drivers/rtc/rtc-omap.c
 index 6009714..2d90170 100644
 --- a/drivers/rtc/rtc-omap.c
 +++ b/drivers/rtc/rtc-omap.c
 @@ -72,6 +72,14 @@
  #define OMAP_RTC_KICK0_REG   0x6c
  #define OMAP_RTC_KICK1_REG   0x70
  
 +#define OMAP_RTC_ALARM2_SECONDS_REG  0x80
 +#define OMAP_RTC_ALARM2_MINUTES_REG  0x84
 +#define OMAP_RTC_ALARM2_HOURS_REG0x88
 +#define OMAP_RTC_ALARM2_DAYS_REG 0x8c
 +#define OMAP_RTC_ALARM2_MONTHS_REG   0x90
 +#define OMAP_RTC_ALARM2_YEARS_REG0x94
 +#define OMAP_RTC_PMIC_REG0x98
 +
  /* OMAP_RTC_CTRL_REG bit fields: */
  #define OMAP_RTC_CTRL_SPLIT  (17)
  #define OMAP_RTC_CTRL_DISABLE(16)
 @@ -93,15 +101,24 @@
  #define OMAP_RTC_STATUS_BUSY(10)
  
  /* OMAP_RTC_INTERRUPTS_REG bit fields: */
 +#define OMAP_RTC_INTERRUPTS_IT_ALARM2   (14)
  #define OMAP_RTC_INTERRUPTS_IT_ALARM(13)
  #define OMAP_RTC_INTERRUPTS_IT_TIMER(12)
  
 +/* OMAP_RTC_PMIC_REG bit fields: */
 +#define OMAP_RTC_PMIC_POWER_EN_EN   (116)
 +
  /* OMAP_RTC_KICKER values */
  #define  KICK0_VALUE 0x83e70b13
  #define  KICK1_VALUE 0x95a4f1e0
  
  #define  OMAP_RTC_HAS_KICKER 0x1
  
 +#define SHUTDOWN_TIME_SEC2
 +#define SECS_IN_MIN  60
 +#define WAIT_AFTER   (SECS_IN_MIN - SHUTDOWN_TIME_SEC)
 +#define WAIT_TIME_MS (SHUTDOWN_TIME_SEC * 1000)
 +
  static void __iomem  *rtc_base;
  
  #define rtc_read(addr)   readb(rtc_base + (addr))
 @@ -290,6 +307,58 @@ static int omap_rtc_set_alarm(struct device *dev, struct 
 rtc_wkalrm *alm)
   return 0;
  }
  
 +/*
 + * rtc_power_off: Set the pmic power off sequence. The RTC generates
 + * pmic_pwr_enable control, which can be used to control an external
 + * PMIC.
 + */
 +static void rtc_power_off(void)
 +{
 + u32 val;
 + struct rtc_time tm;
 + spinlock_t lock;
 + unsigned long flags;
 +
 + spin_lock_init(lock);
 +
 + /* Set PMIC power enable */
 + val = readl(rtc_base + OMAP_RTC_PMIC_REG);
 + writel(val | OMAP_RTC_PMIC_POWER_EN_EN, rtc_base + OMAP_RTC_PMIC_REG);
 +
 + /* Wait few seconds instead of rollover */
 + do {
 + omap_rtc_read_time(NULL, tm);
 + if (WAIT_AFTER = tm.tm_sec)
 + mdelay(WAIT_TIME_MS);
 + } while (WAIT_AFTER = tm.tm_sec);
 +
 + /* Add shutdown time to the current value */
 + tm.tm_sec += SHUTDOWN_TIME_SEC;
 +
 + if (tm2bcd(tm)  0)
 + return;
 +
 + pr_info(System will go to power_off state in approx. %d secs\n,
 + SHUTDOWN_TIME_SEC);
 +
 + /* Set the ALARM2 time */
 + rtc_write(tm.tm_sec, OMAP_RTC_ALARM2_SECONDS_REG);
 + rtc_write(tm.tm_min, OMAP_RTC_ALARM2_MINUTES_REG);
 + rtc_write(tm.tm_hour, 

RE: [PATCH 2/4] rtc: OMAP: Add system pm_power_off to rtc driver

2012-11-05 Thread AnilKumar, Chimata
On Mon, Nov 05, 2012 at 22:13:25, Cousson, Benoit wrote:
 Hi Anil / Colin,
 
 On 11/05/2012 10:42 AM, AnilKumar Ch wrote:
  From: Colin Foe-Parker colin.foepar...@logicpd.com
  
  Add system power off control to rtc driver which is the in-charge
  of controlling the BeagleBone system power. The power_off routine
  can be hooked up to pm_power_off system call.
  
  System power off sequence:-
  * Set PMIC STATUS_OFF when PMIC_POWER_EN is pulled low
  * Enable PMIC_POWER_EN in rtc module
  * Set rtc ALARM2 time
  * Enable ALARM2 interrupt
  
  Added while (1); after the above steps to make sure that no other
  process acquire cpu. Otherwise we might see an unexpected behaviour
  because we are shutting down all the power rails of SoC except RTC.
  
  Signed-off-by: Colin Foe-Parker colin.foepar...@logicpd.com
  [anilku...@ti.com: move poweroff additions to rtc driver]
  Signed-off-by: AnilKumar Ch anilku...@ti.com
  ---
   Documentation/devicetree/bindings/rtc/rtc-omap.txt |5 ++
   drivers/rtc/rtc-omap.c |   79 
  +++-
   2 files changed, 83 insertions(+), 1 deletion(-)
  
  diff --git a/Documentation/devicetree/bindings/rtc/rtc-omap.txt 
  b/Documentation/devicetree/bindings/rtc/rtc-omap.txt
  index b47aa41..8d9f4f9 100644
  --- a/Documentation/devicetree/bindings/rtc/rtc-omap.txt
  +++ b/Documentation/devicetree/bindings/rtc/rtc-omap.txt
  @@ -6,6 +6,10 @@ Required properties:
   - interrupts: rtc timer, alarm interrupts in order
   - interrupt-parent: phandle for the interrupt controller
   
  +Optional properties:
  +- ti,system-power-controller: Telling whether or not rtc is controlling
  +  the system power.
 
 I don't know how it is connected at board level, but I'm not sure the
 binding is the proper one.

Hi Benoit,
 
|   __  ___  |
|  |  ||   | |
|  |RTC   ||   | |
|  |PMIC  |  Line  |   | |
|  |PWR_EN|===|PWR_EN | |
|  |__||___| |
|  AM335x SoC   TPS65217 |
||
||
  BeagleBone

This is how RTC PMIC_PWR_EN is connected to PWR_EN of TPS65217 PMIC. Only when
RTC pull low in PMIC_PWR_EN then PMIC will go to power off state provided 
TPS65217
status should be changed to STATUS_OFF.

ALARM2 event should be trigger to configure PMIC_PWR_EN properly then the Line
driven low so that PMIC will go to shutdown mode.

Thanks
AnilKumar

 It does not look super generic, and I'm wondering if we should not use
 instead some regulator binding to reflect the connection of the RTC to a
 regulator.
 
 But without the board / soc spec it is hard to tell :-(

 Regards,
 Benoit
 
 
  +
   Example:
   
   rtc@1c23000 {
  @@ -14,4 +18,5 @@ rtc@1c23000 {
  interrupts = 19
19;
  interrupt-parent = intc;
  +   ti,system-power-controller;
   };
  diff --git a/drivers/rtc/rtc-omap.c b/drivers/rtc/rtc-omap.c
  index 6009714..2d90170 100644
  --- a/drivers/rtc/rtc-omap.c
  +++ b/drivers/rtc/rtc-omap.c
  @@ -72,6 +72,14 @@
   #define OMAP_RTC_KICK0_REG 0x6c
   #define OMAP_RTC_KICK1_REG 0x70
   
  +#define OMAP_RTC_ALARM2_SECONDS_REG0x80
  +#define OMAP_RTC_ALARM2_MINUTES_REG0x84
  +#define OMAP_RTC_ALARM2_HOURS_REG  0x88
  +#define OMAP_RTC_ALARM2_DAYS_REG   0x8c
  +#define OMAP_RTC_ALARM2_MONTHS_REG 0x90
  +#define OMAP_RTC_ALARM2_YEARS_REG  0x94
  +#define OMAP_RTC_PMIC_REG  0x98
  +
   /* OMAP_RTC_CTRL_REG bit fields: */
   #define OMAP_RTC_CTRL_SPLIT(17)
   #define OMAP_RTC_CTRL_DISABLE  (16)
  @@ -93,15 +101,24 @@
   #define OMAP_RTC_STATUS_BUSY(10)
   
   /* OMAP_RTC_INTERRUPTS_REG bit fields: */
  +#define OMAP_RTC_INTERRUPTS_IT_ALARM2   (14)
   #define OMAP_RTC_INTERRUPTS_IT_ALARM(13)
   #define OMAP_RTC_INTERRUPTS_IT_TIMER(12)
   
  +/* OMAP_RTC_PMIC_REG bit fields: */
  +#define OMAP_RTC_PMIC_POWER_EN_EN   (116)
  +
   /* OMAP_RTC_KICKER values */
   #defineKICK0_VALUE 0x83e70b13
   #defineKICK1_VALUE 0x95a4f1e0
   
   #defineOMAP_RTC_HAS_KICKER 0x1
   
  +#define SHUTDOWN_TIME_SEC  2
  +#define SECS_IN_MIN60
  +#define WAIT_AFTER (SECS_IN_MIN - SHUTDOWN_TIME_SEC)
  +#define WAIT_TIME_MS   (SHUTDOWN_TIME_SEC * 1000)
  +
   static void __iomem*rtc_base;
   
   #define rtc_read(addr) readb(rtc_base + (addr))
  @@ -290,6 +307,58 @@ static int omap_rtc_set_alarm(struct device *dev, 
  struct rtc_wkalrm *alm)
  return 0;
   }
   
  +/*
  + * rtc_power_off: Set the pmic power off sequence. The RTC generates
  + * pmic_pwr_enable control, which can be used to control an external
  + * PMIC.
  + */
  +static void rtc_power_off(void)
  +{
  +   u32 val;
  +   struct rtc_time tm;
  +   spinlock_t lock;
  +   

RE: [PATCH 2/4] rtc: OMAP: Add system pm_power_off to rtc driver

2012-11-05 Thread Bedia, Vaibhav
On Mon, Nov 05, 2012 at 15:12:27, AnilKumar, Chimata wrote:
[...]
  
 +#define SHUTDOWN_TIME_SEC2
 +#define SECS_IN_MIN  60
 +#define WAIT_AFTER   (SECS_IN_MIN - SHUTDOWN_TIME_SEC)
 +#define WAIT_TIME_MS (SHUTDOWN_TIME_SEC * 1000)
 +
  static void __iomem  *rtc_base;
  
[...]
 +
 + /* Wait few seconds instead of rollover */
 + do {
 + omap_rtc_read_time(NULL, tm);
 + if (WAIT_AFTER = tm.tm_sec)
 + mdelay(WAIT_TIME_MS);
 + } while (WAIT_AFTER = tm.tm_sec);

This hardcoded wait for rollover doesn't look good. I see some
helper functions in rtc-lib.c which probably could be used for
converting the current time to elapsed seconds, add the delay and
then convert it back to the time to be programmed in RTC without
worrying about rollover. Why not use that?

 +
 + /* Add shutdown time to the current value */
 + tm.tm_sec += SHUTDOWN_TIME_SEC;
 +
 + if (tm2bcd(tm)  0)
 + return;
 +
 + pr_info(System will go to power_off state in approx. %d secs\n,
 + SHUTDOWN_TIME_SEC);
 +
 + /* Set the ALARM2 time */
 + rtc_write(tm.tm_sec, OMAP_RTC_ALARM2_SECONDS_REG);
 + rtc_write(tm.tm_min, OMAP_RTC_ALARM2_MINUTES_REG);
 + rtc_write(tm.tm_hour, OMAP_RTC_ALARM2_HOURS_REG);
 + rtc_write(tm.tm_mday, OMAP_RTC_ALARM2_DAYS_REG);
 + rtc_write(tm.tm_mon, OMAP_RTC_ALARM2_MONTHS_REG);
 + rtc_write(tm.tm_year, OMAP_RTC_ALARM2_YEARS_REG);
 +
 + /* Enable alarm2 interrupt */
 + val = readl(rtc_base + OMAP_RTC_INTERRUPTS_REG);
 + writel(val | OMAP_RTC_INTERRUPTS_IT_ALARM2,
 + rtc_base + OMAP_RTC_INTERRUPTS_REG);
 +

These registers are not present in older versions of the IP so how
does that get handled?

You also need to describe the connection between the ALARM2 and the
power off logic in detail.

Regards,
Vaibhav
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html