From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sascha Hauer Date: Tue, 3 Jun 2008 17:14:08 +0200 Subject: [U-Boot-Users] [Patch 02/17] U-Boot-V2:Common:Clock Handle case ofclockrollover for get_time_ns In-Reply-To: <8E8BB316C604E94AA019A54D0A5A82A201BB52FE@dlee13.ent.ti.com> References: <8E8BB316C604E94AA019A54D0A5A82A201AF027A@dlee13.ent.ti.com> <20080603080732.GA12859@pengutronix.de> <8E8BB316C604E94AA019A54D0A5A82A201BB5297@dlee13.ent.ti.com> <20080603141448.GB897@pengutronix.de> <8E8BB316C604E94AA019A54D0A5A82A201BB52FE@dlee13.ent.ti.com> Message-ID: <20080603151408.GC897@pengutronix.de> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On Tue, Jun 03, 2008 at 09:39:51AM -0500, Menon, Nishanth wrote: > Sascha, > > -----Original Message----- > > From: Sascha Hauer [mailto:s.hauer at pengutronix.de] > > Sent: Tuesday, June 03, 2008 9:15 AM > > To: Menon, Nishanth > > Cc: u-boot-users at lists.sourceforge.net; Laurent Desnogues; dirk.behme at googlemail.com; > > philip.balister at gmail.com; Gopinath, Thara; Kamat, Nishant; Syed Mohammed, Khasim > > Subject: Re: [Patch 02/17] U-Boot-V2:Common:Clock Handle case ofclockrollover for get_time_ns > > > > > Assumptions made: > > > A) The bits masked out by cs->mask will remain constant. This may not be true. > > > > Eh? That's why they are masked out. > For the sake of discussion: > unsigned int now = 0x120; > unsigned int last = 0x128; > unsigned int mask = 0xFFF0; > unsigned int delta1 = now - last; > unsigned int delta2 = (now & mask) - (last & mask); > printf ("delta1=0x%08X maskdelta1=0x%08X delta2=0x%08X\n",delta1, delta1 & mask, delta2); > > Output will be: > delta1=0xFFFFFFF8 maskdelta1=0x0000FFF0 delta2=0x00000000 > > What we will get now is maskdelta1, while delta2 is the right value. It's not that I thought of the code by myself, I just looked into the kernel and it's exactly like this in the kernel code. So you either just found a kernel bug or we both understand something wrong. > > > > > > B) Roll over assume the min is 0 and max is cs->mask. This need not be the case. > > > It would be good to be explicit. > > > > Do you know any counter that does not start counting from zero? If you > I do not. I am just being a paranoid idiot ;).. > > > have, noone prevents you from substracting the value in your clocksource > > read function. > Max however is assumed to be cs->mask then. We could have timers which can be configured for ticking till a configured max. probably my paranoia kicking in again? If that's the only possibility to program this timer then go out and kill the chip designer ;) Sascha > > Regards, > Nishanth Menon > -- Pengutronix e.K. - Linux Solutions for Science and Industry ----------------------------------------------------------- Kontakt-Informationen finden Sie im Header dieser Mail oder auf der Webseite -> http://www.pengutronix.de/impressum/ <-