[U-Boot] [PATCH v2][repost] arm: Kirkwood: add SYSRSTn Duration Counter Support

Prafulla Wadaskar prafulla at marvell.com
Thu Aug 20 10:53:06 CEST 2009


 

> -----Original Message-----
> From: Wolfgang Denk [mailto:wd at denx.de] 
> Sent: Wednesday, August 19, 2009 12:50 PM
> To: Prafulla Wadaskar
> Cc: u-boot at lists.denx.de; Ashish Karkare; Prabhanjan Sarnaik; 
> Ronen Shitrit
> Subject: Re: [U-Boot] [PATCH v2][repost] arm: Kirkwood: add 
> SYSRSTn Duration Counter Support
> 
> Dear Prafulla Wadaskar,
> 
> In message 
> <1250679240-17557-1-git-send-email-prafulla at marvell.com> you wrote:
> > I am sorry for previous post v2, pls ignore it, this is the 
> right patch for the same
> 
> This comment does not belong to the commit message. Please move below
> the "---" line.
Okay I will add this in my next post

> 
> > This feature can be used to trigger special command 
> "sysrstcmd" using
> > reset key long press event and environment variable 
> "sysrstdelay" is set
> > (useful for reset to factory or manufacturing mode execution)
> > 
> > Kirkwood SoC implements a hardware-based SYSRSTn duration counter.
> > When SYSRSTn is asserted low, a SYSRSTn duration counter is running.
> > The counter value is stored in the SYSRSTn Length Counter Register
> > The counter is based on the 25-MHz reference clock (40ns)
> > It is a 29-bit counter, yielding a maximum counting duration of
> > 2^29/25 MHz (21.4 seconds). When the counter reach its 
> maximum value,
> > it remains at this value until counter reset is triggered by setting
> > bit 31 of KW_REG_SYSRST_CNT
> > 
> > Implementation:
> > Upon long reset assertion (> ${sysrstdleay} in secs) 
> sysrstcmd will be
> 
> That's a typo, it's "sysrstdelay", right? Please fix while we are at
> it.
Thanks.. I will take care

> 
> > +static void kw_sysrst_action(void)
> > +{
> > +	int ret;
> > +	char *s = getenv("sysrstcmd");
> > +
> > +	if (!s) {
> > +		printf("Error.. %s failed, check sysrstcmd\n",
> > +			__FUNCTION__);
> > +		return;
> 
> Why is this considered an error? I think it is perfectly legal to not
> define this environment variable. For example, it is also no error to
> set "bootdelay" and not define "bootcmd". I think we should implement
> consistent behaviour.
It is similar with one difference- sysrstcmd is additionally gated with h/w trigger,
Secondly it is not as known as bootcmd, so it is always better to throw some error message.
This save some of developer's time and email exchanges :-)

> 
> > +	}
> > +
> > +	printf("Starting %s process...\n", __FUNCTION__);
> 
> This should be a debug(), I think. Don't produce too much output.
> 
> > +	if (ret < 0)
> > +		printf("Error.. %s failed\n", __FUNCTION__);
> > +	else
> > +		printf("%s process finished\n", __FUNCTION__);
> 
> Ditto - please turn into debug().
Okay no issues..I will do it

> 
> > +
> > +static void kw_sysrst_check(void)
> > +{
> > +	u32 sysrst_cnt, sysrst_dly;
> > +	char *s;
> > +
> > +	/*
> > +	 * no action if sysrstdelay environment variable is not defined
> > +	 */
> > +	s = getenv("sysrstdelay");
> > +	if (s == NULL)
> > +		return;
> > +
> > +	/* read sysrstdelay value */
> > +	sysrst_dly = (u32) simple_strtoul(s, NULL, 10);
> > +
> > +	/* read SysRst Length counter register (bits 28:0) */
> > +	sysrst_cnt = (0x1fffffff & readl(KW_REG_SYSRST_CNT));
> > +	printf("H/w Rst hold time: %d.%d secs\n",
> > +		sysrst_cnt / SYSRST_CNT_1SEC_VAL,
> > +		sysrst_cnt % SYSRST_CNT_1SEC_VAL);
> 
> This should be debvug(), too ?
Does it harm if we keep this info?
It is just like "cpu name, speed etc".
SysRST is a feature provided by h/w that we are supporting,
It may help users who are willing to use this feature
Any way it is gated by "sysrstdelay"
So I think we must keep this print alive

Regards..
Prafulla . .

> 
> 
> Thanks.
> 
> Best regards,
> 
> Wolfgang Denk
> 
> -- 
> DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
> HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
> Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
> If a person (a) is poorly, (b) receives treatment  intended  to  make
> him  better, and (c) gets better, then no power of reasoning known to
> medical science can convince him  that  it  may  not  have  been  the
> treatment that restored his health.
> - Sir Peter Medawar, The Art of the Soluble
> 


More information about the U-Boot mailing list