All of lore.kernel.org
 help / color / mirror / Atom feed
From: Julius Werner <jwerner@chromium.org>
To: Julius Werner <jwerner@chromium.org>
Cc: Chris Zhong <zyw@rock-chips.com>,
	Doug Anderson <dianders@chromium.org>,
	Alexandre Belloni <alexandre.belloni@free-electrons.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Alessandro Zummo <a.zummo@towertech.it>,
	Sonny Rao <sonnyrao@chromium.org>,
	Heiko Stuebner <heiko@sntech.de>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	rtc-linux@googlegroups.com
Subject: Re: [PATCH] RTC: RK808: Work around hardware bug on November 31st
Date: Mon, 7 Dec 2015 14:40:36 -0800	[thread overview]
Message-ID: <CAODwPW-gGnZUoNm4M1v5rEM3LCtPD23EZknRqOqw5cDeviWJ9w@mail.gmail.com> (raw)
In-Reply-To: <CAODwPW-zWHgmyHX8svgokEhVsaqyx6zZWwvm+-166aNYcj4z-A@mail.gmail.com>

[+Alexandre... sorry, didn't notice that you somehow fell off the
thread again, but I presume you get rtc-linux anyway]

> Agreed, scheduling alarms in the future is also an important point. So
> I guess I'll update the patch to fix alarm scheduling and S3 as well,
> and we'll just ignore S5 as infeasible?

Found another edge case trying to implement this: if you set an alarm
on Nov 25th for Dec 5th, the code will have to adjust it to Dec 4th to
account for the extra day. But if you then power off (or brownout) to
S5 and don't power it on again until December, you have no way of
knowing whether the already set alarm timestamp is on the Rockchip or
the Gregorian calendar. You may or may not sync your current time back
through an external source, but you have no way of knowing what you
should do with the alarm.

Other than that my current idea is roughly:

- if the current time gets written, always assume the new date is correct
- store a "last known timestamp" in memory on boot and on every write
- if the current time gets read, adjust it forward by the amount of
Nov 31sts since the stored timestamp (this adjustment itself
constitutes a write)
- if an alarm is written, adjust the timestamp written to hardware
backward by the amount of Nov 31sts between the stored timestamp and
the alarm time
- if an alarm is read, adjust the returned result forward by the
amount of Nov 31sts between the stored timestamp and the alarm time
- if the current time gets written, read the alarm time before the
write and write it back afterwards (the last known timestamp will
change as a result of writing the current time, meaning the newly
written hardware alarm time may be different from the old one)

WARNING: multiple messages have this Message-ID (diff)
From: Julius Werner <jwerner@chromium.org>
To: Julius Werner <jwerner@chromium.org>
Cc: Chris Zhong <zyw@rock-chips.com>,
	Doug Anderson <dianders@chromium.org>,
	Alexandre Belloni <alexandre.belloni@free-electrons.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Alessandro Zummo <a.zummo@towertech.it>,
	Sonny Rao <sonnyrao@chromium.org>,
	Heiko Stuebner <heiko@sntech.de>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	rtc-linux@googlegroups.com
Subject: [rtc-linux] Re: [PATCH] RTC: RK808: Work around hardware bug on November 31st
Date: Mon, 7 Dec 2015 14:40:36 -0800	[thread overview]
Message-ID: <CAODwPW-gGnZUoNm4M1v5rEM3LCtPD23EZknRqOqw5cDeviWJ9w@mail.gmail.com> (raw)
In-Reply-To: <CAODwPW-zWHgmyHX8svgokEhVsaqyx6zZWwvm+-166aNYcj4z-A@mail.gmail.com>

[+Alexandre... sorry, didn't notice that you somehow fell off the
thread again, but I presume you get rtc-linux anyway]

> Agreed, scheduling alarms in the future is also an important point. So
> I guess I'll update the patch to fix alarm scheduling and S3 as well,
> and we'll just ignore S5 as infeasible?

Found another edge case trying to implement this: if you set an alarm
on Nov 25th for Dec 5th, the code will have to adjust it to Dec 4th to
account for the extra day. But if you then power off (or brownout) to
S5 and don't power it on again until December, you have no way of
knowing whether the already set alarm timestamp is on the Rockchip or
the Gregorian calendar. You may or may not sync your current time back
through an external source, but you have no way of knowing what you
should do with the alarm.

Other than that my current idea is roughly:

- if the current time gets written, always assume the new date is correct
- store a "last known timestamp" in memory on boot and on every write
- if the current time gets read, adjust it forward by the amount of
Nov 31sts since the stored timestamp (this adjustment itself
constitutes a write)
- if an alarm is written, adjust the timestamp written to hardware
backward by the amount of Nov 31sts between the stored timestamp and
the alarm time
- if an alarm is read, adjust the returned result forward by the
amount of Nov 31sts between the stored timestamp and the alarm time
- if the current time gets written, read the alarm time before the
write and write it back afterwards (the last known timestamp will
change as a result of writing the current time, meaning the newly
written hardware alarm time may be different from the old one)

-- 
-- 
You received this message because you are subscribed to "rtc-linux".
Membership options at http://groups.google.com/group/rtc-linux .
Please read http://groups.google.com/group/rtc-linux/web/checklist
before submitting a driver.
--- 
You received this message because you are subscribed to the Google Groups "rtc-linux" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rtc-linux+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

  reply	other threads:[~2015-12-07 22:40 UTC|newest]

Thread overview: 62+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-12-03  1:53 [PATCH] RTC: RK808: Work around hardware bug on November 31st Julius Werner
2015-12-03  1:53 ` [rtc-linux] " Julius Werner
2015-12-03 14:42 ` Alexandre Belloni
2015-12-03 14:42   ` Alexandre Belloni
2015-12-03 16:53   ` Julius Werner
2015-12-03 16:53     ` Julius Werner
2015-12-04 23:50 ` Doug Anderson
2015-12-04 23:50   ` [rtc-linux] " Doug Anderson
2015-12-05  0:25   ` Julius Werner
2015-12-05  0:25     ` [rtc-linux] " Julius Werner
2015-12-05  0:58     ` Doug Anderson
2015-12-05  0:58       ` [rtc-linux] " Doug Anderson
2015-12-05  1:54       ` Julius Werner
2015-12-05  1:54         ` [rtc-linux] " Julius Werner
2015-12-05  4:02         ` Doug Anderson
2015-12-05  4:02           ` [rtc-linux] " Doug Anderson
2015-12-05  4:53           ` Doug Anderson
2015-12-05  4:53             ` [rtc-linux] " Doug Anderson
2015-12-05  7:17             ` Julius Werner
2015-12-05  7:17               ` [rtc-linux] " Julius Werner
2015-12-06  0:36               ` Doug Anderson
2015-12-06  0:36                 ` [rtc-linux] " Doug Anderson
2015-12-07  1:33                 ` Chris Zhong
2015-12-07  1:33                   ` [rtc-linux] " Chris Zhong
2015-12-07  2:50                   ` Doug Anderson
2015-12-07  2:50                     ` [rtc-linux] " Doug Anderson
2015-12-07  2:52                     ` Doug Anderson
2015-12-07  2:52                       ` [rtc-linux] " Doug Anderson
2015-12-07  3:08                       ` Chris Zhong
2015-12-07  3:08                         ` [rtc-linux] " Chris Zhong
2015-12-07 20:28                         ` Julius Werner
2015-12-07 20:28                           ` [rtc-linux] " Julius Werner
2015-12-07 22:40                           ` Julius Werner [this message]
2015-12-07 22:40                             ` Julius Werner
2015-12-08  1:17                           ` Doug Anderson
2015-12-08  1:17                             ` [rtc-linux] " Doug Anderson
2015-12-08  1:41                             ` Julius Werner
2015-12-08  1:41                               ` [rtc-linux] " Julius Werner
2015-12-08  5:19                               ` Julius Werner
2015-12-08  5:19                                 ` [rtc-linux] " Julius Werner
2015-12-08  5:21                                 ` [PATCH v2] " Julius Werner
2015-12-08  5:21                                   ` [rtc-linux] " Julius Werner
2015-12-09  5:44                                   ` Doug Anderson
2015-12-09  5:44                                     ` [rtc-linux] " Doug Anderson
2015-12-09 21:32                                     ` Julius Werner
2015-12-09 21:32                                       ` [rtc-linux] " Julius Werner
2015-12-10 18:41                                       ` Alexandre Belloni
2015-12-10 18:41                                         ` [rtc-linux] " Alexandre Belloni
2015-12-10 18:57                                         ` Julius Werner
2015-12-10 18:57                                           ` [rtc-linux] " Julius Werner
2015-12-15 23:02                                           ` [PATCHv3] RTC: RK808: Compensate for Rockchip calendar deviation " Julius Werner
2015-12-15 23:02                                             ` [rtc-linux] " Julius Werner
2015-12-15 23:14                                             ` Julius Werner
2015-12-15 23:14                                               ` [rtc-linux] " Julius Werner
2015-12-19  0:25                                               ` Doug Anderson
2015-12-19  0:25                                                 ` [rtc-linux] " Doug Anderson
2015-12-19  0:31                                                 ` Julius Werner
2015-12-19  0:31                                                   ` [rtc-linux] " Julius Werner
2015-12-19  0:26                                             ` Doug Anderson
2015-12-19  0:26                                               ` [rtc-linux] " Doug Anderson
2015-12-21  8:16                                             ` Alexandre Belloni
2015-12-21  8:16                                               ` [rtc-linux] " Alexandre Belloni

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=CAODwPW-gGnZUoNm4M1v5rEM3LCtPD23EZknRqOqw5cDeviWJ9w@mail.gmail.com \
    --to=jwerner@chromium.org \
    --cc=a.zummo@towertech.it \
    --cc=akpm@linux-foundation.org \
    --cc=alexandre.belloni@free-electrons.com \
    --cc=dianders@chromium.org \
    --cc=heiko@sntech.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rtc-linux@googlegroups.com \
    --cc=sonnyrao@chromium.org \
    --cc=zyw@rock-chips.com \
    /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.