* [U-Boot] [PATCH 1/1 v3] console: USB: KBD: Fix incorrect autoboot timeout
@ 2013-01-24 11:05 Jim Lin
2013-01-26 3:17 ` Marek Vasut
` (2 more replies)
0 siblings, 3 replies; 16+ messages in thread
From: Jim Lin @ 2013-01-24 11:05 UTC (permalink / raw)
To: u-boot
Autoboot timeout defined by CONFIG_BOOTDELAY will not be accurate if
CONFIG_USB_KEYBOARD and CONFIG_SYS_USB_EVENT_POLL are defined in
configuration file and when tstc() function for checking key pressed
takes longer time than 10 ms (e.g., 50 ms) to finish.
Signed-off-by: Jim Lin <jilin@nvidia.com>
---
Changes in v2:
- use do-while and get_timer to count timeout.
Changes in v3:
- revert original udelay(10000); for safety.
common/main.c | 10 +++++-----
1 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/common/main.c b/common/main.c
index b145f85..dcd2a42 100644
--- a/common/main.c
+++ b/common/main.c
@@ -225,6 +225,7 @@ static inline
int abortboot(int bootdelay)
{
int abort = 0;
+ unsigned long ts;
#ifdef CONFIG_MENUPROMPT
printf(CONFIG_MENUPROMPT);
@@ -248,11 +249,10 @@ int abortboot(int bootdelay)
#endif
while ((bootdelay > 0) && (!abort)) {
- int i;
-
--bootdelay;
- /* delay 100 * 10ms */
- for (i=0; !abort && i<100; ++i) {
+ /* delay 1000 ms */
+ ts = get_timer(0);
+ do {
if (tstc()) { /* we got a key press */
abort = 1; /* don't auto boot */
bootdelay = 0; /* no more delay */
@@ -264,7 +264,7 @@ int abortboot(int bootdelay)
break;
}
udelay(10000);
- }
+ } while (!abort && get_timer(ts) < 1000);
printf("\b\b\b%2d ", bootdelay);
}
--
1.7.3
-----------------------------------------------------------------------------------
This email message is for the sole use of the intended recipient(s) and may contain
confidential information. Any unauthorized review, use, disclosure or distribution
is prohibited. If you are not the intended recipient, please contact the sender by
reply email and destroy all copies of the original message.
-----------------------------------------------------------------------------------
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [U-Boot] [PATCH 1/1 v3] console: USB: KBD: Fix incorrect autoboot timeout
2013-01-24 11:05 [U-Boot] [PATCH 1/1 v3] console: USB: KBD: Fix incorrect autoboot timeout Jim Lin
@ 2013-01-26 3:17 ` Marek Vasut
2013-01-26 13:14 ` Wolfgang Denk
2013-02-04 16:40 ` [U-Boot] [U-Boot, 1/1, " Tom Rini
2013-03-20 23:56 ` [U-Boot] [PATCH 1/1 " Jon Hunter
2 siblings, 1 reply; 16+ messages in thread
From: Marek Vasut @ 2013-01-26 3:17 UTC (permalink / raw)
To: u-boot
Dear Jim Lin,
> Autoboot timeout defined by CONFIG_BOOTDELAY will not be accurate if
> CONFIG_USB_KEYBOARD and CONFIG_SYS_USB_EVENT_POLL are defined in
> configuration file and when tstc() function for checking key pressed
> takes longer time than 10 ms (e.g., 50 ms) to finish.
>
> Signed-off-by: Jim Lin <jilin@nvidia.com>
Applied to u-boot-usb
Thanks
Best regards,
Marek Vasut
^ permalink raw reply [flat|nested] 16+ messages in thread
* [U-Boot] [PATCH 1/1 v3] console: USB: KBD: Fix incorrect autoboot timeout
2013-01-26 3:17 ` Marek Vasut
@ 2013-01-26 13:14 ` Wolfgang Denk
2013-01-26 17:04 ` Marek Vasut
[not found] ` <5FBF8E85CA34454794F0F7ECBA79798F37A4D1D582@HQMAIL04.nvidia.com>
0 siblings, 2 replies; 16+ messages in thread
From: Wolfgang Denk @ 2013-01-26 13:14 UTC (permalink / raw)
To: u-boot
Dear Marek Vasut,
In message <201301260417.54768.marex@denx.de> you wrote:
>
> > Autoboot timeout defined by CONFIG_BOOTDELAY will not be accurate if
> > CONFIG_USB_KEYBOARD and CONFIG_SYS_USB_EVENT_POLL are defined in
> > configuration file and when tstc() function for checking key pressed
> > takes longer time than 10 ms (e.g., 50 ms) to finish.
> >
> > Signed-off-by: Jim Lin <jilin@nvidia.com>
>
> Applied to u-boot-usb
This is common code, and essentially unrelated to USB. It should go
through Tom, not through the USB repo.
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
Alan Turing thought about criteria to settle the question of whether
machines can think, a question of which we now know that it is about
as relevant as the question of whether submarines can swim.
-- Edsger Dijkstra
^ permalink raw reply [flat|nested] 16+ messages in thread
* [U-Boot] [PATCH 1/1 v3] console: USB: KBD: Fix incorrect autoboot timeout
2013-01-26 13:14 ` Wolfgang Denk
@ 2013-01-26 17:04 ` Marek Vasut
[not found] ` <5FBF8E85CA34454794F0F7ECBA79798F37A4D1D582@HQMAIL04.nvidia.com>
1 sibling, 0 replies; 16+ messages in thread
From: Marek Vasut @ 2013-01-26 17:04 UTC (permalink / raw)
To: u-boot
Dear Wolfgang Denk,
> Dear Marek Vasut,
>
> In message <201301260417.54768.marex@denx.de> you wrote:
> > > Autoboot timeout defined by CONFIG_BOOTDELAY will not be accurate if
> > > CONFIG_USB_KEYBOARD and CONFIG_SYS_USB_EVENT_POLL are defined in
> > > configuration file and when tstc() function for checking key pressed
> > > takes longer time than 10 ms (e.g., 50 ms) to finish.
> > >
> > > Signed-off-by: Jim Lin <jilin@nvidia.com>
> >
> > Applied to u-boot-usb
>
> This is common code, and essentially unrelated to USB. It should go
> through Tom, not through the USB repo.
Either way is fine by me. Maybe the usb: tag should be removed then too.
Best regards,
Marek Vasut
^ permalink raw reply [flat|nested] 16+ messages in thread
* [U-Boot] [PATCH 1/1 v3] console: USB: KBD: Fix incorrect autoboot timeout
[not found] ` <5FBF8E85CA34454794F0F7ECBA79798F37A4D1D582@HQMAIL04.nvidia.com>
@ 2013-01-28 16:37 ` Marek Vasut
2013-01-28 16:37 ` Tom Rini
1 sibling, 0 replies; 16+ messages in thread
From: Marek Vasut @ 2013-01-28 16:37 UTC (permalink / raw)
To: u-boot
Dear Tom Warren,
> Wolfgang,
>
> > -----Original Message-----
> > From: Wolfgang Denk [mailto:wd at denx.de]
> > Sent: Saturday, January 26, 2013 6:14 AM
> > To: Marek Vasut
> > Cc: Jim Lin; u-boot at lists.denx.de; Tom Warren; trini at ti.com;
> > albert.u.boot at aribaud.net
> > Subject: Re: [PATCH 1/1 v3] console: USB: KBD: Fix incorrect autoboot
> > timeout
> >
> > Dear Marek Vasut,
> >
> > In message <201301260417.54768.marex@denx.de> you wrote:
> > > > Autoboot timeout defined by CONFIG_BOOTDELAY will not be accurate if
> > > > CONFIG_USB_KEYBOARD and CONFIG_SYS_USB_EVENT_POLL are
> >
> > defined in
> >
> > > > configuration file and when tstc() function for checking key pressed
> > > > takes longer time than 10 ms (e.g., 50 ms) to finish.
> > > >
> > > > Signed-off-by: Jim Lin <jilin@nvidia.com>
> > >
> > > Applied to u-boot-usb
> >
> > This is common code, and essentially unrelated to USB. It should go
> > through Tom, not through the USB repo.
>
> Why do you expect this to go thru the Tegra tree?
Tom Rini ... you're not the only Tom around here :p
[...]
Best regards,
Marek Vasut
^ permalink raw reply [flat|nested] 16+ messages in thread
* [U-Boot] [PATCH 1/1 v3] console: USB: KBD: Fix incorrect autoboot timeout
[not found] ` <5FBF8E85CA34454794F0F7ECBA79798F37A4D1D582@HQMAIL04.nvidia.com>
2013-01-28 16:37 ` Marek Vasut
@ 2013-01-28 16:37 ` Tom Rini
1 sibling, 0 replies; 16+ messages in thread
From: Tom Rini @ 2013-01-28 16:37 UTC (permalink / raw)
To: u-boot
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
On 01/28/2013 11:30 AM, Tom Warren wrote:
> Wolfgang,
>
>> -----Original Message----- From: Wolfgang Denk
>> [mailto:wd at denx.de] Sent: Saturday, January 26, 2013 6:14 AM To:
>> Marek Vasut Cc: Jim Lin; u-boot at lists.denx.de; Tom Warren;
>> trini at ti.com; albert.u.boot at aribaud.net Subject: Re: [PATCH 1/1
>> v3] console: USB: KBD: Fix incorrect autoboot timeout
>>
>> Dear Marek Vasut,
>>
>> In message <201301260417.54768.marex@denx.de> you wrote:
>>>
>>>> Autoboot timeout defined by CONFIG_BOOTDELAY will not be
>>>> accurate if CONFIG_USB_KEYBOARD and
>>>> CONFIG_SYS_USB_EVENT_POLL are
>> defined in
>>>> configuration file and when tstc() function for checking key
>>>> pressed takes longer time than 10 ms (e.g., 50 ms) to
>>>> finish.
>>>>
>>>> Signed-off-by: Jim Lin <jilin@nvidia.com>
>>>
>>> Applied to u-boot-usb
>>
>> This is common code, and essentially unrelated to USB. It should
>> go through Tom, not through the USB repo.
>
> Why do you expect this to go thru the Tegra tree? It's common code
> - shouldn't it at least go thru my parent repo (ARM), if no
> directly into u-boot.git/master?
I think he means me :)
- --
Tom
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/
iQIcBAEBAgAGBQJRBqk8AAoJENk4IS6UOR1WnqwQAI0Gpysj7oZjelcF7XDYVOPu
/9rIsi3ZiB5+xtENWTBV08Y8GKpfNIdqMyMqQ3V6kWFSTAVzoNZDtoX3KX01Vvc8
SZ8LDlpQFzW1cCYxLcRdXIOmCXrUoc/qoJgbmYYHrnlZOHmSW1rrZTE2iW9QUe69
4YfmWDD5sVx/fGKXZvbzYu1Nt24qWtCXxGZ0jWBv3mPpvOtnyfePeUKdHhakn8PE
eTI9MUXXsOCX4Sbj2anPKbmp+W4f6bKvl0OpBBQNHSuD5tYthuM/YTpmhwSnaGtr
8QiJNIc7nliSmQh4y0XrIqEaN3KC6oIN6VjO2uM5+TVern9HYIazy+uXXRvQvA5c
wq+Xb2mxIZf4vet9BbAWIpNN7w5I6adnC1APM5I47IMQyxGfesi4cdt6JY/X4M+z
xr9DZo4kcmszhAfSNH12MndQfutH6INcZeOpMFFZe+2h51XrbufUsT3mNwvsmcCT
6+Ef1VoMfpB0ZrCPxk969twm8sXarD2d6KW5uO/jDJF3ENoXIUEEbZpT8Sz/mlgJ
9bNyddsEptXS4mRoUszcWItc5Stok1fNYmECkknpPFOm01s7x6XUuRBpV72jFiwM
+/d7K+wAH8jm9y0Ij2Ya3w8bKnilEAA3nJpbr5K9wPLEFqNrX++es/44lxQGb/vI
OjPexZLYrEG9okXEC83v
=cV3l
-----END PGP SIGNATURE-----
^ permalink raw reply [flat|nested] 16+ messages in thread
* [U-Boot] [U-Boot, 1/1, v3] console: USB: KBD: Fix incorrect autoboot timeout
2013-01-24 11:05 [U-Boot] [PATCH 1/1 v3] console: USB: KBD: Fix incorrect autoboot timeout Jim Lin
2013-01-26 3:17 ` Marek Vasut
@ 2013-02-04 16:40 ` Tom Rini
2013-03-20 23:56 ` [U-Boot] [PATCH 1/1 " Jon Hunter
2 siblings, 0 replies; 16+ messages in thread
From: Tom Rini @ 2013-02-04 16:40 UTC (permalink / raw)
To: u-boot
On Thu, Jan 24, 2013 at 01:05:55AM -0000, Jim Lin wrote:
> Autoboot timeout defined by CONFIG_BOOTDELAY will not be accurate if
> CONFIG_USB_KEYBOARD and CONFIG_SYS_USB_EVENT_POLL are defined in
> configuration file and when tstc() function for checking key pressed
> takes longer time than 10 ms (e.g., 50 ms) to finish.
>
> Signed-off-by: Jim Lin <jilin@nvidia.com>
Applied to u-boot/master, thanks!
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20130204/ef315778/attachment.pgp>
^ permalink raw reply [flat|nested] 16+ messages in thread
* [U-Boot] [PATCH 1/1 v3] console: USB: KBD: Fix incorrect autoboot timeout
2013-01-24 11:05 [U-Boot] [PATCH 1/1 v3] console: USB: KBD: Fix incorrect autoboot timeout Jim Lin
2013-01-26 3:17 ` Marek Vasut
2013-02-04 16:40 ` [U-Boot] [U-Boot, 1/1, " Tom Rini
@ 2013-03-20 23:56 ` Jon Hunter
2013-03-21 0:19 ` Marek Vasut
` (2 more replies)
2 siblings, 3 replies; 16+ messages in thread
From: Jon Hunter @ 2013-03-20 23:56 UTC (permalink / raw)
To: u-boot
On 01/24/2013 05:05 AM, Jim Lin wrote:
> Autoboot timeout defined by CONFIG_BOOTDELAY will not be accurate if
> CONFIG_USB_KEYBOARD and CONFIG_SYS_USB_EVENT_POLL are defined in
> configuration file and when tstc() function for checking key pressed
> takes longer time than 10 ms (e.g., 50 ms) to finish.
>
> Signed-off-by: Jim Lin <jilin@nvidia.com>
> ---
> Changes in v2:
> - use do-while and get_timer to count timeout.
> Changes in v3:
> - revert original udelay(10000); for safety.
>
> common/main.c | 10 +++++-----
> 1 files changed, 5 insertions(+), 5 deletions(-)
>
> diff --git a/common/main.c b/common/main.c
> index b145f85..dcd2a42 100644
> --- a/common/main.c
> +++ b/common/main.c
> @@ -225,6 +225,7 @@ static inline
> int abortboot(int bootdelay)
> {
> int abort = 0;
> + unsigned long ts;
>
> #ifdef CONFIG_MENUPROMPT
> printf(CONFIG_MENUPROMPT);
> @@ -248,11 +249,10 @@ int abortboot(int bootdelay)
> #endif
>
> while ((bootdelay > 0) && (!abort)) {
> - int i;
> -
> --bootdelay;
> - /* delay 100 * 10ms */
> - for (i=0; !abort && i<100; ++i) {
> + /* delay 1000 ms */
> + ts = get_timer(0);
> + do {
> if (tstc()) { /* we got a key press */
> abort = 1; /* don't auto boot */
> bootdelay = 0; /* no more delay */
> @@ -264,7 +264,7 @@ int abortboot(int bootdelay)
> break;
> }
> udelay(10000);
> - }
> + } while (!abort && get_timer(ts) < 1000);
>
> printf("\b\b\b%2d ", bootdelay);
> }
This change is causing problems with auto-delay on one of my boards by
making it inaccurate :-(
The question is what should get_timer() be returning? If it is meant to
be milliseconds then I guess I need to fix get_timer() for my board.
However, if it is just meant to be timer ticks at the SYS_HZ rate then I
don't see how the above change guarantees the do-while loop waits 1000
ms per iteration without normalising to SYS_HZ.
For my board I made the following change to make it work ...
diff --git a/common/main.c b/common/main.c
index a15f020..32c4f8a 100644
--- a/common/main.c
+++ b/common/main.c
@@ -264,7 +264,7 @@ int abortboot(int bootdelay)
break;
}
udelay(10000);
- } while (!abort && get_timer(ts) < 1000);
+ } while (!abort && !(get_timer(ts) / CONFIG_SYS_HZ));
printf("\b\b\b%2d ", bootdelay);
Cheers
Jon
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [U-Boot] [PATCH 1/1 v3] console: USB: KBD: Fix incorrect autoboot timeout
2013-03-20 23:56 ` [U-Boot] [PATCH 1/1 " Jon Hunter
@ 2013-03-21 0:19 ` Marek Vasut
2013-03-21 15:10 ` Jon Hunter
2013-03-21 6:06 ` Jim Lin
2013-03-21 6:18 ` Stephen Warren
2 siblings, 1 reply; 16+ messages in thread
From: Marek Vasut @ 2013-03-21 0:19 UTC (permalink / raw)
To: u-boot
Dear Jon Hunter,
> On 01/24/2013 05:05 AM, Jim Lin wrote:
> > Autoboot timeout defined by CONFIG_BOOTDELAY will not be accurate if
> > CONFIG_USB_KEYBOARD and CONFIG_SYS_USB_EVENT_POLL are defined in
> > configuration file and when tstc() function for checking key pressed
> > takes longer time than 10 ms (e.g., 50 ms) to finish.
> >
> > Signed-off-by: Jim Lin <jilin@nvidia.com>
> > ---
> >
> > Changes in v2:
> > - use do-while and get_timer to count timeout.
> >
> > Changes in v3:
> > - revert original udelay(10000); for safety.
> >
> > common/main.c | 10 +++++-----
> > 1 files changed, 5 insertions(+), 5 deletions(-)
> >
> > diff --git a/common/main.c b/common/main.c
> > index b145f85..dcd2a42 100644
> > --- a/common/main.c
> > +++ b/common/main.c
> > @@ -225,6 +225,7 @@ static inline
> >
> > int abortboot(int bootdelay)
> > {
> >
> > int abort = 0;
> >
> > + unsigned long ts;
> >
> > #ifdef CONFIG_MENUPROMPT
> >
> > printf(CONFIG_MENUPROMPT);
> >
> > @@ -248,11 +249,10 @@ int abortboot(int bootdelay)
> >
> > #endif
> >
> > while ((bootdelay > 0) && (!abort)) {
> >
> > - int i;
> > -
> >
> > --bootdelay;
> >
> > - /* delay 100 * 10ms */
> > - for (i=0; !abort && i<100; ++i) {
> > + /* delay 1000 ms */
> > + ts = get_timer(0);
> > + do {
> >
> > if (tstc()) { /* we got a key press */
> >
> > abort = 1; /* don't auto boot */
> > bootdelay = 0; /* no more delay */
> >
> > @@ -264,7 +264,7 @@ int abortboot(int bootdelay)
> >
> > break;
> >
> > }
> > udelay(10000);
> >
> > - }
> > + } while (!abort && get_timer(ts) < 1000);
> >
> > printf("\b\b\b%2d ", bootdelay);
> >
> > }
>
> This change is causing problems with auto-delay on one of my boards by
> making it inaccurate :-(
>
> The question is what should get_timer() be returning? If it is meant to
> be milliseconds then I guess I need to fix get_timer() for my board.
> However, if it is just meant to be timer ticks at the SYS_HZ rate then I
> don't see how the above change guarantees the do-while loop waits 1000
> ms per iteration without normalising to SYS_HZ.
What board is it ?
Best regards,
Marek Vasut
^ permalink raw reply [flat|nested] 16+ messages in thread
* [U-Boot] [PATCH 1/1 v3] console: USB: KBD: Fix incorrect autoboot timeout
2013-03-20 23:56 ` [U-Boot] [PATCH 1/1 " Jon Hunter
2013-03-21 0:19 ` Marek Vasut
@ 2013-03-21 6:06 ` Jim Lin
2013-03-21 6:18 ` Stephen Warren
2 siblings, 0 replies; 16+ messages in thread
From: Jim Lin @ 2013-03-21 6:06 UTC (permalink / raw)
To: u-boot
Thanks for pointing out the potential issue.
-----Original Message-----
From: Jon Hunter [mailto:jon-hunter at ti.com]
Sent: Thursday, March 21, 2013 7:57 AM
To: Jim Lin
Cc: u-boot at lists.denx.de; marex at denx.de; wd at denx.de; trini at ti.com; Tom Warren
Subject: Re: [U-Boot] [PATCH 1/1 v3] console: USB: KBD: Fix incorrect autoboot timeout
On 01/24/2013 05:05 AM, Jim Lin wrote:
> Autoboot timeout defined by CONFIG_BOOTDELAY will not be accurate if
> CONFIG_USB_KEYBOARD and CONFIG_SYS_USB_EVENT_POLL are defined in
> configuration file and when tstc() function for checking key pressed
> takes longer time than 10 ms (e.g., 50 ms) to finish.
>
> Signed-off-by: Jim Lin <jilin@nvidia.com>
> ---
> Changes in v2:
> - use do-while and get_timer to count timeout.
> Changes in v3:
> - revert original udelay(10000); for safety.
>
> common/main.c | 10 +++++-----
> 1 files changed, 5 insertions(+), 5 deletions(-)
>
> diff --git a/common/main.c b/common/main.c index b145f85..dcd2a42
> 100644
> --- a/common/main.c
> +++ b/common/main.c
> @@ -225,6 +225,7 @@ static inline
> int abortboot(int bootdelay)
> {
> int abort = 0;
> + unsigned long ts;
>
> #ifdef CONFIG_MENUPROMPT
> printf(CONFIG_MENUPROMPT);
> @@ -248,11 +249,10 @@ int abortboot(int bootdelay) #endif
>
> while ((bootdelay > 0) && (!abort)) {
> - int i;
> -
> --bootdelay;
> - /* delay 100 * 10ms */
> - for (i=0; !abort && i<100; ++i) {
> + /* delay 1000 ms */
> + ts = get_timer(0);
> + do {
> if (tstc()) { /* we got a key press */
> abort = 1; /* don't auto boot */
> bootdelay = 0; /* no more delay */
> @@ -264,7 +264,7 @@ int abortboot(int bootdelay)
> break;
> }
> udelay(10000);
> - }
> + } while (!abort && get_timer(ts) < 1000);
>
> printf("\b\b\b%2d ", bootdelay);
> }
This change is causing problems with auto-delay on one of my boards by making it inaccurate :-(
The question is what should get_timer() be returning? If it is meant to be milliseconds then I guess I need to fix get_timer() for my board.
However, if it is just meant to be timer ticks at the SYS_HZ rate then I don't see how the above change guarantees the do-while loop waits 1000 ms per iteration without normalising to SYS_HZ.
For my board I made the following change to make it work ...
diff --git a/common/main.c b/common/main.c index a15f020..32c4f8a 100644
--- a/common/main.c
+++ b/common/main.c
@@ -264,7 +264,7 @@ int abortboot(int bootdelay)
break;
}
udelay(10000);
- } while (!abort && get_timer(ts) < 1000);
+ } while (!abort && !(get_timer(ts) / CONFIG_SYS_HZ));
printf("\b\b\b%2d ", bootdelay);
--
nvpublic
^ permalink raw reply [flat|nested] 16+ messages in thread
* [U-Boot] [PATCH 1/1 v3] console: USB: KBD: Fix incorrect autoboot timeout
2013-03-20 23:56 ` [U-Boot] [PATCH 1/1 " Jon Hunter
2013-03-21 0:19 ` Marek Vasut
2013-03-21 6:06 ` Jim Lin
@ 2013-03-21 6:18 ` Stephen Warren
2013-03-21 6:57 ` Wolfgang Denk
2 siblings, 1 reply; 16+ messages in thread
From: Stephen Warren @ 2013-03-21 6:18 UTC (permalink / raw)
To: u-boot
On 03/20/2013 05:56 PM, Jon Hunter wrote:
>
> On 01/24/2013 05:05 AM, Jim Lin wrote:
>> Autoboot timeout defined by CONFIG_BOOTDELAY will not be accurate if
>> CONFIG_USB_KEYBOARD and CONFIG_SYS_USB_EVENT_POLL are defined in
>> configuration file and when tstc() function for checking key pressed
>> takes longer time than 10 ms (e.g., 50 ms) to finish.
...
> This change is causing problems with auto-delay on one of my boards by
> making it inaccurate :-(
Interesting. I just noticed the same problem, and posted the following
patch to fix it:
http://lists.denx.de/pipermail/u-boot/2013-March/149625.html
This was on the Raspberry Pi.
^ permalink raw reply [flat|nested] 16+ messages in thread
* [U-Boot] [PATCH 1/1 v3] console: USB: KBD: Fix incorrect autoboot timeout
2013-03-21 6:18 ` Stephen Warren
@ 2013-03-21 6:57 ` Wolfgang Denk
2013-03-21 15:17 ` Jon Hunter
0 siblings, 1 reply; 16+ messages in thread
From: Wolfgang Denk @ 2013-03-21 6:57 UTC (permalink / raw)
To: u-boot
Dear Stephen Warren,
In message <514AA642.3090107@wwwdotorg.org> you wrote:
>
> Interesting. I just noticed the same problem, and posted the following
> patch to fix it:
>
> http://lists.denx.de/pipermail/u-boot/2013-March/149625.html
>
> This was on the Raspberry Pi.
You mean the Raspberry Pi uses SYS_HZ != 1000 ???
This needs fixing!!
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
There are two ways of constructing a software design. One way is to
make it so simple that there are obviously no deficiencies and the
other is to make it so complicated that there are no obvious defi-
ciencies. - Charles Anthony Richard Hoare
^ permalink raw reply [flat|nested] 16+ messages in thread
* [U-Boot] [PATCH 1/1 v3] console: USB: KBD: Fix incorrect autoboot timeout
2013-03-21 0:19 ` Marek Vasut
@ 2013-03-21 15:10 ` Jon Hunter
2013-03-21 19:19 ` Wolfgang Denk
0 siblings, 1 reply; 16+ messages in thread
From: Jon Hunter @ 2013-03-21 15:10 UTC (permalink / raw)
To: u-boot
Hi Marek,
On 03/20/2013 07:19 PM, Marek Vasut wrote:
> Dear Jon Hunter,
>
>> On 01/24/2013 05:05 AM, Jim Lin wrote:
>>> Autoboot timeout defined by CONFIG_BOOTDELAY will not be accurate if
>>> CONFIG_USB_KEYBOARD and CONFIG_SYS_USB_EVENT_POLL are defined in
>>> configuration file and when tstc() function for checking key pressed
>>> takes longer time than 10 ms (e.g., 50 ms) to finish.
>>>
>>> Signed-off-by: Jim Lin <jilin@nvidia.com>
>>> ---
>>>
>>> Changes in v2:
>>> - use do-while and get_timer to count timeout.
>>>
>>> Changes in v3:
>>> - revert original udelay(10000); for safety.
>>>
>>> common/main.c | 10 +++++-----
>>> 1 files changed, 5 insertions(+), 5 deletions(-)
>>>
>>> diff --git a/common/main.c b/common/main.c
>>> index b145f85..dcd2a42 100644
>>> --- a/common/main.c
>>> +++ b/common/main.c
>>> @@ -225,6 +225,7 @@ static inline
>>>
>>> int abortboot(int bootdelay)
>>> {
>>>
>>> int abort = 0;
>>>
>>> + unsigned long ts;
>>>
>>> #ifdef CONFIG_MENUPROMPT
>>>
>>> printf(CONFIG_MENUPROMPT);
>>>
>>> @@ -248,11 +249,10 @@ int abortboot(int bootdelay)
>>>
>>> #endif
>>>
>>> while ((bootdelay > 0) && (!abort)) {
>>>
>>> - int i;
>>> -
>>>
>>> --bootdelay;
>>>
>>> - /* delay 100 * 10ms */
>>> - for (i=0; !abort && i<100; ++i) {
>>> + /* delay 1000 ms */
>>> + ts = get_timer(0);
>>> + do {
>>>
>>> if (tstc()) { /* we got a key press */
>>>
>>> abort = 1; /* don't auto boot */
>>> bootdelay = 0; /* no more delay */
>>>
>>> @@ -264,7 +264,7 @@ int abortboot(int bootdelay)
>>>
>>> break;
>>>
>>> }
>>> udelay(10000);
>>>
>>> - }
>>> + } while (!abort && get_timer(ts) < 1000);
>>>
>>> printf("\b\b\b%2d ", bootdelay);
>>>
>>> }
>>
>> This change is causing problems with auto-delay on one of my boards by
>> making it inaccurate :-(
>>
>> The question is what should get_timer() be returning? If it is meant to
>> be milliseconds then I guess I need to fix get_timer() for my board.
>> However, if it is just meant to be timer ticks at the SYS_HZ rate then I
>> don't see how the above change guarantees the do-while loop waits 1000
>> ms per iteration without normalising to SYS_HZ.
>
> What board is it ?
It is an OMAP2420-H4 board (ARM11). The timer is using a very odd SYS_HZ
value of ~46875 (I believe this is because this is the most they can
divide down the 12MHz clock source by). The timer could be switched to
use a 32kHz clock source instead of the 12MHz clock source and get
something closer to 1ms. However, I would need to test to see if this
causes any other problems.
Cheers
Jon
^ permalink raw reply [flat|nested] 16+ messages in thread
* [U-Boot] [PATCH 1/1 v3] console: USB: KBD: Fix incorrect autoboot timeout
2013-03-21 6:57 ` Wolfgang Denk
@ 2013-03-21 15:17 ` Jon Hunter
2013-03-21 19:15 ` Wolfgang Denk
0 siblings, 1 reply; 16+ messages in thread
From: Jon Hunter @ 2013-03-21 15:17 UTC (permalink / raw)
To: u-boot
On 03/21/2013 01:57 AM, Wolfgang Denk wrote:
> Dear Stephen Warren,
>
> In message <514AA642.3090107@wwwdotorg.org> you wrote:
>>
>> Interesting. I just noticed the same problem, and posted the following
>> patch to fix it:
>>
>> http://lists.denx.de/pipermail/u-boot/2013-March/149625.html
>>
>> This was on the Raspberry Pi.
>
> You mean the Raspberry Pi uses SYS_HZ != 1000 ???
>
> This needs fixing!!
I understand that you may wish to have SYS_HZ == 1000, but shouldn't the
code still normalise the get_timer() value to SYS_HZ?
If I grep through the u-boot source I see a lot of instances where
get_timer() is normalised to SYS_HZ.
grep -r "get_timer" * | grep "SYS_HZ"
Cheers
Jon
^ permalink raw reply [flat|nested] 16+ messages in thread
* [U-Boot] [PATCH 1/1 v3] console: USB: KBD: Fix incorrect autoboot timeout
2013-03-21 15:17 ` Jon Hunter
@ 2013-03-21 19:15 ` Wolfgang Denk
0 siblings, 0 replies; 16+ messages in thread
From: Wolfgang Denk @ 2013-03-21 19:15 UTC (permalink / raw)
To: u-boot
Dear Jon Hunter,
In message <514B2482.5000002@ti.com> you wrote:
>
> I understand that you may wish to have SYS_HZ == 1000, but shouldn't the
> code still normalise the get_timer() value to SYS_HZ?
>
> If I grep through the u-boot source I see a lot of instances where
> get_timer() is normalised to SYS_HZ.
>
> grep -r "get_timer" * | grep "SYS_HZ"
get_timer() is supposed to work in milliseconds.
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
Die Scheu vor Verantwortung ist die Krankheit unserer Zeit.
-- Otto von Bismarck
^ permalink raw reply [flat|nested] 16+ messages in thread
* [U-Boot] [PATCH 1/1 v3] console: USB: KBD: Fix incorrect autoboot timeout
2013-03-21 15:10 ` Jon Hunter
@ 2013-03-21 19:19 ` Wolfgang Denk
0 siblings, 0 replies; 16+ messages in thread
From: Wolfgang Denk @ 2013-03-21 19:19 UTC (permalink / raw)
To: u-boot
Dear Jon Hunter,
In message <514B22FB.1000503@ti.com> you wrote:
>
> >> The question is what should get_timer() be returning? If it is meant to
> >> be milliseconds then I guess I need to fix get_timer() for my board.
> >> However, if it is just meant to be timer ticks at the SYS_HZ rate then I
It is ticks at SYS_HZ rate with SYS_HZ==1000, i. e. milliseconds.
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
When the bosses talk about improving productivity, they are never
talking about themselves.
^ permalink raw reply [flat|nested] 16+ messages in thread
end of thread, other threads:[~2013-03-21 19:19 UTC | newest]
Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-01-24 11:05 [U-Boot] [PATCH 1/1 v3] console: USB: KBD: Fix incorrect autoboot timeout Jim Lin
2013-01-26 3:17 ` Marek Vasut
2013-01-26 13:14 ` Wolfgang Denk
2013-01-26 17:04 ` Marek Vasut
[not found] ` <5FBF8E85CA34454794F0F7ECBA79798F37A4D1D582@HQMAIL04.nvidia.com>
2013-01-28 16:37 ` Marek Vasut
2013-01-28 16:37 ` Tom Rini
2013-02-04 16:40 ` [U-Boot] [U-Boot, 1/1, " Tom Rini
2013-03-20 23:56 ` [U-Boot] [PATCH 1/1 " Jon Hunter
2013-03-21 0:19 ` Marek Vasut
2013-03-21 15:10 ` Jon Hunter
2013-03-21 19:19 ` Wolfgang Denk
2013-03-21 6:06 ` Jim Lin
2013-03-21 6:18 ` Stephen Warren
2013-03-21 6:57 ` Wolfgang Denk
2013-03-21 15:17 ` Jon Hunter
2013-03-21 19:15 ` Wolfgang Denk
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox