Skip to contentSkip to conversation

Nokia RX-51 support

PATCH New Pali Rohár 12 participants 220 messages Jan 24, 2012 – Nov 2, 2012

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

cover Nokia RX-51 support

This patch series add support for new board Nokia RX-51 (aka N900). Last two patches adding on screen bootmenu support.

This series supersedes the last sent version.

Pali Roh?r (14):
arm,omap3: Define save_boot_params in lowlevel_init.S for SPL only
arm: Optionally use existing atags in bootm.c
Add power bus message definitions in twl4030.h
Fix function readline in main.c
cfb_console: Fix function console_scrollup
cfb_console: Add function console_clear and console_clear_line
cfb_console: Add functions for moving with cursor
cfb_console: Add support for some ANSI terminal escape codes New command clear: Clear the ANSI terminal
New config variable CONFIG_MENUCMD
New config variable CONFIG_PREMONITOR
New board support: Nokia RX-51 aka N900
New command bootmenu: ANSI terminal Boot Menu support
RX-51: Add support for bootmenu

 README                                   |    2 +
 arch/arm/cpu/armv7/omap3/lowlevel_init.S |    4 +-
 arch/arm/lib/bootm.c                     |   39 +++-
 board/nokia/rx51/Makefile                |   46 ++++
 board/nokia/rx51/lowlevel_init.S         |   79 ++++++
 board/nokia/rx51/rx51.c                  |  381 ++++++++++++++++++++++++++++++
 board/nokia/rx51/rx51.h                  |  378 +++++++++++++++++++++++++++++
 boards.cfg                               |    1 +
 common/Makefile                          |    2 +
 common/cmd_bootmenu.c                    |  366 ++++++++++++++++++++++++++++
 common/cmd_clear.c                       |   42 ++++
 common/env_common.c                      |    3 +
 common/main.c                            |   89 ++++++-
 drivers/video/cfb_console.c              |  346 +++++++++++++++++++++++++--
 include/common.h                         |   20 ++
 include/config_cmd_all.h                 |    2 +
 include/configs/nokia_rx51.h             |  375 +++++++++++++++++++++++++++++
 include/twl4030.h                        |   98 ++++++++
 18 files changed, 2233 insertions(+), 40 deletions(-)
 create mode 100644 board/nokia/rx51/Makefile
 create mode 100644 board/nokia/rx51/lowlevel_init.S
 create mode 100644 board/nokia/rx51/rx51.c
 create mode 100644 board/nokia/rx51/rx51.h
 create mode 100644 common/cmd_bootmenu.c
 create mode 100644 common/cmd_clear.c
 create mode 100644 include/configs/nokia_rx51.h
Signature · 1 line
1.7.5.4
#1 lore raw

PATCH 1/14 arm, omap3: Define save_boot_params in lowlevel_init.S for SPL only

* Hide function save_boot_params if CONFIG_SPL_BUILD is not defined (function do nothing)

* Same behaviour as in file arch/arm/cpu/armv7/omap4/lowlevel_init.S
* This allow to implement board specified function save_boot_params in board code

---
Changes since original version:
- Fixed commit message

 arch/arm/cpu/armv7/omap3/lowlevel_init.S |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)
arch/arm/cpu/armv7/omap3/lowlevel_init.S +2 -2
index 2f6930b..c42c5dd 100644
@@ -35,15 +35,15 @@
 _TEXT_BASE:
 	.word	CONFIG_SYS_TEXT_BASE	/* sdram load addr from config.mk */
 
+#ifdef CONFIG_SPL_BUILD
 .global save_boot_params
 save_boot_params:
-#ifdef CONFIG_SPL_BUILD
 	ldr	r4, =omap3_boot_device
 	ldr	r5, [r0, #0x4]
 	and	r5, r5, #0xff
 	str	r5, [r4]
-#endif
 	bx	lr
+#endif
 
 .global omap3_gp_romcode_call
 omap3_gp_romcode_call:
Signature · 1 line
1.7.5.4
#2 lore raw

PATCH 1/14 arm, omap3: Define save_boot_params in lowlevel_init.S for SPL only

Quoted 2 lines

* Hide function save_boot_params if CONFIG_SPL_BUILD is not defined (function do nothing)

What do you mean by this statement here ?

Quoted 2 lines

* Same behaviour as in file arch/arm/cpu/armv7/omap4/lowlevel_init.S

Eh?

Quoted 2 lines

* This allow to implement board specified function save_boot_params in board code

I see ... do you want to write overridable function? Make it a weak alias?

M

Quoted 17 lines

---
Changes since original version:
- Fixed commit message

 arch/arm/cpu/armv7/omap3/lowlevel_init.S |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)
(quoted diff) +0 -0

b/arch/arm/cpu/armv7/omap3/lowlevel_init.S index 2f6930b..c42c5dd 100644

arch/arm/cpu/armv7/omap3/lowlevel_init.S +0 -0
@@ -35,15 +35,15 @@
 _TEXT_BASE:
 	.word	CONFIG_SYS_TEXT_BASE	/* sdram load addr from config.mk */
 

arch/arm/cpu/armv7/omap3/lowlevel_init.S line 45

Quoted 10 lines
arch/arm/cpu/armv7/omap3/lowlevel_init.S +1 -2
+#ifdef CONFIG_SPL_BUILD
 .global save_boot_params
 save_boot_params:
-#ifdef CONFIG_SPL_BUILD
 	ldr	r4, =omap3_boot_device
 	ldr	r5, [r0, #0x4]
 	and	r5, r5, #0xff
 	str	r5, [r4]
-#endif
 	bx	lr

Wasn't this jump intentionally left out from the macro ifdef block?

Quoted 4 lines
arch/arm/cpu/armv7/omap3/lowlevel_init.S +1 -0
+#endif
 
 .global omap3_gp_romcode_call
 omap3_gp_romcode_call:
#3 lore raw

PATCH 1/14 arm, omap3: Define save_boot_params in lowlevel_init.S for SPL only

Quoted 5 lines · Marek Vasut
Quoted 2 lines

* Hide function save_boot_params if CONFIG_SPL_BUILD is not defined (function do nothing)

What do you mean by this statement here ?

Quoted 1 line
Quoted 8 lines
Quoted 1 line

* Same behaviour as in file arch/arm/cpu/armv7/omap4/lowlevel_init.S

Eh?

Quoted 2 lines

* This allow to implement board specified function save_boot_params in board code

I see ... do you want to write overridable function? Make it a weak alias?

There is a weak one today, but we globally replace it for 'omap3' today. The N900 needs its own version however.

Signature · 1 line
Tom
#4 lore raw

PATCH 1/14 arm, omap3: Define save_boot_params in lowlevel_init.S for SPL only

In reply to Pali Rohár
Quoted 1 line · Pali Roh?r

* Hide function save_boot_params if CONFIG_SPL_BUILD is not defined (function do nothing)

This is fine.

Quoted 1 line

* Same behaviour as in file arch/arm/cpu/armv7/omap4/lowlevel_init.S

This isn't quite right. OMAP4/5 and AM33XX can re-use the same code here to determine boot device/mode but it's not the same as 'OMAP3.'

Quoted 1 line

* This allow to implement board specified function save_boot_params in board code

This is fine.

Quoted 1 line

So I will apply this, but modify the commit message slightly.

Signature · 1 line
Tom
#5 lore raw

PATCH 1/14 arm, omap3: Define save_boot_params in lowlevel_init.S for SPL only

In reply to Pali Rohár
Quoted 27 lines · On Tuesday 24 January 2012 15:27:58 Pali Roh?r wrote:

* Hide function save_boot_params if CONFIG_SPL_BUILD is not defined (function do nothing)

* Same behaviour as in file arch/arm/cpu/armv7/omap4/lowlevel_init.S
* This allow to implement board specified function save_boot_params in board code

---
Changes since original version:
- Fixed commit message

 arch/arm/cpu/armv7/omap3/lowlevel_init.S |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)
(quoted diff) +0 -0

b/arch/arm/cpu/armv7/omap3/lowlevel_init.S index 2f6930b..c42c5dd 100644

arch/arm/cpu/armv7/omap3/lowlevel_init.S +1 -1
@@ -35,15 +35,15 @@
 _TEXT_BASE:
 	.word	CONFIG_SYS_TEXT_BASE	/* sdram load addr from config.mk */
 
+#ifdef CONFIG_SPL_BUILD
 .global save_boot_params
 save_boot_params:
-#ifdef CONFIG_SPL_BUILD

arch/arm/cpu/armv7/omap3/lowlevel_init.S line 49

Quoted 10 lines
arch/arm/cpu/armv7/omap3/lowlevel_init.S +1 -1
 	ldr	r4, =omap3_boot_device
 	ldr	r5, [r0, #0x4]
 	and	r5, r5, #0xff
 	str	r5, [r4]
-#endif
 	bx	lr
+#endif
 
 .global omap3_gp_romcode_call
 omap3_gp_romcode_call:

Now I see that somebody commited this patch to u-boot:
http://git.denx.de/?p=u-
boot.git;a=commit;h=204705111ca10f52f62e1a02ba567d8fc33a6d1e

So I will not include it in new version.

Please, can you inform me when somebody commit my patches to git master?

Signature · 9 lines
Pali Roh?r
pali.rohar at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20120228/0d4fa9df/attachment.pgp>
#6 lore raw

PATCH 1/14 arm, omap3: Define save_boot_params in lowlevel_init.S for SPL only

Quoted 43 lines · Pali Roh?r
Quoted 35 lines · On Tuesday 24 January 2012 15:27:58 Pali Roh?r wrote:

* Hide function save_boot_params if CONFIG_SPL_BUILD is not defined (function do nothing)

* Same behaviour as in file arch/arm/cpu/armv7/omap4/lowlevel_init.S
* This allow to implement board specified function save_boot_params in board code

---
Changes since original version:
? ?- Fixed commit message

?arch/arm/cpu/armv7/omap3/lowlevel_init.S | ? ?4 ++-- ?1 files changed, 2 insertions(+), 2 deletions(-)

(quoted diff) +0 -0

b/arch/arm/cpu/armv7/omap3/lowlevel_init.S index 2f6930b..c42c5dd 100644

arch/arm/cpu/armv7/omap3/lowlevel_init.S +0 -0
@@ -35,15 +35,15 @@

?_TEXT_BASE:
? ? ? .word ? CONFIG_SYS_TEXT_BASE ? ?/* sdram load addr from config.mk */

+#ifdef CONFIG_SPL_BUILD
?.global save_boot_params
?save_boot_params:
-#ifdef CONFIG_SPL_BUILD
? ? ? ldr ? ? r4, =omap3_boot_device
? ? ? ldr ? ? r5, [r0, #0x4]
? ? ? and ? ? r5, r5, #0xff
? ? ? str ? ? r5, [r4]
-#endif
? ? ? bx ? ? ?lr
+#endif

Quoted 2 lines

?.global omap3_gp_romcode_call
?omap3_gp_romcode_call:

Now I see that somebody commited this patch to u-boot:
http://git.denx.de/?p=u-
boot.git;a=commit;h=204705111ca10f52f62e1a02ba567d8fc33a6d1e

Quoted 3 lines

So I will not include it in new version.

Please, can you inform me when somebody commit my patches to git master?

I did: http://patchwork.ozlabs.org/patch/137559/ :)

Signature · 1 line
Tom
#7 lore raw

PATCH 1/14 arm, omap3: Define save_boot_params in lowlevel_init.S for SPL only

Quoted 45 lines · Pali Roh?r
Quoted 44 lines · On Tuesday 24 January 2012 15:27:58 Pali Roh?r wrote:
Quoted 38 lines

* Hide function save_boot_params if CONFIG_SPL_BUILD is not defined (function do nothing)

* Same behaviour as in file arch/arm/cpu/armv7/omap4/lowlevel_init.S
* This allow to implement board specified function save_boot_params in board code

---
Changes since original version:
- Fixed commit message

 arch/arm/cpu/armv7/omap3/lowlevel_init.S |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)
(quoted diff) +0 -0

b/arch/arm/cpu/armv7/omap3/lowlevel_init.S index 2f6930b..c42c5dd 100644

arch/arm/cpu/armv7/omap3/lowlevel_init.S +2 -2
@@ -35,15 +35,15 @@
 _TEXT_BASE:
      .word   CONFIG_SYS_TEXT_BASE    /* sdram load addr from config.mk
 */
 
+#ifdef CONFIG_SPL_BUILD
 .global save_boot_params
 save_boot_params:
-#ifdef CONFIG_SPL_BUILD
      ldr     r4, =omap3_boot_device
      ldr     r5, [r0, #0x4]
      and     r5, r5, #0xff
      str     r5, [r4]
-#endif
      bx      lr
+#endif
 
 .global omap3_gp_romcode_call
Quoted 1 line

omap3_gp_romcode_call:

Now I see that somebody commited this patch to u-boot:
http://git.denx.de/?p=u-
boot.git;a=commit;h=204705111ca10f52f62e1a02ba567d8fc33a6d1e

Quoted 5 lines
Quoted 3 lines

So I will not include it in new version.

Please, can you inform me when somebody commit my patches to git master?

I did: http://patchwork.ozlabs.org/patch/137559/ :)

Do we really want this hack-around? Maybe generating such bootargs by uboot in the first place (or the ability to actually source bootargs and adjust env accordingly) won't be too bad of a solution?

M

#8 lore raw

PATCH 1/14 arm, omap3: Define save_boot_params in lowlevel_init.S for SPL only

Quoted 47 lines · Marek Vasut
Quoted 47 lines · Pali Roh?r
Quoted 46 lines · On Tuesday 24 January 2012 15:27:58 Pali Roh?r wrote:
Quoted 38 lines

* Hide function save_boot_params if CONFIG_SPL_BUILD is not defined (function do nothing)

* Same behaviour as in file arch/arm/cpu/armv7/omap4/lowlevel_init.S
* This allow to implement board specified function save_boot_params in board code

---
Changes since original version:
- Fixed commit message

 arch/arm/cpu/armv7/omap3/lowlevel_init.S |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)
(quoted diff) +0 -0

b/arch/arm/cpu/armv7/omap3/lowlevel_init.S index 2f6930b..c42c5dd 100644

arch/arm/cpu/armv7/omap3/lowlevel_init.S +2 -2
@@ -35,15 +35,15 @@
 _TEXT_BASE:
      .word   CONFIG_SYS_TEXT_BASE    /* sdram load addr from config.mk
 */
 
+#ifdef CONFIG_SPL_BUILD
 .global save_boot_params
 save_boot_params:
-#ifdef CONFIG_SPL_BUILD
      ldr     r4, =omap3_boot_device
      ldr     r5, [r0, #0x4]
      and     r5, r5, #0xff
      str     r5, [r4]
-#endif
      bx      lr
+#endif
 
 .global omap3_gp_romcode_call
Quoted 1 line

omap3_gp_romcode_call:

Now I see that somebody commited this patch to u-boot:
http://git.denx.de/?p=u-
boot.git;a=commit;h=204705111ca10f52f62e1a02ba567d8fc33a6d1e

So I will not include it in new version.

Quoted 7 lines
Quoted 3 lines
Quoted 1 line

Please, can you inform me when somebody commit my patches to git master?

I did: http://patchwork.ozlabs.org/patch/137559/ :)

Do we really want this hack-around? Maybe generating such bootargs by uboot in the first place (or the ability to actually source bootargs and adjust env accordingly) won't be too bad of a solution?

IMHO, yes. There is value in being able to use u-boot as a useful shim when we don't control 100% of the sequence.

Signature · 1 line
Tom
#9 lore raw

PATCH 1/14 arm, omap3: Define save_boot_params in lowlevel_init.S for SPL only

Dear Tom Rini,

Quoted 61 lines · Marek Vasut
Quoted 60 lines
Quoted 60 lines · Pali Roh?r
Quoted 58 lines · On Tuesday 24 January 2012 15:27:58 Pali Roh?r wrote:
Quoted 40 lines

* Hide function save_boot_params if CONFIG_SPL_BUILD is not defined (function do nothing)

* Same behaviour as in file arch/arm/cpu/armv7/omap4/lowlevel_init.S
* This allow to implement board specified function save_boot_params in board code

---

Changes since original version:
- Fixed commit message

 arch/arm/cpu/armv7/omap3/lowlevel_init.S |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)
(quoted diff) +0 -0

b/arch/arm/cpu/armv7/omap3/lowlevel_init.S index 2f6930b..c42c5dd 100644 --- a/arch/arm/cpu/armv7/omap3/lowlevel_init.S +++ b/arch/arm/cpu/armv7/omap3/lowlevel_init.S

(quoted diff) +1 -1
@@ -35,15 +35,15 @@
 
 _TEXT_BASE:
      .word   CONFIG_SYS_TEXT_BASE    /* sdram load addr from
      config.mk
 
 */
 
+#ifdef CONFIG_SPL_BUILD
 
 .global save_boot_params
 
 save_boot_params:
-#ifdef CONFIG_SPL_BUILD
 
      ldr     r4, =omap3_boot_device
      ldr     r5, [r0, #0x4]
      and     r5, r5, #0xff
      str     r5, [r4]

arch/arm/cpu/armv7/omap3/lowlevel_init.S line 49

Quoted 9 lines
arch/arm/cpu/armv7/omap3/lowlevel_init.S +1 -1
-#endif
 
      bx      lr
 
+#endif
 
 .global omap3_gp_romcode_call
 
 omap3_gp_romcode_call:

Now I see that somebody commited this patch to u-boot:
http://git.denx.de/?p=u-
boot.git;a=commit;h=204705111ca10f52f62e1a02ba567d8fc33a6d1e

So I will not include it in new version.

Please, can you inform me when somebody commit my patches to git master?

Quoted 8 lines
Quoted 5 lines
Quoted 1 line

I did: http://patchwork.ozlabs.org/patch/137559/ :)

Do we really want this hack-around? Maybe generating such bootargs by uboot in the first place (or the ability to actually source bootargs and adjust env accordingly) won't be too bad of a solution?

IMHO, yes. There is value in being able to use u-boot as a useful shim when we don't control 100% of the sequence.

Well ... I won't argue, it's your start.S that's gonne be bloated ;-)

Best regards,
Marek Vasut

#10 lore raw

PATCH 2/14 arm: Optionally use existing atags in bootm.c

In reply to Pali Rohár

This patch adapts the bootm command so that it can use an existing atags command set up by a previous bootloader. If the environment variable "atagaddr" is unset, bootm behaves as normal. If "atagaddr" is set, bootm will use atags address from environment variable and also append new boot args (if specified in u-boot). For example, if a previous boot loader already set up the atags struct at 0x80000100:

setenv atagaddr 0x80000100; bootm 0x80008000

---
Changes since original version:
- Added info to README file
- Added local define CONFIG_SETUP_ANY_TAG
- Fixed compile warning
- Fixed commit message
- Check if atagaddr is not NULL

 README               |    2 ++
 arch/arm/lib/bootm.c |   39 ++++++++++++++++++++++++++++++++-------
 2 files changed, 34 insertions(+), 7 deletions(-)
README +2 -0
index 9d713e8..8c3b98a 100644
@@ -3584,6 +3584,8 @@ Some configuration options can be set using Environment Variables.
 
 List of environment variables (most likely not complete):
 
+  atagaddr	- bootm will use ATAGs struct from specified address (arm only)
+
   baudrate	- see CONFIG_BAUDRATE
 
   bootdelay	- see CONFIG_BOOTDELAY
arch/arm/lib/bootm.c +32 -7
index afa0093..8366dd5 100644
@@ -93,6 +93,14 @@ static void announce_and_cleanup(void)
 	cleanup_before_linux();
 }
 
+#if defined(CONFIG_SETUP_MEMORY_TAGS) || \
+defined(CONFIG_CMDLINE_TAG) || \
+defined(CONFIG_INITRD_TAG) || \
+defined(CONFIG_SERIAL_TAG) || \
+defined(CONFIG_REVISION_TAG)
+#define CONFIG_SETUP_ANY_TAG
+#endif
+
 int do_bootm_linux(int flag, int argc, char *argv[], bootm_headers_t *images)
 {
 	bd_t	*bd = gd->bd;
@@ -125,12 +133,22 @@ int do_bootm_linux(int flag, int argc, char *argv[], bootm_headers_t *images)
 	debug ("## Transferring control to Linux (at address %08lx) ...\n",
 	       (ulong) kernel_entry);
 
-#if defined (CONFIG_SETUP_MEMORY_TAGS) || \
-    defined (CONFIG_CMDLINE_TAG) || \
-    defined (CONFIG_INITRD_TAG) || \
-    defined (CONFIG_SERIAL_TAG) || \
-    defined (CONFIG_REVISION_TAG)
-	setup_start_tag (bd);
+	s = getenv("atagaddr");
+	if (s)
+		bd->bi_boot_params = simple_strtoul(s, NULL, 16);
+
+	if (bd->bi_boot_params) {
+		printf("Using existing atags at %#lx\n", bd->bi_boot_params);
+
+		params = (struct tag *) bd->bi_boot_params;
+		while (params->hdr.size > 0)
+			params = tag_next(params);
+	} else {
+#ifdef CONFIG_SETUP_ANY_TAG
+		setup_start_tag(bd);
+#endif
+	}
+
 #ifdef CONFIG_SERIAL_TAG
 	setup_serial_tag (&params);
 #endif
@@ -147,8 +165,15 @@ int do_bootm_linux(int flag, int argc, char *argv[], bootm_headers_t *images)
 	if (images->rd_start && images->rd_end)
 		setup_initrd_tag (bd, images->rd_start, images->rd_end);
 #endif
-	setup_end_tag(bd);
+
+	if (s) {
+		if (params->hdr.size > 0)
+			setup_end_tag(bd);
+	} else {
+#ifdef CONFIG_SETUP_ANY_TAG
+		setup_end_tag(bd);
 #endif
+	}
 
 	announce_and_cleanup();
 
Signature · 1 line
1.7.5.4
#11 lore raw

PATCH 2/14 arm: Optionally use existing atags in bootm.c

Quoted 2 lines

This patch adapts the bootm command so that it can use an existing atags command set up by a previous bootloader.

Why do you need it?

Quoted 7 lines

If the environment variable
"atagaddr" is unset, bootm behaves as normal. If "atagaddr" is set, bootm will use atags address from environment variable and also append new boot args (if specified in u-boot). For example, if a previous boot loader already set up the atags struct at 0x80000100:

setenv atagaddr 0x80000100; bootm 0x80008000

Can't you set those atags correctly in uboot?

M

Quoted 92 lines

---
Changes since original version:
- Added info to README file
- Added local define CONFIG_SETUP_ANY_TAG
- Fixed compile warning
- Fixed commit message
- Check if atagaddr is not NULL

 README               |    2 ++
 arch/arm/lib/bootm.c |   39 ++++++++++++++++++++++++++++++++-------
 2 files changed, 34 insertions(+), 7 deletions(-)
README +0 -0
index 9d713e8..8c3b98a 100644
@@ -3584,6 +3584,8 @@ Some configuration options can be set using

Environment Variables.

List of environment variables (most likely not complete):

README +2 -0
+  atagaddr	- bootm will use ATAGs struct from specified address (arm only)
+
   baudrate	- see CONFIG_BAUDRATE
 
   bootdelay	- see CONFIG_BOOTDELAY
arch/arm/lib/bootm.c +8 -0
index afa0093..8366dd5 100644
@@ -93,6 +93,14 @@ static void announce_and_cleanup(void)
 	cleanup_before_linux();
 }
 
+#if defined(CONFIG_SETUP_MEMORY_TAGS) || \
+defined(CONFIG_CMDLINE_TAG) || \
+defined(CONFIG_INITRD_TAG) || \
+defined(CONFIG_SERIAL_TAG) || \
+defined(CONFIG_REVISION_TAG)
+#define CONFIG_SETUP_ANY_TAG
+#endif
+
 int do_bootm_linux(int flag, int argc, char *argv[], bootm_headers_t
 *images) {
 	bd_t	*bd = gd->bd;
@@ -125,12 +133,22 @@ int do_bootm_linux(int flag, int argc, char *argv[],

bootm_headers_t *images) debug ("## Transferring control to Linux (at address %08lx) ...\n", (ulong) kernel_entry);

arch/arm/lib/bootm.c +24 -7
-#if defined (CONFIG_SETUP_MEMORY_TAGS) || \
-    defined (CONFIG_CMDLINE_TAG) || \
-    defined (CONFIG_INITRD_TAG) || \
-    defined (CONFIG_SERIAL_TAG) || \
-    defined (CONFIG_REVISION_TAG)
-	setup_start_tag (bd);
+	s = getenv("atagaddr");
+	if (s)
+		bd->bi_boot_params = simple_strtoul(s, NULL, 16);
+
+	if (bd->bi_boot_params) {
+		printf("Using existing atags at %#lx\n", bd->bi_boot_params);
+
+		params = (struct tag *) bd->bi_boot_params;
+		while (params->hdr.size > 0)
+			params = tag_next(params);
+	} else {
+#ifdef CONFIG_SETUP_ANY_TAG
+		setup_start_tag(bd);
+#endif
+	}
+
 #ifdef CONFIG_SERIAL_TAG
 	setup_serial_tag (&params);
 #endif
@@ -147,8 +165,15 @@ int do_bootm_linux(int flag, int argc, char *argv[],
 bootm_headers_t *images) if (images->rd_start && images->rd_end)
 		setup_initrd_tag (bd, images->rd_start, images->rd_end);
 #endif
-	setup_end_tag(bd);
+
+	if (s) {
+		if (params->hdr.size > 0)
+			setup_end_tag(bd);
+	} else {
+#ifdef CONFIG_SETUP_ANY_TAG
+		setup_end_tag(bd);
 #endif
+	}
 
 	announce_and_cleanup();
#12 lore raw

PATCH 2/14 arm: Optionally use existing atags in bootm.c

Quoted 4 lines · On Wednesday 25 January 2012 19:02:45 Marek Vasut wrote:
Quoted 2 lines

This patch adapts the bootm command so that it can use an existing atags command set up by a previous bootloader.

Why do you need it?

Default Nokia kernel has patches which using non-standard atags for reporting bootmode, bootreason, hw-rev, NOLO version, boot count, ...

Closed-source Maemo application need to know these properties (read via /proc/bootreason, ...) and will restart device if there is error.

So U-Boot must can reuse old atags from NOLO and tell it new kernel.

Quoted 11 lines
Quoted 8 lines

If the environment variable
"atagaddr" is unset, bootm behaves as normal. If "atagaddr" is set, bootm will use atags address from environment variable and also append new boot args (if specified in u-boot). For example, if a previous boot loader already set up the atags struct at 0x80000100:

setenv atagaddr 0x80000100; bootm 0x80008000

Can't you set those atags correctly in uboot?

No, because atags are not static (e.g bootreason).

Signature · 9 lines
Pali Roh?r
pali.rohar at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20120125/50c834c7/attachment.pgp>
#13 lore raw

PATCH 2/14 arm: Optionally use existing atags in bootm.c

Quoted 8 lines · On Wednesday 25 January 2012 19:02:45 Marek Vasut wrote:
Quoted 4 lines
Quoted 2 lines

This patch adapts the bootm command so that it can use an existing atags command set up by a previous bootloader.

Why do you need it?

Default Nokia kernel has patches which using non-standard atags for reporting bootmode, bootreason, hw-rev, NOLO version, boot count, ...

So what? Make u-boot pass arbitrary atags and specify them in your board file.

Quoted 3 lines

Closed-source Maemo application need to know these properties (read via /proc/bootreason, ...) and will restart device if there is error.

Fine?

Quoted 2 lines

So U-Boot must can reuse old atags from NOLO and tell it new kernel.

must can reuse? Anyway, that's nonsense, why won't u-boot be able to craft those atags?

Quoted 7 lines
Quoted 7 lines
Quoted 7 lines

If the environment variable
"atagaddr" is unset, bootm behaves as normal. If "atagaddr" is set, bootm will use atags address from environment variable and also append new boot args (if specified in u-boot). For example, if a previous boot loader already set up the atags struct at 0x80000100:

Quoted 5 lines
Quoted 3 lines
Quoted 1 line

setenv atagaddr 0x80000100; bootm 0x80008000

Can't you set those atags correctly in uboot?

No, because atags are not static (e.g bootreason).

So? You craft them properly in u-boot?

M

#14 lore raw

PATCH 2/14 arm: Optionally use existing atags in bootm.c

Quoted 3 lines · On Wednesday 25 January 2012 21:55:53 Marek Vasut wrote:

must can reuse? Anyway, that's nonsense, why won't u-boot be able to craft those atags?

Maemo 5 (default OS in Nokia N900) cannot work if kernel does not have proper atags from NOLO. So if U-Boot does not reuse it, then Maemo will not boot...

Signature · 9 lines
Pali Roh?r
pali.rohar at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20120125/dabf18f8/attachment.pgp>
#15 lore raw

PATCH 2/14 arm: Optionally use existing atags in bootm.c

Quoted 7 lines · On Wednesday 25 January 2012 21:55:53 Marek Vasut wrote:
Quoted 2 lines

must can reuse? Anyway, that's nonsense, why won't u-boot be able to craft those atags?

Maemo 5 (default OS in Nokia N900) cannot work if kernel does not have proper atags from NOLO. So if U-Boot does not reuse it, then Maemo will not boot...

U-Boot CAN GENERATE THEM

#16 lore raw

PATCH 2/14 arm: Optionally use existing atags in bootm.c

Quoted 9 lines · On Wednesday 25 January 2012 22:28:38 Marek Vasut wrote:
Quoted 7 lines · On Wednesday 25 January 2012 21:55:53 Marek Vasut wrote:
Quoted 2 lines

must can reuse? Anyway, that's nonsense, why won't u-boot be able to craft those atags?

Maemo 5 (default OS in Nokia N900) cannot work if kernel does not have proper atags from NOLO. So if U-Boot does not reuse it, then Maemo will not boot...

U-Boot CAN GENERATE THEM

Yes, you can parse atags from NOLO and then generate new from existing... But why? Better and easier is copy exising and use it.

Signature · 9 lines
Pali Roh?r
pali.rohar at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20120125/f2ef6172/attachment.pgp>
#17 lore raw

PATCH 2/14 arm: Optionally use existing atags in bootm.c

Quoted 5 lines · On Wednesday 25 January 2012 22:28:38 Marek Vasut wrote:
Quoted 4 lines
Quoted 4 lines · On Wednesday 25 January 2012 21:55:53 Marek Vasut wrote:
Quoted 2 lines

must can reuse? Anyway, that's nonsense, why won't u-boot be able to craft those atags?

Quoted 8 lines
Quoted 5 lines
Quoted 3 lines

Maemo 5 (default OS in Nokia N900) cannot work if kernel does not have proper atags from NOLO. So if U-Boot does not reuse it, then Maemo will not boot...

U-Boot CAN GENERATE THEM

Yes, you can parse atags from NOLO and then generate new from existing... But why? Better and easier is copy exising and use it.

Because eventually, someone will replace nolo with u-boot and what then?

M

#18 lore raw

PATCH 2/14 arm: Optionally use existing atags in bootm.c

Quoted 10 lines · On Wednesday 25 January 2012 22:55:25 Marek Vasut wrote:
Quoted 10 lines · On Wednesday 25 January 2012 22:28:38 Marek Vasut wrote:
Quoted 9 lines
Quoted 8 lines · On Wednesday 25 January 2012 21:55:53 Marek Vasut wrote:
Quoted 2 lines

must can reuse? Anyway, that's nonsense, why won't u-boot be able to craft those atags?

Maemo 5 (default OS in Nokia N900) cannot work if kernel does not have proper atags from NOLO. So if U-Boot does not reuse it, then Maemo will
not boot...

Quoted 7 lines
Quoted 4 lines
Quoted 1 line

U-Boot CAN GENERATE THEM

Yes, you can parse atags from NOLO and then generate new from existing... But why? Better and easier is copy exising and use it.

Because eventually, someone will replace nolo with u-boot and what then?

Then we will know what is NOLO doing and how NOLO generating atags...

Temporary solution will be to dump atags for specified N900 HW revision and hard-code it into u-boot... But in one atag is stored boot reason (power key, watchdog reset, normal reset, alarm clock, charger connected, ...) - so we will do not have feature to know why was Maemo started.

Or if someone replace NOLO, he will use other system/kernel which do not depend on non standard atags... (Debian, Kubuntu, Mer or Android working without NOLO atags on N900).

Signature · 9 lines
Pali Roh?r
pali.rohar at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20120125/d5f06a0f/attachment.pgp>
#19 lore raw

PATCH 3/14 Add power bus message definitions in twl4030.h

In reply to Pali Rohár

* Code copied from linux kernel 3.0.0 from file include/linux/i2c/twl.h

---
Changes since original version:
- Fixed commit message

 include/twl4030.h |   98 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 98 insertions(+), 0 deletions(-)
include/twl4030.h +98 -0
index 9cd32ab..0c17f59 100644
@@ -151,6 +151,103 @@
 #define TWL4030_PM_MASTER_SW_EVENTS_DEVSLP		(1 << 1)
 #define TWL4030_PM_MASTER_SW_EVENTS_DEVOFF		(1 << 0)
 
+/* Power bus message definitions */
+
+/* The TWL4030/5030 splits its power-management resources (the various
+ * regulators, clock and reset lines) into 3 processor groups - P1, P2 and
+ * P3. These groups can then be configured to transition between sleep, wait-on
+ * and active states by sending messages to the power bus.  See Section 5.4.2
+ * Power Resources of TWL4030 TRM
+ */
+
+/* Processor groups */
+#define DEV_GRP_NULL		0x0
+#define DEV_GRP_P1		0x1	/* P1: all OMAP devices */
+#define DEV_GRP_P2		0x2	/* P2: all Modem devices */
+#define DEV_GRP_P3		0x4	/* P3: all peripheral devices */
+
+/* Resource groups */
+#define RES_GRP_RES		0x0	/* Reserved */
+#define RES_GRP_PP		0x1	/* Power providers */
+#define RES_GRP_RC		0x2	/* Reset and control */
+#define RES_GRP_PP_RC		0x3
+#define RES_GRP_PR		0x4	/* Power references */
+#define RES_GRP_PP_PR		0x5
+#define RES_GRP_RC_PR		0x6
+#define RES_GRP_ALL		0x7	/* All resource groups */
+
+#define RES_TYPE2_R0		0x0
+
+#define RES_TYPE_ALL		0x7
+
+/* Resource states */
+#define RES_STATE_WRST		0xF
+#define RES_STATE_ACTIVE	0xE
+#define RES_STATE_SLEEP		0x8
+#define RES_STATE_OFF		0x0
+
+/* Power resources */
+
+/* Power providers */
+#define RES_VAUX1               1
+#define RES_VAUX2               2
+#define RES_VAUX3               3
+#define RES_VAUX4               4
+#define RES_VMMC1               5
+#define RES_VMMC2               6
+#define RES_VPLL1               7
+#define RES_VPLL2               8
+#define RES_VSIM                9
+#define RES_VDAC                10
+#define RES_VINTANA1            11
+#define RES_VINTANA2            12
+#define RES_VINTDIG             13
+#define RES_VIO                 14
+#define RES_VDD1                15
+#define RES_VDD2                16
+#define RES_VUSB_1V5            17
+#define RES_VUSB_1V8            18
+#define RES_VUSB_3V1            19
+#define RES_VUSBCP              20
+#define RES_REGEN               21
+/* Reset and control */
+#define RES_NRES_PWRON          22
+#define RES_CLKEN               23
+#define RES_SYSEN               24
+#define RES_HFCLKOUT            25
+#define RES_32KCLKOUT           26
+#define RES_RESET               27
+/* Power Reference */
+#define RES_Main_Ref            28
+
+#define TOTAL_RESOURCES		28
+/*
+ * Power Bus Message Format ... these can be sent individually by Linux,
+ * but are usually part of downloaded scripts that are run when various
+ * power events are triggered.
+ *
+ *  Broadcast Message (16 Bits):
+ *    DEV_GRP[15:13] MT[12]  RES_GRP[11:9]  RES_TYPE2[8:7] RES_TYPE[6:4]
+ *    RES_STATE[3:0]
+ *
+ *  Singular Message (16 Bits):
+ *    DEV_GRP[15:13] MT[12]  RES_ID[11:4]  RES_STATE[3:0]
+ */
+
+#define MSG_BROADCAST(devgrp, grp, type, type2, state) \
+	((devgrp) << 13 | 1 << 12 | (grp) << 9 | (type2) << 7 \
+	| (type) << 4 | (state))
+
+#define MSG_SINGULAR(devgrp, id, state) \
+	((devgrp) << 13 | 0 << 12 | (id) << 4 | (state))
+
+#define MSG_BROADCAST_ALL(devgrp, state) \
+	((devgrp) << 5 | (state))
+
+#define MSG_BROADCAST_REF MSG_BROADCAST_ALL
+#define MSG_BROADCAST_PROV MSG_BROADCAST_ALL
+#define MSG_BROADCAST__CLK_RST MSG_BROADCAST_ALL
+
 /* Power Managment Receiver */
 #define TWL4030_PM_RECEIVER_SC_CONFIG			0x5B
 #define TWL4030_PM_RECEIVER_SC_DETECT1			0x5C
@@ -311,6 +408,7 @@
 #define TWL4030_PM_RECEIVER_VDAC_VSEL_18		0x03
 #define TWL4030_PM_RECEIVER_VMMC1_VSEL_30		0x02
 #define TWL4030_PM_RECEIVER_VMMC1_VSEL_32		0x03
+#define TWL4030_PM_RECEIVER_VSIM_VSEL_18		0x03
 
 /* Device Selection in PM Receiver Module */
 #define TWL4030_PM_RECEIVER_DEV_GRP_P1			0x20
Signature · 1 line
1.7.5.4
#20 lore raw

PATCH 3/14 Add power bus message definitions in twl4030.h

Quoted 1 line

* Code copied from linux kernel 3.0.0 from file include/linux/i2c/twl.h

Do you need them?

Also, as in other patches, I noticed you don't CC Tom Rini. Also, Ccing Igor Grinberg. Please keep the Cc in next inkarnation of the series!

Guys, can you also help review the rest of the series ?

Quoted 126 lines

---
Changes since original version:
- Fixed commit message

 include/twl4030.h |   98

+++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 98 insertions(+), 0 deletions(-)

include/twl4030.h +5 -0
index 9cd32ab..0c17f59 100644
@@ -151,6 +151,103 @@
 #define TWL4030_PM_MASTER_SW_EVENTS_DEVSLP		(1 << 1)
 #define TWL4030_PM_MASTER_SW_EVENTS_DEVOFF		(1 << 0)
 
+/* Power bus message definitions */
+
+/* The TWL4030/5030 splits its power-management resources (the various
+ * regulators, clock and reset lines) into 3 processor groups - P1, P2 and
+ * P3. These groups can then be configured to transition between sleep,

wait-on + * and active states by sending messages to the power bus. See Section 5.4.2 + * Power Resources of TWL4030 TRM
+ */

include/twl4030.h +90 -0
+
+/* Processor groups */
+#define DEV_GRP_NULL		0x0
+#define DEV_GRP_P1		0x1	/* P1: all OMAP devices */
+#define DEV_GRP_P2		0x2	/* P2: all Modem devices */
+#define DEV_GRP_P3		0x4	/* P3: all peripheral devices */
+
+/* Resource groups */
+#define RES_GRP_RES		0x0	/* Reserved */
+#define RES_GRP_PP		0x1	/* Power providers */
+#define RES_GRP_RC		0x2	/* Reset and control */
+#define RES_GRP_PP_RC		0x3
+#define RES_GRP_PR		0x4	/* Power references */
+#define RES_GRP_PP_PR		0x5
+#define RES_GRP_RC_PR		0x6
+#define RES_GRP_ALL		0x7	/* All resource groups */
+
+#define RES_TYPE2_R0		0x0
+
+#define RES_TYPE_ALL		0x7
+
+/* Resource states */
+#define RES_STATE_WRST		0xF
+#define RES_STATE_ACTIVE	0xE
+#define RES_STATE_SLEEP		0x8
+#define RES_STATE_OFF		0x0
+
+/* Power resources */
+
+/* Power providers */
+#define RES_VAUX1               1
+#define RES_VAUX2               2
+#define RES_VAUX3               3
+#define RES_VAUX4               4
+#define RES_VMMC1               5
+#define RES_VMMC2               6
+#define RES_VPLL1               7
+#define RES_VPLL2               8
+#define RES_VSIM                9
+#define RES_VDAC                10
+#define RES_VINTANA1            11
+#define RES_VINTANA2            12
+#define RES_VINTDIG             13
+#define RES_VIO                 14
+#define RES_VDD1                15
+#define RES_VDD2                16
+#define RES_VUSB_1V5            17
+#define RES_VUSB_1V8            18
+#define RES_VUSB_3V1            19
+#define RES_VUSBCP              20
+#define RES_REGEN               21
+/* Reset and control */
+#define RES_NRES_PWRON          22
+#define RES_CLKEN               23
+#define RES_SYSEN               24
+#define RES_HFCLKOUT            25
+#define RES_32KCLKOUT           26
+#define RES_RESET               27
+/* Power Reference */
+#define RES_Main_Ref            28
+
+#define TOTAL_RESOURCES		28
+/*
+ * Power Bus Message Format ... these can be sent individually by Linux,
+ * but are usually part of downloaded scripts that are run when various
+ * power events are triggered.
+ *
+ *  Broadcast Message (16 Bits):
+ *    DEV_GRP[15:13] MT[12]  RES_GRP[11:9]  RES_TYPE2[8:7] RES_TYPE[6:4]
+ *    RES_STATE[3:0]
+ *
+ *  Singular Message (16 Bits):
+ *    DEV_GRP[15:13] MT[12]  RES_ID[11:4]  RES_STATE[3:0]
+ */
+
+#define MSG_BROADCAST(devgrp, grp, type, type2, state) \
+	((devgrp) << 13 | 1 << 12 | (grp) << 9 | (type2) << 7 \
+	| (type) << 4 | (state))
+
+#define MSG_SINGULAR(devgrp, id, state) \
+	((devgrp) << 13 | 0 << 12 | (id) << 4 | (state))
+
+#define MSG_BROADCAST_ALL(devgrp, state) \
+	((devgrp) << 5 | (state))
+
+#define MSG_BROADCAST_REF MSG_BROADCAST_ALL
+#define MSG_BROADCAST_PROV MSG_BROADCAST_ALL
+#define MSG_BROADCAST__CLK_RST MSG_BROADCAST_ALL
+
 /* Power Managment Receiver */
 #define TWL4030_PM_RECEIVER_SC_CONFIG			0x5B
 #define TWL4030_PM_RECEIVER_SC_DETECT1			0x5C
@@ -311,6 +408,7 @@
 #define TWL4030_PM_RECEIVER_VDAC_VSEL_18		0x03
 #define TWL4030_PM_RECEIVER_VMMC1_VSEL_30		0x02
 #define TWL4030_PM_RECEIVER_VMMC1_VSEL_32		0x03
+#define TWL4030_PM_RECEIVER_VSIM_VSEL_18		0x03
 
 /* Device Selection in PM Receiver Module */
 #define TWL4030_PM_RECEIVER_DEV_GRP_P1			0x20
#21 lore raw

PATCH 3/14 Add power bus message definitions in twl4030.h

Quoted 4 lines · On Wednesday 25 January 2012 19:04:37 Marek Vasut wrote:
Quoted 1 line

* Code copied from linux kernel 3.0.0 from file include/linux/i2c/twl.h

Do you need them?

Yes, needed for twl regulator for enabling eMMC.

Signature · 9 lines
Pali Roh?r
pali.rohar at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20120125/316c10b5/attachment.pgp>
#22 lore raw

PATCH 3/14 Add power bus message definitions in twl4030.h

In reply to Marek Vasut
Quoted 8 lines · Marek Vasut
Quoted 1 line

* Code copied from linux kernel 3.0.0 from file include/linux/i2c/twl.h

Do you need them?

Also, as in other patches, I noticed you don't CC Tom Rini. Also, Ccing Igor Grinberg. Please keep the Cc in next inkarnation of the series!

Guys, can you also help review the rest of the series ?

I'm currently really busy, but I'll try to give it a quick glance.

Signature · 2 lines
Regards,
Igor.
#23 lore raw

PATCH 4/14 Fix function readline in main.c

In reply to Pali Rohár

* Ignore ANSI escape codes for moving cursor, which are generated by keyboard

---
Changes since original version:
- Fixed commit message

 common/main.c |   51 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 51 insertions(+), 0 deletions(-)
common/main.c +51 -0
index e96c95a..e7b5516 100644
@@ -958,6 +958,7 @@ int readline_into_buffer (const char *const prompt, char * buffer)
 	int	n = 0;				/* buffer index		*/
 	int	plen = 0;			/* prompt length	*/
 	int	col;				/* output column cnt	*/
+	int	esc = 0;			/* ansi escape char	*/
 	char	c;
 
 	/* print prompt */
@@ -1024,7 +1025,57 @@ int readline_into_buffer (const char *const prompt, char * buffer)
 			p=delete_char(p_buf, p, &col, &n, plen);
 			continue;
 
+		case '\e':			/* ANSI escape char	*/
+			esc = 1;
+			continue;
+
 		default:
+
+			/*
+			 * Check for ANSI escape chars
+			 */
+			if (esc == 0 && c == '\e') {
+				esc = 1;
+				continue;
+			} else if (esc == 1) {
+				if (c == '[') {
+					esc = 2;
+					continue;
+				}
+				if (n < CONFIG_SYS_CBSIZE-2) {
+					++n;
+					*p++ = '\e';
+					putc('\e');
+				}
+				esc = 0;
+			} else if (esc == 2 || esc == 3) {
+				if (esc == 2 && c == '1') {
+					esc = 3;
+					continue;
+				}
+				/* Ignore ANSI escape sequences */
+				/* generated by keyboard */
+				/* \e [ 1 A-D and \e [ A-D */
+				if (c >= 'A' && c <= 'D') {
+					esc = 0;
+					continue;
+				}
+				if (esc == 2 && n < CONFIG_SYS_CBSIZE-3) {
+					n += 2;
+					*p++ = '\e';
+					*p++ = '[';
+					puts("\e[");
+				} else if (esc == 3 &&
+						n < CONFIG_SYS_CBSIZE-4) {
+					n += 3;
+					*p++ = '\e';
+					*p++ = '[';
+					*p++ = '1';
+					puts("\e[1");
+				}
+				esc = 0;
+			}
+
 			/*
 			 * Must be a normal character then
 			 */
Signature · 1 line
1.7.5.4
#24 lore raw

PATCH 4/14 Fix function readline in main.c

Quoted 2 lines

* Ignore ANSI escape codes for moving cursor, which are generated by
keyboard

I think WD should comment on this one.

Quoted 14 lines

---
Changes since original version:
- Fixed commit message

 common/main.c |   51 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 51 insertions(+), 0 deletions(-)
common/main.c +0 -0
index e96c95a..e7b5516 100644
@@ -958,6 +958,7 @@ int readline_into_buffer (const char *const prompt,
Quoted 1 line

char * buffer) int n = 0; /* buffer index

*/

Quoted 64 lines
common/main.c +51 -0
 	int	plen = 0;			/* prompt length	*/
 	int	col;				/* output column cnt	*/
+	int	esc = 0;			/* ansi escape char	*/
 	char	c;
 
 	/* print prompt */
@@ -1024,7 +1025,57 @@ int readline_into_buffer (const char *const prompt,
 char * buffer) p=delete_char(p_buf, p, &col, &n, plen);
 			continue;
 
+		case '\e':			/* ANSI escape char	*/
+			esc = 1;
+			continue;
+
 		default:
+
+			/*
+			 * Check for ANSI escape chars
+			 */
+			if (esc == 0 && c == '\e') {
+				esc = 1;
+				continue;
+			} else if (esc == 1) {
+				if (c == '[') {
+					esc = 2;
+					continue;
+				}
+				if (n < CONFIG_SYS_CBSIZE-2) {
+					++n;
+					*p++ = '\e';
+					putc('\e');
+				}
+				esc = 0;
+			} else if (esc == 2 || esc == 3) {
+				if (esc == 2 && c == '1') {
+					esc = 3;
+					continue;
+				}
+				/* Ignore ANSI escape sequences */
+				/* generated by keyboard */
+				/* \e [ 1 A-D and \e [ A-D */
+				if (c >= 'A' && c <= 'D') {
+					esc = 0;
+					continue;
+				}
+				if (esc == 2 && n < CONFIG_SYS_CBSIZE-3) {
+					n += 2;
+					*p++ = '\e';
+					*p++ = '[';
+					puts("\e[");
+				} else if (esc == 3 &&
+						n < CONFIG_SYS_CBSIZE-4) {
+					n += 3;
+					*p++ = '\e';
+					*p++ = '[';
+					*p++ = '1';
+					puts("\e[1");
+				}
+				esc = 0;
+			}
+
 			/*
 			 * Must be a normal character then
 			 */
#25 lore raw

PATCH 4/14 Fix function readline in main.c

Quoted 4 lines · On Wednesday 25 January 2012 13:05:31 Marek Vasut wrote:
Quoted 2 lines

* Ignore ANSI escape codes for moving cursor, which are generated by
keyboard

I think WD should comment on this one.

no need ... see the previous thread on the previous version of this patch. Pali should be able to drop this.
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20120227/0a3df01d/attachment.pgp>

#26 lore raw

PATCH 5/14 cfb_console: Fix function console_scrollup

In reply to Pali Rohár

* Use correct buffer size, do not damage screen output

---
Changes since original version:
- Fixed commit message

 drivers/video/cfb_console.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
drivers/video/cfb_console.c +1 -1
index 904caf7..9092399 100644
@@ -701,7 +701,7 @@ static void console_scrollup(void)
 		);
 #else
 	memcpyl(CONSOLE_ROW_FIRST, CONSOLE_ROW_SECOND,
-		CONSOLE_SCROLL_SIZE >> 2);
+		CONSOLE_SCROLL_SIZE);
 #endif
 
 	/* clear the last one */
Signature · 1 line
1.7.5.4
#27 lore raw

PATCH 5/14 cfb_console: Fix function console_scrollup

Quoted 1 line

* Use correct buffer size, do not damage screen output

What are the symptoms, how does this fix the issue?

Ccing Anatolij, I think he's the right one for this patch. Again, keep the correct CC!!!

Quoted 22 lines

---
Changes since original version:
- Fixed commit message

 drivers/video/cfb_console.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
drivers/video/cfb_console.c +1 -1
index 904caf7..9092399 100644
@@ -701,7 +701,7 @@ static void console_scrollup(void)
 		);
 #else
 	memcpyl(CONSOLE_ROW_FIRST, CONSOLE_ROW_SECOND,
-		CONSOLE_SCROLL_SIZE >> 2);
+		CONSOLE_SCROLL_SIZE);
 #endif
 
 	/* clear the last one */
#28 lore raw

PATCH 5/14 cfb_console: Fix function console_scrollup

Quoted 7 lines · On Wednesday 25 January 2012 19:06:51 Marek Vasut wrote:
Quoted 1 line

* Use correct buffer size, do not damage screen output

What are the symptoms, how does this fix the issue?

Ccing Anatolij, I think he's the right one for this patch. Again, keep the correct CC!!!

Output on n900 screen is damged after function console_scrollup is called.

Signature · 9 lines
Pali Roh?r
pali.rohar at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20120125/83f433e7/attachment.pgp>
#29 lore raw

PATCH 5/14 cfb_console: Fix function console_scrollup

In reply to Pali Rohár

Hi,

Quoted 15 lines · On Tue, 24 Jan 2012 15:28:02 +0100 Pali Roh?r <[email protected]> wrote:

* Use correct buffer size, do not damage screen output

---
Changes since original version:
- Fixed commit message

 drivers/video/cfb_console.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
drivers/video/cfb_console.c +0 -0
index 904caf7..9092399 100644

drivers/video/cfb_console.c static void console_scrollup(void) · line 704

Quoted 5 lines
drivers/video/cfb_console.c +1 -1
@@ -701,7 +701,7 @@ static void console_scrollup(void)
 		);
 #else
 	memcpyl(CONSOLE_ROW_FIRST, CONSOLE_ROW_SECOND,
-		CONSOLE_SCROLL_SIZE >> 2);
+		CONSOLE_SCROLL_SIZE);

NAK. This change is wrong. CONSOLE_SCROLL_SIZE is the size of the visible frame buffer - size of one row in bytes. We are using memcpyl() here, so the division by 4 (size >> 2) is correct. With your change we end up copying 4 times more data then needed.

Thanks,
Anatolij

#30 lore raw

PATCH 5/14 cfb_console: Fix function console_scrollup

Dear Anatolij Gustschin,

Quoted 28 lines

Hi,

On Tue, 24 Jan 2012 15:28:02 +0100

Quoted 23 lines · Pali Roh?r

* Use correct buffer size, do not damage screen output

---

Changes since original version:
- Fixed commit message

 drivers/video/cfb_console.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
drivers/video/cfb_console.c +0 -0
index 904caf7..9092399 100644
@@ -701,7 +701,7 @@ static void console_scrollup(void)
 
 		);
 
 #else
 
 	memcpyl(CONSOLE_ROW_FIRST, CONSOLE_ROW_SECOND,
 
Quoted 7 lines

drivers/video/cfb_console.c static void console_scrollup(void) · line 704

Quoted 2 lines
drivers/video/cfb_console.c +1 -1
-		CONSOLE_SCROLL_SIZE >> 2);
+		CONSOLE_SCROLL_SIZE);

NAK. This change is wrong. CONSOLE_SCROLL_SIZE is the size of the visible frame buffer - size of one row in bytes. We are using memcpyl() here, so the division by 4 (size >> 2) is correct. With your change we end up copying 4 times more data then needed.

What kind of a problem are we fixing here? And what are the symptoms of it?

Quoted 3 lines

Thanks,
Anatolij

Best regards,
Marek Vasut

#31 lore raw

PATCH 5/14 cfb_console: Fix function console_scrollup

Hi Marek,

Quoted 38 lines · On Wed, 21 Mar 2012 11:20:38 +0100 Marek Vasut <[email protected]> wrote:

Dear Anatolij Gustschin,

Quoted 28 lines

Hi,

On Tue, 24 Jan 2012 15:28:02 +0100

Quoted 23 lines · Pali Roh?r

* Use correct buffer size, do not damage screen output

---

Changes since original version:
- Fixed commit message

 drivers/video/cfb_console.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
drivers/video/cfb_console.c +0 -0
index 904caf7..9092399 100644
@@ -701,7 +701,7 @@ static void console_scrollup(void)
 
 		);
 
 #else
 
 	memcpyl(CONSOLE_ROW_FIRST, CONSOLE_ROW_SECOND,
 
Quoted 7 lines

drivers/video/cfb_console.c static void console_scrollup(void) · line 704

Quoted 2 lines
drivers/video/cfb_console.c +1 -1
-		CONSOLE_SCROLL_SIZE >> 2);
+		CONSOLE_SCROLL_SIZE);

NAK. This change is wrong. CONSOLE_SCROLL_SIZE is the size of the visible frame buffer - size of one row in bytes. We are using memcpyl() here, so the division by 4 (size >> 2) is correct. With your change we end up copying 4 times more data then needed.

Quoted 1 line

What kind of a problem are we fixing here? And what are the symptoms of it?

Actually I'm not aware of any problem in current console_scrollup(). At least on two test setups with different framebuffer drivers and in one setup with HW accelerated scrolling I didn't see any problems with current code.

The description in the commit log of this patch:
"Use correct buffer size, do not damage screen output" doesn't say much about the problem. If the GraphicDevice structure returned by video_hw_init() is setup correctly, the scrolling should be working fine. From the other patch [1] I can see that the structure is setup as follows:

        /* fill in Graphic Device */
        gdev.frameAdrs = 0x8f9c0000;
        gdev.winSizeX = 800;
        gdev.winSizeY = 480;
        gdev.gdfBytesPP = 2;
        gdev.gdfIndex = GDF_16BIT_565RGB;
        memset((void *)gdev.frameAdrs, 0, 0xbb800);
        return (void *) &gdev;

Most likely using 0x8f9c0000 as framebuffer address is the first _big_ problem. The framebuffer address range is not allocated properly and could be used by malloc area. The board has 256 MB of RAM starting at 0x80000000, if U-Boot relocated itself to the upper RAM, the problems should be expected.

AFAIK the N900 port doesn't use a framebuffer driver but probably uses pre-initialized display controller configuration. This should be fixed first.

Thanks,
Anatolij

#32 lore raw

PATCH 5/14 cfb_console: Fix function console_scrollup

On Wed, 21 Mar 2012 12:32:16 +0100
Anatolij Gustschin <[email protected]> wrote:
...

Quoted 3 lines

doesn't say much about the problem. If the GraphicDevice structure returned by video_hw_init() is setup correctly, the scrolling should be working fine. From the other patch [1] I can see that the structure

I forgot to include a link [1] to the mentioned patch, sorry. Here it is:

[1] http://patchwork.ozlabs.org/patch/137567/

Thanks,
Anatolij

#33 lore raw

PATCH 5/14 cfb_console: Fix function console_scrollup

In reply to Anatolij Gustschin
Quoted 74 lines · On Wednesday 21 March 2012 12:32:16 Anatolij Gustschin wrote:

Hi Marek,

On Wed, 21 Mar 2012 11:20:38 +0100

Quoted 40 lines · Marek Vasut

Dear Anatolij Gustschin,

Quoted 28 lines

Hi,

On Tue, 24 Jan 2012 15:28:02 +0100

Quoted 23 lines · Pali Roh?r

* Use correct buffer size, do not damage screen output

---

Changes since original version:
- Fixed commit message

 drivers/video/cfb_console.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
(quoted diff) +0 -0

b/drivers/video/cfb_console.c index 904caf7..9092399 100644

drivers/video/cfb_console.c +0 -0
@@ -701,7 +701,7 @@ static void console_scrollup(void)
 
 		);
 
 #else
 
 	memcpyl(CONSOLE_ROW_FIRST, CONSOLE_ROW_SECOND,
 
Quoted 9 lines

drivers/video/cfb_console.c static void console_scrollup(void) · line 704

Quoted 2 lines
drivers/video/cfb_console.c +1 -1
-		CONSOLE_SCROLL_SIZE >> 2);
+		CONSOLE_SCROLL_SIZE);

NAK. This change is wrong. CONSOLE_SCROLL_SIZE is the size of the
visible frame buffer - size of one row in bytes. We are using memcpyl() here, so the division by 4 (size >> 2) is correct. With your change we end up copying 4 times more data then needed.

Quoted 2 lines

What kind of a problem are we fixing here? And what are the symptoms of it?

Actually I'm not aware of any problem in current console_scrollup(). At least on two test setups with different framebuffer drivers and in one setup with HW accelerated scrolling I didn't see any problems with current code.

The description in the commit log of this patch:
"Use correct buffer size, do not damage screen output" doesn't say much about the problem. If the GraphicDevice structure returned by video_hw_init() is setup correctly, the scrolling should be working fine. From the other patch [1] I can see that the structure is setup as follows:

        /* fill in Graphic Device */
        gdev.frameAdrs = 0x8f9c0000;
        gdev.winSizeX = 800;
        gdev.winSizeY = 480;
        gdev.gdfBytesPP = 2;
        gdev.gdfIndex = GDF_16BIT_565RGB;
        memset((void *)gdev.frameAdrs, 0, 0xbb800);
        return (void *) &gdev;

Most likely using 0x8f9c0000 as framebuffer address is the first _big_ problem. The framebuffer address range is not allocated properly and could be used by malloc area. The board has 256 MB of RAM starting at 0x80000000, if U-Boot relocated itself to the upper RAM, the problems should be expected.

Quoted 6 lines

AFAIK the N900 port doesn't use a framebuffer driver but probably uses pre-initialized display controller configuration. This should be fixed first.

Thanks,
Anatolij

Hi, can you show me how to fix this? How to correctly use framebuffer?

Signature · 9 lines
Pali Roh?r
pali.rohar at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20120321/4d9b43da/attachment.pgp>
#34 lore raw

PATCH 5/14 cfb_console: Fix function console_scrollup

On Wed, 21 Mar 2012 19:50:34 +0100
Pali Roh?r <[email protected]> wrote:
...

Quoted 2 lines

Hi, can you show me how to fix this? How to correctly use framebuffer?

Hi,

Not really. This would be a new project to rewrite U-Boot driver for OMAP3 DSS. There is a driver under drivers/video/omap3_dss.c, but it doesn't do what we need here. You can try to set gdev.frameAdrs to point to another address range in RAM which is not used by U-Boot. Then get OMAP3430 TRM and read DSS documentation how to configure the display controller so that is displays frame buffer data from this address range. Currently I do not have time nor resources to rewrite the existing omap3_dss driver.

Thanks,
Anatolij

#35 lore raw

PATCH 5/14 cfb_console: Fix function console_scrollup

Quoted 19 lines · On Wednesday 21 March 2012 23:58:10 Anatolij Gustschin wrote:

On Wed, 21 Mar 2012 19:50:34 +0100
Pali Roh?r <[email protected]> wrote:
...

Quoted 2 lines

Hi, can you show me how to fix this? How to correctly use framebuffer?

Hi,

Not really. This would be a new project to rewrite U-Boot driver for OMAP3 DSS. There is a driver under drivers/video/omap3_dss.c, but it doesn't do what we need here. You can try to set gdev.frameAdrs to point to another address range in RAM which is not used by U-Boot. Then get OMAP3430 TRM and read DSS documentation how to configure the display controller so that is displays frame buffer data from this address range. Currently I do not have time nor resources to rewrite the existing omap3_dss driver.

Quoted 2 lines

Thanks,
Anatolij

Do you think that mapped address of framebuffer is only problem? Why then framebuffer output on n900 screen working without problem if I do NOT read framebuffer memory? Problem with garbaged display output seems happends only for read operations (console_scrollup, negation of pixels for cursor,...) but not for write-only operations (clear console, clear line, set black/white cursror, render fonsts...). I think if there is problem with address space, then garbaged screen should be also for framebuffer write operations...

Signature · 9 lines
Pali Roh?r
pali.rohar at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20120322/67b0f0ec/attachment.pgp>
#36 lore raw

PATCH 5/14 cfb_console: Fix function console_scrollup

Hi,

On Thu, 22 Mar 2012 01:58:02 -0700 (PDT)
Pali Roh?r <[email protected]> wrote:
...

Quoted 1 line

Do you think that mapped address of framebuffer is only problem?

I wrote that it could be a problem. I do not know much about your system and U-Boot port and do not know exactly what you meant by "damaged screen output" and when exactly it happens, so I can only speculate.

Quoted 8 lines

Why
then framebuffer output on n900 screen working without problem if I do NOT read framebuffer memory? Problem with garbaged display output seems happends only for read operations (console_scrollup, negation of pixels for cursor,...) but not for write-only operations (clear console, clear line, set black/white cursror, render fonsts...). I think if there is problem with address space, then garbaged screen should be also for framebuffer write operations...

This is another issue then. Can you test read/write access to the frame buffer area by available memory commands "cp", "md", "mm", "cmp"? Can you also verify that reading from frame buffer area by using these memory commands is not working?

Thanks,
Anatolij

#37 lore raw

PATCH 5/14 cfb_console: Fix function console_scrollup

In reply to Pali Rohár

Hi,

Quoted 1 line · On Tue, 24 Jan 2012 15:28:02 +0100 Pali Roh?r <[email protected]> wrote:

* Use correct buffer size, do not damage screen output

It seems that I can reproduce similar problem on the beagleboard now. Will try to debug and find a solution for it.

Thanks,
Anatolij

#38 lore raw

PATCH 5/14 cfb_console: Fix function console_scrollup

Quoted 4 lines · On Thursday 26 April 2012 23:45:52 Anatolij Gustschin wrote:

Hi,

On Tue, 24 Jan 2012 15:28:02 +0100

Quoted 8 lines
Quoted 1 line · Pali Roh?r

* Use correct buffer size, do not damage screen output

It seems that I can reproduce similar problem on the beagleboard now. Will try to debug and find a solution for it.

Thanks,
Anatolij

Ok, thanks! I played a lot of with u-boot on nokia n900, but I did not find reason...

Signature · 9 lines
Pali Roh?r
pali.rohar at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20120426/56d51386/attachment.pgp>
#39 lore raw

PATCH 5/14 cfb_console: Fix function console_scrollup

Quoted 5 lines · On Thu, 26 Apr 2012 23:50:57 +0200 Pali Roh?r <[email protected]> wrote:
Quoted 4 lines · On Thursday 26 April 2012 23:45:52 Anatolij Gustschin wrote:

Hi,

On Tue, 24 Jan 2012 15:28:02 +0100

Quoted 8 lines
Quoted 5 lines
Quoted 1 line · Pali Roh?r

* Use correct buffer size, do not damage screen output

It seems that I can reproduce similar problem on the beagleboard now. Will try to debug and find a solution for it.

Ok, thanks! I played a lot of with u-boot on nokia n900, but I did not find reason...

Probably the issue is caused by cached frame buffer data. This [1] patch is supposed to fix it. Could you please test it on N900? Additional cache flushing also needs to be added to your extensions for cfb_console to fix the menu output.

Thanks,
Anatolij

[1] http://patchwork.ozlabs.org/patch/155662/

#40 lore raw

PATCH 5/14 cfb_console: Fix function console_scrollup

Quoted 24 lines · On Saturday 28 April 2012 17:11:51 Anatolij Gustschin wrote:

On Thu, 26 Apr 2012 23:50:57 +0200

Quoted 8 lines · Pali Roh?r
Quoted 7 lines · On Thursday 26 April 2012 23:45:52 Anatolij Gustschin wrote:

Hi,

On Tue, 24 Jan 2012 15:28:02 +0100

Quoted 1 line · Pali Roh?r

* Use correct buffer size, do not damage screen output

Quoted 7 lines
Quoted 3 lines

It seems that I can reproduce similar problem on the beagleboard now. Will try to debug and find a solution for it.

Ok, thanks! I played a lot of with u-boot on nokia n900, but I
did not find reason...

Probably the issue is caused by cached frame buffer data. This
[1] patch is supposed to fix it. Could you please test it on N900? Additional cache flushing also needs to be added to your extensions for cfb_console to fix the menu output.

Quoted 4 lines

Thanks,
Anatolij

[1] http://patchwork.ozlabs.org/patch/155662/

Hi, your patch fixing this problem. Thanks!

Signature · 9 lines
Pali Roh?r
pali.rohar at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20120428/2c3c1bba/attachment.pgp>
#41 lore raw

PATCH 6/14 cfb_console: Add function console_clear and console_clear_line

In reply to Pali Rohár

* console_clear - clear full console framebuffer output
* console_clear_line - clear part of specified line (or full)

---
Changes since original version:
- Fixed commit message

 drivers/video/cfb_console.c |   64 +++++++++++++++++++++++++++++++++++--------
 1 files changed, 52 insertions(+), 12 deletions(-)
drivers/video/cfb_console.c +52 -12
index 9092399..b74d6d0 100644
@@ -683,6 +683,57 @@ static void memcpyl(int *d, int *s, int c)
 }
 #endif
 
+static void console_clear(void)
+{
+#ifdef VIDEO_HW_RECTFILL
+	video_hw_rectfill(VIDEO_PIXEL_SIZE,	/* bytes per pixel */
+			  0,			/* dest pos x */
+			  video_logo_height,	/* dest pos y */
+			  VIDEO_VISIBLE_COLS,	/* frame width */
+			  VIDEO_VISIBLE_ROWS,	/* frame height */
+			  bgx			/* fill color */
+	);
+#else
+	memsetl(CONSOLE_ROW_FIRST, CONSOLE_SIZE, bgx);
+#endif
+}
+
+static void console_clear_line(int line, int begin, int end)
+{
+#ifdef VIDEO_HW_RECTFILL
+	video_hw_rectfill(VIDEO_PIXEL_SIZE,		/* bytes per pixel */
+			  /* FIXME: correct? */
+			  VIDEO_FONT_WIDTH * begin,	/* dest pos x */
+			  /* FIXME: correct? */
+			  video_logo_height +
+			  CONSOLE_ROW_SIZE * line,	/* dest pos y */
+			  /* FIXME: correct? */
+			  VIDEO_FONT_WIDTH * (end - begin), /* frame width */
+			  VIDEO_FONT_HEIGHT,		/* frame height */
+			  bgx				/* fill color */
+		);
+#else
+	int i;
+	if (begin == 0 && end == CONSOLE_COLS)
+		memsetl(CONSOLE_ROW_FIRST +
+			CONSOLE_ROW_SIZE * line,	/* offset of row */
+			CONSOLE_ROW_SIZE >> 2,		/* length of row */
+			bgx				/* fill color */
+		);
+	else
+		for (i = 0; i < VIDEO_FONT_HEIGHT; ++i)
+			memsetl(CONSOLE_ROW_FIRST +
+				CONSOLE_ROW_SIZE * line + /* offset of row */
+				VIDEO_FONT_WIDTH *
+				VIDEO_PIXEL_SIZE * begin + /* offset of col */
+				i * VIDEO_LINE_LEN, /* col offset of i line */
+				(VIDEO_FONT_WIDTH * VIDEO_PIXEL_SIZE *
+				(end - begin + 1)) >> 2, /* length to end */
+				bgx			/* fill color */
+				);
+#endif
+}
+
 static void console_scrollup(void)
 {
 	/* copy up rows ignoring the first one */
@@ -705,18 +756,7 @@ static void console_scrollup(void)
 #endif
 
 	/* clear the last one */
-#ifdef VIDEO_HW_RECTFILL
-	video_hw_rectfill(VIDEO_PIXEL_SIZE,	/* bytes per pixel */
-			  0,			/* dest pos x */
-			  VIDEO_VISIBLE_ROWS
-			  - VIDEO_FONT_HEIGHT,	/* dest pos y */
-			  VIDEO_VISIBLE_COLS,	/* frame width */
-			  VIDEO_FONT_HEIGHT,	/* frame height */
-			  CONSOLE_BG_COL	/* fill color */
-		);
-#else
-	memsetl(CONSOLE_ROW_LAST, CONSOLE_ROW_SIZE >> 2, CONSOLE_BG_COL);
-#endif
+	console_clear_line(CONSOLE_ROWS-1, 0, CONSOLE_COLS);
 }
 
 static void console_back(void)
Signature · 1 line
1.7.5.4
#42 lore raw

PATCH 6/14 cfb_console: Add function console_clear and console_clear_line

Quoted 17 lines

* console_clear - clear full console framebuffer output
* console_clear_line - clear part of specified line (or full)

---
Changes since original version:
- Fixed commit message

 drivers/video/cfb_console.c |   64

+++++++++++++++++++++++++++++++++++-------- 1 files changed, 52 insertions(+), 12 deletions(-)

drivers/video/cfb_console.c +0 -0
index 9092399..b74d6d0 100644

drivers/video/cfb_console.c static void memcpyl(int *d, int *s, int c) · line 686

Quoted 4 lines
drivers/video/cfb_console.c +1 -0
@@ -683,6 +683,57 @@ static void memcpyl(int *d, int *s, int c)
 }
 #endif
 
+static void console_clear(void)

Do you use this function AT ALL?

Quoted 73 lines
drivers/video/cfb_console.c +51 -12
+{
+#ifdef VIDEO_HW_RECTFILL
+	video_hw_rectfill(VIDEO_PIXEL_SIZE,	/* bytes per pixel */
+			  0,			/* dest pos x */
+			  video_logo_height,	/* dest pos y */
+			  VIDEO_VISIBLE_COLS,	/* frame width */
+			  VIDEO_VISIBLE_ROWS,	/* frame height */
+			  bgx			/* fill color */
+	);
+#else
+	memsetl(CONSOLE_ROW_FIRST, CONSOLE_SIZE, bgx);
+#endif
+}
+
+static void console_clear_line(int line, int begin, int end)
+{
+#ifdef VIDEO_HW_RECTFILL
+	video_hw_rectfill(VIDEO_PIXEL_SIZE,		/* bytes per pixel */
+			  /* FIXME: correct? */
+			  VIDEO_FONT_WIDTH * begin,	/* dest pos x */
+			  /* FIXME: correct? */
+			  video_logo_height +
+			  CONSOLE_ROW_SIZE * line,	/* dest pos y */
+			  /* FIXME: correct? */
+			  VIDEO_FONT_WIDTH * (end - begin), /* frame width */
+			  VIDEO_FONT_HEIGHT,		/* frame height */
+			  bgx				/* fill color */
+		);
+#else
+	int i;
+	if (begin == 0 && end == CONSOLE_COLS)
+		memsetl(CONSOLE_ROW_FIRST +
+			CONSOLE_ROW_SIZE * line,	/* offset of row */
+			CONSOLE_ROW_SIZE >> 2,		/* length of row */
+			bgx				/* fill color */
+		);
+	else
+		for (i = 0; i < VIDEO_FONT_HEIGHT; ++i)
+			memsetl(CONSOLE_ROW_FIRST +
+				CONSOLE_ROW_SIZE * line + /* offset of row */
+				VIDEO_FONT_WIDTH *
+				VIDEO_PIXEL_SIZE * begin + /* offset of col */
+				i * VIDEO_LINE_LEN, /* col offset of i line */
+				(VIDEO_FONT_WIDTH * VIDEO_PIXEL_SIZE *
+				(end - begin + 1)) >> 2, /* length to end */
+				bgx			/* fill color */
+				);
+#endif
+}
+
 static void console_scrollup(void)
 {
 	/* copy up rows ignoring the first one */
@@ -705,18 +756,7 @@ static void console_scrollup(void)
 #endif
 
 	/* clear the last one */
-#ifdef VIDEO_HW_RECTFILL
-	video_hw_rectfill(VIDEO_PIXEL_SIZE,	/* bytes per pixel */
-			  0,			/* dest pos x */
-			  VIDEO_VISIBLE_ROWS
-			  - VIDEO_FONT_HEIGHT,	/* dest pos y */
-			  VIDEO_VISIBLE_COLS,	/* frame width */
-			  VIDEO_FONT_HEIGHT,	/* frame height */
-			  CONSOLE_BG_COL	/* fill color */
-		);
-#else
-	memsetl(CONSOLE_ROW_LAST, CONSOLE_ROW_SIZE >> 2, CONSOLE_BG_COL);
-#endif
+	console_clear_line(CONSOLE_ROWS-1, 0, CONSOLE_COLS);
 }
 
 static void console_back(void)
#43 lore raw

PATCH 6/14 cfb_console: Add function console_clear and console_clear_line

Quoted 5 lines · On Wednesday 25 January 2012 19:08:31 Marek Vasut wrote:
Quoted 2 lines

+static void console_clear(void)

Do you use this function AT ALL?

Yes, in patch which add ANSI terminal support to cfb_console.

Signature · 9 lines
Pali Roh?r
pali.rohar at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20120125/1ac8296c/attachment.pgp>
#44 lore raw

PATCH 6/14 cfb_console: Add function console_clear and console_clear_line

Quoted 6 lines · On Wednesday 25 January 2012 19:08:31 Marek Vasut wrote:
Quoted 3 lines
Quoted 1 line

+static void console_clear(void)

Do you use this function AT ALL?

Yes, in patch which add ANSI terminal support to cfb_console.

Why do you even need the support for ANSI terminal in the first place?

#45 lore raw

PATCH 7/14 cfb_console: Add functions for moving with cursor

In reply to Pali Rohár

* console_cursor_fix - fix cursor position (check for out of screen)
* console_cursor_up, console_cursor_down, console_cursor_left, console_cursor_right, console_cursor_set_position for change cursor position
* console_newline - added param to specify count of creating new lines
* console_previewsline - opposite of console_newline

---
Changes since original version:
- Fixed commit message

 drivers/video/cfb_console.c |   64 +++++++++++++++++++++++++++++++++++++++----
 1 files changed, 58 insertions(+), 6 deletions(-)
drivers/video/cfb_console.c +58 -6
index b74d6d0..3823eae 100644
@@ -773,9 +773,54 @@ static void console_back(void)
 	CURSOR_SET;
 }
 
-static void console_newline(void)
+static void console_cursor_fix(void)
 {
-	console_row++;
+	if (console_row < 0)
+		console_row = 0;
+	if (console_row >= CONSOLE_ROWS)
+		console_row = CONSOLE_ROWS-1;
+	if (console_col < 0)
+		console_col = 0;
+	if (console_col >= CONSOLE_COLS)
+		console_col = CONSOLE_COLS-1;
+}
+
+static void console_cursor_up(int n)
+{
+	console_row -= n;
+	console_cursor_fix();
+}
+
+static void console_cursor_down(int n)
+{
+	console_row += n;
+	console_cursor_fix();
+}
+
+static void console_cursor_left(int n)
+{
+	console_col -= n;
+	console_cursor_fix();
+}
+
+static void console_cursor_right(int n)
+{
+	console_col += n;
+	console_cursor_fix();
+}
+
+static void console_cursor_set_position(int row, int col)
+{
+	if (console_row != -1)
+		console_row = row;
+	if (console_col != -1)
+		console_col = col;
+	console_cursor_fix();
+}
+
+static void console_newline(int n)
+{
+	console_row += n;
 	console_col = 0;
 
 	/* Check if we need to scroll the terminal */
@@ -784,10 +829,17 @@ static void console_newline(void)
 		console_scrollup();
 
 		/* Decrement row number */
-		console_row--;
+		console_row = CONSOLE_ROWS-1;
 	}
 }
 
+static void console_previewsline(int n)
+{
+	/* FIXME: also scroll terminal ? */
+	console_row -= n;
+	console_cursor_fix();
+}
+
 static void console_cr(void)
 {
 	console_col = 0;
@@ -806,7 +858,7 @@ void video_putc(const char c)
 
 	case '\n':		/* next line */
 		if (console_col || (!console_col && nl))
-			console_newline();
+			console_newline(1);
 		nl = 1;
 		break;
 
@@ -815,7 +867,7 @@ void video_putc(const char c)
 		console_col &= ~0x0007;
 
 		if (console_col >= CONSOLE_COLS)
-			console_newline();
+			console_newline(1);
 		break;
 
 	case 8:		/* backspace */
@@ -829,7 +881,7 @@ void video_putc(const char c)
 
 		/* check for newline */
 		if (console_col >= CONSOLE_COLS) {
-			console_newline();
+			console_newline(1);
 			nl = 0;
 		}
 	}
Signature · 1 line
1.7.5.4
#46 lore raw

PATCH 8/14 cfb_console: Add support for some ANSI terminal escape codes

In reply to Pali Rohár

* This patch add support for move cursor and reverse colors via ANSI espace codes in cfb_console driver
* ANSI escape codes can be enabled/disabled via CONFIG_CFB_CONSOLE_ANSI

---
Changes since original version:
- Fixed commit message

 drivers/video/cfb_console.c |  216 ++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 215 insertions(+), 1 deletions(-)
drivers/video/cfb_console.c +215 -1
index 3823eae..dc8d99b 100644
@@ -377,6 +377,10 @@ static int console_row;		/* cursor row */
 
 static u32 eorx, fgx, bgx;	/* color pats */
 
+static char ansi_buf[10] = { 0, };
+static int ansi_buf_size;
+static int ansi_colors_need_revert;
+
 static const int video_font_draw_table8[] = {
 	0x00000000, 0x000000ff, 0x0000ff00, 0x0000ffff,
 	0x00ff0000, 0x00ff00ff, 0x00ffff00, 0x00ffffff,
@@ -602,6 +606,14 @@ static void video_putchar(int xx, int yy, unsigned char c)
 	video_drawchars(xx, yy + video_logo_height, &c, 1);
 }
 
+static void console_swap_colors(void)
+{
+	eorx = fgx;
+	fgx = bgx;
+	bgx = eorx;
+	eorx = fgx ^ bgx;
+}
+
 #if defined(CONFIG_CONSOLE_CURSOR) || defined(CONFIG_VIDEO_SW_CURSOR)
 static void video_set_cursor(void)
 {
@@ -845,7 +857,7 @@ static void console_cr(void)
 	console_col = 0;
 }
 
-void video_putc(const char c)
+static void parse_putc(const char c)
 {
 	static int nl = 1;
 
@@ -888,6 +900,208 @@ void video_putc(const char c)
 	CURSOR_SET;
 }
 
+void video_putc(const char c)
+{
+#ifdef CONFIG_CFB_CONSOLE_ANSI
+	int i;
+
+	if (c == 27) {
+		for (i = 0; i < ansi_buf_size; ++i)
+			parse_putc(ansi_buf[i]);
+		ansi_buf[0] = 27;
+		ansi_buf_size = 1;
+		return;
+	}
+
+	if (ansi_buf_size > 0) {
+		/*
+		0 - ESC
+		1 - [
+		2 - num1
+		3 - ..
+		4 - ;
+		5 - num2
+		6 - ..
+		7 - cchar
+		*/
+		int next = 0;
+
+		int flush = 0;
+		int fail = 0;
+
+		int num1 = 0;
+		int num2 = 0;
+		int cchar = 0;
+
+		ansi_buf[ansi_buf_size++] = c;
+
+		if (ansi_buf_size >= sizeof(ansi_buf))
+			fail = 1;
+
+		for (i = 0; i < ansi_buf_size; ++i) {
+			if (fail)
+				break;
+
+			switch (next) {
+			case 0:
+				if (ansi_buf[i] == 27)
+					next = 1;
+				else
+					fail = 1;
+				break;
+
+			case 1:
+				if (ansi_buf[i] == '[')
+					next = 2;
+				else
+					fail = 1;
+				break;
+
+			case 2:
+				if (ansi_buf[i] >= '0' && ansi_buf[i] <= '9') {
+					num1 = ansi_buf[i]-'0';
+					next = 3;
+				} else {
+					--i;
+					num1 = 1;
+					next = 4;
+				}
+				break;
+
+			case 3:
+				if (ansi_buf[i] >= '0' && ansi_buf[i] <= '9') {
+					num1 *= 10;
+					num1 += ansi_buf[i]-'0';
+				} else {
+					--i;
+					next = 4;
+				}
+				break;
+
+			case 4:
+				if (ansi_buf[i] != ';') {
+					--i;
+					next = 7;
+				} else
+					next = 5;
+				break;
+
+			case 5:
+				if (ansi_buf[i] >= '0' && ansi_buf[i] <= '9') {
+					num2 = ansi_buf[i]-'0';
+					next = 6;
+				} else
+					fail = 1;
+				break;
+
+			case 6:
+				if (ansi_buf[i] >= '0' && ansi_buf[i] <= '9') {
+					num2 *= 10;
+					num2 += ansi_buf[i]-'0';
+				} else {
+					--i;
+					next = 7;
+				}
+				break;
+
+			case 7:
+				if ((ansi_buf[i] >= 'A' && ansi_buf[i] <= 'H')
+					|| ansi_buf[i] == 'J'
+					|| ansi_buf[i] == 'K'
+					|| ansi_buf[i] == 'm') {
+					cchar = ansi_buf[i];
+					flush = 1;
+				} else
+					fail = 1;
+				break;
+			}
+		}
+
+		if (fail) {
+			for (i = 0; i < ansi_buf_size; ++i)
+				parse_putc(ansi_buf[i]);
+			ansi_buf_size = 0;
+			return;
+		}
+
+		if (flush) {
+			CURSOR_OFF;
+			ansi_buf_size = 0;
+			switch (cchar) {
+			case 'A':
+				/* move cursor num1 rows up */
+				console_cursor_up(num1);
+				break;
+			case 'B':
+				/* move cursor num1 rows down */
+				console_cursor_down(num1);
+				break;
+			case 'C':
+				/* move cursor num1 columns forward */
+				console_cursor_right(num1);
+				break;
+			case 'D':
+				/* move cursor num1 columns back */
+				console_cursor_left(num1);
+				break;
+			case 'E':
+				/* move cursor num1 rows up at begin of row */
+				console_previewsline(num1);
+				break;
+			case 'F':
+				/* move cursor num1 rows down@begin of row */
+				console_newline(num1);
+				break;
+			case 'G':
+				/* move cursor to column num1 */
+				console_cursor_set_position(-1, num1-1);
+				break;
+			case 'H':
+				/* move cursor to row num1, column num2 */
+				console_cursor_set_position(num1-1, num2-1);
+				break;
+			case 'J':
+				/* clear console and move cursor to 0, 0 */
+				console_clear();
+				console_cursor_set_position(0, 0);
+				break;
+			case 'K':
+				/* clear line */
+				if (num1 == 0)
+					console_clear_line(console_row,
+							console_col,
+							CONSOLE_COLS-1);
+				else if (num1 == 1)
+					console_clear_line(console_row,
+							0, console_col);
+				else
+					console_clear_line(console_row,
+							0, CONSOLE_COLS-1);
+				break;
+			case 'm':
+				if (num1 == 0) { /* reset swapped colors */
+					if (ansi_colors_need_revert) {
+						console_swap_colors();
+						ansi_colors_need_revert = 0;
+					}
+				} else if (num1 == 7) { /* once swap colors */
+					if (!ansi_colors_need_revert) {
+						console_swap_colors();
+						ansi_colors_need_revert = 1;
+					}
+				}
+				break;
+			}
+			CURSOR_SET;
+		}
+	} else {
+		parse_putc(c);
+	}
+#else
+	parse_putc(c);
+#endif
+}
+
 void video_puts(const char *s)
 {
 	int count = strlen(s);
Signature · 1 line
1.7.5.4
#47 lore raw

PATCH 9/14 New command clear: Clear the ANSI terminal

In reply to Pali Rohár

* Command can be enabled by CONFIG_CMD_CLEAR
* Added some ANSI escape codes definitions in common.h

---
Changes since original version:
- Renamed command clr to clear
- Use puts instead printf
- Move cursor to pos1,1
- Merged parts of patch "Add some ANSI escape codes definitions in common.h"

 common/Makefile          |    1 +
 common/cmd_clear.c       |   42 ++++++++++++++++++++++++++++++++++++++++++
 include/common.h         |    7 +++++++
 include/config_cmd_all.h |    1 +
 4 files changed, 51 insertions(+), 0 deletions(-)
 create mode 100644 common/cmd_clear.c
common/Makefile +1 -0
index 2d9ae8c..e1efd45 100644
@@ -69,6 +69,7 @@ COBJS-$(CONFIG_CMD_BEDBUG) += bedbug.o cmd_bedbug.o
 COBJS-$(CONFIG_CMD_BMP) += cmd_bmp.o
 COBJS-$(CONFIG_CMD_BOOTLDR) += cmd_bootldr.o
 COBJS-$(CONFIG_CMD_CACHE) += cmd_cache.o
+COBJS-$(CONFIG_CMD_CLEAR) += cmd_clear.o
 COBJS-$(CONFIG_CMD_CONSOLE) += cmd_console.o
 COBJS-$(CONFIG_CMD_CPLBINFO) += cmd_cplbinfo.o
 COBJS-$(CONFIG_DATAFLASH_MMC_SELECT) += cmd_dataflash_mmc_mux.o
common/cmd_clear.c new file +42 -0

42 lines not on this page · raw message

include/common.h +7 -0
index 3df1def..9c0449e 100644
@@ -751,6 +751,13 @@ void	clear_ctrlc (void);	/* clear the Control-C condition */
 int	disable_ctrlc (int);	/* 1 to disable, 0 to enable Control-C detect */
 
 /*
+ * ANSI terminal
+ */
+
+#define ANSI_CURSOR_POSITION		"\e[%d;%dH"
+#define ANSI_CLEAR_CONSOLE		"\e[2J"
+
+/*
  * STDIO based functions (can always be used)
  */
 /* serial stuff */
include/config_cmd_all.h +1 -0
index 9716f9c..3f25eba 100644
@@ -23,6 +23,7 @@
 #define CONFIG_CMD_BSP		/* Board Specific functions	*/
 #define CONFIG_CMD_CACHE	/* icache, dcache		*/
 #define CONFIG_CMD_CDP		/* Cisco Discovery Protocol	*/
+#define CONFIG_CMD_CLEAR	/* ANSI clear screen command	*/
 #define CONFIG_CMD_CONSOLE	/* coninfo			*/
 #define CONFIG_CMD_DATE		/* support for RTC, date/time...*/
 #define CONFIG_CMD_DHCP		/* DHCP Support			*/
Signature · 1 line
1.7.5.4
#48 lore raw

PATCH 9/14 New command clear: Clear the ANSI terminal

Quoted 5 lines

* Command can be enabled by CONFIG_CMD_CLEAR
* Added some ANSI escape codes definitions in common.h

Do you seriously need a new command for such a simple operation?

M

Quoted 106 lines

---
Changes since original version:
- Renamed command clr to clear
- Use puts instead printf
- Move cursor to pos1,1
- Merged parts of patch "Add some ANSI escape codes definitions in
common.h"

 common/Makefile          |    1 +
 common/cmd_clear.c       |   42 ++++++++++++++++++++++++++++++++++++++++++
 include/common.h         |    7 +++++++
 include/config_cmd_all.h |    1 +
 4 files changed, 51 insertions(+), 0 deletions(-)
 create mode 100644 common/cmd_clear.c
common/Makefile +1 -0
index 2d9ae8c..e1efd45 100644
@@ -69,6 +69,7 @@ COBJS-$(CONFIG_CMD_BEDBUG) += bedbug.o cmd_bedbug.o
 COBJS-$(CONFIG_CMD_BMP) += cmd_bmp.o
 COBJS-$(CONFIG_CMD_BOOTLDR) += cmd_bootldr.o
 COBJS-$(CONFIG_CMD_CACHE) += cmd_cache.o
+COBJS-$(CONFIG_CMD_CLEAR) += cmd_clear.o
 COBJS-$(CONFIG_CMD_CONSOLE) += cmd_console.o
 COBJS-$(CONFIG_CMD_CPLBINFO) += cmd_cplbinfo.o
 COBJS-$(CONFIG_DATAFLASH_MMC_SELECT) += cmd_dataflash_mmc_mux.o
common/cmd_clear.c new file +30 -0
new file mode 100644
index 0000000..597611e
@@ -0,0 +1,42 @@
+/*
+ * Copyright 2011
+ * Marcel Mol, MESA Consulting, marcel at mesa.nl
+ *
+ * Copyright 2011
+ * Pali Roh?r, pali.rohar at gmail.com
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#include <common.h>
+#include <command.h>
+
+static int do_clear(cmd_tbl_t *cmdtp, int flag, int argc, char * const

argv[]) +{

common/cmd_clear.c new file +11 -0
+	puts(ANSI_CLEAR_CONSOLE);
+	printf(ANSI_CURSOR_POSITION, 1, 1);
+	return 0;
+}
+
+U_BOOT_CMD(
+	clear,    CONFIG_SYS_MAXARGS,     1,      do_clear,
+	"clear",
+	"\n"
+	"    - clear screen and move cursor to top of screen"
+);
include/common.h +0 -0
index 3df1def..9c0449e 100644
@@ -751,6 +751,13 @@ void	clear_ctrlc (void);	/* clear the Control-C

condition */ int disable_ctrlc (int); /* 1 to disable, 0 to enable
Control-C detect */

/*
+ * ANSI terminal
+ */

include/common.h +5 -0
+
+#define ANSI_CURSOR_POSITION		"\e[%d;%dH"
+#define ANSI_CLEAR_CONSOLE		"\e[2J"
+
+/*
  * STDIO based functions (can always be used)
  */
 /* serial stuff */
include/config_cmd_all.h +1 -0
index 9716f9c..3f25eba 100644
@@ -23,6 +23,7 @@
 #define CONFIG_CMD_BSP		/* Board Specific functions	*/
 #define CONFIG_CMD_CACHE	/* icache, dcache		*/
 #define CONFIG_CMD_CDP		/* Cisco Discovery Protocol	*/
+#define CONFIG_CMD_CLEAR	/* ANSI clear screen command	*/
 #define CONFIG_CMD_CONSOLE	/* coninfo			*/
 #define CONFIG_CMD_DATE		/* support for RTC, date/time...*/
 #define CONFIG_CMD_DHCP		/* DHCP Support			*/
#49 lore raw

PATCH 9/14 New command clear: Clear the ANSI terminal

Quoted 2 lines · On Wednesday 25 January 2012 19:10:03 Marek Vasut wrote:

Do you seriously need a new command for such a simple operation?

Yes, command clear is really usefull for debugging framebuffer output on n900.

Signature · 9 lines
Pali Roh?r
pali.rohar at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20120125/aa83d174/attachment.pgp>
#50 lore raw

PATCH 9/14 New command clear: Clear the ANSI terminal

Quoted 5 lines · On Wednesday 25 January 2012 19:10:03 Marek Vasut wrote:
Quoted 1 line

Do you seriously need a new command for such a simple operation?

Yes, command clear is really usefull for debugging framebuffer output on n900.

Ok, let's see what the other people think, I'm opposed tho

#51 lore raw

PATCH 9/14 New command clear: Clear the ANSI terminal

Quoted 7 lines · On Wednesday 25 January 2012 15:53:51 Marek Vasut wrote:
Quoted 5 lines · On Wednesday 25 January 2012 19:10:03 Marek Vasut wrote:
Quoted 1 line

Do you seriously need a new command for such a simple operation?

Yes, command clear is really usefull for debugging framebuffer output on n900.

Ok, let's see what the other people think, I'm opposed tho

it's a CONFIG option, so it's fine by me

-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20120214/d3144797/attachment.pgp>

#52 lore raw

PATCH 10/14 New config variable CONFIG_MENUCMD

In reply to Pali Rohár

* If not defined CONFIG_MENUCMD do nothing

* If CONFIG_MENUKEY is 0 and was pressed any key run env "menu_cmd"
* If pressed key was CONFIG_MENUKEY run env "menu_cmd"
* If CONFIG_MENUKEY is not defined run env "menu_cmd" always

* CONFIG_MENUKEY working if defined CONFIG_MENUCMD and CONFIG_BOOTDELAY >= 0

---
Changes since original version:
- Fixed commit message

 common/main.c |   34 +++++++++++++++++++++++-----------
 1 files changed, 23 insertions(+), 11 deletions(-)
common/main.c +23 -11
index e7b5516..503d6c4 100644
@@ -82,6 +82,20 @@ int do_mdm_init = 0;
 extern void mdm_init(void); /* defined in board.c */
 #endif
 
+#if defined(CONFIG_MENUKEY) && !defined(CONFIG_MENUCMD) && \
+(!defined(CONFIG_BOOTDELAY) || CONFIG_BOOTDELAY < 0)
+#error CONFIG_MENUKEY defined, but not CONFIG_MENUCMD or CONFIG_BOOTDELAY >= 0
+#error define CONFIG_MENUCMD and CONFIG_BOOTDELAY too
+#endif
+
+#ifdef CONFIG_MENUCMD
+# ifdef CONFIG_MENUKEY
+static int menucmd;
+# else
+static int menucmd = 1;
+# endif
+#endif
+
 /***************************************************************************
  * Watch for 'delay' seconds for autoboot stop or autoboot delay string.
  * returns: 0 -  no key string, allow autoboot 1 - got key string, abort
@@ -201,10 +215,6 @@ int abortboot(int bootdelay)
 
 # else	/* !defined(CONFIG_AUTOBOOT_KEYED) */
 
-#ifdef CONFIG_MENUKEY
-static int menukey = 0;
-#endif
-
 #ifndef CONFIG_MENU
 static inline
 #endif
@@ -241,8 +251,10 @@ int abortboot(int bootdelay)
 			if (tstc()) {	/* we got a key press	*/
 				abort  = 1;	/* don't auto boot	*/
 				bootdelay = 0;	/* no more delay	*/
-# ifdef CONFIG_MENUKEY
-				menukey = getc();
+# if defined(CONFIG_MENUCMD) && defined(CONFIG_MENUKEY)
+				if (CONFIG_MENUKEY == 0 ||
+					CONFIG_MENUKEY == getc())
+					menucmd = 1;
 # else
 				(void) getc();  /* consume input	*/
 # endif
@@ -292,6 +304,7 @@ int run_command2(const char *cmd, int flag)
 
 void main_loop (void)
 {
+	char *s;
 #ifndef CONFIG_SYS_HUSH_PARSER
 	static char lastcommand[CONFIG_SYS_CBSIZE] = { 0, };
 	int len;
@@ -300,7 +313,6 @@ void main_loop (void)
 #endif
 
 #if defined(CONFIG_BOOTDELAY) && (CONFIG_BOOTDELAY >= 0)
-	char *s;
 	int bootdelay;
 #endif
 #ifdef CONFIG_PREBOOT
@@ -405,15 +417,15 @@ void main_loop (void)
 		disable_ctrlc(prev);	/* restore Control C checking */
 # endif
 	}
+#endif /* CONFIG_BOOTDELAY */
 
-# ifdef CONFIG_MENUKEY
-	if (menukey == CONFIG_MENUKEY) {
+#ifdef CONFIG_MENUCMD
+	if (menucmd == 1) {
 		s = getenv("menucmd");
 		if (s)
 			run_command2(s, 0);
 	}
-#endif /* CONFIG_MENUKEY */
-#endif /* CONFIG_BOOTDELAY */
+#endif
 
 	/*
 	 * Main Loop for Monitor Command Processing
Signature · 1 line
1.7.5.4
#53 lore raw

PATCH 10/14 New config variable CONFIG_MENUCMD

Quoted 10 lines

* If not defined CONFIG_MENUCMD do nothing

* If CONFIG_MENUKEY is 0 and was pressed any key run env "menu_cmd"
* If pressed key was CONFIG_MENUKEY run env "menu_cmd"
* If CONFIG_MENUKEY is not defined run env "menu_cmd" always

* CONFIG_MENUKEY working if defined CONFIG_MENUCMD and CONFIG_BOOTDELAY >=
0

So this is just to interrupt autoboot? Why not just report the "menukey" as any other keypress and do it that way?

M

Quoted 92 lines

---
Changes since original version:
- Fixed commit message

 common/main.c |   34 +++++++++++++++++++++++-----------
 1 files changed, 23 insertions(+), 11 deletions(-)
common/main.c +3 -0
index e7b5516..503d6c4 100644
@@ -82,6 +82,20 @@ int do_mdm_init = 0;
 extern void mdm_init(void); /* defined in board.c */
 #endif
 
+#if defined(CONFIG_MENUKEY) && !defined(CONFIG_MENUCMD) && \
+(!defined(CONFIG_BOOTDELAY) || CONFIG_BOOTDELAY < 0)
+#error CONFIG_MENUKEY defined, but not CONFIG_MENUCMD or CONFIG_BOOTDELAY
Quoted 1 line

= 0 +#error define CONFIG_MENUCMD and CONFIG_BOOTDELAY too

common/main.c +10 -0
+#endif
+
+#ifdef CONFIG_MENUCMD
+# ifdef CONFIG_MENUKEY
+static int menucmd;
+# else
+static int menucmd = 1;
+# endif
+#endif
+
 /*************************************************************************

** * Watch for 'delay' seconds for autoboot stop or autoboot delay string.
* returns: 0 - no key string, allow autoboot 1 - got key string, abort @@ -201,10 +215,6 @@ int abortboot(int bootdelay)

# else /* !defined(CONFIG_AUTOBOOT_KEYED) */

common/main.c +9 -11
-#ifdef CONFIG_MENUKEY
-static int menukey = 0;
-#endif
-
 #ifndef CONFIG_MENU
 static inline
 #endif
@@ -241,8 +251,10 @@ int abortboot(int bootdelay)
 			if (tstc()) {	/* we got a key press	*/
 				abort  = 1;	/* don't auto boot	*/
 				bootdelay = 0;	/* no more delay	*/
-# ifdef CONFIG_MENUKEY
-				menukey = getc();
+# if defined(CONFIG_MENUCMD) && defined(CONFIG_MENUKEY)
+				if (CONFIG_MENUKEY == 0 ||
+					CONFIG_MENUKEY == getc())
+					menucmd = 1;
 # else
 				(void) getc();  /* consume input	*/
 # endif
@@ -292,6 +304,7 @@ int run_command2(const char *cmd, int flag)
 
 void main_loop (void)
 {
+	char *s;
 #ifndef CONFIG_SYS_HUSH_PARSER
 	static char lastcommand[CONFIG_SYS_CBSIZE] = { 0, };
 	int len;
@@ -300,7 +313,6 @@ void main_loop (void)
 #endif
 
 #if defined(CONFIG_BOOTDELAY) && (CONFIG_BOOTDELAY >= 0)
-	char *s;
 	int bootdelay;
 #endif
 #ifdef CONFIG_PREBOOT
@@ -405,15 +417,15 @@ void main_loop (void)
 		disable_ctrlc(prev);	/* restore Control C checking */
 # endif
 	}
+#endif /* CONFIG_BOOTDELAY */
 
-# ifdef CONFIG_MENUKEY
-	if (menukey == CONFIG_MENUKEY) {
+#ifdef CONFIG_MENUCMD
+	if (menucmd == 1) {
 		s = getenv("menucmd");
 		if (s)
 			run_command2(s, 0);
 	}
-#endif /* CONFIG_MENUKEY */
-#endif /* CONFIG_BOOTDELAY */
+#endif
 
 	/*
 	 * Main Loop for Monitor Command Processing
#54 lore raw

PATCH 10/14 New config variable CONFIG_MENUCMD

Quoted 3 lines · On Wednesday 25 January 2012 19:12:29 Marek Vasut wrote:

So this is just to interrupt autoboot? Why not just report the "menukey" as any other keypress and do it that way?

Usefull for interrupt autoboot and run some menu (script/booting) only with specific key (for example with key M on device keyboard).

Signature · 9 lines
Pali Roh?r
pali.rohar at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20120125/52e165c2/attachment.pgp>
#55 lore raw

PATCH 10/14 New config variable CONFIG_MENUCMD

Quoted 6 lines · On Wednesday 25 January 2012 19:12:29 Marek Vasut wrote:
Quoted 2 lines

So this is just to interrupt autoboot? Why not just report the "menukey" as any other keypress and do it that way?

Usefull for interrupt autoboot and run some menu (script/booting) only with specific key (for example with key M on device keyboard).

what's the difference between this and CONFIG_MENUKEY?

#56 lore raw

PATCH 10/14 New config variable CONFIG_MENUCMD

Quoted 9 lines · On Wednesday 25 January 2012 21:53:02 Marek Vasut wrote:
Quoted 7 lines · On Wednesday 25 January 2012 19:12:29 Marek Vasut wrote:
Quoted 2 lines

So this is just to interrupt autoboot? Why not just report the "menukey" as any other keypress and do it that way?

Usefull for interrupt autoboot and run some menu (script/booting) only with
specific key (for example with key M on device keyboard).

what's the difference between this and CONFIG_MENUKEY?

See commit message

CONFIG_MENUCMD define if U-Boot will run env variable "menucmd" CONFIG_MENUKEY define if some key must be pressed (and which) to run "menucmd"

Signature · 9 lines
Pali Roh?r
pali.rohar at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20120126/9d718572/attachment.pgp>
#58 lore raw

PATCH 11/14 New config variable CONFIG_PREMONITOR

In reply to Pali Rohár

* if defined run env "premonitor" before Main Loop for Monitor Processing

---
Changes since original version:
- removed #ifdef CONFIG_PREMONITOR in main.c

 common/env_common.c |    3 +++
 common/main.c       |    4 ++++
 2 files changed, 7 insertions(+), 0 deletions(-)
common/env_common.c +3 -0
index 71811c4..1c2360d 100644
@@ -92,6 +92,9 @@ const uchar default_environment[] = {
 #ifdef	CONFIG_PREBOOT
 	"preboot="	CONFIG_PREBOOT			"\0"
 #endif
+#ifdef	CONFIG_PREMONITOR
+	"premonitor="	CONFIG_PREMONITOR		"\0"
+#endif
 #ifdef	CONFIG_ROOTPATH
 	"rootpath="	CONFIG_ROOTPATH			"\0"
 #endif
common/main.c +4 -0
index 503d6c4..e0c262c 100644
@@ -427,6 +427,10 @@ void main_loop (void)
 	}
 #endif
 
+	s = getenv("premonitor");
+	if (s)
+		run_command2(s, 0);
+
 	/*
 	 * Main Loop for Monitor Command Processing
 	 */
Signature · 1 line
1.7.5.4
#59 lore raw

PATCH 11/14 New config variable CONFIG_PREMONITOR

Quoted 1 line

* if defined run env "premonitor" before Main Loop for Monitor Processing

What is this good for?

Quoted 39 lines

---
Changes since original version:
- removed #ifdef CONFIG_PREMONITOR in main.c

 common/env_common.c |    3 +++
 common/main.c       |    4 ++++
 2 files changed, 7 insertions(+), 0 deletions(-)
common/env_common.c +3 -0
index 71811c4..1c2360d 100644
@@ -92,6 +92,9 @@ const uchar default_environment[] = {
 #ifdef	CONFIG_PREBOOT
 	"preboot="	CONFIG_PREBOOT			"\0"
 #endif
+#ifdef	CONFIG_PREMONITOR
+	"premonitor="	CONFIG_PREMONITOR		"\0"
+#endif
 #ifdef	CONFIG_ROOTPATH
 	"rootpath="	CONFIG_ROOTPATH			"\0"
 #endif
common/main.c +4 -0
index 503d6c4..e0c262c 100644
@@ -427,6 +427,10 @@ void main_loop (void)
 	}
 #endif
 
+	s = getenv("premonitor");
+	if (s)
+		run_command2(s, 0);
+
 	/*
 	 * Main Loop for Monitor Command Processing
 	 */
#60 lore raw

PATCH 11/14 New config variable CONFIG_PREMONITOR

Quoted 4 lines · On Wednesday 25 January 2012 19:12:51 Marek Vasut wrote:
Quoted 1 line

* if defined run env "premonitor" before Main Loop for Monitor Processing

What is this good for?

before running monitor loop I'd like write some info to console (specific board info, board commands, board macros). but if these info will be written in preboot it can be deleted by menu section.

Signature · 9 lines
Pali Roh?r
pali.rohar at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20120125/3028a077/attachment.pgp>
#61 lore raw

PATCH 11/14 New config variable CONFIG_PREMONITOR

Quoted 9 lines · On Wednesday 25 January 2012 19:12:51 Marek Vasut wrote:
Quoted 4 lines
Quoted 2 lines

* if defined run env "premonitor" before Main Loop for Monitor Processing

What is this good for?

before running monitor loop I'd like write some info to console (specific board info, board commands, board macros). but if these info will be written in preboot it can be deleted by menu section.

The "menu" here, you refer to the thing you implemented? So fix that instead of introducing broken code and a pile of workarounds.

#62 lore raw

PATCH 11/14 New config variable CONFIG_PREMONITOR

Quoted 4 lines · On Wednesday 25 January 2012 21:51:38 Marek Vasut wrote:
Quoted 4 lines · On Wednesday 25 January 2012 19:12:51 Marek Vasut wrote:
Quoted 3 lines
Quoted 2 lines

* if defined run env "premonitor" before Main Loop for Monitor Processing

Quoted 8 lines
Quoted 5 lines
Quoted 1 line

What is this good for?

before running monitor loop I'd like write some info to console (specific board info, board commands, board macros). but if these info will be written in preboot it can be deleted by menu section.

The "menu" here, you refer to the thing you implemented? So fix that instead of introducing broken code and a pile of workarounds.

With "menu" I mean env menucmd. U-Boot run command stored in env menucmd after preboot and before monitor loop. For example in menucmd can be my bootmenu, but there are no problems - no broken code! My bootmenu clear screan and show menu, so anything printed before menu entries will be deleted. This is not bug
- Also in Grub or LILO is debug/output log cleaned when showing menu entries.

Signature · 9 lines
Pali Roh?r
pali.rohar at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20120125/21fd2585/attachment.pgp>
#63 lore raw

PATCH 11/14 New config variable CONFIG_PREMONITOR

Quoted 14 lines · On Wednesday 25 January 2012 21:51:38 Marek Vasut wrote:
Quoted 4 lines
Quoted 4 lines · On Wednesday 25 January 2012 19:12:51 Marek Vasut wrote:
Quoted 3 lines
Quoted 2 lines

* if defined run env "premonitor" before Main Loop for Monitor Processing

Quoted 8 lines
Quoted 5 lines
Quoted 1 line

What is this good for?

before running monitor loop I'd like write some info to console (specific board info, board commands, board macros). but if these info will be written in preboot it can be deleted by menu section.

The "menu" here, you refer to the thing you implemented? So fix that instead of introducing broken code and a pile of workarounds.

Quoted 6 lines

With "menu" I mean env menucmd. U-Boot run command stored in env menucmd after preboot and before monitor loop. For example in menucmd can be my bootmenu, but there are no problems - no broken code! My bootmenu clear screan and show menu, so anything printed before menu entries will be deleted. This is not bug - Also in Grub or LILO is debug/output log cleaned when showing menu entries.

Ok anyway, but you implemented custom menu system anyway ... so let's clear this first, is common/menu.c useless for your application?

M

#64 lore raw

PATCH 11/14 New config variable CONFIG_PREMONITOR

Quoted 21 lines · On Wednesday 25 January 2012 22:28:17 Marek Vasut wrote:
Quoted 14 lines · On Wednesday 25 January 2012 21:51:38 Marek Vasut wrote:
Quoted 4 lines
Quoted 4 lines · On Wednesday 25 January 2012 19:12:51 Marek Vasut wrote:
Quoted 3 lines
Quoted 2 lines

* if defined run env "premonitor" before Main Loop for Monitor Processing

Quoted 8 lines
Quoted 5 lines
Quoted 1 line

What is this good for?

before running monitor loop I'd like write some info to console (specific board info, board commands, board macros). but if these info will be written in preboot it can be deleted by menu section.

The "menu" here, you refer to the thing you implemented? So fix that instead of introducing broken code and a pile of workarounds.

Quoted 6 lines

With "menu" I mean env menucmd. U-Boot run command stored in env menucmd after preboot and before monitor loop. For example in menucmd can be my bootmenu, but there are no problems - no broken code! My bootmenu clear screan and show menu, so anything printed before menu entries will be deleted. This is not bug - Also in Grub or LILO is debug/output log cleaned when showing menu entries.

Quoted 3 lines

Ok anyway, but you implemented custom menu system anyway ... so let's clear this first, is common/menu.c useless for your application?

I do not know. I created my bootmenu before menu.c was integrated into u-boot. I did not looked at menu.c yet - I do not know what is in menu.c implemented.

Signature · 9 lines
Pali Roh?r
pali.rohar at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20120125/abd5ce54/attachment.pgp>
#65 lore raw

PATCH 11/14 New config variable CONFIG_PREMONITOR

Quoted 22 lines · On Wednesday 25 January 2012 22:28:17 Marek Vasut wrote:
Quoted 21 lines
Quoted 20 lines · On Wednesday 25 January 2012 21:51:38 Marek Vasut wrote:
Quoted 4 lines
Quoted 4 lines · On Wednesday 25 January 2012 19:12:51 Marek Vasut wrote:
Quoted 3 lines
Quoted 2 lines

* if defined run env "premonitor" before Main Loop for Monitor Processing

Quoted 8 lines
Quoted 5 lines
Quoted 1 line

What is this good for?

before running monitor loop I'd like write some info to console (specific board info, board commands, board macros). but if these info will be written in preboot it can be deleted by menu section.

The "menu" here, you refer to the thing you implemented? So fix that instead of introducing broken code and a pile of workarounds.

With "menu" I mean env menucmd. U-Boot run command stored in env menucmd after preboot and before monitor loop. For example in menucmd can be my bootmenu, but there are no problems - no broken code! My bootmenu clear screan and show menu, so anything printed before menu entries will be deleted. This is not bug - Also in Grub or LILO is debug/output log cleaned when showing menu entries.

Quoted 6 lines
Quoted 2 lines

Ok anyway, but you implemented custom menu system anyway ... so let's clear this first, is common/menu.c useless for your application?

I do not know. I created my bootmenu before menu.c was integrated into u-boot. I did not looked at menu.c yet - I do not know what is in menu.c implemented.

Please go through it, we don't need two separate implementations of the same thing. If you can't use it as it, just augment it and submit a patch for it.

#67 lore raw

PATCH 12/14 New board support: Nokia RX-51 aka N900

In reply to Pali Rohár

This board definition results in a u-boot.bin which can be chainloaded from NOLO in qemu or on a real N900. It does very little hardware config because NOLO has already configured the board. Only needed is enabling internal eMMC memory via twl4030 regulator which is not enabled by NOLO.

NOLO is expecting a kernel image and will treat any image it finds in onenand as such. This u-boot is intended to be flashed to the N900 like a kernel. In order to transparently boot the original kernel, it will be appended to u-boot.bin at 0x40000. NOLO will load the entire image into memory and execute u-boot, which saves the ATAGs set by NOLO. Then the bootscripts will attempt to load uImage or boot.scr from a fat or ext2 filesystem in external SD card or internal eMMC memory. If this fails or keyboard is closed the appended kernel image will be booted using the stored ATAGs (see boot order).

There is support for hardware watchdog. It is started by NOLO so u-boot must kick watchdog to prevent reboot device (but not very often, max every 2 seconds). There is also support for framebuffer display output with ANSI espace codes and the N900 HW keyboard input. USB tty works but is disabled because it prevents the current Maemo kernel from booting.

Based on previous work by: Alistair Buxton <[email protected]>

Default boot order:

* 0. if keyboard is closed boot automatically NOLO kernel image
* 1. try boot from external SD card
* 2. try boot from internal eMMC memory
* 3. try boot from attached NOLO kernel image

Boot from SD or eMMC in this order:

* find boot.scr on first fat partition
* find uImage on first fat parition
* same order for 2. - 4. fat partition

* find boot.scr on first ext2 partition
* find uImage on first ext2 parition
* same order for 2. - 4. ext2 partition

Available additional commands/variables:

* run sercon - Use serial port for control
* run usbcon - Use usbtty for control
* run vgacon - Use framebuffer and HW keyboard for control (default)

* run sdboot - Boot from external SD card (see boot order)
* run emmcboot - Boot from internal eMMC memory (see boot order)
* run noloboot - Boot NOLO kernel image (attached to U-Boot binary)

* run scriptload - Load boot script ${mmcscriptfile}
* run scriptboot - Run loaded boot script
* run kernload - Load kernel image ${mmckernfile}
* run initrdload - Load initrd image ${mmcinitrdfile}
* run kernboot - Boot loaded kernel image
* run kerninitrdboot - Boot loaded kernel image with loaded initrd image

* run trymmcscriptboot - Try to load and boot script ${mmcscriptfile}
* run trymmckernboot - Try to load and boot kernel image ${mmckernfile}
* run trymmckerninitrdboot - Try to load and boot kernel image ${mmckernfile}

                              with initrd image ${mmcinitrdfile}

Variables for loading files from mmc:

* mmc ${mmcnum} (0 - external, 1 - internal)
* partition number ${mmcpart} (1 - 4)
* parition type ${mmctype} (fat, ext2)

---
Changes since original version:
- Removed Makefile targets: clean and distclean
- Rewrited bootcommand and env variables in nokia_rx51.h
- Removed useless CONFIG defines in nokia_rx51.h
- Disable L2 cache with CONFIG_SYS_L2CACHE_OFF - fixed battery draining
- Added onenand support (default disabled due to big u-boot size)
- Moved inlined asm code to new file lowlevel_init.S
- Fixed commit message

 board/nokia/rx51/Makefile        |   46 +++++
 board/nokia/rx51/lowlevel_init.S |   79 ++++++++
 board/nokia/rx51/rx51.c          |  381 ++++++++++++++++++++++++++++++++++++++
 board/nokia/rx51/rx51.h          |  378 +++++++++++++++++++++++++++++++++++++
 boards.cfg                       |    1 +
 include/configs/nokia_rx51.h     |  362 ++++++++++++++++++++++++++++++++++++
 6 files changed, 1247 insertions(+), 0 deletions(-)
 create mode 100644 board/nokia/rx51/Makefile
 create mode 100644 board/nokia/rx51/lowlevel_init.S
 create mode 100644 board/nokia/rx51/rx51.c
 create mode 100644 board/nokia/rx51/rx51.h
 create mode 100644 include/configs/nokia_rx51.h
board/nokia/rx51/Makefile new file +46 -0
new file mode 100644
index 0000000..86fb48c
@@ -0,0 +1,46 @@
+#
+# (C) Copyright 2000, 2001, 2002
+# Wolfgang Denk, DENX Software Engineering, wd at denx.de.
+#
+# See file CREDITS for list of people who contributed to this
+# project.
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of
+# the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+# MA 02111-1307 USA
+#
+
+include $(TOPDIR)/config.mk
+
+LIB	= $(obj)lib$(BOARD).o
+
+COBJS-y	:= $(BOARD).o
+SOBJS-y := lowlevel_init.o
+
+COBJS	:= $(sort $(COBJS-y))
+SOBJS	:= $(sort $(SOBJS-y))
+SRCS	:= $(COBJS:.o=.c) $(SOBJS:.o=.S)
+OBJS	:= $(addprefix $(obj),$(COBJS)) $(addprefix $(obj),$(SOBJS))
+
+$(LIB):	$(obj).depend $(OBJS)
+	$(call cmd_link_o_target, $(OBJS))
+
+#########################################################################
+
+# defines $(obj).depend target
+include $(SRCTREE)/rules.mk
+
+sinclude $(obj).depend
+
+#########################################################################
board/nokia/rx51/lowlevel_init.S new file +79 -0

79 lines not on this page · raw message

board/nokia/rx51/rx51.c new file +381 -0

381 lines not on this page · raw message

board/nokia/rx51/rx51.h new file +378 -0

378 lines not on this page · raw message

boards.cfg +1 -0
index 2f90dbf..3a3b9fe 100644
@@ -214,6 +214,7 @@ omap3_evm_quick_nand         arm         armv7       evm                 ti
 omap3_sdp3430                arm         armv7       sdp3430             ti             omap3
 devkit8000                   arm         armv7       devkit8000          timll          omap3
 twister                      arm         armv7       twister             technexion     omap3
+nokia_rx51                   arm         armv7       rx51                nokia          omap3
 omap4_panda                  arm         armv7       panda               ti             omap4
 omap4_sdp4430                arm         armv7       sdp4430             ti             omap4
 omap5_evm                    arm         armv7       omap5_evm           ti		omap5
include/configs/nokia_rx51.h new file +362 -0

362 lines not on this page · raw message

Signature · 1 line
1.7.5.4
#68 lore raw

PATCH 13/14 New command bootmenu: ANSI terminal Boot Menu support

In reply to Pali Rohár

* Added some ANSI escape codes definitions in common.h
* Configuration is done via env variables bootmenu_delay and bootmenu_<num>:

bootmenu_delay=<delay>
bootmenu_<num>="<title>=<commands>"

(title and commands are separated by first char '=')

<delay> is delay in seconds of autobooting first entry
<num> is boot menu entry, starting from zero
<title> is text shown in boot screen
<commands> are commands which will be executed when menu entry is selected

* First argument of bootmenu command override bootmenu_delay env
* If env bootmenu_delay or bootmenu arg is not specified, delay is 10 seconds
* If delay is 0, no entry will be shown on screen and first will be called
* If delay is less then 0, no autoboot delay will be used
* Boot Menu will stop finding next menu entry if last was not defined
* Boot Menu always add menu entry "U-Boot console" at end of all entries

* Example using:

    setenv bootmenu_0 Boot 1. kernel=bootm 0x82000000  # Set first menu entry
    setenv bootmenu_1 Boot 2. kernel=bootm 0x83000000  # Set second menu entry
    setenv bootmenu_2 Reset board=reset                # Set third menu entry
    setenv bootmenu_3 U-Boot boot order=boot           # Set fourth menu entry

setenv bootmenu_4 # Empty string is end of all bootmenu entries
bootmenu 20 # Run bootmenu with autoboot delay 20s

---
Changes since original version:
- ANSI bootmenu command: use puts instead printf
- Merged parts of patch "Add some ANSI escape codes definitions in common.h"

 common/Makefile          |    1 +
 common/cmd_bootmenu.c    |  366 ++++++++++++++++++++++++++++++++++++++++++++++
 include/common.h         |   13 ++
 include/config_cmd_all.h |    1 +
 4 files changed, 381 insertions(+), 0 deletions(-)
 create mode 100644 common/cmd_bootmenu.c
common/Makefile +1 -0
index e1efd45..7402bfb 100644
@@ -67,6 +67,7 @@ COBJS-$(CONFIG_CMD_SOURCE) += cmd_source.o
 COBJS-$(CONFIG_CMD_BDI) += cmd_bdinfo.o
 COBJS-$(CONFIG_CMD_BEDBUG) += bedbug.o cmd_bedbug.o
 COBJS-$(CONFIG_CMD_BMP) += cmd_bmp.o
+COBJS-$(CONFIG_CMD_BOOTMENU) += cmd_bootmenu.o
 COBJS-$(CONFIG_CMD_BOOTLDR) += cmd_bootldr.o
 COBJS-$(CONFIG_CMD_CACHE) += cmd_cache.o
 COBJS-$(CONFIG_CMD_CLEAR) += cmd_clear.o
common/cmd_bootmenu.c new file +366 -0

366 lines not on this page · raw message

include/common.h +13 -0
index 9c0449e..c6dd2ea 100644
@@ -754,8 +754,21 @@ int	disable_ctrlc (int);	/* 1 to disable, 0 to enable Control-C detect */
  * ANSI terminal
  */
 
+#define ANSI_CURSOR_UP			"\e[%dA"
+#define ANSI_CURSOR_DOWN		"\e[%dB"
+#define ANSI_CURSOR_FORWARD		"\e[%dC"
+#define ANSI_CURSOR_BACK		"\e[%dD"
+#define ANSI_CURSOR_NEXTLINE		"\e[%dE"
+#define ANSI_CURSOR_PREVIOUSLINE	"\e[%dF"
+#define ANSI_CURSOR_COLUMN		"\e[%dG"
 #define ANSI_CURSOR_POSITION		"\e[%d;%dH"
+#define ANSI_CURSOR_SHOW		"\e[?25h"
+#define ANSI_CURSOR_HIDE		"\e[?25l"
 #define ANSI_CLEAR_CONSOLE		"\e[2J"
+#define ANSI_CLEAR_LINE_TO_END		"\e[0K"
+#define ANSI_CLEAR_LINE			"\e[2K"
+#define ANSI_COLOR_RESET		"\e[0m"
+#define ANSI_COLOR_REVERSE		"\e[7m"
 
 /*
  * STDIO based functions (can always be used)
include/config_cmd_all.h +1 -0
index 3f25eba..8c0a648 100644
@@ -20,6 +20,7 @@
 #define CONFIG_CMD_BEDBUG	/* Include BedBug Debugger	*/
 #define CONFIG_CMD_BMP		/* BMP support			*/
 #define CONFIG_CMD_BOOTD	/* bootd			*/
+#define CONFIG_CMD_BOOTMENU	/* ANSI terminal Boot Menu	*/
 #define CONFIG_CMD_BSP		/* Board Specific functions	*/
 #define CONFIG_CMD_CACHE	/* icache, dcache		*/
 #define CONFIG_CMD_CDP		/* Cisco Discovery Protocol	*/
Signature · 1 line
1.7.5.4
#69 lore raw

PATCH 13/14 New command bootmenu: ANSI terminal Boot Menu support

Quoted 7 lines

* Added some ANSI escape codes definitions in common.h
* Configuration is done via env variables bootmenu_delay and
bootmenu_<num>:

bootmenu_delay=<delay>
bootmenu_<num>="<title>=<commands>"

Quoted 7 lines

(title and commands are separated by first char '=')

<delay> is delay in seconds of autobooting first entry <num> is boot menu entry, starting from zero
<title> is text shown in boot screen
<commands> are commands which will be executed when menu entry is
selected

Do you need this command if you already have common/menu.c?

M

include/common.h int disable_ctrlc (int); /* 1 to disable, 0 to

Quoted 421 lines

* First argument of bootmenu command override bootmenu_delay env
* If env bootmenu_delay or bootmenu arg is not specified, delay is 10
seconds * If delay is 0, no entry will be shown on screen and first will be called * If delay is less then 0, no autoboot delay will be used
* Boot Menu will stop finding next menu entry if last was not defined
* Boot Menu always add menu entry "U-Boot console" at end of all entries

* Example using:

    setenv bootmenu_0 Boot 1. kernel=bootm 0x82000000  # Set first menu
entry setenv bootmenu_1 Boot 2. kernel=bootm 0x83000000  # Set second menu
entry setenv bootmenu_2 Reset board=reset                # Set third menu
entry setenv bootmenu_3 U-Boot boot order=boot           # Set fourth menu

entry setenv bootmenu_4 # Empty string is end of all bootmenu entries
bootmenu 20 # Run bootmenu with autoboot delay 20s

---
Changes since original version:
- ANSI bootmenu command: use puts instead printf
- Merged parts of patch "Add some ANSI escape codes definitions in
common.h"

 common/Makefile          |    1 +
 common/cmd_bootmenu.c    |  366
++++++++++++++++++++++++++++++++++++++++++++++ include/common.h         | 
 13 ++
 include/config_cmd_all.h |    1 +
 4 files changed, 381 insertions(+), 0 deletions(-)
 create mode 100644 common/cmd_bootmenu.c
common/Makefile +1 -0
index e1efd45..7402bfb 100644
@@ -67,6 +67,7 @@ COBJS-$(CONFIG_CMD_SOURCE) += cmd_source.o
 COBJS-$(CONFIG_CMD_BDI) += cmd_bdinfo.o
 COBJS-$(CONFIG_CMD_BEDBUG) += bedbug.o cmd_bedbug.o
 COBJS-$(CONFIG_CMD_BMP) += cmd_bmp.o
+COBJS-$(CONFIG_CMD_BOOTMENU) += cmd_bootmenu.o
 COBJS-$(CONFIG_CMD_BOOTLDR) += cmd_bootldr.o
 COBJS-$(CONFIG_CMD_CACHE) += cmd_cache.o
 COBJS-$(CONFIG_CMD_CLEAR) += cmd_clear.o
common/cmd_bootmenu.c new file +366 -0
new file mode 100644
index 0000000..931ed18
@@ -0,0 +1,366 @@
+/*
+ * (C) Copyright 2011 Pali Roh?r <[email protected]>
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#include <common.h>
+#include <command.h>
+#include <watchdog.h>
+#include <linux/string.h>
+
+#ifdef CONFIG_SYS_HUSH_PARSER
+#include <hush.h>
+#endif
+
+static char *get_option(int n)
+{
+
+	char name[] = "bootmenu_\0\0";
+
+	if (n < 0 || n > 99)
+		return NULL;
+
+	sprintf(name+9, "%d", n);
+
+	return getenv(name);
+
+}
+
+static char *get_end_of_title(char *str)
+{
+
+	if (!str)
+		return NULL;
+
+	return strchr(str, '=');
+
+}
+
+static int print_title(char *begin, char *end)
+{
+
+	if (!begin || !end || end < begin)
+		return 1;
+
+	while (begin != end)
+		putc(*(begin++));
+
+	return 0;
+
+}
+
+static int print_entry(int n, int reverse)
+{
+
+	char *str = get_option(n);
+	char *end = get_end_of_title(str);
+
+	if (!end)
+		return 1;
+
+	printf(ANSI_CURSOR_POSITION, n+4, 1);
+
+	if (reverse)
+		puts(ANSI_COLOR_REVERSE);
+
+	puts("     ");
+	print_title(str, end);
+	puts(ANSI_CLEAR_LINE_TO_END);
+
+	if (reverse)
+		puts(ANSI_COLOR_RESET);
+
+	return 0;
+
+}
+
+static int print_menu(int active)
+{
+
+	int n = 0;
+
+	printf(ANSI_CURSOR_POSITION, 1, 1);
+	puts(ANSI_CLEAR_LINE);
+	printf(ANSI_CURSOR_POSITION, 2, 1);
+	puts("  *** U-Boot BOOT MENU ***");
+	puts(ANSI_CLEAR_LINE_TO_END);
+	printf(ANSI_CURSOR_POSITION, 3, 1);
+	puts(ANSI_CLEAR_LINE);
+
+	while (1) {
+
+		int ret = print_entry(n, n == active ? 1 : 0);
+
+		if (ret == 1)
+			break;
+
+		++n;
+
+	}
+
+	printf(ANSI_CURSOR_POSITION, n+4, 1);
+
+	if (n == active)
+		puts(ANSI_COLOR_REVERSE);
+
+	puts("     U-Boot console");
+	puts(ANSI_CLEAR_LINE_TO_END);
+
+	if (n == active)
+		puts(ANSI_COLOR_RESET);
+
+	printf(ANSI_CURSOR_POSITION, n+5, 1);
+	puts(ANSI_CLEAR_LINE);
+	printf(ANSI_CURSOR_POSITION, n+6, 1);
+	puts("  Press UP/DOWN to move, ENTER to select");
+	puts(ANSI_CLEAR_LINE_TO_END);
+	printf(ANSI_CURSOR_POSITION, n+7, 1);
+	puts(ANSI_CLEAR_LINE);
+
+	return n;
+
+}
+
+int do_bootmenu(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
+{
+
+	int active = 0;
+	int abort = 0;
+	int key = 0; /* 0 - NONE, 1 - UP, 2 - DOWN, 3 - SELECT */
+	int esc = 0;
+	int count = 0;
+	int delay = 10;
+	int instant = 0;
+	char *delay_str = NULL;
+
+	if (argc >= 2)
+		delay_str = argv[1];
+
+	if (!delay_str)
+		delay_str = getenv("bootmenu_delay");
+
+	if (delay_str)
+		delay = (int)simple_strtol(delay_str, NULL, 10);
+
+	if (delay == 0) {
+
+		/* prevent setting U-Boot console as first menu entry */
+		if (get_end_of_title(get_option(0)))
+			count = 1;
+
+		instant = 1;
+
+	}
+
+	if (delay < 0)
+		abort = 1;
+
+	if (!instant) {
+
+		puts(ANSI_CURSOR_HIDE);
+		puts(ANSI_CLEAR_CONSOLE);
+		printf(ANSI_CURSOR_POSITION, 1, 1);
+
+	}
+
+	while (1) {
+
+		if (abort || delay > 0)
+			count = print_menu(active);
+
+		if (!abort) {
+
+			if (delay > 0)
+				printf("  Hit any key to stop autoboot: %2d ",
+						delay);
+
+			while (delay > 0) {
+
+				int i;
+
+				for (i = 0; i < 100; ++i) {
+
+					if (tstc()) {
+
+						abort = 1;
+						key = getc();
+
+						if (key == '\e') {
+							esc = 1;
+							key = 0;
+						} else if (key == '\r')
+							key = 3;
+						else
+							key = 0;
+
+						break;
+
+					}
+
+					WATCHDOG_RESET();
+					udelay(10000);
+
+				}
+
+				if (abort)
+					break;
+
+				--delay;
+				printf("\b\b\b%2d ", delay);
+
+			}
+
+			if (delay <= 0)
+				key = 3;
+
+		} else {
+
+			while (!tstc()) {
+
+				WATCHDOG_RESET();
+				udelay(10000);
+
+			}
+
+			key = getc();
+
+			if (esc == 0) {
+
+				if (key == '\e') {
+					esc = 1;
+					key = 0;
+				}
+
+			} else if (esc == 1) {
+
+				if (key == '[') {
+					esc = 2;
+					key = 0;
+				} else
+					esc = 0;
+
+			} else if (esc == 2 || esc == 3) {
+
+				if (esc == 2 && key == '1') {
+					esc = 3;
+					key = 0;
+				} else
+					esc = 0;
+
+				if (key == 'A')
+					key = 1;
+				else if (key == 'B')
+					key = 2;
+				else
+					key = 0;
+
+			}
+
+			if (key == '\r')
+				key = 3;
+
+		}
+
+		if (key == 1) {
+
+			if (active > 0)
+				--active;
+
+		} else if (key == 2) {
+
+			if (active < count)
+				++active;
+
+		} else if (key == 3) {
+
+			char *str;
+			char *end;
+
+			putc('\n');
+
+			if (!instant) {
+
+				puts(ANSI_CURSOR_SHOW);
+				puts(ANSI_CLEAR_CONSOLE);
+				printf(ANSI_CURSOR_POSITION, 1, 1);
+
+			}
+
+			WATCHDOG_RESET();
+
+			/* last entry is always U-Boot console */
+			if (active == count) {
+
+				puts("Starting U-Boot console\n\n");
+				return 0;
+
+			}
+
+			str = get_option(active);
+			end = get_end_of_title(str);
+
+			if (!end) {
+
+				printf("Invalid Boot Menu entry %d\n", active);
+				puts("Starting U-Boot console\n\n");
+				return 0;
+
+			}
+
+			if (!end[1]) {
+
+				printf("Invalid Boot Menu entry %d: ", active);
+				print_title(str, end);
+				puts("\nStarting U-Boot console\n\n");
+				return 0;
+
+			}
+
+			printf("Booting Boot Menu entry %d: ", active);
+			print_title(str, end);
+			puts(" ...\n\n");
+
+#ifndef CONFIG_SYS_HUSH_PARSER
+			run_command(end+1, 0);
+#else
+			parse_string_outer(end+1, FLAG_PARSE_SEMICOLON |
+					FLAG_EXIT_FROM_LOOP);
+#endif
+
+			printf("\nFailed booting Boot Menu entry %d: ", active);
+			print_title(str, end);
+			puts("\nStarting U-Boot console\n\n");
+			return 0;
+
+		}
+
+	}
+
+	/* never happends */
+	return 1;
+
+}
+
+U_BOOT_CMD(
+	bootmenu, 2, 1, do_bootmenu,
+	"ANSI terminal bootmenu",
+	"[delay]\n"
+	"    - show ANSI terminal bootmenu with autoboot delay (default 10s)"
+);
include/common.h +0 -0
index 9c0449e..c6dd2ea 100644
@@ -754,8 +754,21 @@ int	disable_ctrlc (int);	/* 1 to disable, 0 to 

enable

Quoted 33 lines

Control-C detect */ * ANSI terminal
*/

include/common.h +13 -0
+#define ANSI_CURSOR_UP			"\e[%dA"
+#define ANSI_CURSOR_DOWN		"\e[%dB"
+#define ANSI_CURSOR_FORWARD		"\e[%dC"
+#define ANSI_CURSOR_BACK		"\e[%dD"
+#define ANSI_CURSOR_NEXTLINE		"\e[%dE"
+#define ANSI_CURSOR_PREVIOUSLINE	"\e[%dF"
+#define ANSI_CURSOR_COLUMN		"\e[%dG"
 #define ANSI_CURSOR_POSITION		"\e[%d;%dH"
+#define ANSI_CURSOR_SHOW		"\e[?25h"
+#define ANSI_CURSOR_HIDE		"\e[?25l"
 #define ANSI_CLEAR_CONSOLE		"\e[2J"
+#define ANSI_CLEAR_LINE_TO_END		"\e[0K"
+#define ANSI_CLEAR_LINE			"\e[2K"
+#define ANSI_COLOR_RESET		"\e[0m"
+#define ANSI_COLOR_REVERSE		"\e[7m"
 
 /*
  * STDIO based functions (can always be used)
include/config_cmd_all.h +1 -0
index 3f25eba..8c0a648 100644
@@ -20,6 +20,7 @@
 #define CONFIG_CMD_BEDBUG	/* Include BedBug Debugger	*/
 #define CONFIG_CMD_BMP		/* BMP support			*/
 #define CONFIG_CMD_BOOTD	/* bootd			*/
+#define CONFIG_CMD_BOOTMENU	/* ANSI terminal Boot Menu	*/
 #define CONFIG_CMD_BSP		/* Board Specific functions	*/
 #define CONFIG_CMD_CACHE	/* icache, dcache		*/
 #define CONFIG_CMD_CDP		/* Cisco Discovery Protocol	*/
#70 lore raw

PATCH 13/14 New command bootmenu: ANSI terminal Boot Menu support

Quoted 2 lines · On Wednesday 25 January 2012 19:18:50 Marek Vasut wrote:

Do you need this command if you already have common/menu.c?

I need menu which can work with ANSI terminal and framebuffer on device screen. Something which can easy choose booting system...

I can look at menu.c if it can replace my bootmenu (or change bootmenu code to use menu.c)...

Anyway this patch [13] and next [14] can be reviewed separatly. Nokia RX-51 support is in patches 1-12. Patch 14 is additional for rx51, which only add this bootmenu support. U-Boot rx51 port working fine without 13 and 14.

Signature · 9 lines
Pali Roh?r
pali.rohar at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20120125/0b52d6aa/attachment.pgp>
#71 lore raw

PATCH 13/14 New command bootmenu: ANSI terminal Boot Menu support

Quoted 7 lines · Pali Roh?r
Quoted 2 lines · On Wednesday 25 January 2012 19:18:50 Marek Vasut wrote:

Do you need this command if you already have common/menu.c?

I need menu which can work with ANSI terminal and framebuffer on device screen. Something which can easy choose booting system...

Quoted 6 lines

I can look at menu.c if it can replace my bootmenu (or change bootmenu code to use menu.c)...

Anyway this patch [13] and next [14] can be reviewed separatly. Nokia RX-51 support is in patches 1-12. Patch 14 is additional for rx51, which only add this bootmenu support. U-Boot rx51 port working fine without 13 and 14.

Regardless of whatever when you add new commands it might be useful to add some documentation in doc directory.

S.

#72 lore raw

PATCH 13/14 New command bootmenu: ANSI terminal Boot Menu support

In reply to Pali Rohár
Quoted 8 lines · On Wednesday 25 January 2012 14:57:19 Pali Roh?r wrote:
Quoted 1 line · On Wednesday 25 January 2012 19:18:50 Marek Vasut wrote:

Do you need this command if you already have common/menu.c?

I need menu which can work with ANSI terminal and framebuffer on device screen. Something which can easy choose booting system...

I can look at menu.c if it can replace my bootmenu (or change bootmenu code to use menu.c)...

yes, as i suggested before, you should be merging with the existing menu code and not proposing parallel implementations

so NAK this for now
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20120214/69840c06/attachment.pgp>

#73 lore raw

PATCH 14/14 RX-51: Add support for bootmenu

In reply to Pali Rohár

* default bootmenu entries:
NOLO kernel, internal eMMC memory, external SD card, u-boot boot order

* when keyboard slide is closed always boot NOLO kernel

* when keyborad slide is open in CONFIG_PREBOOT try load bootmenu.scr from first FAT partition of internal eMMC memory (also known as MyDocs) which (should) overwrite default bootmenu entries

---
Changes since original version:
- Fixed name of env variables

 include/configs/nokia_rx51.h |   21 +++++++++++++++++----
 1 files changed, 17 insertions(+), 4 deletions(-)
include/configs/nokia_rx51.h +17 -4
index 9045535..8d6596b 100644
@@ -137,6 +137,7 @@
 #define CONFIG_CMD_I2C			/* I2C serial bus support */
 #define CONFIG_CMD_MMC			/* MMC support */
 
+#define CONFIG_CMD_BOOTMENU		/* ANSI terminal Boot Menu */
 #define CONFIG_CMD_CLEAR		/* ANSI terminal clear screen command */
 
 #ifdef ONENAND_SUPPORT
@@ -212,8 +213,6 @@ int rx51_kp_getc(void);
 #endif
 
 /* Environment information */
-#define CONFIG_BOOTDELAY		3
-
 #define CONFIG_EXTRA_ENV_SETTINGS \
 	"mtdparts=" MTDPARTS_DEFAULT "\0" \
 	"usbtty=cdc_acm\0" \
@@ -280,10 +279,22 @@ int rx51_kp_getc(void);
 			"run trymmcallpartboot;" \
 		"fi\0" \
 	"emmcboot=setenv mmcnum 1; run trymmcboot\0" \
-	"sdboot=setenv mmcnum 0; run trymmcboot\0"
+	"sdboot=setenv mmcnum 0; run trymmcboot\0" \
+	"menucmd=bootmenu\0" \
+	"bootmenu_0=Internal flash=run noloboot\0" \
+	"bootmenu_1=Internal eMMC=run immcboot\0" \
+	"bootmenu_2=External SD card=run emmcboot\0" \
+	"bootmenu_3=U-Boot boot order=boot\0" \
+	"bootmenu_delay=3\0"
 
 #define CONFIG_PREBOOT \
-	"if test $slide_sw != open; then run noloboot; fi;"
+	"if test $slide_sw = open; then " \
+		"setenv mmcnum 1; setenv mmcpart 1; setenv mmctype fat;" \
+		"setenv mmcscriptfile bootmenu.scr;" \
+		"run trymmcscriptboot;" \
+	"else " \
+		"setenv bootmenu_delay 0;" \
+	"fi"
 
 #define CONFIG_PREMONITOR \
 	"echo Extra commands:;" \
@@ -301,6 +312,8 @@ int rx51_kp_getc(void);
 	"run noloboot;" \
 	"echo"
 
+#define CONFIG_MENUCMD
+
 #define CONFIG_AUTO_COMPLETE
 
 /*
Signature · 1 line
1.7.5.4
#74 lore raw

cover Nokia RX-51 support

In reply to Pali Rohár

Wolfgang,

Quoted 4 lines · Pali Roh?r

This patch series add support for new board Nokia RX-51 (aka N900). Last two patches adding on screen bootmenu support.

This series supersedes the last sent version.

Just to let you know, I went through this submission off-list with Pali sorting out the revisions etc and in the end it all got too complicated, so I suggested it should be submitted again from scratch (although it does have rudimentary change logs from the previously posted version)

Regards,

Graeme

#75 lore raw

cover Nokia RX-51 support

In reply to Pali Rohár
Quoted 4 lines · Pali Roh?r

This patch series add support for new board Nokia RX-51 (aka N900). Last two patches adding on screen bootmenu support.

This series supersedes the last sent version.

A quick offtopic question - how do you replace boot loader on N900?

Thanks a lot,
S.

#76 lore raw

cover Nokia RX-51 support

Quoted 10 lines · On Wednesday 25 January 2012 04:48:00 Sergey Lapin wrote:
Quoted 4 lines · Pali Roh?r

This patch series add support for new board Nokia RX-51 (aka N900). Last two patches adding on screen bootmenu support.

This series supersedes the last sent version.

A quick offtopic question - how do you replace boot loader on N900?

Thanks a lot,
S.

See commit message in: [PATCH 12/14] New board support: Nokia RX-51 aka N900

Bootloader is not replacing (yet). Instead U-Boot is flashed into kernel area and loaded by proprietary NOLO bootloader. NOLO can load only one image and only from kernel area - so it does not support dualbooting.

Kernel image can be attached into U-Boot binary (at pos. 0x40000) and flashed into nand kernel area (2MB is enought for U-Boot with kernel). And then U-Boot can boot attached kernel image or load/boot it from SD/eMMC.

Signature · 9 lines
Pali Roh?r
pali.rohar at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20120125/b2fc13aa/attachment.pgp>
#77 lore raw

cover Nokia RX-51 support

Quoted 12 lines · On Wednesday 25 January 2012 04:48:00 Sergey Lapin wrote:
Quoted 10 lines · Pali Roh?r
Quoted 4 lines

This patch series add support for new board Nokia RX-51 (aka N900). Last two patches adding on screen bootmenu support.

This series supersedes the last sent version.

A quick offtopic question - how do you replace boot loader on N900?

Thanks a lot,
S.

Quoted 6 lines

See commit message in: [PATCH 12/14] New board support: Nokia RX-51 aka N900

Bootloader is not replacing (yet). Instead U-Boot is flashed into kernel area and loaded by proprietary NOLO bootloader. NOLO can load only one image and only from kernel area - so it does not support dualbooting.

So why not just replace the bootloader right away?

Quoted 4 lines

Kernel image can be attached into U-Boot binary (at pos. 0x40000) and flashed into nand kernel area (2MB is enought for U-Boot with kernel). And then U-Boot can boot attached kernel image or load/boot it from SD/eMMC.

#78 lore raw

cover Nokia RX-51 support

Quoted 2 lines · On Wednesday 25 January 2012 19:20:01 Marek Vasut wrote:

So why not just replace the bootloader right away?

Booting process on n900:
1. Omap bootrom
2. Nokia X-Loader
3. Nokia NOLO Bootloader
4. Linux kernel
...

Nokia X-Loader and NOLO are stored in first nand part. It has size 128kB. Nokia X-Loader is signed (size 14.5kB), so cannot be replaced. NOLO bootloader is not signed (so theoretically can be replaced), but size is limited to 113kB. I do not know how to compile U-Boot binary with size < 113kB...

Size of part where is stored linux kernel has 2MB and it is enought for U-Boot with kernel image (~200kB + ~1.6MB). Also U-Boot can boot kernel from eMMC/SD.

Signature · 9 lines
Pali Roh?r
[email protected]
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20120125/a77b6859/attachment.pgp>
#79 lore raw

cover Nokia RX-51 support

Quoted 9 lines · On Wednesday 25 January 2012 19:20:01 Marek Vasut wrote:
Quoted 1 line

So why not just replace the bootloader right away?

Booting process on n900:
1. Omap bootrom
2. Nokia X-Loader
3. Nokia NOLO Bootloader
4. Linux kernel
...

To make it clear, I own N900 myself ;-)

Quoted 10 lines

Nokia X-Loader and NOLO are stored in first nand part. It has size 128kB. Nokia X-Loader is signed (size 14.5kB), so cannot be replaced. NOLO bootloader is not signed (so theoretically can be replaced), but size is limited to 113kB. I do not know how to compile U-Boot binary with size < 113kB...

Size of part where is stored linux kernel has 2MB and it is enought for U-Boot with kernel image (~200kB + ~1.6MB). Also U-Boot can boot kernel from eMMC/SD.

You didn't answer my question, so again ... why can't you replace NOLO? Because there's the 113kb limit? Use SPL then.

M

#80 lore raw

cover Nokia RX-51 support

Quoted 18 lines · On Wednesday 25 January 2012 21:56:37 Marek Vasut wrote:
Quoted 9 lines · On Wednesday 25 January 2012 19:20:01 Marek Vasut wrote:
Quoted 1 line

So why not just replace the bootloader right away?

Booting process on n900:
1. Omap bootrom
2. Nokia X-Loader
3. Nokia NOLO Bootloader
4. Linux kernel
...

To make it clear, I own N900 myself ;-)

Quoted 6 lines

Nokia X-Loader and NOLO are stored in first nand part. It has size 128kB. Nokia X-Loader is signed (size 14.5kB), so cannot be replaced. NOLO bootloader is not signed (so theoretically can be replaced), but size is limited to 113kB. I do not know how to compile U-Boot binary with size < 113kB...

Quoted 7 lines
Quoted 3 lines

Size of part where is stored linux kernel has 2MB and it is enought for U-Boot with kernel image (~200kB + ~1.6MB). Also U-Boot can boot kernel from eMMC/SD.

You didn't answer my question, so again ... why can't you replace NOLO? Because there's the 113kb limit? Use SPL then.

I only tried to boot U-Boot in qemu wich increased boot part - but not worked. (NOLO in qemu can boot u-boot without problems). So NOLO do some extra work - which I do not know... Also limit is problem to test on real n900.

Signature · 9 lines
Pali Roh?r
pali.rohar at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20120125/508fc344/attachment.pgp>
#81 lore raw

cover Nokia RX-51 support

Quoted 23 lines · On Wednesday 25 January 2012 21:56:37 Marek Vasut wrote:
Quoted 22 lines
Quoted 9 lines · On Wednesday 25 January 2012 19:20:01 Marek Vasut wrote:
Quoted 1 line

So why not just replace the bootloader right away?

Booting process on n900:
1. Omap bootrom
2. Nokia X-Loader
3. Nokia NOLO Bootloader
4. Linux kernel
...

To make it clear, I own N900 myself ;-)

Quoted 9 lines

Nokia X-Loader and NOLO are stored in first nand part. It has size 128kB. Nokia X-Loader is signed (size 14.5kB), so cannot be replaced. NOLO bootloader is not signed (so theoretically can be replaced), but size is limited to 113kB. I do not know how to compile U-Boot binary with size < 113kB...

Size of part where is stored linux kernel has 2MB and it is enought for U-Boot with kernel image (~200kB + ~1.6MB). Also U-Boot can boot kernel from eMMC/SD.

Quoted 7 lines
Quoted 2 lines

You didn't answer my question, so again ... why can't you replace NOLO? Because there's the 113kb limit? Use SPL then.

I only tried to boot U-Boot in qemu wich increased boot part - but not worked. (NOLO in qemu can boot u-boot without problems). So NOLO do some extra work - which I do not know... Also limit is problem to test on real n900.

What do you mean? Did you crack yours open? Can you connect JTAG to the device? I didn't check on mine.

#82 lore raw

cover Nokia RX-51 support

Quoted 28 lines · On Wednesday 25 January 2012 22:29:16 Marek Vasut wrote:
Quoted 28 lines · On Wednesday 25 January 2012 21:56:37 Marek Vasut wrote:
Quoted 26 lines
Quoted 9 lines · On Wednesday 25 January 2012 19:20:01 Marek Vasut wrote:
Quoted 1 line

So why not just replace the bootloader right away?

Booting process on n900:
1. Omap bootrom
2. Nokia X-Loader
3. Nokia NOLO Bootloader
4. Linux kernel
...

To make it clear, I own N900 myself ;-)

Quoted 11 lines

Nokia X-Loader and NOLO are stored in first nand part. It has size 128kB. Nokia X-Loader is signed (size 14.5kB), so cannot be replaced. NOLO bootloader is not signed (so theoretically can be replaced), but size is limited to 113kB. I do not know how to compile U-Boot binary with size < 113kB...

Size of part where is stored linux kernel has 2MB and it is enought for
U-Boot with kernel image (~200kB + ~1.6MB). Also U-Boot can boot kernel
from eMMC/SD.

You didn't answer my question, so again ... why can't you replace NOLO? Because there's the 113kb limit? Use SPL then.

Quoted 7 lines
Quoted 4 lines

I only tried to boot U-Boot in qemu wich increased boot part - but not worked. (NOLO in qemu can boot u-boot without problems). So NOLO do some extra work - which I do not know... Also limit is problem to test on real n900.

What do you mean? Did you crack yours open? Can you connect JTAG to the device? I didn't check on mine.

I have no idea if N900 has JTAG. And I think that nobody cracked X-Loader yet.

NOLO bootloader can be replaced/flashed via flasher-3.5 app throw USB. Also when NOLO is damaged (or cleared/replaced) it can restored - coldflashed again via flasher-3.5.

What I tried:
I created mtd image where was X-Loader, NOLO and U-Boot. QEmu RX51 successfull booted this image and I got serial console and video screen output.

But when I created mtd image where was only X-Loader an U-Boot, QEmu RX51 was unable to boot (it freezed).

So NOLO executing some code which inilialize board or someting else which must be done in U-Boot board code. There is no documentation or info about NOLO, so I cannot create working NOLO replacement.

Signature · 9 lines
Pali Roh?r
pali.rohar at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20120125/a989df45/attachment.pgp>
#83 lore raw

cover Nokia RX-51 support

Quoted 34 lines · On Wednesday 25 January 2012 22:29:16 Marek Vasut wrote:
Quoted 33 lines
Quoted 32 lines · On Wednesday 25 January 2012 21:56:37 Marek Vasut wrote:
Quoted 18 lines
Quoted 9 lines · On Wednesday 25 January 2012 19:20:01 Marek Vasut wrote:
Quoted 1 line

So why not just replace the bootloader right away?

Booting process on n900:
1. Omap bootrom
2. Nokia X-Loader
3. Nokia NOLO Bootloader
4. Linux kernel
...

To make it clear, I own N900 myself ;-)

Quoted 6 lines

Nokia X-Loader and NOLO are stored in first nand part. It has size 128kB. Nokia X-Loader is signed (size 14.5kB), so cannot be replaced. NOLO bootloader is not signed (so theoretically can be replaced), but size is limited to 113kB. I do not know how to compile U-Boot binary with size < 113kB...

Quoted 8 lines
Quoted 5 lines

Size of part where is stored linux kernel has 2MB and it is enought for
U-Boot with kernel image (~200kB + ~1.6MB). Also U-Boot can boot kernel
from eMMC/SD.

You didn't answer my question, so again ... why can't you replace NOLO? Because there's the 113kb limit? Use SPL then.

I only tried to boot U-Boot in qemu wich increased boot part - but not worked. (NOLO in qemu can boot u-boot without problems). So NOLO do some extra work - which I do not know... Also limit is problem to test on real n900.

Quoted 5 lines
Quoted 2 lines

What do you mean? Did you crack yours open? Can you connect JTAG to the device? I didn't check on mine.

I have no idea if N900 has JTAG. And I think that nobody cracked X-Loader yet.

What do you mean, you don't need xloader, u-boot SPL can replace it.

Quoted 4 lines

NOLO bootloader can be replaced/flashed via flasher-3.5 app throw USB. Also when NOLO is damaged (or cleared/replaced) it can restored - coldflashed again via flasher-3.5.

I know. So ... ? Basically you can use the TI flashes too since it all goes through the bootrom, right?

Quoted 8 lines

What I tried:
I created mtd image where was X-Loader, NOLO and U-Boot. QEmu RX51 successfull booted this image and I got serial console and video screen output.

But when I created mtd image where was only X-Loader an U-Boot, QEmu RX51 was unable to boot (it freezed).

Why? Where? You know you can debug U-Boot in QEMU with GDB and diag the problem properly?

Quoted 4 lines

So NOLO executing some code which inilialize board or someting else which must be done in U-Boot board code. There is no documentation or info about NOLO, so I cannot create working NOLO replacement.

Yes you can, either observe it or disas it.

M

#84 lore raw

cover Nokia RX-51 support

Quoted 34 lines · Marek Vasut
Quoted 34 lines · On Wednesday 25 January 2012 22:29:16 Marek Vasut wrote:
Quoted 33 lines
Quoted 32 lines · On Wednesday 25 January 2012 21:56:37 Marek Vasut wrote:
Quoted 18 lines
Quoted 9 lines · On Wednesday 25 January 2012 19:20:01 Marek Vasut wrote:
Quoted 1 line

So why not just replace the bootloader right away?

Booting process on n900:
1. Omap bootrom
2. Nokia X-Loader
3. Nokia NOLO Bootloader
4. Linux kernel
...

To make it clear, I own N900 myself ;-)

Quoted 6 lines

Nokia X-Loader and NOLO are stored in first nand part. It has size 128kB. Nokia X-Loader is signed (size 14.5kB), so cannot be replaced. NOLO bootloader is not signed (so theoretically can be replaced), but size is limited to 113kB. I do not know how to compile U-Boot binary with size < 113kB...

Quoted 8 lines
Quoted 5 lines

Size of part where is stored linux kernel has 2MB and it is enought for
U-Boot with kernel image (~200kB + ~1.6MB). Also U-Boot can boot kernel
from eMMC/SD.

You didn't answer my question, so again ... why can't you replace NOLO? Because there's the 113kb limit? Use SPL then.

I only tried to boot U-Boot in qemu wich increased boot part - but not worked. (NOLO in qemu can boot u-boot without problems). So NOLO do some extra work - which I do not know... Also limit is problem to test on real n900.

Quoted 7 lines
Quoted 5 lines
Quoted 2 lines

What do you mean? Did you crack yours open? Can you connect JTAG to the device? I didn't check on mine.

I have no idea if N900 has JTAG. And I think that nobody cracked X-Loader yet.

What do you mean, you don't need xloader, u-boot SPL can replace it.

Yes and no. No, becaue you nor I have no Nokia's signing key(s) to sign SPL binary for OMAP's secure boot ROM. IIRC N950/N9 is even more strict regarding that, am I right?

Quoted 7 lines
Quoted 4 lines

NOLO bootloader can be replaced/flashed via flasher-3.5 app throw USB. Also when NOLO is damaged (or cleared/replaced) it can restored - coldflashed again via flasher-3.5.

I know. So ... ? Basically you can use the TI flashes too since it all goes through the bootrom, right?

Butrom requires signed binary.

Quoted 11 lines
Quoted 8 lines

What I tried:
I created mtd image where was X-Loader, NOLO and U-Boot. QEmu RX51 successfull booted this image and I got serial console and video screen output.

But when I created mtd image where was only X-Loader an U-Boot, QEmu RX51 was unable to boot (it freezed).

Why? Where? You know you can debug U-Boot in QEMU with GDB and diag the problem properly?

Any volunteers? (I own N900 too, ah, I own 3 of tham, damnit)

Quoted 9 lines
Quoted 5 lines

So NOLO executing some code which inilialize board or someting else which must be done in U-Boot board code. There is no documentation or info about NOLO, so I cannot create working NOLO replacement.

Yes you can, either observe it or disas it.

M

All the best,
S.

#85 lore raw

cover Nokia RX-51 support

Quoted 7 lines · On Thursday 26 January 2012 11:25:59 Sergey Lapin wrote:
Quoted 2 lines · Marek Vasut

What do you mean, you don't need xloader, u-boot SPL can replace it.

Yes and no. No, becaue you nor I have no Nokia's signing key(s) to sign SPL binary for OMAP's secure boot ROM. IIRC N950/N9 is even more strict regarding that, am I right?

You are right, we cannot sign SPL binary for N900 because we do not have key. Signing key has only somebody in Nokia (or in TI). I do not have N950/N9 so I do not know anything about new devices.

Quoted 7 lines
Quoted 4 lines

I know. So ... ? Basically you can use the TI flashes too since it all goes
through the bootrom, right?

Butrom requires signed binary.

Yes and format of signed binary is not published by TI (there are only some RE info about Motorola Omap devices).

Quoted 5 lines
Quoted 5 lines
Quoted 5 lines

What I tried:
I created mtd image where was X-Loader, NOLO and U-Boot. QEmu RX51 successfull booted this image and I got serial console and video screen output.

Quoted 9 lines
Quoted 6 lines
Quoted 3 lines

But when I created mtd image where was only X-Loader an U-Boot, QEmu RX51
was unable to boot (it freezed).

Why? Where? You know you can debug U-Boot in QEMU with GDB and diag the problem properly?

Any volunteers? (I own N900 too, ah, I own 3 of tham, damnit)

I can try to play with SPL U-Boot binary and X-Loader in qemu. But this and next month I do not have time for it...

Signature · 9 lines
Pali Roh?r
pali.rohar at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20120126/227a57cd/attachment.pgp>
#86 lore raw

cover Nokia RX-51 support

Quoted 30 lines · On Thursday 26 January 2012 11:25:59 Sergey Lapin wrote:
Quoted 6 lines · Marek Vasut
Quoted 1 line

What do you mean, you don't need xloader, u-boot SPL can replace it.

Yes and no. No, becaue you nor I have no Nokia's signing key(s) to sign SPL binary for OMAP's secure boot ROM. IIRC N950/N9 is even more strict regarding that, am I right?

You are right, we cannot sign SPL binary for N900 because we do not have key. Signing key has only somebody in Nokia (or in TI). I do not have N950/N9 so I do not know anything about new devices.

Quoted 5 lines
Quoted 3 lines

I know. So ... ? Basically you can use the TI flashes too since it all goes
through the bootrom, right?

Butrom requires signed binary.

Yes and format of signed binary is not published by TI (there are only some RE info about Motorola Omap devices).

Quoted 9 lines
Quoted 9 lines
Quoted 8 lines

What I tried:
I created mtd image where was X-Loader, NOLO and U-Boot. QEmu RX51 successfull booted this image and I got serial console and video screen output.

But when I created mtd image where was only X-Loader an U-Boot, QEmu RX51
was unable to boot (it freezed).

Quoted 7 lines
Quoted 4 lines
Quoted 2 lines

Why? Where? You know you can debug U-Boot in QEMU with GDB and diag the problem properly?

Any volunteers? (I own N900 too, ah, I own 3 of tham, damnit)

I can try to play with SPL U-Boot binary and X-Loader in qemu. But this and next month I do not have time for it...

You're just lazy ... what exam can take you so much time ? :-p

#87 lore raw

cover Nokia RX-51 support

In reply to Pali Rohár
Quoted 5 lines · Pali Roh?r
Quoted 4 lines · On Thursday 26 January 2012 11:25:59 Sergey Lapin wrote:
Quoted 2 lines · Marek Vasut

What do you mean, you don't need xloader, u-boot SPL can replace it.

Quoted 7 lines
Quoted 3 lines

Yes and no. No, becaue you nor I have no Nokia's signing key(s) to sign SPL binary for OMAP's secure boot ROM. IIRC N950/N9 is even more strict regarding that, am I right?

You are right, we cannot sign SPL binary for N900 because we do not have key. Signing key has only somebody in Nokia (or in TI). I do not have N950/N9 so I do not know anything about new devices.

Probably autobuilder does have a key, but the question is if key is different for each device or not.

Quoted 11 lines
Quoted 8 lines
Quoted 5 lines

I know. So ... ? Basically you can use the TI flashes too since it all goes
through the bootrom, right?

Butrom requires signed binary.

Yes and format of signed binary is not published by TI (there are only some RE info about Motorola Omap devices).

Well, format is somewhat documented in public TI specifications, but that won't help anyway becase of OMAP's little OTP memory...

Quoted 3 lines

I can try to play with SPL U-Boot binary and X-Loader in qemu. But this and next month I do not have time for it...

Me neither.

All the best,
S.

#88 lore raw

cover Nokia RX-51 support

Quoted 9 lines · On Friday 27 January 2012 03:59:41 Sergey Lapin wrote:
Quoted 8 lines · Pali Roh?r
Quoted 6 lines · On Thursday 26 January 2012 11:25:59 Sergey Lapin wrote:
Quoted 1 line · Marek Vasut

What do you mean, you don't need xloader, u-boot SPL can replace it.

Yes and no. No, becaue you nor I have no Nokia's signing key(s) to sign SPL binary for OMAP's secure boot ROM. IIRC N950/N9 is even more strict regarding that, am I right?

Quoted 6 lines
Quoted 3 lines

You are right, we cannot sign SPL binary for N900 because we do not have key. Signing key has only somebody in Nokia (or in TI). I do not have N950/N9 so I do not know anything about new devices.

Probably autobuilder does have a key, but the question is if key is different for each device or not.

There are more (about 80) HW revisions of Nokia N900. And only 5 different X- Loader images (which are part of public Nokia N900 firmware).

So max. 5 different keys for all N900 devices. (or maybe in one X-Loader image are more signatures?)

Quoted 5 lines
Quoted 5 lines
Quoted 5 lines
Quoted 4 lines

I know. So ... ? Basically you can use the TI flashes too since it all goes
through the bootrom, right?

Quoted 8 lines
Quoted 4 lines
Quoted 1 line

Butrom requires signed binary.

Yes and format of signed binary is not published by TI (there are only some RE info about Motorola Omap devices).

Well, format is somewhat documented in public TI specifications, but that won't help anyway becase of OMAP's little OTP memory...

If you find can you write link for that specification?

Signature · 9 lines
Pali Roh?r
pali.rohar at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20120127/812e0e7b/attachment.pgp>
#89 lore raw

cover Nokia RX-51 support

In reply to Sergey Lapin
Quoted 38 lines · Marek Vasut
Quoted 37 lines
Quoted 37 lines · On Wednesday 25 January 2012 22:29:16 Marek Vasut wrote:
Quoted 35 lines
Quoted 25 lines · On Wednesday 25 January 2012 21:56:37 Marek Vasut wrote:
Quoted 24 lines
Quoted 9 lines · On Wednesday 25 January 2012 19:20:01 Marek Vasut wrote:
Quoted 1 line

So why not just replace the bootloader right away?

Booting process on n900:
1. Omap bootrom
2. Nokia X-Loader
3. Nokia NOLO Bootloader
4. Linux kernel
...

To make it clear, I own N900 myself ;-)

Quoted 11 lines

Nokia X-Loader and NOLO are stored in first nand part. It has size 128kB. Nokia X-Loader is signed (size 14.5kB), so cannot be replaced. NOLO bootloader is not signed (so theoretically can be replaced), but size is limited to 113kB. I do not know how to compile U-Boot binary with size < 113kB...

Size of part where is stored linux kernel has 2MB and it is enought for
U-Boot with kernel image (~200kB + ~1.6MB). Also U-Boot can boot kernel
from eMMC/SD.

Quoted 7 lines
Quoted 2 lines

You didn't answer my question, so again ... why can't you replace NOLO? Because there's the 113kb limit? Use SPL then.

I only tried to boot U-Boot in qemu wich increased boot part - but not worked. (NOLO in qemu can boot u-boot without problems). So NOLO do some extra work - which I do not know... Also limit is problem to test on real n900.

What do you mean? Did you crack yours open? Can you connect JTAG to the device? I didn't check on mine.

Quoted 8 lines
Quoted 4 lines
Quoted 2 lines

I have no idea if N900 has JTAG. And I think that nobody cracked X-Loader yet.

What do you mean, you don't need xloader, u-boot SPL can replace it.

Yes and no. No, becaue you nor I have no Nokia's signing key(s) to sign SPL binary for OMAP's secure boot ROM. IIRC N950/N9 is even more strict regarding that, am I right?

Yea ... I was explained later how messed up it is ... so it'd probably be for the best now to replace NOLO with U-Boot SPL.

M

Quoted 33 lines
Quoted 7 lines
Quoted 4 lines

NOLO bootloader can be replaced/flashed via flasher-3.5 app throw USB. Also when NOLO is damaged (or cleared/replaced) it can restored - coldflashed again via flasher-3.5.

I know. So ... ? Basically you can use the TI flashes too since it all goes through the bootrom, right?

Butrom requires signed binary.

Quoted 10 lines
Quoted 7 lines

What I tried:
I created mtd image where was X-Loader, NOLO and U-Boot. QEmu RX51 successfull booted this image and I got serial console and video screen output.

But when I created mtd image where was only X-Loader an U-Boot, QEmu RX51 was unable to boot (it freezed).

Why? Where? You know you can debug U-Boot in QEMU with GDB and diag the problem properly?

Any volunteers? (I own N900 too, ah, I own 3 of tham, damnit)

Quoted 7 lines
Quoted 3 lines

So NOLO executing some code which inilialize board or someting else which must be done in U-Boot board code. There is no documentation or info about NOLO, so I cannot create working NOLO replacement.

Yes you can, either observe it or disas it.

M

All the best,
S.

#90 lore raw

cover Nokia RX-51 support

In reply to Pali Rohár
Quoted 2 lines

This patch series add support for new board Nokia RX-51 (aka N900). Last two patches adding on screen bootmenu support.

Isn't on-screen bootmenu already supported by common/menu.c stuff ?

Quoted 2 lines

This series supersedes the last sent version.

So ... this is V2? What are the changes from previous version of the series? Please read Submitting patches on the wiki next time.

Quoted 47 lines

Pali Roh?r (14):
arm,omap3: Define save_boot_params in lowlevel_init.S for SPL only
arm: Optionally use existing atags in bootm.c
Add power bus message definitions in twl4030.h
Fix function readline in main.c
cfb_console: Fix function console_scrollup
cfb_console: Add function console_clear and console_clear_line
cfb_console: Add functions for moving with cursor
cfb_console: Add support for some ANSI terminal escape codes New command clear: Clear the ANSI terminal
New config variable CONFIG_MENUCMD
New config variable CONFIG_PREMONITOR
New board support: Nokia RX-51 aka N900
New command bootmenu: ANSI terminal Boot Menu support
RX-51: Add support for bootmenu

 README                                   |    2 +
 arch/arm/cpu/armv7/omap3/lowlevel_init.S |    4 +-
 arch/arm/lib/bootm.c                     |   39 +++-
 board/nokia/rx51/Makefile                |   46 ++++
 board/nokia/rx51/lowlevel_init.S         |   79 ++++++
 board/nokia/rx51/rx51.c                  |  381
++++++++++++++++++++++++++++++ board/nokia/rx51/rx51.h                  | 
378 +++++++++++++++++++++++++++++ boards.cfg                              
|    1 +
 common/Makefile                          |    2 +
 common/cmd_bootmenu.c                    |  366
++++++++++++++++++++++++++++ common/cmd_clear.c                       |  
42 ++++
 common/env_common.c                      |    3 +
 common/main.c                            |   89 ++++++-
 drivers/video/cfb_console.c              |  346
+++++++++++++++++++++++++-- include/common.h                         |  
20 ++
 include/config_cmd_all.h                 |    2 +
 include/configs/nokia_rx51.h             |  375
+++++++++++++++++++++++++++++ include/twl4030.h                        |  
98 ++++++++
 18 files changed, 2233 insertions(+), 40 deletions(-)
 create mode 100644 board/nokia/rx51/Makefile
 create mode 100644 board/nokia/rx51/lowlevel_init.S
 create mode 100644 board/nokia/rx51/rx51.c
 create mode 100644 board/nokia/rx51/rx51.h
 create mode 100644 common/cmd_bootmenu.c
 create mode 100644 common/cmd_clear.c
 create mode 100644 include/configs/nokia_rx51.h
#91 lore raw

cover Nokia RX-51 support

Hi Marek,

Quoted 9 lines · Marek Vasut
Quoted 2 lines

This patch series add support for new board Nokia RX-51 (aka N900). Last two patches adding on screen bootmenu support.

Isn't on-screen bootmenu already supported by common/menu.c stuff ?

Quoted 2 lines

This series supersedes the last sent version.

So ... this is V2? What are the changes from previous version of the series? Please read Submitting patches on the wiki next time.

I've been through the revision/submission for this series extensively off-list with Pali in order to attempt to fix-up the initial revision non-compliance issues (as well as commit messages, trivial style issues etc)

It got to the point were maintaining the revision history consistent with the previous series was a bit of a 'train wreck' so let's all forget about it (call the last lot an RFC) and move on :)

Regards,

Graeme

#92 lore raw

cover Nokia RX-51 support

In reply to Pali Rohár
Quoted 42 lines · On Tuesday 24 January 2012 15:27:57 you wrote:

This patch series add support for new board Nokia RX-51 (aka N900). Last two patches adding on screen bootmenu support.

This series supersedes the last sent version.

Pali Roh?r (14):
arm,omap3: Define save_boot_params in lowlevel_init.S for SPL only
arm: Optionally use existing atags in bootm.c
Add power bus message definitions in twl4030.h
Fix function readline in main.c
cfb_console: Fix function console_scrollup
cfb_console: Add function console_clear and console_clear_line
cfb_console: Add functions for moving with cursor
cfb_console: Add support for some ANSI terminal escape codes New command clear: Clear the ANSI terminal
New config variable CONFIG_MENUCMD
New config variable CONFIG_PREMONITOR
New board support: Nokia RX-51 aka N900
New command bootmenu: ANSI terminal Boot Menu support
RX-51: Add support for bootmenu

 README                                   |    2 +
 arch/arm/cpu/armv7/omap3/lowlevel_init.S |    4 +-
 arch/arm/lib/bootm.c                     |   39 +++-
 board/nokia/rx51/Makefile                |   46 ++++
 board/nokia/rx51/lowlevel_init.S         |   79 ++++++
 board/nokia/rx51/rx51.c                  |  381
++++++++++++++++++++++++++++++ board/nokia/rx51/rx51.h                  | 
378 +++++++++++++++++++++++++++++ boards.cfg                              
|    1 +
 common/Makefile                          |    2 +
 common/cmd_bootmenu.c                    |  366
++++++++++++++++++++++++++++ common/cmd_clear.c                       |  
42 ++++
 common/env_common.c                      |    3 +
 common/main.c                            |   89 ++++++-
 drivers/video/cfb_console.c              |  346 +++++++++++++++++++++++++--
include/common.h                         |   20 ++
 include/config_cmd_all.h                 |    2 +
 include/configs/nokia_rx51.h             |  375

+++++++++++++++++++++++++++++ include/twl4030.h |
98 ++++++++

Quoted 8 lines
 18 files changed, 2233 insertions(+), 40 deletions(-)
 create mode 100644 board/nokia/rx51/Makefile
 create mode 100644 board/nokia/rx51/lowlevel_init.S
 create mode 100644 board/nokia/rx51/rx51.c
 create mode 100644 board/nokia/rx51/rx51.h
 create mode 100644 common/cmd_bootmenu.c
 create mode 100644 common/cmd_clear.c
 create mode 100644 include/configs/nokia_rx51.h

Please look at my post:
http://lists.denx.de/pipermail/u-boot/2012-January/115778.html

After that commit, framebuffer output on Nokia RX51 not working...

Signature · 9 lines
Pali Roh?r
pali.rohar at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20120204/a79e647e/attachment.pgp>
#93 lore raw

cover Nokia RX-51 support

Quoted 62 lines · On Tuesday 24 January 2012 15:27:57 you wrote:
Quoted 52 lines

This patch series add support for new board Nokia RX-51 (aka N900). Last two patches adding on screen bootmenu support.

This series supersedes the last sent version.

Pali Roh?r (14):
arm,omap3: Define save_boot_params in lowlevel_init.S for SPL only
arm: Optionally use existing atags in bootm.c
Add power bus message definitions in twl4030.h
Fix function readline in main.c
cfb_console: Fix function console_scrollup
cfb_console: Add function console_clear and console_clear_line
cfb_console: Add functions for moving with cursor
cfb_console: Add support for some ANSI terminal escape codes New command clear: Clear the ANSI terminal
New config variable CONFIG_MENUCMD
New config variable CONFIG_PREMONITOR
New board support: Nokia RX-51 aka N900
New command bootmenu: ANSI terminal Boot Menu support
RX-51: Add support for bootmenu

 README                                   |    2 +
 arch/arm/cpu/armv7/omap3/lowlevel_init.S |    4 +-
 arch/arm/lib/bootm.c                     |   39 +++-
 board/nokia/rx51/Makefile                |   46 ++++
 board/nokia/rx51/lowlevel_init.S         |   79 ++++++
 board/nokia/rx51/rx51.c                  |  381

++++++++++++++++++++++++++++++ board/nokia/rx51/rx51.h |
378 +++++++++++++++++++++++++++++ boards.cfg

| 1 +

 common/Makefile                          |    2 +
 common/cmd_bootmenu.c                    |  366

++++++++++++++++++++++++++++ common/cmd_clear.c |
42 ++++

 common/env_common.c                      |    3 +
 common/main.c                            |   89 ++++++-
 drivers/video/cfb_console.c              |  346

+++++++++++++++++++++++++--

include/common.h | 20 ++

 include/config_cmd_all.h                 |    2 +
 include/configs/nokia_rx51.h             |  375

+++++++++++++++++++++++++++++ include/twl4030.h |
98 ++++++++

Quoted 8 lines
 18 files changed, 2233 insertions(+), 40 deletions(-)
 create mode 100644 board/nokia/rx51/Makefile
 create mode 100644 board/nokia/rx51/lowlevel_init.S
 create mode 100644 board/nokia/rx51/rx51.c
 create mode 100644 board/nokia/rx51/rx51.h
 create mode 100644 common/cmd_bootmenu.c
 create mode 100644 common/cmd_clear.c
 create mode 100644 include/configs/nokia_rx51.h
Quoted 4 lines

Please look at my post:
http://lists.denx.de/pipermail/u-boot/2012-January/115778.html

After that commit, framebuffer output on Nokia RX51 not working...

Can you PLEASE keep the involved parties in Cc? Otherwise people just won't notice your damn mail because they usually ignore emails not addressed to them!

M

#94 lore raw

cover Nokia RX-51 support

In reply to Pali Rohár
Quoted 5 lines · On Tuesday 24 January 2012 15:27:57 Pali Roh?r wrote:

This patch series add support for new board Nokia RX-51 (aka N900). Last two patches adding on screen bootmenu support.

This series supersedes the last sent version.

Hi, what is state of this patch series? From our discussion is only problematic bootmenu part, but other could be OK.

So what is needed for including this patches (without bootmenu support) to uboot master?

Signature · 9 lines
Pali Roh?r
pali.rohar at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20120226/41b7af55/attachment.pgp>
#95 lore raw

cover Nokia RX-51 support

Quoted 11 lines · On Tuesday 24 January 2012 15:27:57 Pali Roh?r wrote:
Quoted 4 lines

This patch series add support for new board Nokia RX-51 (aka N900). Last two patches adding on screen bootmenu support.

This series supersedes the last sent version.

Hi, what is state of this patch series? From our discussion is only problematic bootmenu part, but other could be OK.

So what is needed for including this patches (without bootmenu support) to uboot master?

You should probably split the patches into smaller series and resubmit individually.

M

#96 lore raw

cover Nokia RX-51 support

Quoted 6 lines · On Sunday 26 February 2012 17:08:04 Marek Vasut wrote:
Quoted 6 lines · On Tuesday 24 January 2012 15:27:57 Pali Roh?r wrote:
Quoted 4 lines

This patch series add support for new board Nokia RX-51 (aka N900). Last two patches adding on screen bootmenu support.

This series supersedes the last sent version.

Quoted 8 lines
Quoted 5 lines

Hi, what is state of this patch series? From our discussion is only problematic bootmenu part, but other could be OK.

So what is needed for including this patches (without bootmenu support) to uboot master?

You should probably split the patches into smaller series and resubmit individually.

yeah, we aren't keen on manually trying to pick things out of a patchset since it's hard for us to know what is required to be together. a patchset, by nature, should be merged as a group.
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20120226/54fbf852/attachment.pgp>

#97 lore raw

cover Nokia RX-51 support

Quoted 13 lines · On Sunday 26 February 2012 23:10:18 Mike Frysinger wrote:
Quoted 12 lines · On Sunday 26 February 2012 17:08:04 Marek Vasut wrote:
Quoted 11 lines · On Tuesday 24 January 2012 15:27:57 Pali Roh?r wrote:
Quoted 4 lines

This patch series add support for new board Nokia RX-51 (aka N900). Last two patches adding on screen bootmenu support.

This series supersedes the last sent version.

Hi, what is state of this patch series? From our discussion is only problematic bootmenu part, but other could be OK.

So what is needed for including this patches (without bootmenu support) to uboot master?

Quoted 7 lines
Quoted 2 lines

You should probably split the patches into smaller series and resubmit individually.

yeah, we aren't keen on manually trying to pick things out of a patchset since it's hard for us to know what is required to be together. a patchset, by nature, should be merged as a group.
-mike

Ok, I will create new patchset and fix known problems (CONFIG_CMDLINE_EDITING)

Signature · 9 lines
Pali Roh?r
pali.rohar at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20120227/354266b0/attachment.pgp>
#98 lore raw

cover Nokia RX-51 support

Quoted 17 lines · On Sunday 26 February 2012 23:10:18 Mike Frysinger wrote:
Quoted 16 lines · On Sunday 26 February 2012 17:08:04 Marek Vasut wrote:
Quoted 14 lines
Quoted 11 lines · On Tuesday 24 January 2012 15:27:57 Pali Roh?r wrote:
Quoted 4 lines

This patch series add support for new board Nokia RX-51 (aka N900). Last two patches adding on screen bootmenu support.

This series supersedes the last sent version.

Hi, what is state of this patch series? From our discussion is only problematic bootmenu part, but other could be OK.

So what is needed for including this patches (without bootmenu support) to uboot master?

You should probably split the patches into smaller series and resubmit individually.

Quoted 7 lines
Quoted 4 lines

yeah, we aren't keen on manually trying to pick things out of a patchset since it's hard for us to know what is required to be together. a patchset, by nature, should be merged as a group.
-mike

Ok, I will create new patchset and fix known problems (CONFIG_CMDLINE_EDITING)

Thanks

#99 lore raw

cover Nokia RX-51 support

Quoted 23 lines · On Monday 27 February 2012 21:55:31 Marek Vasut wrote:
Quoted 23 lines · On Sunday 26 February 2012 23:10:18 Mike Frysinger wrote:
Quoted 21 lines · On Sunday 26 February 2012 17:08:04 Marek Vasut wrote:
Quoted 7 lines
Quoted 7 lines · On Tuesday 24 January 2012 15:27:57 Pali Roh?r wrote:
Quoted 5 lines

This patch series add support for new board Nokia RX-51 (aka N900).
Last two patches adding on screen bootmenu support.

This series supersedes the last sent version.

Quoted 8 lines
Quoted 5 lines

Hi, what is state of this patch series? From our discussion is only problematic bootmenu part, but other could be OK.

So what is needed for including this patches (without bootmenu support) to uboot master?

You should probably split the patches into smaller series and resubmit individually.

yeah, we aren't keen on manually trying to pick things out of a patchset since it's hard for us to know what is required to be together. a patchset, by nature, should be merged as a group.
-mike

Quoted 4 lines
Quoted 2 lines

Ok, I will create new patchset and fix known problems (CONFIG_CMDLINE_EDITING)

Thanks

U-Boot on Nokia N900 is broken due to bug in MMC and framebuffer driver. See:
http://lists.denx.de/pipermail/u-boot/2012-January/115778.html
http://lists.denx.de/pipermail/u-boot/2012-March/119330.html

Until now *nobody* responce to the first reported problem (2 months old). I will not do anything with Nokia N900 U-Boot code until both problem will be fixed!

Signature · 9 lines
Pali Roh?r
pali.rohar at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20120304/e0ccdc8a/attachment.pgp>
#100 lore raw

cover Nokia RX-51 support

Dear Pali Rohar,

I suggest you to read through this whole mail properly, do not get angry by the first few lines.

Quoted 7 lines

U-Boot on Nokia N900 is broken due to bug in MMC and framebuffer driver.
See: http://lists.denx.de/pipermail/u-boot/2012-January/115778.html
http://lists.denx.de/pipermail/u-boot/2012-March/119330.html

Until now *nobody* responce to the first reported problem (2 months old). I will not do anything with Nokia N900 U-Boot code until both problem will be fixed!

Firstly, we are very grateful for properly reported bugs!

Yet you probably misunderstood how whole this free software/open source thing works.

If you found a bug noone else noticed, you are not ever supposed to expect people on the mailing list to fall on their backs, drop everything they are doing and start fixing your problem. This is because they didn't observe any trouble and so this has no priority for them.

And this is especially true for out-of-tree ports. N900 is good example of such category.

Now if you actually report a bug to the mailing list and this bug goes unnoticed for an extended period of time, you're supposed to send subsequent email in order to alarm the people on the mailing list the bug report is still relevant.

In case of U-Boot and Linux kernel, there is a list of maintainers in the MAINTAINERS file in the source tree, you are supposed to put these people in the Cc of such reports, this will greatly improve your chance of getting response and help. In case of U-Boot, there is also a list of custodians available here:

http://www.denx.de/wiki/U-Boot/Custodians

But considering you are yourself a software engineer, the best approach to the problem you're observing is to actually debug the issue you're seeing and submit a patch for it. Next, fix your patches for N900 and submit them. It'd be a good idea to put a note in the patchset cover message that this depends on your previous fix.

Now, to the problems you're observing:

1) Video; check if you have the following defined in your board config:

#define CONFIG_VIDEO
#define CONFIG_VIDEO_SW_CURSOR
#define CONFIG_CFB_CONSOLE
#define CONFIG_VGA_AS_SINGLE_DEVICE
#define CONFIG_SYS_WHITE_ON_BLACK

I understand that you probably want to second and the last define from the list above, which solves your "invert" problem and swcursor problem.

2) MMC; I believe Tom can comment on this one.

On a final note, I believe you should adjust your behaviour towards the mailing list. The U-Boot project, as well as many other FOSS projects, is a collective effort to achieve the best possible result for everyone. But for such model to work, everyone must first give and take only afterwards and never too much.

Best regards
Marek Vasut

#101 lore raw

cover Nokia RX-51 support

Quoted 62 lines · On Sunday 04 March 2012 21:57:23 Marek Vasut wrote:

Dear Pali Rohar,

I suggest you to read through this whole mail properly, do not get angry by the first few lines.

Quoted 9 lines

U-Boot on Nokia N900 is broken due to bug in MMC and framebuffer driver.
See: http://lists.denx.de/pipermail/u-boot/2012-January/115778.html
http://lists.denx.de/pipermail/u-boot/2012-March/119330.html

Until now *nobody* responce to the first reported problem (2 months old). I
will not do anything with Nokia N900 U-Boot code until both problem will be
fixed!

Firstly, we are very grateful for properly reported bugs!

Yet you probably misunderstood how whole this free software/open source thing works.

If you found a bug noone else noticed, you are not ever supposed to expect people on the mailing list to fall on their backs, drop everything they are doing and start fixing your problem. This is because they didn't observe any trouble and so this has no priority for them.

And this is especially true for out-of-tree ports. N900 is good example of such category.

Now if you actually report a bug to the mailing list and this bug goes unnoticed for an extended period of time, you're supposed to send subsequent email in order to alarm the people on the mailing list the bug report is still relevant.

In case of U-Boot and Linux kernel, there is a list of maintainers in the MAINTAINERS file in the source tree, you are supposed to put these people in the Cc of such reports, this will greatly improve your chance of getting response and help. In case of U-Boot, there is also a list of custodians available here:

http://www.denx.de/wiki/U-Boot/Custodians

But considering you are yourself a software engineer, the best approach to the problem you're observing is to actually debug the issue you're seeing and submit a patch for it. Next, fix your patches for N900 and submit them. It'd be a good idea to put a note in the patchset cover message that this depends on your previous fix.

Now, to the problems you're observing:

1) Video; check if you have the following defined in your board config:

#define CONFIG_VIDEO
#define CONFIG_VIDEO_SW_CURSOR
#define CONFIG_CFB_CONSOLE
#define CONFIG_VGA_AS_SINGLE_DEVICE
#define CONFIG_SYS_WHITE_ON_BLACK

I understand that you probably want to second and the last define from the list above, which solves your "invert" problem and swcursor problem.

2) MMC; I believe Tom can comment on this one.

Quoted 8 lines

On a final note, I believe you should adjust your behaviour towards the mailing list. The U-Boot project, as well as many other FOSS projects, is a collective effort to achieve the best possible result for everyone. But for such model to work, everyone must first give and take only afterwards and never too much.

Best regards
Marek Vasut

Ok. I already sent mail about problem 1) to video maintainer and also sent bug remainder to this list. Now I sent some more info about that problem, so maybe someone could help me.

I understand you, but mails without response look like ignored. Also now with U-Boot master Nokia port does not working, so it cannot be merged to master. I belive that you do not want/need not working code.

I'm not angry, but now I'm stucked, because I (and nobody other) was not able to fix problem 1) and problem 1) must be fixed before pushing rx51 patches to master. So I cannot work on rx51 patches...

Signature · 9 lines
Pali Roh?r
pali.rohar at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20120304/65427850/attachment.pgp>
#102 lore raw

cover Nokia RX-51 support

Quoted 65 lines · On Sunday 04 March 2012 21:57:23 Marek Vasut wrote:
Quoted 64 lines

Dear Pali Rohar,

I suggest you to read through this whole mail properly, do not get angry by the first few lines.

Quoted 10 lines

U-Boot on Nokia N900 is broken due to bug in MMC and framebuffer driver. See:
http://lists.denx.de/pipermail/u-boot/2012-January/115778.html
http://lists.denx.de/pipermail/u-boot/2012-March/119330.html

Until now *nobody* responce to the first reported problem (2 months old). I
will not do anything with Nokia N900 U-Boot code until both problem will be
fixed!

Firstly, we are very grateful for properly reported bugs!

Yet you probably misunderstood how whole this free software/open source thing works.

If you found a bug noone else noticed, you are not ever supposed to expect people on the mailing list to fall on their backs, drop everything they are doing and start fixing your problem. This is because they didn't observe any trouble and so this has no priority for them.

And this is especially true for out-of-tree ports. N900 is good example of such category.

Now if you actually report a bug to the mailing list and this bug goes unnoticed for an extended period of time, you're supposed to send subsequent email in order to alarm the people on the mailing list the bug report is still relevant.

In case of U-Boot and Linux kernel, there is a list of maintainers in the MAINTAINERS file in the source tree, you are supposed to put these people in the Cc of such reports, this will greatly improve your chance of getting response and help. In case of U-Boot, there is also a list of custodians

available here:
http://www.denx.de/wiki/U-Boot/Custodians

But considering you are yourself a software engineer, the best approach to the problem you're observing is to actually debug the issue you're seeing and submit a patch for it. Next, fix your patches for N900 and submit them. It'd be a good idea to put a note in the patchset cover message that this depends on your previous fix.

Now, to the problems you're observing:

1) Video; check if you have the following defined in your board config:

#define CONFIG_VIDEO
#define CONFIG_VIDEO_SW_CURSOR
#define CONFIG_CFB_CONSOLE
#define CONFIG_VGA_AS_SINGLE_DEVICE
#define CONFIG_SYS_WHITE_ON_BLACK

I understand that you probably want to second and the last define from the list above, which solves your "invert" problem and swcursor problem.

2) MMC; I believe Tom can comment on this one.

Quoted 9 lines
Quoted 8 lines

On a final note, I believe you should adjust your behaviour towards the mailing list. The U-Boot project, as well as many other FOSS projects, is a collective effort to achieve the best possible result for everyone. But for such model to work, everyone must first give and take only afterwards and never too much.

Best regards
Marek Vasut

Dear Pali Rohar,

Quoted 3 lines

Ok. I already sent mail about problem 1) to video maintainer and also sent bug remainder to this list. Now I sent some more info about that problem, so maybe someone could help me.

Did you try the above solution for the video issues?

Quoted 2 lines

I understand you, but mails without response look like ignored.

That's why you need to prod, prod and prod ... in a sane way ;-)

Quoted 3 lines

Also now
with U-Boot master Nokia port does not working, so it cannot be merged to master. I belive that you do not want/need not working code.

That's true, but you can always fix your issues locally and submit those fixed upstream, followed by your newly working code.

Quoted 4 lines

I'm not angry, but now I'm stucked, because I (and nobody other) was not able to fix problem 1) and problem 1) must be fixed before pushing rx51 patches to master. So I cannot work on rx51 patches...

So why don't YOU fix the problem? Maybe we should try diagnosing it?

I might have some time after NSWI075 on tuesday, ending 19:00, you might want to catch me afterwards and we can look into it for a bit?

Best regards
Marek Vasut

#103 lore raw

cover Nokia RX-51 support

Quoted 2 lines · On Sunday 04 March 2012 22:50:53 Marek Vasut wrote:

Did you try the above solution for the video issues?

Not yet. I will try it.

Quoted 6 lines

So why don't YOU fix the problem? Maybe we should try diagnosing it?

I might have some time after NSWI075 on tuesday, ending 19:00, you might want to catch me afterwards and we can look into it for a bit?

Sorry but in tuesday at that time I have NJAZ090 (which I really need)...

Signature · 9 lines
Pali Roh?r
pali.rohar at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20120305/a0726bf6/attachment.pgp>
#104 lore raw

cover Nokia RX-51 support

In reply to Pali Rohár

Dear Pali,

Quoted 11 lines · In message <2426868.sD2XDEqcqE@pali> you wrote:
Quoted 11 lines

1) Video; check if you have the following defined in your board config:

#define CONFIG_VIDEO
#define CONFIG_VIDEO_SW_CURSOR
#define CONFIG_CFB_CONSOLE
#define CONFIG_VGA_AS_SINGLE_DEVICE
#define CONFIG_SYS_WHITE_ON_BLACK

I understand that you probably want to second and the last define from the list above, which solves your "invert" problem and swcursor problem.

...

Quoted 3 lines

I'm not angry, but now I'm stucked, because I (and nobody other) was not able to fix problem 1) and problem 1) must be fixed before pushing rx51 patches to master. So I cannot work on rx51 patches...

Did you actually read what Marek wrote?

Did you check your configuration, and//or try changing it as suggested? What was the result?

Best regards,

Wolfgang Denk

Signature · 8 lines
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
Repeat after me:
Usenet is not a word processor; it's a medium where aesthetics count.
Mozilla is not a newsreader; it's a web browser.
Windows is not an operating system; it's a GUI on a program loader.
         -- Tom Christiansen in <[email protected]>
#105 lore raw

cover Nokia RX-51 support

Quoted 21 lines · On Sunday 04 March 2012 23:09:38 Wolfgang Denk wrote:

Dear Pali,

Quoted 11 lines · In message <2426868.sD2XDEqcqE@pali> you wrote:
Quoted 11 lines

1) Video; check if you have the following defined in your board config:

#define CONFIG_VIDEO
#define CONFIG_VIDEO_SW_CURSOR
#define CONFIG_CFB_CONSOLE
#define CONFIG_VGA_AS_SINGLE_DEVICE
#define CONFIG_SYS_WHITE_ON_BLACK

I understand that you probably want to second and the last define from the
list above, which solves your "invert" problem and swcursor problem.

...

Quoted 3 lines

I'm not angry, but now I'm stucked, because I (and nobody other) was not able to fix problem 1) and problem 1) must be fixed before pushing rx51 patches to master. So I cannot work on rx51 patches...

Quoted 8 lines

Did you actually read what Marek wrote?

Did you check your configuration, and//or try changing it as suggested? What was the result?

Best regards,

Wolfgang Denk

Hi, I did not tried what Marek suggested yet. I will write if it worked or not

Signature · 9 lines
Pali Roh?r
pali.rohar at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20120305/5fca5561/attachment.pgp>
#106 lore raw

cover Nokia RX-51 support

In reply to Pali Rohár
Quoted 3 lines · On Sunday 04 March 2012 16:35:44 Pali Roh?r wrote:

I'm not angry, but now I'm stucked, because I (and nobody other) was not able to fix problem 1) and problem 1) must be fixed before pushing rx51 patches to master. So I cannot work on rx51 patches...

i don't think these things are true. you can push your patches even though there are known bugs in other pieces of the tree. i'm sure other people have done this before (i know i have).
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20120304/c3ec69a6/attachment.pgp>

#107 lore raw

cover Nokia RX-51 support

Quoted 9 lines · On Sunday 04 March 2012 23:26:29 Mike Frysinger wrote:
Quoted 3 lines · On Sunday 04 March 2012 16:35:44 Pali Roh?r wrote:

I'm not angry, but now I'm stucked, because I (and nobody other) was not able to fix problem 1) and problem 1) must be fixed before pushing rx51 patches to master. So I cannot work on rx51 patches...

i don't think these things are true. you can push your patches even though there are known bugs in other pieces of the tree. i'm sure other people have done this before (i know i have).
-mike

Ok, I can create new rx51 patch series, which fix known problmes in board code, but it will work only with reverted some commits.

Signature · 9 lines
Pali Roh?r
pali.rohar at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20120305/172d77dc/attachment.pgp>
#108 lore raw

cover Nokia RX-51 support

Quoted 6 lines · On Monday 05 March 2012 16:58:47 Pali Roh?r wrote:
Quoted 5 lines · On Sunday 04 March 2012 23:26:29 Mike Frysinger wrote:
Quoted 3 lines · On Sunday 04 March 2012 16:35:44 Pali Roh?r wrote:

I'm not angry, but now I'm stucked, because I (and nobody other) was not able to fix problem 1) and problem 1) must be fixed before pushing rx51 patches to master. So I cannot work on rx51 patches...

Quoted 6 lines
Quoted 3 lines

i don't think these things are true. you can push your patches even though there are known bugs in other pieces of the tree. i'm sure other people have done this before (i know i have).

Ok, I can create new rx51 patch series, which fix known problmes in board code, but it will work only with reverted some commits.

presumably you're talking about mmc and video misbehavior in which case that's OK ... after all, nothing is stopping people from adding new changes which would break your board at runtime even after you merge.
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20120305/596e7140/attachment.pgp>

#109 lore raw

cover Nokia RX-51 support

In reply to Marek Vasut
Quoted 6 lines · On Sunday 04 March 2012 21:57:23 Marek Vasut wrote:

1) Video; check if you have the following defined in your board config:

#define CONFIG_VIDEO
#define CONFIG_VIDEO_SW_CURSOR
#define CONFIG_CFB_CONSOLE

Above options was already enabled.

Quoted 1 line

#define CONFIG_VGA_AS_SINGLE_DEVICE

When I enabled this option U-Boot freezed. No idea why. So I did not enabled it again.

Quoted 1 line

#define CONFIG_SYS_WHITE_ON_BLACK

This option has no effect on video output problem.

So adding these new definitions not helped me. But Anatolij Gustschin already sent patch which fixed this problem.

Signature · 9 lines
Pali Roh?r
pali.rohar at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20120310/4da43966/attachment.pgp>
#110 lore raw

cover Nokia RX-51 support

In reply to Pali Rohár
Quoted 7 lines · On Sunday 04 March 2012 15:21:23 Pali Roh?r wrote:

U-Boot on Nokia N900 is broken due to bug in MMC and framebuffer driver.
See: http://lists.denx.de/pipermail/u-boot/2012-January/115778.html
http://lists.denx.de/pipermail/u-boot/2012-March/119330.html

Until now *nobody* responce to the first reported problem (2 months old). I will not do anything with Nokia N900 U-Boot code until both problem will be fixed!

this is an open source project. bugs don't get fixed just because you ask for them. there's a bit of give & take here. support for this board would be great, but it's not like other devs on this project need it in the tree. -mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20120304/5deb11b0/attachment.pgp>

#111 lore raw

v2 cover Nokia RX-51 support

In reply to Pali Rohár

This patch series add support for new board Nokia RX-51 (aka N900). This patch series supersedes version v1. It was rebased on top of u-boot master and in this version was dropped BootMenu support.

Patch details:

Already commited (dropped) patches:
arm,omap3: Define save_boot_params in lowlevel_init.S for SPL only

Dropped patches:
Fix function readline in main.c
cfb_console: Fix function console_scrollup New config variable CONFIG_MENUCMD
New command bootmenu: ANSI terminal Boot Menu support
RX-51: Add support for bootmenu

New patches:
cfb_console: Fix function console_back
cfb_console: Ignore bell character
video: cfb_console: flush dcache for frame buffer in DRAM

Anatolij Gustschin (1):
video: cfb_console: flush dcache for frame buffer in DRAM

Pali Roh?r (10):
arm: Optionally use existing atags in bootm.c
Add power bus message definitions in twl4030.h
cfb_console: Fix function console_back
cfb_console: Add function console_clear and console_clear_line
cfb_console: Add functions for moving with cursor
cfb_console: Add support for some ANSI terminal escape codes
cfb_console: Ignore bell character
New command clear: Clear the ANSI terminal
New config variable CONFIG_PREMONITOR
New board support: Nokia RX-51 aka N900

 README                           |    5 +
 arch/arm/lib/bootm.c             |   60 +++---
 board/nokia/rx51/Makefile        |   46 +++++
 board/nokia/rx51/lowlevel_init.S |   71 +++++++
 board/nokia/rx51/rx51.c          |  380 +++++++++++++++++++++++++++++++++++
 board/nokia/rx51/rx51.h          |  378 +++++++++++++++++++++++++++++++++++
 boards.cfg                       |    1 +
 common/Makefile                  |    1 +
 common/cmd_clear.c               |   42 ++++
 common/env_common.c              |    3 +
 common/main.c                    |    4 +
 drivers/video/cfb_console.c      |  404 +++++++++++++++++++++++++++++++++++---
 include/common.h                 |    7 +
 include/config_cmd_all.h         |    1 +
 include/configs/nokia_rx51.h     |  373 +++++++++++++++++++++++++++++++++++
 include/twl4030.h                |   98 +++++++++
 16 files changed, 1829 insertions(+), 45 deletions(-)
 create mode 100644 board/nokia/rx51/Makefile
 create mode 100644 board/nokia/rx51/lowlevel_init.S
 create mode 100644 board/nokia/rx51/rx51.c
 create mode 100644 board/nokia/rx51/rx51.h
 create mode 100644 common/cmd_clear.c
 create mode 100644 include/configs/nokia_rx51.h
Signature · 1 line
1.7.9.5
#112 lore raw

PATCH v2 1/11 arm: Optionally use existing atags in bootm.c

This patch adapts the bootm command so that it can use an existing atags command set up by a previous bootloader. If the environment variable "atagaddr" is unset, bootm behaves as normal. If "atagaddr" is set, bootm will use atags address from environment variable and also append new boot args (if specified in u-boot). For example, if a previous boot loader already set up the atags struct at 0x80000100:

setenv atagaddr 0x80000100; bootm 0x80008000

---
Changes since v1:
- Rebased on u-boot master

Changes since original version:
- Added info to README file
- Added local define CONFIG_SETUP_ANY_TAG
- Fixed compile warning
- Fixed commit message
- Check if atagaddr is not NULL

 README               |    2 ++
 arch/arm/lib/bootm.c |   60 ++++++++++++++++++++++++++++++++------------------
 2 files changed, 40 insertions(+), 22 deletions(-)
README +2 -0
index 43074cf..60ad9c2 100644
@@ -3687,6 +3687,8 @@ Some configuration options can be set using Environment Variables.
 
 List of environment variables (most likely not complete):
 
+  atagaddr	- bootm will use ATAGs struct from specified address (arm only)
+
   baudrate	- see CONFIG_BAUDRATE
 
   bootdelay	- see CONFIG_BOOTDELAY
arch/arm/lib/bootm.c +38 -22

97 lines not on this page · raw message

Signature · 1 line
1.7.9.5
#113 lore raw

PATCH v2 1/11 arm: Optionally use existing atags in bootm.c

Dear =?UTF-8?q?Pali=20Roh=C3=A1r?=,

Quoted 5 lines · In message <[email protected]> you wrote:

VGhpcyBwYXRjaCBhZGFwdHMgdGhlIGJvb3RtIGNvbW1hbmQgc28gdGhhdCBpdCBjYW4gdXNlIGFu IGV4aXN0aW5nIGF0YWdzIGNvbW1hbmQKc2V0IHVwIGJ5IGEgcHJldmlvdXMgYm9vdGxvYWRlci4g SWYgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlICJhdGFnYWRkciIgaXMgdW5zZXQsCmJvb3RtIGJl aGF2ZXMgYXMgbm9ybWFsLiBJZiAiYXRhZ2FkZHIiIGlzIHNldCwgYm9vdG0gd2lsbCB1c2UgYXRh Z3MgYWRkcmVzcyBmcm9tCmVudmlyb25tZW50IHZhcmlhYmxlIGFuZCBhbHNvIGFwcGVuZCBuZXcg

...

Please stop posting your patches with base64 Content-transfer-encoding; thanks.

Please also run all your patches through checkpatch _before_ posting, and fix warnings and errors.

For example, this patch has a number of too long lines which cause
WARNING: line over 80 characters

Please fix all such issues, and resubmit.

Thanks.

Best regards,

Wolfgang Denk

Signature · 5 lines
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
The biggest difference between time and space is that you can't reuse
time.                                                 - Merrick Furst
#114 lore raw

PATCH v2 1/11 arm: Optionally use existing atags in bootm.c

Quoted 2 lines · On Saturday 28 April 2012 23:20:04 Wolfgang Denk wrote:

Please stop posting your patches with base64
Content-transfer-encoding; thanks.

How can I tell this to git format-patch and git send-email? Also I looked in my mailbox and all emails have no base64 header, but
Content-Transfer-Encoding: 8bit

Quoted 3 lines

Please also run all your patches through checkpatch _before_ posting, and fix warnings and errors.

Ok, I forgot to run checkpatch on this patch. But I ran checkpatch on all other patches and checkpatch did not show any other warnings or errors.

Quoted 11 lines

For example, this patch has a number of too long lines which cause WARNING: line over 80 characters

Please fix all such issues, and resubmit.

Thanks.

Best regards,

Wolfgang Denk

Signature · 9 lines
Pali Roh?r
pali.rohar at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20120429/b414c4df/attachment.pgp>
#115 lore raw

PATCH v2 1/11 arm: Optionally use existing atags in bootm.c

Dear Pali =?ISO-8859-1?Q?Roh=E1r?=,

Quoted 8 lines · In message <2099459.BqkWJMp2Uq@pali> you wrote:
Quoted 2 lines · On Saturday 28 April 2012 23:20:04 Wolfgang Denk wrote:

Please stop posting your patches with base64
Content-transfer-encoding; thanks.

How can I tell this to git format-patch and git send-email? Also I looked in my mailbox and all emails have no base64 header, but
Content-Transfer-Encoding: 8bit

Do not use funny characters in the commit message.

Try sending a patch to yourself first and verify that git-send-email does not need to base64 encode it.

Such patches are also all undigestable by patchwork.

Best regards,

Wolfgang Denk

Signature · 4 lines
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
"Free markets select for winning solutions."        - Eric S. Raymond
#116 lore raw

PATCH v2 1/11 arm: Optionally use existing atags in bootm.c

In reply to Pali Rohár

Dear Pali Roh?r,

Quoted 6 lines

This patch adapts the bootm command so that it can use an existing atags command set up by a previous bootloader. If the environment variable "atagaddr" is unset, bootm behaves as normal. If "atagaddr" is set, bootm will use atags address from environment variable and also append new boot args (if specified in u-boot). For example, if a previous boot loader already set up the atags struct at 0x80000100:

Won't it be easier to create a preprocessing function that'd fill gd properly, so uboot can generate the atags through standard means then?

Quoted 80 lines

setenv atagaddr 0x80000100; bootm 0x80008000

---
Changes since v1:
- Rebased on u-boot master

Changes since original version:
- Added info to README file
- Added local define CONFIG_SETUP_ANY_TAG
- Fixed compile warning
- Fixed commit message
- Check if atagaddr is not NULL

 README               |    2 ++
 arch/arm/lib/bootm.c |   60

++++++++++++++++++++++++++++++++------------------ 2 files changed, 40 insertions(+), 22 deletions(-)

README +0 -0
index 43074cf..60ad9c2 100644
@@ -3687,6 +3687,8 @@ Some configuration options can be set using

Environment Variables.

List of environment variables (most likely not complete):

README +2 -0
+  atagaddr	- bootm will use ATAGs struct from specified address (arm only)
+
   baudrate	- see CONFIG_BAUDRATE
 
   bootdelay	- see CONFIG_BOOTDELAY
arch/arm/lib/bootm.c +6 -11
index 599547d..0f3c97b 100644
@@ -42,6 +42,10 @@ DECLARE_GLOBAL_DATA_PTR;
 	defined(CONFIG_INITRD_TAG) || \
 	defined(CONFIG_SERIAL_TAG) || \
 	defined(CONFIG_REVISION_TAG)
+		#define CONFIG_SETUP_ANY_TAG
+#endif
+
+#ifdef CONFIG_SETUP_ANY_TAG
 static struct tag *params;
 #endif
 
@@ -106,11 +110,7 @@ static void announce_and_cleanup(void)
 	cleanup_before_linux();
 }
 
-#if defined(CONFIG_SETUP_MEMORY_TAGS) || \
-	defined(CONFIG_CMDLINE_TAG) || \
-	defined(CONFIG_INITRD_TAG) || \
-	defined(CONFIG_SERIAL_TAG) || \
-	defined(CONFIG_REVISION_TAG)
+#ifdef CONFIG_SETUP_ANY_TAG
 static void setup_start_tag (bd_t *bd)
 {
 	params = (struct tag *)bd->bi_boot_params;
@@ -217,11 +217,7 @@ void setup_revision_tag(struct tag **in_params)
 }
 #endif
 
-#if defined(CONFIG_SETUP_MEMORY_TAGS) || \
-	defined(CONFIG_CMDLINE_TAG) || \
-	defined(CONFIG_INITRD_TAG) || \
-	defined(CONFIG_SERIAL_TAG) || \
-	defined(CONFIG_REVISION_TAG)
+#ifdef CONFIG_SETUP_ANY_TAG
 static void setup_end_tag(bd_t *bd)
 {
 	params->hdr.tag = ATAG_NONE;
@@ -280,13 +276,23 @@ static void boot_prep_linux(bootm_headers_t *images)
 	} else
 #endif
 	{
-#if defined(CONFIG_SETUP_MEMORY_TAGS) || \

arch/arm/lib/bootm.c static void boot_prep_linux(bootm_headers_t *images) · line 283

Quoted 10 lines
arch/arm/lib/bootm.c +4 -5
-	defined(CONFIG_CMDLINE_TAG) || \
-	defined(CONFIG_INITRD_TAG) || \
-	defined(CONFIG_SERIAL_TAG) || \
-	defined(CONFIG_REVISION_TAG)
+		char *atagaddr = getenv("atagaddr");
 		debug("using: ATAGS\n");
-		setup_start_tag(gd->bd);
+
+		if (atagaddr)
+			gd->bd->bi_boot_params = simple_strtoul(atagaddr, NULL, 

16);

Quoted 35 lines
arch/arm/lib/bootm.c +12 -0
+
+		if (gd->bd->bi_boot_params) {
+			printf("Using existing atags at %#lx\n", gd->bd-
 bi_boot_params);
+
+			params = (struct tag *) gd->bd->bi_boot_params;
+			while (params->hdr.size > 0)
+				params = tag_next(params);
+		} else {
+#ifdef CONFIG_SETUP_ANY_TAG
+			setup_start_tag(gd->bd);
+#endif
+		}
 #ifdef CONFIG_SERIAL_TAG
 		setup_serial_tag(&params);

#endif

arch/arm/lib/bootm.c +3 -6
@@ -297,18 +303,28 @@ static void boot_prep_linux(bootm_headers_t *images)
 		setup_revision_tag(&params);
 #endif
 #ifdef CONFIG_SETUP_MEMORY_TAGS
-		setup_memory_tags(gd->bd);
+		if (!atagaddr)
+			setup_memory_tags(gd->bd);
 #endif
 #ifdef CONFIG_INITRD_TAG
 		if (images->rd_start && images->rd_end)
 			setup_initrd_tag(gd->bd, images->rd_start,
 			images->rd_end);
 #endif
-		setup_end_tag(gd->bd);
-#else /* all tags */
-		printf("FDT and ATAGS support not compiled in - hanging\n");
-		hang();
-#endif /* all tags */
+		if (atagaddr) {

arch/arm/lib/bootm.c static void boot_prep_linux(bootm_headers_t *images) · line 324

Quoted 10 lines
arch/arm/lib/bootm.c +10 -0
+			if (params->hdr.size > 0)
+				setup_end_tag(gd->bd);
+		} else {
+#ifdef CONFIG_SETUP_ANY_TAG
+			setup_end_tag(gd->bd);
+#endif
+		}
+#ifndef CONFIG_SETUP_ANY_TAG
+		if (!atagaddr) {
+			printf("FDT and ATAGS support not compiled in - 

hanging\n");

Quoted 5 lines
arch/arm/lib/bootm.c +3 -0
+			hang();
+		}
+#endif
 	}
 }
#117 lore raw

PATCH v2 1/11 arm: Optionally use existing atags in bootm.c

Quoted 3 lines · On Sunday 29 April 2012 00:15:23 Marek Vasut wrote:

Won't it be easier to create a preprocessing function that'd fill gd properly, so uboot can generate the atags through standard means then?

Do you mean to generate/copy other atags in board code? This will not work because u-boot (in bootm.c) always passing ATAG_CORE in function setup_start_tag. And I do not want to pass ATAG_CORE two times to kernel (once which I copy from other bootloader and once which generate u-boot).

Signature · 9 lines
Pali Roh?r
pali.rohar at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20120429/6033f58c/attachment.pgp>
#118 lore raw

PATCH v2 1/11 arm: Optionally use existing atags in bootm.c

Dear Pali Roh?r,

Quoted 10 lines · On Sunday 29 April 2012 00:15:23 Marek Vasut wrote:
Quoted 3 lines

Won't it be easier to create a preprocessing function that'd fill gd properly, so uboot can generate the atags through standard means then?

Do you mean to generate/copy other atags in board code? This will not work because u-boot (in bootm.c) always passing ATAG_CORE in function setup_start_tag. And I do not want to pass ATAG_CORE two times to kernel (once which I copy from other bootloader and once which generate u-boot).

No, I mean parse the old ATAGS from nolo and fill u-boot's internal structures with that. Then let uboot generate the ATAGS from it's internal structures as usual.

Best regards,
Marek Vasut

#119 lore raw

PATCH v2 1/11 arm: Optionally use existing atags in bootm.c

Quoted 14 lines · On Sunday 29 April 2012 11:10:42 Marek Vasut wrote:

Dear Pali Roh?r,

Quoted 11 lines · On Sunday 29 April 2012 00:15:23 Marek Vasut wrote:
Quoted 4 lines

Won't it be easier to create a preprocessing function that'd
fill gd properly, so uboot can generate the atags through standard means then?

Do you mean to generate/copy other atags in board code? This will not work because u-boot (in bootm.c) always passing ATAG_CORE in function setup_start_tag. And I do not want to pass ATAG_CORE two times to kernel (once which I copy from other bootloader and once which generate u-boot).

Quoted 6 lines

No, I mean parse the old ATAGS from nolo and fill u-boot's internal structures with that. Then let uboot generate the ATAGS from it's internal structures as usual.

Best regards,
Marek Vasut

Ok, but what to do with non-standard omap/maemo atags which is used only for maemo (atag for bootreason, atag for bootmode ...)? U-Boot does not have internal structures for these non-standrad atags and also does not support passing it.

Signature · 9 lines
Pali Roh?r
pali.rohar at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20120429/08e9f9f9/attachment.pgp>
#120 lore raw

PATCH v2 1/11 arm: Optionally use existing atags in bootm.c

Dear Pali Roh?r,

Quoted 19 lines · On Sunday 29 April 2012 11:10:42 Marek Vasut wrote:
Quoted 18 lines

Dear Pali Roh?r,

Quoted 11 lines · On Sunday 29 April 2012 00:15:23 Marek Vasut wrote:
Quoted 4 lines

Won't it be easier to create a preprocessing function that'd
fill gd properly, so uboot can generate the atags through standard means then?

Do you mean to generate/copy other atags in board code? This will not work because u-boot (in bootm.c) always passing ATAG_CORE in function setup_start_tag. And I do not want to pass ATAG_CORE two times to kernel (once which I copy from other bootloader and once which generate u-boot).

No, I mean parse the old ATAGS from nolo and fill u-boot's internal structures with that. Then let uboot generate the ATAGS from it's internal structures as usual.

Quoted 7 lines
Quoted 2 lines

Best regards,
Marek Vasut

Ok, but what to do with non-standard omap/maemo atags which is used only for maemo (atag for bootreason, atag for bootmode ...)? U-Boot does not have internal structures for these non-standrad atags and also does not support passing it.

Implement support for passing ad-hoc additional non-standard atags then?

Best regards,
Marek Vasut

#121 lore raw

PATCH v2 1/11 arm: Optionally use existing atags in bootm.c

Quoted 34 lines · On Sunday 29 April 2012 15:08:00 you wrote:

Dear Pali Roh?r,

Quoted 23 lines · On Sunday 29 April 2012 11:10:42 Marek Vasut wrote:
Quoted 22 lines

Dear Pali Roh?r,

Quoted 7 lines · On Sunday 29 April 2012 00:15:23 Marek Vasut wrote:
Quoted 5 lines

Won't it be easier to create a preprocessing function that'd
fill gd properly, so uboot can generate the atags through
standard means then?

Quoted 8 lines

Do you mean to generate/copy other atags in board code? This
will not work because u-boot (in bootm.c) always passing ATAG_CORE in function setup_start_tag. And I do not want to
pass ATAG_CORE two times to kernel (once which I copy from
other bootloader and once which generate u-boot).

No, I mean parse the old ATAGS from nolo and fill u-boot's internal structures with that. Then let uboot generate the ATAGS from it's internal structures as usual.

Quoted 8 lines
Quoted 2 lines

Best regards,
Marek Vasut

Ok, but what to do with non-standard omap/maemo atags which is
used only for maemo (atag for bootreason, atag for bootmode ...)? U-Boot does not have internal structures for these non-standrad atags and also does not support passing it.

Quoted 5 lines

Implement support for passing ad-hoc additional non-standard atags then?

Best regards,
Marek Vasut

Hi, what do you think about adding function setup_board_tags which will be implemented in board code?

arch/arm/include/asm/setup.h +7 -0
index 89df4dc..572cb2a 100644
@@ -267,3 +267,10 @@ struct meminfo {
 extern struct meminfo meminfo;
 
 #endif
+
+/*
+ * Board specified tags
+ */
+#ifdef CONFIG_SETUP_BOARD_TAGS
+void setup_board_tags(struct tag **in_params);
+#endif
arch/arm/lib/bootm.c +15 -3
index 599547d..9c27405 100644
@@ -111,6 +111,15 @@ static void announce_and_cleanup(void)
 	defined(CONFIG_INITRD_TAG) || \
 	defined(CONFIG_SERIAL_TAG) || \
 	defined(CONFIG_REVISION_TAG)
+#ifndef CONFIG_ATAG_CORE_FLAGS
+#define CONFIG_ATAG_CORE_FLAGS 0
+#endif
+#ifndef CONFIG_ATAG_CORE_PAGESIZE
+#define CONFIG_ATAG_CORE_PAGESIZE 0
+#endif
+#ifndef CONFIG_ATAG_CORE_ROOTDEV
+#define CONFIG_ATAG_CORE_ROOTDEV 0
+#endif
 static void setup_start_tag (bd_t *bd)
 {
 	params = (struct tag *)bd->bi_boot_params;
@@ -118,9 +127,9 @@ static void setup_start_tag (bd_t *bd)
 	params->hdr.tag = ATAG_CORE;
 	params->hdr.size = tag_size (tag_core);
 
-	params->u.core.flags = 0;
-	params->u.core.pagesize = 0;
-	params->u.core.rootdev = 0;
+	params->u.core.flags = CONFIG_ATAG_CORE_FLAGS;
+	params->u.core.pagesize = CONFIG_ATAG_CORE_PAGESIZE;
+	params->u.core.rootdev = CONFIG_ATAG_CORE_ROOTDEV;
 
 	params = tag_next (params);
 }
@@ -304,6 +313,9 @@ static void boot_prep_linux(bootm_headers_t *images)
 			setup_initrd_tag(gd->bd, images->rd_start,
 			images->rd_end);
 #endif
+#ifdef CONFIG_SETUP_BOARD_TAGS
+		setup_board_tags(&params);
+#endif
 		setup_end_tag(gd->bd);
 #else /* all tags */
 		printf("FDT and ATAGS support not compiled in - hanging\n");
Signature · 9 lines
Pali Roh?r
pali.rohar at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20120601/b5ba772a/attachment.pgp>
#122 lore raw

PATCH v2 1/11 arm: Optionally use existing atags in bootm.c

In reply to Pali Rohár

arch/arm/lib/bootm.c DECLARE_GLOBAL_DATA_PTR; · line 45

Quoted 4 lines · On Saturday 28 April 2012 13:26:41 Pali Roh?r wrote:
arch/arm/lib/bootm.c +1 -0
 	defined(CONFIG_INITRD_TAG) || \
 	defined(CONFIG_SERIAL_TAG) || \
 	defined(CONFIG_REVISION_TAG)
+		#define CONFIG_SETUP_ANY_TAG

don't indent the "#"
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20120428/58d72243/attachment.pgp>

#123 lore raw

PATCH v2 1/11 arm: Optionally use existing atags in bootm.c

Quoted 9 lines · On Saturday 28 April 2012 19:22:38 Mike Frysinger wrote:

arch/arm/lib/bootm.c DECLARE_GLOBAL_DATA_PTR;

Quoted 5 lines · On Saturday 28 April 2012 13:26:41 Pali Roh?r wrote:
arch/arm/lib/bootm.c +1 -0
 	defined(CONFIG_INITRD_TAG) || \
 	defined(CONFIG_SERIAL_TAG) || \
 	defined(CONFIG_REVISION_TAG)
 
+		#define CONFIG_SETUP_ANY_TAG

don't indent the "#"
-mike

Ok.

Signature · 9 lines
Pali Roh?r
pali.rohar at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20120429/80374cae/attachment.pgp>
#124 lore raw

PATCH v2 2/11 Add power bus message definitions in twl4030.h

In reply to Pali Rohár

* Code copied from linux kernel 3.0.0 from file include/linux/i2c/twl.h

---
Changes since original version:
- Fixed commit message

 include/twl4030.h |   98 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 98 insertions(+)
include/twl4030.h +98 -0
index 9cd32ab..0c17f59 100644
@@ -151,6 +151,103 @@
 #define TWL4030_PM_MASTER_SW_EVENTS_DEVSLP		(1 << 1)
 #define TWL4030_PM_MASTER_SW_EVENTS_DEVOFF		(1 << 0)
 
+/* Power bus message definitions */
+
+/* The TWL4030/5030 splits its power-management resources (the various
+ * regulators, clock and reset lines) into 3 processor groups - P1, P2 and
+ * P3. These groups can then be configured to transition between sleep, wait-on
+ * and active states by sending messages to the power bus.  See Section 5.4.2
+ * Power Resources of TWL4030 TRM
+ */
+
+/* Processor groups */
+#define DEV_GRP_NULL		0x0
+#define DEV_GRP_P1		0x1	/* P1: all OMAP devices */
+#define DEV_GRP_P2		0x2	/* P2: all Modem devices */
+#define DEV_GRP_P3		0x4	/* P3: all peripheral devices */
+
+/* Resource groups */
+#define RES_GRP_RES		0x0	/* Reserved */
+#define RES_GRP_PP		0x1	/* Power providers */
+#define RES_GRP_RC		0x2	/* Reset and control */
+#define RES_GRP_PP_RC		0x3
+#define RES_GRP_PR		0x4	/* Power references */
+#define RES_GRP_PP_PR		0x5
+#define RES_GRP_RC_PR		0x6
+#define RES_GRP_ALL		0x7	/* All resource groups */
+
+#define RES_TYPE2_R0		0x0
+
+#define RES_TYPE_ALL		0x7
+
+/* Resource states */
+#define RES_STATE_WRST		0xF
+#define RES_STATE_ACTIVE	0xE
+#define RES_STATE_SLEEP		0x8
+#define RES_STATE_OFF		0x0
+
+/* Power resources */
+
+/* Power providers */
+#define RES_VAUX1               1
+#define RES_VAUX2               2
+#define RES_VAUX3               3
+#define RES_VAUX4               4
+#define RES_VMMC1               5
+#define RES_VMMC2               6
+#define RES_VPLL1               7
+#define RES_VPLL2               8
+#define RES_VSIM                9
+#define RES_VDAC                10
+#define RES_VINTANA1            11
+#define RES_VINTANA2            12
+#define RES_VINTDIG             13
+#define RES_VIO                 14
+#define RES_VDD1                15
+#define RES_VDD2                16
+#define RES_VUSB_1V5            17
+#define RES_VUSB_1V8            18
+#define RES_VUSB_3V1            19
+#define RES_VUSBCP              20
+#define RES_REGEN               21
+/* Reset and control */
+#define RES_NRES_PWRON          22
+#define RES_CLKEN               23
+#define RES_SYSEN               24
+#define RES_HFCLKOUT            25
+#define RES_32KCLKOUT           26
+#define RES_RESET               27
+/* Power Reference */
+#define RES_Main_Ref            28
+
+#define TOTAL_RESOURCES		28
+/*
+ * Power Bus Message Format ... these can be sent individually by Linux,
+ * but are usually part of downloaded scripts that are run when various
+ * power events are triggered.
+ *
+ *  Broadcast Message (16 Bits):
+ *    DEV_GRP[15:13] MT[12]  RES_GRP[11:9]  RES_TYPE2[8:7] RES_TYPE[6:4]
+ *    RES_STATE[3:0]
+ *
+ *  Singular Message (16 Bits):
+ *    DEV_GRP[15:13] MT[12]  RES_ID[11:4]  RES_STATE[3:0]
+ */
+
+#define MSG_BROADCAST(devgrp, grp, type, type2, state) \
+	((devgrp) << 13 | 1 << 12 | (grp) << 9 | (type2) << 7 \
+	| (type) << 4 | (state))
+
+#define MSG_SINGULAR(devgrp, id, state) \
+	((devgrp) << 13 | 0 << 12 | (id) << 4 | (state))
+
+#define MSG_BROADCAST_ALL(devgrp, state) \
+	((devgrp) << 5 | (state))
+
+#define MSG_BROADCAST_REF MSG_BROADCAST_ALL
+#define MSG_BROADCAST_PROV MSG_BROADCAST_ALL
+#define MSG_BROADCAST__CLK_RST MSG_BROADCAST_ALL
+
 /* Power Managment Receiver */
 #define TWL4030_PM_RECEIVER_SC_CONFIG			0x5B
 #define TWL4030_PM_RECEIVER_SC_DETECT1			0x5C
@@ -311,6 +408,7 @@
 #define TWL4030_PM_RECEIVER_VDAC_VSEL_18		0x03
 #define TWL4030_PM_RECEIVER_VMMC1_VSEL_30		0x02
 #define TWL4030_PM_RECEIVER_VMMC1_VSEL_32		0x03
+#define TWL4030_PM_RECEIVER_VSIM_VSEL_18		0x03
 
 /* Device Selection in PM Receiver Module */
 #define TWL4030_PM_RECEIVER_DEV_GRP_P1			0x20
Signature · 1 line
1.7.9.5
#125 lore raw

PATCH v2 3/11 cfb_console: Fix function console_back

In reply to Pali Rohár

* Do not disable and enable cursor again

---
 drivers/video/cfb_console.c |    2 --
 1 file changed, 2 deletions(-)
drivers/video/cfb_console.c +0 -2
index 904caf7..51ea167 100644
@@ -721,7 +721,6 @@ static void console_scrollup(void)
 
 static void console_back(void)
 {
-	CURSOR_OFF;
 	console_col--;
 
 	if (console_col < 0) {
@@ -730,7 +729,6 @@ static void console_back(void)
 		if (console_row < 0)
 			console_row = 0;
 	}
-	CURSOR_SET;
 }
 
 static void console_newline(void)
Signature · 1 line
1.7.9.5
#126 lore raw

PATCH v2 3/11 cfb_console: Fix function console_back

Dear Pali Roh?r,

Quoted 1 line

* Do not disable and enable cursor again

Can you elaborate please?

Quoted 19 lines
---
 drivers/video/cfb_console.c |    2 --
 1 file changed, 2 deletions(-)
drivers/video/cfb_console.c +0 -1
index 904caf7..51ea167 100644
@@ -721,7 +721,6 @@ static void console_scrollup(void)
 
 static void console_back(void)
 {
-	CURSOR_OFF;
 	console_col--;
 
 	if (console_col < 0) {

drivers/video/cfb_console.c static void console_back(void) · line 734

Quoted 7 lines
drivers/video/cfb_console.c +0 -1
@@ -730,7 +729,6 @@ static void console_back(void)
 		if (console_row < 0)
 			console_row = 0;
 	}
-	CURSOR_SET;
 }
 
 static void console_newline(void)

Best regards,
Marek Vasut

#127 lore raw

PATCH v2 3/11 cfb_console: Fix function console_back

Quoted 6 lines · On Sunday 29 April 2012 00:15:58 Marek Vasut wrote:

Dear Pali Roh?r,

Quoted 1 line

* Do not disable and enable cursor again

Can you elaborate please?

console_back is called only from cfb putc function which already turn off cursor at begin and turn on at the end of call.

So function console_back will have always disabled cursor and is not needed to call turning it off again.

Signature · 9 lines
Pali Roh?r
pali.rohar at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20120429/bff89063/attachment.pgp>
#128 lore raw

PATCH v2 3/11 cfb_console: Fix function console_back

Dear Pali =?ISO-8859-1?Q?Roh=E1r?=,

Quoted 8 lines · In message <1581447.hx3godgTju@pali> you wrote:
Quoted 2 lines

Can you elaborate please?

console_back is called only from cfb putc function which already turn off cursor at begin and turn on at the end of call.

So function console_back will have always disabled cursor and is not needed to call turning it off again.

Such assumptions need to be documented, then.

Best regards,

Wolfgang Denk

Signature · 5 lines
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 computer can't directly address all the RAM you can  use,  it's
just a toy."         - anonymous comp.sys.amiga posting, non-sequitir
#130 lore raw

PATCH v2 3/11 cfb_console: Fix function console_back

Quoted 10 lines · On Saturday 19 May 2012 21:16:13 Anatolij Gustschin wrote:

Hi,

On Sat, 28 Apr 2012 19:26:43 +0200

Quoted 5 lines · Pali Roh?r

* Do not disable and enable cursor again

---

Quoted 7 lines
Quoted 2 lines
 drivers/video/cfb_console.c |    2 --
 1 file changed, 2 deletions(-)

Applied to u-boot-video/master after extending the commit log.

Thanks,
Anatolij

Ok, when this patch will be in u-boot master?

Signature · 9 lines
Pali Roh?r
pali.rohar at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20120601/2a12692f/attachment.pgp>
#131 lore raw

PATCH v2 3/11 cfb_console: Fix function console_back

Hi,

On Fri, 01 Jun 2012 20:42:29 +0200
Pali Roh?r <[email protected]> wrote:
...

Quoted 1 line

Ok, when this patch will be in u-boot master?

I'm going to submit my pull request soon. It will be in master when Wolfgang pulls my tree.

Thanks,
Anatolij

#132 lore raw

PATCH v2 4/11 cfb_console: Add function console_clear and console_clear_line

In reply to Pali Rohár

* console_clear - clear full console framebuffer output
* console_clear_line - clear part of specified line (or full)

---
Changes since original version:
- Fixed commit message

 drivers/video/cfb_console.c |   64 +++++++++++++++++++++++++++++++++++--------
 1 file changed, 52 insertions(+), 12 deletions(-)
drivers/video/cfb_console.c +52 -12
index 51ea167..0d1e6b2 100644
@@ -683,6 +683,57 @@ static void memcpyl(int *d, int *s, int c)
 }
 #endif
 
+static void console_clear(void)
+{
+#ifdef VIDEO_HW_RECTFILL
+	video_hw_rectfill(VIDEO_PIXEL_SIZE,	/* bytes per pixel */
+			  0,			/* dest pos x */
+			  video_logo_height,	/* dest pos y */
+			  VIDEO_VISIBLE_COLS,	/* frame width */
+			  VIDEO_VISIBLE_ROWS,	/* frame height */
+			  bgx			/* fill color */
+	);
+#else
+	memsetl(CONSOLE_ROW_FIRST, CONSOLE_SIZE, bgx);
+#endif
+}
+
+static void console_clear_line(int line, int begin, int end)
+{
+#ifdef VIDEO_HW_RECTFILL
+	video_hw_rectfill(VIDEO_PIXEL_SIZE,		/* bytes per pixel */
+			  /* FIXME: correct? */
+			  VIDEO_FONT_WIDTH * begin,	/* dest pos x */
+			  /* FIXME: correct? */
+			  video_logo_height +
+			  CONSOLE_ROW_SIZE * line,	/* dest pos y */
+			  /* FIXME: correct? */
+			  VIDEO_FONT_WIDTH * (end - begin), /* frame width */
+			  VIDEO_FONT_HEIGHT,		/* frame height */
+			  bgx				/* fill color */
+		);
+#else
+	int i;
+	if (begin == 0 && end == CONSOLE_COLS)
+		memsetl(CONSOLE_ROW_FIRST +
+			CONSOLE_ROW_SIZE * line,	/* offset of row */
+			CONSOLE_ROW_SIZE >> 2,		/* length of row */
+			bgx				/* fill color */
+		);
+	else
+		for (i = 0; i < VIDEO_FONT_HEIGHT; ++i)
+			memsetl(CONSOLE_ROW_FIRST +
+				CONSOLE_ROW_SIZE * line + /* offset of row */
+				VIDEO_FONT_WIDTH *
+				VIDEO_PIXEL_SIZE * begin + /* offset of col */
+				i * VIDEO_LINE_LEN, /* col offset of i line */
+				(VIDEO_FONT_WIDTH * VIDEO_PIXEL_SIZE *
+				(end - begin + 1)) >> 2, /* length to end */
+				bgx			/* fill color */
+				);
+#endif
+}
+
 static void console_scrollup(void)
 {
 	/* copy up rows ignoring the first one */
@@ -705,18 +756,7 @@ static void console_scrollup(void)
 #endif
 
 	/* clear the last one */
-#ifdef VIDEO_HW_RECTFILL
-	video_hw_rectfill(VIDEO_PIXEL_SIZE,	/* bytes per pixel */
-			  0,			/* dest pos x */
-			  VIDEO_VISIBLE_ROWS
-			  - VIDEO_FONT_HEIGHT,	/* dest pos y */
-			  VIDEO_VISIBLE_COLS,	/* frame width */
-			  VIDEO_FONT_HEIGHT,	/* frame height */
-			  CONSOLE_BG_COL	/* fill color */
-		);
-#else
-	memsetl(CONSOLE_ROW_LAST, CONSOLE_ROW_SIZE >> 2, CONSOLE_BG_COL);
-#endif
+	console_clear_line(CONSOLE_ROWS-1, 0, CONSOLE_COLS);
 }
 
 static void console_back(void)
Signature · 1 line
1.7.9.5
#133 lore raw

PATCH v2 4/11 cfb_console: Add function console_clear and console_clear_line

Dear Pali Roh?r,

Quoted 31 lines

* console_clear - clear full console framebuffer output
* console_clear_line - clear part of specified line (or full)

---
Changes since original version:
- Fixed commit message

 drivers/video/cfb_console.c |   64

+++++++++++++++++++++++++++++++++++-------- 1 file changed, 52 insertions(+), 12 deletions(-)

drivers/video/cfb_console.c +11 -0
index 51ea167..0d1e6b2 100644
@@ -683,6 +683,57 @@ static void memcpyl(int *d, int *s, int c)
 }
 #endif
 
+static void console_clear(void)
+{
+#ifdef VIDEO_HW_RECTFILL
+	video_hw_rectfill(VIDEO_PIXEL_SIZE,	/* bytes per pixel */
+			  0,			/* dest pos x */
+			  video_logo_height,	/* dest pos y */
+			  VIDEO_VISIBLE_COLS,	/* frame width */
+			  VIDEO_VISIBLE_ROWS,	/* frame height */
+			  bgx			/* fill color */
+	);
+#else

drivers/video/cfb_console.c static void memcpyl(int *d, int *s, int c) · line 706

Quoted 10 lines
drivers/video/cfb_console.c +10 -0
+	memsetl(CONSOLE_ROW_FIRST, CONSOLE_SIZE, bgx);
+#endif
+}
+
+static void console_clear_line(int line, int begin, int end)
+{
+#ifdef VIDEO_HW_RECTFILL
+	video_hw_rectfill(VIDEO_PIXEL_SIZE,		/* bytes per pixel */
+			  /* FIXME: correct? */
+			  VIDEO_FONT_WIDTH * begin,	/* dest pos x */

Maybe you want to prepare these parameters into some variables at the begining of this function? Also, your comments make no sense.

drivers/video/cfb_console.c static void memcpyl(int *d, int *s, int c) · line 710

Quoted 4 lines
drivers/video/cfb_console.c +4 -0
+			  /* FIXME: correct? */
+			  video_logo_height +
+			  CONSOLE_ROW_SIZE * line,	/* dest pos y */
+			  /* FIXME: correct? */

Uh ... fixme ;-)

Quoted 49 lines
drivers/video/cfb_console.c +27 -12
+			  VIDEO_FONT_WIDTH * (end - begin), /* frame width */
+			  VIDEO_FONT_HEIGHT,		/* frame height */
+			  bgx				/* fill color */
+		);
+#else
+	int i;
+	if (begin == 0 && end == CONSOLE_COLS)
+		memsetl(CONSOLE_ROW_FIRST +
+			CONSOLE_ROW_SIZE * line,	/* offset of row */
+			CONSOLE_ROW_SIZE >> 2,		/* length of row */
+			bgx				/* fill color */
+		);
+	else
+		for (i = 0; i < VIDEO_FONT_HEIGHT; ++i)
+			memsetl(CONSOLE_ROW_FIRST +
+				CONSOLE_ROW_SIZE * line + /* offset of row */
+				VIDEO_FONT_WIDTH *
+				VIDEO_PIXEL_SIZE * begin + /* offset of col */
+				i * VIDEO_LINE_LEN, /* col offset of i line */
+				(VIDEO_FONT_WIDTH * VIDEO_PIXEL_SIZE *
+				(end - begin + 1)) >> 2, /* length to end */
+				bgx			/* fill color */
+				);
+#endif
+}
+
 static void console_scrollup(void)
 {
 	/* copy up rows ignoring the first one */
@@ -705,18 +756,7 @@ static void console_scrollup(void)
 #endif
 
 	/* clear the last one */
-#ifdef VIDEO_HW_RECTFILL
-	video_hw_rectfill(VIDEO_PIXEL_SIZE,	/* bytes per pixel */
-			  0,			/* dest pos x */
-			  VIDEO_VISIBLE_ROWS
-			  - VIDEO_FONT_HEIGHT,	/* dest pos y */
-			  VIDEO_VISIBLE_COLS,	/* frame width */
-			  VIDEO_FONT_HEIGHT,	/* frame height */
-			  CONSOLE_BG_COL	/* fill color */
-		);
-#else
-	memsetl(CONSOLE_ROW_LAST, CONSOLE_ROW_SIZE >> 2, CONSOLE_BG_COL);
-#endif
+	console_clear_line(CONSOLE_ROWS-1, 0, CONSOLE_COLS);
 }
 
 static void console_back(void)
#134 lore raw

PATCH v2 5/11 cfb_console: Add functions for moving with cursor

In reply to Pali Rohár

* console_cursor_fix - fix cursor position (check for out of screen)
* console_cursor_up, console_cursor_down, console_cursor_left, console_cursor_right, console_cursor_set_position for change cursor position
* console_newline - added param to specify count of creating new lines
* console_previewsline - opposite of console_newline

---
Changes since original version:
- Fixed commit message

 drivers/video/cfb_console.c |   64 +++++++++++++++++++++++++++++++++++++++----
 1 file changed, 58 insertions(+), 6 deletions(-)
drivers/video/cfb_console.c +58 -6
index 0d1e6b2..43eb994 100644
@@ -771,9 +771,54 @@ static void console_back(void)
 	}
 }
 
-static void console_newline(void)
+static void console_cursor_fix(void)
 {
-	console_row++;
+	if (console_row < 0)
+		console_row = 0;
+	if (console_row >= CONSOLE_ROWS)
+		console_row = CONSOLE_ROWS-1;
+	if (console_col < 0)
+		console_col = 0;
+	if (console_col >= CONSOLE_COLS)
+		console_col = CONSOLE_COLS-1;
+}
+
+static void console_cursor_up(int n)
+{
+	console_row -= n;
+	console_cursor_fix();
+}
+
+static void console_cursor_down(int n)
+{
+	console_row += n;
+	console_cursor_fix();
+}
+
+static void console_cursor_left(int n)
+{
+	console_col -= n;
+	console_cursor_fix();
+}
+
+static void console_cursor_right(int n)
+{
+	console_col += n;
+	console_cursor_fix();
+}
+
+static void console_cursor_set_position(int row, int col)
+{
+	if (console_row != -1)
+		console_row = row;
+	if (console_col != -1)
+		console_col = col;
+	console_cursor_fix();
+}
+
+static void console_newline(int n)
+{
+	console_row += n;
 	console_col = 0;
 
 	/* Check if we need to scroll the terminal */
@@ -782,10 +827,17 @@ static void console_newline(void)
 		console_scrollup();
 
 		/* Decrement row number */
-		console_row--;
+		console_row = CONSOLE_ROWS-1;
 	}
 }
 
+static void console_previewsline(int n)
+{
+	/* FIXME: also scroll terminal ? */
+	console_row -= n;
+	console_cursor_fix();
+}
+
 static void console_cr(void)
 {
 	console_col = 0;
@@ -804,7 +856,7 @@ void video_putc(const char c)
 
 	case '\n':		/* next line */
 		if (console_col || (!console_col && nl))
-			console_newline();
+			console_newline(1);
 		nl = 1;
 		break;
 
@@ -813,7 +865,7 @@ void video_putc(const char c)
 		console_col &= ~0x0007;
 
 		if (console_col >= CONSOLE_COLS)
-			console_newline();
+			console_newline(1);
 		break;
 
 	case 8:		/* backspace */
@@ -827,7 +879,7 @@ void video_putc(const char c)
 
 		/* check for newline */
 		if (console_col >= CONSOLE_COLS) {
-			console_newline();
+			console_newline(1);
 			nl = 0;
 		}
 	}
Signature · 1 line
1.7.9.5
#135 lore raw

PATCH v2 5/11 cfb_console: Add functions for moving with cursor

Dear Pali Roh?r,

Quoted 5 lines

* console_cursor_fix - fix cursor position (check for out of screen)
* console_cursor_up, console_cursor_down, console_cursor_left, console_cursor_right, console_cursor_set_position for change cursor
position * console_newline - added param to specify count of creating new lines * console_previewsline - opposite of console_newline

How/where do you use these? Documentation entry is missing and there're no comments in the code.

Quoted 116 lines

---
Changes since original version:
- Fixed commit message

 drivers/video/cfb_console.c |   64

+++++++++++++++++++++++++++++++++++++++---- 1 file changed, 58 insertions(+), 6 deletions(-)

drivers/video/cfb_console.c +58 -6
index 0d1e6b2..43eb994 100644
@@ -771,9 +771,54 @@ static void console_back(void)
 	}
 }
 
-static void console_newline(void)
+static void console_cursor_fix(void)
 {
-	console_row++;
+	if (console_row < 0)
+		console_row = 0;
+	if (console_row >= CONSOLE_ROWS)
+		console_row = CONSOLE_ROWS-1;
+	if (console_col < 0)
+		console_col = 0;
+	if (console_col >= CONSOLE_COLS)
+		console_col = CONSOLE_COLS-1;
+}
+
+static void console_cursor_up(int n)
+{
+	console_row -= n;
+	console_cursor_fix();
+}
+
+static void console_cursor_down(int n)
+{
+	console_row += n;
+	console_cursor_fix();
+}
+
+static void console_cursor_left(int n)
+{
+	console_col -= n;
+	console_cursor_fix();
+}
+
+static void console_cursor_right(int n)
+{
+	console_col += n;
+	console_cursor_fix();
+}
+
+static void console_cursor_set_position(int row, int col)
+{
+	if (console_row != -1)
+		console_row = row;
+	if (console_col != -1)
+		console_col = col;
+	console_cursor_fix();
+}
+
+static void console_newline(int n)
+{
+	console_row += n;
 	console_col = 0;
 
 	/* Check if we need to scroll the terminal */
@@ -782,10 +827,17 @@ static void console_newline(void)
 		console_scrollup();
 
 		/* Decrement row number */
-		console_row--;
+		console_row = CONSOLE_ROWS-1;
 	}
 }
 
+static void console_previewsline(int n)
+{
+	/* FIXME: also scroll terminal ? */
+	console_row -= n;
+	console_cursor_fix();
+}
+
 static void console_cr(void)
 {
 	console_col = 0;
@@ -804,7 +856,7 @@ void video_putc(const char c)
 
 	case '\n':		/* next line */
 		if (console_col || (!console_col && nl))
-			console_newline();
+			console_newline(1);
 		nl = 1;
 		break;
 
@@ -813,7 +865,7 @@ void video_putc(const char c)
 		console_col &= ~0x0007;
 
 		if (console_col >= CONSOLE_COLS)
-			console_newline();
+			console_newline(1);
 		break;
 
 	case 8:		/* backspace */
@@ -827,7 +879,7 @@ void video_putc(const char c)
 
 		/* check for newline */
 		if (console_col >= CONSOLE_COLS) {
-			console_newline();
+			console_newline(1);
 			nl = 0;
 		}
 	}
#136 lore raw

PATCH v2 5/11 cfb_console: Add functions for moving with cursor

Quoted 10 lines · On Sunday 29 April 2012 00:18:21 Marek Vasut wrote:

Dear Pali Roh?r,

Quoted 8 lines

* console_cursor_fix - fix cursor position (check for out of screen) * console_cursor_up, console_cursor_down, console_cursor_left,>
console_cursor_right, console_cursor_set_position for change cursor>
position * console_newline - added param to specify count of creating new lines * console_previewsline - opposite of console_newline

Quoted 3 lines

How/where do you use these? Documentation entry is missing and there're no comments in the code.

In ansi terminal.

Signature · 9 lines
Pali Roh?r
pali.rohar at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20120429/8f5ae7f2/attachment.pgp>
#137 lore raw

PATCH v2 5/11 cfb_console: Add functions for moving with cursor

Dear Pali Roh?r,

Quoted 10 lines · On Sunday 29 April 2012 00:18:21 Marek Vasut wrote:
Quoted 9 lines

Dear Pali Roh?r,

Quoted 7 lines

* console_cursor_fix - fix cursor position (check for out of screen) * console_cursor_up, console_cursor_down, console_cursor_left,>

console_cursor_right, console_cursor_set_position for change cursor>

Quoted 8 lines
Quoted 6 lines
Quoted 3 lines

position * console_newline - added param to specify count of creating new lines * console_previewsline - opposite of console_newline

How/where do you use these? Documentation entry is missing and there're no comments in the code.

In ansi terminal.

Mailing list isn't really the proper place for documentation ;-)

Best regards,
Marek Vasut

#138 lore raw

PATCH v2 5/11 cfb_console: Add functions for moving with cursor

In reply to Pali Rohár

Dear Pali =?ISO-8859-1?Q?Roh=E1r?=,

Quoted 5 lines · In message <1704132.kQI9AKOLjq@pali> you wrote:
Quoted 3 lines

How/where do you use these? Documentation entry is missing and there're no comments in the code.

In ansi terminal.

I cannot parse this. Where is the documentation?

Best regards,

Wolfgang Denk

Signature · 5 lines
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
A direct quote from the Boss: "We passed over a lot of good people to
get the ones we hired."
#139 lore raw

PATCH v3 5/11 cfb_console: Add console_clear_line function

In reply to Pali Rohár

From: Pali Roh?r <[email protected]>

console_clear_line() clears part of specified line or the full line.

---
Changes since v2:
- remove console_clear() from this patch, it should be added in another patch which uses this function
- fix arguments for hw accelerated fill and drop FIXME comments
- fix console_clear_line() end argument, as we start counting columns from zero
- fix coding style
- extend comments
- tested the code with hw accelerated fill

 drivers/video/cfb_console.c |   49 +++++++++++++++++++++++++++++++-----------
 1 files changed, 36 insertions(+), 13 deletions(-)
drivers/video/cfb_console.c +36 -13
index 51ea167..6fa61d2 100644
@@ -683,6 +683,41 @@ static void memcpyl(int *d, int *s, int c)
 }
 #endif
 
+static void console_clear_line(int line, int begin, int end)
+{
+#ifdef VIDEO_HW_RECTFILL
+	video_hw_rectfill(VIDEO_PIXEL_SIZE,		/* bytes per pixel */
+			  VIDEO_FONT_WIDTH * begin,	/* dest pos x */
+			  video_logo_height +
+			  VIDEO_FONT_HEIGHT * line,	/* dest pos y */
+			  VIDEO_FONT_WIDTH * (end - begin + 1), /* fr. width */
+			  VIDEO_FONT_HEIGHT,		/* frame height */
+			  bgx				/* fill color */
+		);
+#else
+	if (begin == 0 && (end + 1) == CONSOLE_COLS) {
+		memsetl(CONSOLE_ROW_FIRST +
+			CONSOLE_ROW_SIZE * line,	/* offset of row */
+			CONSOLE_ROW_SIZE >> 2,		/* length of row */
+			bgx				/* fill color */
+		);
+	} else {
+		void *offset;
+		int i, size;
+
+		offset = CONSOLE_ROW_FIRST +
+			 CONSOLE_ROW_SIZE * line +	/* offset of row */
+			 VIDEO_FONT_WIDTH *
+			 VIDEO_PIXEL_SIZE * begin;	/* offset of col */
+		size = VIDEO_FONT_WIDTH * VIDEO_PIXEL_SIZE * (end - begin + 1);
+		size >>= 2; /* length to end for memsetl() */
+		/* fill at col offset of i'th line using bgx as fill color */
+		for (i = 0; i < VIDEO_FONT_HEIGHT; i++)
+			memsetl(offset + i * VIDEO_LINE_LEN, size, bgx);
+	}
+#endif
+}
+
 static void console_scrollup(void)
 {
 	/* copy up rows ignoring the first one */
@@ -703,20 +738,8 @@ static void console_scrollup(void)
 	memcpyl(CONSOLE_ROW_FIRST, CONSOLE_ROW_SECOND,
 		CONSOLE_SCROLL_SIZE >> 2);
 #endif
-
 	/* clear the last one */
-#ifdef VIDEO_HW_RECTFILL
-	video_hw_rectfill(VIDEO_PIXEL_SIZE,	/* bytes per pixel */
-			  0,			/* dest pos x */
-			  VIDEO_VISIBLE_ROWS
-			  - VIDEO_FONT_HEIGHT,	/* dest pos y */
-			  VIDEO_VISIBLE_COLS,	/* frame width */
-			  VIDEO_FONT_HEIGHT,	/* frame height */
-			  CONSOLE_BG_COL	/* fill color */
-		);
-#else
-	memsetl(CONSOLE_ROW_LAST, CONSOLE_ROW_SIZE >> 2, CONSOLE_BG_COL);
-#endif
+	console_clear_line(CONSOLE_ROWS - 1, 0, CONSOLE_COLS - 1);
 }
 
 static void console_back(void)
Signature · 1 line
1.7.1
#140 lore raw

PATCH v3 5/11 cfb_console: Add console_clear_line function

Quoted 3 lines · On Sun, 20 May 2012 22:38:08 +0200 Anatolij Gustschin <[email protected]> wrote:

From: Pali Roh?r <[email protected]>

console_clear_line() clears part of specified line or the full line.

The patch numbering is wrong, actually it should be [PATCH v3 04/11]. Sorry about that.

Thanks,
Anatolij

#141 lore raw

PATCH v3 5/11 cfb_console: Add console_clear_line function

In reply to Anatolij Gustschin
Quoted 17 lines · On Sun, 20 May 2012 22:38:08 +0200 Anatolij Gustschin <[email protected]> wrote:

From: Pali Roh?r <[email protected]>

console_clear_line() clears part of specified line or the full line.

---
Changes since v2:
- remove console_clear() from this patch, it should be added in another patch which uses this function
- fix arguments for hw accelerated fill and drop FIXME comments
- fix console_clear_line() end argument, as we start counting columns from zero
- fix coding style
- extend comments
- tested the code with hw accelerated fill

Quoted 2 lines
 drivers/video/cfb_console.c |   49 +++++++++++++++++++++++++++++++-----------
 1 files changed, 36 insertions(+), 13 deletions(-)

Applied to u-boot-video/master. Thanks!

Anatolij

#142 lore raw

PATCH v2 6/11 cfb_console: Add support for some ANSI terminal escape codes

In reply to Pali Rohár

* This patch add support for move cursor and reverse colors via ANSI espace codes in cfb_console driver
* ANSI escape codes can be enabled/disabled via CONFIG_CFB_CONSOLE_ANSI

---
Changes since v1:
- Added support ANSI code show/hide cursor
- Added info to README

Changes since original version:
- Fixed commit message

 README                      |    3 +
 drivers/video/cfb_console.c |  234 ++++++++++++++++++++++++++++++++++++++++++-
 2 files changed, 234 insertions(+), 3 deletions(-)
README +3 -0
index 60ad9c2..4a610f7 100644
@@ -613,6 +613,9 @@ The following options need to be configured:
 						additional board info beside
 						the logo
 
+		When CONFIG_CFB_CONSOLE_ANSI is defined, console will have
+		ANSI terminal support. Needed for CONFIG_CMDLINE_EDITING.
+
 		When CONFIG_CFB_CONSOLE is defined, video console is
 		default i/o. Serial console can be forced with
 		environment 'console=serial'.
drivers/video/cfb_console.c +231 -3

261 lines not on this page · raw message

Signature · 1 line
1.7.9.5
#143 lore raw

PATCH v2 6/11 cfb_console: Add support for some ANSI terminal escape codes

Dear Pali Roh?r,

Quoted 101 lines

* This patch add support for move cursor and reverse colors via ANSI espace codes in cfb_console driver
* ANSI escape codes can be enabled/disabled via CONFIG_CFB_CONSOLE_ANSI

---
Changes since v1:
- Added support ANSI code show/hide cursor
- Added info to README

Changes since original version:
- Fixed commit message

 README                      |    3 +
 drivers/video/cfb_console.c |  234

++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 234 insertions(+), 3 deletions(-)

README +3 -0
index 60ad9c2..4a610f7 100644
@@ -613,6 +613,9 @@ The following options need to be configured:
 						additional board info beside
 						the logo
 
+		When CONFIG_CFB_CONSOLE_ANSI is defined, console will have
+		ANSI terminal support. Needed for CONFIG_CMDLINE_EDITING.
+
 		When CONFIG_CFB_CONSOLE is defined, video console is
 		default i/o. Serial console can be forced with
 		environment 'console=serial'.
drivers/video/cfb_console.c +34 -3
index 43eb994..c9f9765 100644
@@ -377,6 +377,11 @@ static int console_row;		/* cursor row */
 
 static u32 eorx, fgx, bgx;	/* color pats */
 
+static char ansi_buf[10] = { 0, };
+static int ansi_buf_size;
+static int ansi_colors_need_revert;
+static int ansi_cursor_hidden;
+
 static const int video_font_draw_table8[] = {
 	0x00000000, 0x000000ff, 0x0000ff00, 0x0000ffff,
 	0x00ff0000, 0x00ff00ff, 0x00ffff00, 0x00ffffff,
@@ -602,6 +607,14 @@ static void video_putchar(int xx, int yy, unsigned
 char c) video_drawchars(xx, yy + video_logo_height, &c, 1);
 }
 
+static void console_swap_colors(void)
+{
+	eorx = fgx;
+	fgx = bgx;
+	bgx = eorx;
+	eorx = fgx ^ bgx;
+}
+
 #if defined(CONFIG_CONSOLE_CURSOR) || defined(CONFIG_VIDEO_SW_CURSOR)
 static void video_set_cursor(void)
 {
@@ -843,11 +856,12 @@ static void console_cr(void)
 	console_col = 0;
 }
 
-void video_putc(const char c)
+static void parse_putc(const char c)
 {
 	static int nl = 1;
 
-	CURSOR_OFF;
+	if (!ansi_cursor_hidden)
+		CURSOR_OFF;
 
 	switch (c) {
 	case 13:		/* back to first column */
@@ -883,7 +897,221 @@ void video_putc(const char c)
 			nl = 0;
 		}
 	}
-	CURSOR_SET;
+
+	if (!ansi_cursor_hidden)
+		CURSOR_SET;
+}
+
+void video_putc(const char c)
+{
+#ifdef CONFIG_CFB_CONSOLE_ANSI
+	int i;
+
+	if (c == 27) {
+		for (i = 0; i < ansi_buf_size; ++i)
+			parse_putc(ansi_buf[i]);
+		ansi_buf[0] = 27;
+		ansi_buf_size = 1;
+		return;
+	}
+

drivers/video/cfb_console.c void video_putc(const char c) · line 927

Quoted 10 lines
drivers/video/cfb_console.c +10 -0
+	if (ansi_buf_size > 0) {
+		/*
+		0 - ESC
+		1 - [
+		2 - num1
+		3 - ..
+		4 - ;
+		5 - num2
+		6 - ..
+		7 - cchar

wrong comment ... did you even run these patches through checkpatch? Run them and resubmit please, I'm ending my review here.

Quoted 190 lines
drivers/video/cfb_console.c +187 -0
+		*/
+		int next = 0;
+
+		int flush = 0;
+		int fail = 0;
+
+		int num1 = 0;
+		int num2 = 0;
+		int cchar = 0;
+
+		ansi_buf[ansi_buf_size++] = c;
+
+		if (ansi_buf_size >= sizeof(ansi_buf))
+			fail = 1;
+
+		for (i = 0; i < ansi_buf_size; ++i) {
+			if (fail)
+				break;
+
+			switch (next) {
+			case 0:
+				if (ansi_buf[i] == 27)
+					next = 1;
+				else
+					fail = 1;
+				break;
+
+			case 1:
+				if (ansi_buf[i] == '[')
+					next = 2;
+				else
+					fail = 1;
+				break;
+
+			case 2:
+				if (ansi_buf[i] >= '0' && ansi_buf[i] <= '9') {
+					num1 = ansi_buf[i]-'0';
+					next = 3;
+				} else if (ansi_buf[i] != '?') {
+					--i;
+					num1 = 1;
+					next = 4;
+				}
+				break;
+
+			case 3:
+				if (ansi_buf[i] >= '0' && ansi_buf[i] <= '9') {
+					num1 *= 10;
+					num1 += ansi_buf[i]-'0';
+				} else {
+					--i;
+					next = 4;
+				}
+				break;
+
+			case 4:
+				if (ansi_buf[i] != ';') {
+					--i;
+					next = 7;
+				} else
+					next = 5;
+				break;
+
+			case 5:
+				if (ansi_buf[i] >= '0' && ansi_buf[i] <= '9') {
+					num2 = ansi_buf[i]-'0';
+					next = 6;
+				} else
+					fail = 1;
+				break;
+
+			case 6:
+				if (ansi_buf[i] >= '0' && ansi_buf[i] <= '9') {
+					num2 *= 10;
+					num2 += ansi_buf[i]-'0';
+				} else {
+					--i;
+					next = 7;
+				}
+				break;
+
+			case 7:
+				if ((ansi_buf[i] >= 'A' && ansi_buf[i] <= 'H')
+					|| ansi_buf[i] == 'J'
+					|| ansi_buf[i] == 'K'
+					|| ansi_buf[i] == 'h'
+					|| ansi_buf[i] == 'l'
+					|| ansi_buf[i] == 'm') {
+					cchar = ansi_buf[i];
+					flush = 1;
+				} else
+					fail = 1;
+				break;
+			}
+		}
+
+		if (fail) {
+			for (i = 0; i < ansi_buf_size; ++i)
+				parse_putc(ansi_buf[i]);
+			ansi_buf_size = 0;
+			return;
+		}
+
+		if (flush) {
+			if (!ansi_cursor_hidden)
+				CURSOR_OFF;
+			ansi_buf_size = 0;
+			switch (cchar) {
+			case 'A':
+				/* move cursor num1 rows up */
+				console_cursor_up(num1);
+				break;
+			case 'B':
+				/* move cursor num1 rows down */
+				console_cursor_down(num1);
+				break;
+			case 'C':
+				/* move cursor num1 columns forward */
+				console_cursor_right(num1);
+				break;
+			case 'D':
+				/* move cursor num1 columns back */
+				console_cursor_left(num1);
+				break;
+			case 'E':
+				/* move cursor num1 rows up at begin of row */
+				console_previewsline(num1);
+				break;
+			case 'F':
+				/* move cursor num1 rows down at begin of row */
+				console_newline(num1);
+				break;
+			case 'G':
+				/* move cursor to column num1 */
+				console_cursor_set_position(-1, num1-1);
+				break;
+			case 'H':
+				/* move cursor to row num1, column num2 */
+				console_cursor_set_position(num1-1, num2-1);
+				break;
+			case 'J':
+				/* clear console and move cursor to 0, 0 */
+				console_clear();
+				console_cursor_set_position(0, 0);
+				break;
+			case 'K':
+				/* clear line */
+				if (num1 == 0)
+					console_clear_line(console_row,
+							console_col,
+							CONSOLE_COLS-1);
+				else if (num1 == 1)
+					console_clear_line(console_row,
+							0, console_col);
+				else
+					console_clear_line(console_row,
+							0, CONSOLE_COLS-1);
+				break;
+			case 'h':
+				ansi_cursor_hidden = 0;
+				break;
+			case 'l':
+				ansi_cursor_hidden = 1;
+				break;
+			case 'm':
+				if (num1 == 0) { /* reset swapped colors */
+					if (ansi_colors_need_revert) {
+						console_swap_colors();
+						ansi_colors_need_revert = 0;
+					}
+				} else if (num1 == 7) { /* once swap colors */
+					if (!ansi_colors_need_revert) {
+						console_swap_colors();
+						ansi_colors_need_revert = 1;
+					}
+				}
+				break;
+			}
+			if (!ansi_cursor_hidden)
+				CURSOR_SET;
+		}
+	} else {
+		parse_putc(c);
+	}
+#else
+	parse_putc(c);
+#endif
 }
 
 void video_puts(const char *s)
#144 lore raw

PATCH v2 6/11 cfb_console: Add support for some ANSI terminal escape codes

Quoted 7 lines · On Sunday 29 April 2012 00:19:03 Marek Vasut wrote:
Quoted 7 lines
drivers/video/cfb_console.c +7 -0
+
+	if (ansi_buf_size > 0) {
+		/*
+		0 - ESC
+		1 - [
+		2 - num1
+		3 - ..
Quoted 9 lines

drivers/video/cfb_console.c void video_putc(const char c) · line 927

Quoted 4 lines
drivers/video/cfb_console.c +4 -0
+		4 - ;
+		5 - num2
+		6 - ..
+		7 - cchar

wrong comment ... did you even run these patches through checkpatch? Run them and resubmit please, I'm ending my review here.

Yes, I all patches except first is OK for checkpatch. It show no errors and no warnings.

Signature · 9 lines
Pali Roh?r
pali.rohar at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20120429/b81516de/attachment.pgp>
#145 lore raw

PATCH v2 6/11 cfb_console: Add support for some ANSI terminal escape codes

Dear Pali =?ISO-8859-1?Q?Roh=E1r?=,

Quoted 16 lines · In message <3284404.3VX1zBQJtc@pali> you wrote:
Quoted 15 lines

drivers/video/cfb_console.c void video_putc(const char c) · line 927

Quoted 11 lines
drivers/video/cfb_console.c +10 -0
+	if (ansi_buf_size > 0) {
+		/*
+		0 - ESC
+		1 - [
+		2 - num1
+		3 - ..
+		4 - ;
+		5 - num2
+		6 - ..
+		7 - cchar

wrong comment ... did you even run these patches through checkpatch? Run them and resubmit please, I'm ending my review here.

Quoted 2 lines

Yes, I all patches except first is OK for checkpatch. It show no errors and no warnings.

Nevertheless, this violates the CodingStyle (see entry for multiline comments); please fix globally.

Best regards,

Wolfgang Denk

Signature · 4 lines
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
Two wrongs don't make a right, but three rights make a left.
#146 lore raw

PATCH v2 7/11 cfb_console: Ignore bell character

In reply to Pali Rohár
---
 drivers/video/cfb_console.c |    3 +++
 1 file changed, 3 insertions(+)
drivers/video/cfb_console.c +3 -0
index c9f9765..dae2178 100644
@@ -886,6 +886,9 @@ static void parse_putc(const char c)
 		console_back();
 		break;
 
+	case 7:		/* bell */
+		break;	/* ignored */
+
 	default:		/* draw the char */
 		video_putchar(console_col * VIDEO_FONT_WIDTH,
 			      console_row * VIDEO_FONT_HEIGHT, c);
Signature · 1 line
1.7.9.5
#148 lore raw

PATCH v2 8/11 video: cfb_console: flush dcache for frame buffer in DRAM

In reply to Pali Rohár

From: Anatolij Gustschin <[email protected]>

Data cache flushing is required for frame buffer in RAM to fix the distorted console text output. Currently this text distortion is observed with cfb on beageboard and N900 when running with data cache enabled.

---
Changes since original version:
- Rebased on Nokia RX-51 patch series
- Call flush_cache in console_clear too

 drivers/video/cfb_console.c |   37 +++++++++++++++++++++++++++++++++++++
 1 file changed, 37 insertions(+)
drivers/video/cfb_console.c +37 -0
index dae2178..b8416d9 100644
@@ -360,6 +360,8 @@ void console_cursor(int state);
 extern void video_get_info_str(int line_number,	char *info);
 #endif
 
+DECLARE_GLOBAL_DATA_PTR;
+
 /* Locals */
 static GraphicDevice *pGD;	/* Pointer to Graphic array */
 
@@ -382,6 +384,8 @@ static int ansi_buf_size;
 static int ansi_colors_need_revert;
 static int ansi_cursor_hidden;
 
+static int cfb_do_flush_cache;
+
 static const int video_font_draw_table8[] = {
 	0x00000000, 0x000000ff, 0x0000ff00, 0x0000ffff,
 	0x00ff0000, 0x00ff00ff, 0x00ffff00, 0x00ffffff,
@@ -558,6 +562,8 @@ static void video_drawchars(int xx, int yy, unsigned char *s, int count)
 					SWAP32((video_font_draw_table32
 						[bits & 15][3] & eorx) ^ bgx);
 			}
+			if (cfb_do_flush_cache)
+				flush_cache((ulong)dest0, 32);
 			dest0 += VIDEO_FONT_WIDTH * VIDEO_PIXEL_SIZE;
 			s++;
 		}
@@ -634,6 +640,8 @@ static void video_invertchar(int xx, int yy)
 		for (x = firstx; x < lastx; x++) {
 			u8 *dest = (u8 *)(video_fb_address) + x + y;
 			*dest = ~*dest;
+			if (cfb_do_flush_cache)
+				flush_cache((ulong)dest, 4);
 		}
 	}
 }
@@ -709,6 +717,8 @@ static void console_clear(void)
 #else
 	memsetl(CONSOLE_ROW_FIRST, CONSOLE_SIZE, bgx);
 #endif
+	if (cfb_do_flush_cache)
+		flush_cache((ulong)CONSOLE_ROW_FIRST, CONSOLE_SIZE);
 }
 
 static void console_clear_line(int line, int begin, int end)
@@ -745,6 +755,8 @@ static void console_clear_line(int line, int begin, int end)
 				bgx			/* fill color */
 				);
 #endif
+	if (cfb_do_flush_cache)
+		flush_cache((ulong)CONSOLE_ROW_FIRST, CONSOLE_SIZE);
 }
 
 static void console_scrollup(void)
@@ -1972,6 +1984,29 @@ static void *video_logo(void)
 }
 #endif
 
+static int cfb_fb_is_in_dram(void)
+{
+	bd_t *bd = gd->bd;
+	ulong start, end;
+	int i;
+
+	for (i = 0; i < CONFIG_NR_DRAM_BANKS; ++i) {
+#if defined(CONFIG_ARM) || defined(CONFIG_AVR32) || defined(COFNIG_NDS32) || \
+defined(CONFIG_SANDBOX) || defined(CONFIG_X86)
+		start = bd->bi_dram[i].start;
+		end = bd->bi_dram[i].start + bd->bi_dram[i].size - 1;
+#else
+		start = bd->bi_memstart;
+		end = bd->bi_memsize;
+#endif
+
+		if ((ulong)video_fb_address >= start &&
+		    (ulong)video_fb_address < end)
+			return 1;
+	}
+	return 0;
+}
+
 static int video_init(void)
 {
 	unsigned char color8;
@@ -1985,6 +2020,8 @@ static int video_init(void)
 	video_init_hw_cursor(VIDEO_FONT_WIDTH, VIDEO_FONT_HEIGHT);
 #endif
 
+	cfb_do_flush_cache = cfb_fb_is_in_dram() && dcache_status();
+
 	/* Init drawing pats */
 	switch (VIDEO_DATA_FORMAT) {
 	case GDF__8BIT_INDEX:
Signature · 1 line
1.7.9.5
#149 lore raw

PATCH v2 9/11 New command clear: Clear the ANSI terminal

In reply to Pali Rohár

* Command can be enabled by CONFIG_CMD_CLEAR
* Added some ANSI escape codes definitions in common.h

---
Changes since original version:
- Renamed command clr to clear
- Use puts instead printf
- Move cursor to pos1,1
- Merged parts of patch "Add some ANSI escape codes definitions in common.h"

 common/Makefile          |    1 +
 common/cmd_clear.c       |   42 ++++++++++++++++++++++++++++++++++++++++++
 include/common.h         |    7 +++++++
 include/config_cmd_all.h |    1 +
 4 files changed, 51 insertions(+)
 create mode 100644 common/cmd_clear.c
common/Makefile +1 -0
index d9f10f3..0682a49 100644
@@ -70,6 +70,7 @@ COBJS-$(CONFIG_CMD_BEDBUG) += bedbug.o cmd_bedbug.o
 COBJS-$(CONFIG_CMD_BMP) += cmd_bmp.o
 COBJS-$(CONFIG_CMD_BOOTLDR) += cmd_bootldr.o
 COBJS-$(CONFIG_CMD_CACHE) += cmd_cache.o
+COBJS-$(CONFIG_CMD_CLEAR) += cmd_clear.o
 COBJS-$(CONFIG_CMD_CONSOLE) += cmd_console.o
 COBJS-$(CONFIG_CMD_CPLBINFO) += cmd_cplbinfo.o
 COBJS-$(CONFIG_DATAFLASH_MMC_SELECT) += cmd_dataflash_mmc_mux.o
common/cmd_clear.c new file +42 -0

42 lines not on this page · raw message

include/common.h +7 -0
index 4b5841e..26bfd95 100644
@@ -743,6 +743,13 @@ void	clear_ctrlc (void);	/* clear the Control-C condition */
 int	disable_ctrlc (int);	/* 1 to disable, 0 to enable Control-C detect */
 
 /*
+ * ANSI terminal
+ */
+
+#define ANSI_CURSOR_POSITION		"\e[%d;%dH"
+#define ANSI_CLEAR_CONSOLE		"\e[2J"
+
+/*
  * STDIO based functions (can always be used)
  */
 /* serial stuff */
include/config_cmd_all.h +1 -0
index 2c6b829..243098a 100644
@@ -24,6 +24,7 @@
 #define CONFIG_CMD_BSP		/* Board Specific functions	*/
 #define CONFIG_CMD_CACHE	/* icache, dcache		*/
 #define CONFIG_CMD_CDP		/* Cisco Discovery Protocol	*/
+#define CONFIG_CMD_CLEAR	/* ANSI clear screen command	*/
 #define CONFIG_CMD_CONSOLE	/* coninfo			*/
 #define CONFIG_CMD_DATE		/* support for RTC, date/time...*/
 #define CONFIG_CMD_DHCP		/* DHCP Support			*/
Signature · 1 line
1.7.9.5
#150 lore raw

PATCH v2 9/11 New command clear: Clear the ANSI terminal

Dear =?UTF-8?q?Pali=20Roh=C3=A1r?=,

Quoted 12 lines · In message <[email protected]> you wrote:

* Command can be enabled by CONFIG_CMD_CLEAR
* Added some ANSI escape codes definitions in common.h

---
Changes since original version:
- Renamed command clr to clear
- Use puts instead printf
- Move cursor to pos1,1
- Merged parts of patch "Add some ANSI escape codes definitions in common.h"

Quoted 6 lines
 common/Makefile          |    1 +
 common/cmd_clear.c       |   42 ++++++++++++++++++++++++++++++++++++++++++
 include/common.h         |    7 +++++++
 include/config_cmd_all.h |    1 +
 4 files changed, 51 insertions(+)
 create mode 100644 common/cmd_clear.c

Adding this to the config_cmd_all settings changes a _real_lot_ of board, most of which have zero interest in this function as they don't have any graphics display at all.

Also, the ANSI control sequences should go into a separate header file, not into common.h .

Thanks.

Best regards,

Wolfgang Denk

Signature · 5 lines
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
The use of COBOL cripples the mind; its teaching  should,  therefore,
be regarded as a criminal offense.                   - E. W. Dijkstra
#151 lore raw

PATCH v2 10/11 New config variable CONFIG_PREMONITOR

In reply to Pali Rohár

* if defined run env "premonitor" before Main Loop for Monitor Processing

---
Changes since v1:
- use run_command instead run_command2

Changes since original version:
- removed #ifdef CONFIG_PREMONITOR in main.c

 common/env_common.c |    3 +++
 common/main.c       |    4 ++++
 2 files changed, 7 insertions(+)
common/env_common.c +3 -0
index c33d22d..f1b2e3e 100644
@@ -92,6 +92,9 @@ const uchar default_environment[] = {
 #ifdef	CONFIG_PREBOOT
 	"preboot="	CONFIG_PREBOOT			"\0"
 #endif
+#ifdef	CONFIG_PREMONITOR
+	"premonitor="	CONFIG_PREMONITOR		"\0"
+#endif
 #ifdef	CONFIG_ROOTPATH
 	"rootpath="	CONFIG_ROOTPATH			"\0"
 #endif
common/main.c +4 -0
index 3b9e39a..aa5eb72 100644
@@ -397,6 +397,10 @@ void main_loop (void)
 #endif /* CONFIG_MENUKEY */
 #endif /* CONFIG_BOOTDELAY */
 
+	s = getenv("premonitor");
+	if (s)
+		run_command(s, 0);
+
 	/*
 	 * Main Loop for Monitor Command Processing
 	 */
Signature · 1 line
1.7.9.5
#152 lore raw

PATCH v2 10/11 New config variable CONFIG_PREMONITOR

Dear =?UTF-8?q?Pali=20Roh=C3=A1r?=,

Quoted 1 line · In message <[email protected]> you wrote:

* if defined run env "premonitor" before Main Loop for Monitor Processing

What would be the difference compared to "preboot" ?

Best regards,

Wolfgang Denk

Signature · 5 lines
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 bugs and then there are bugs.  And then there are bugs.
                                                    - Karl Lehenbauer
#153 lore raw

PATCH v2 10/11 New config variable CONFIG_PREMONITOR

Quoted 3 lines · On Saturday 28 April 2012 22:39:51 Wolfgang Denk wrote:

Dear =?UTF-8?q?Pali=20Roh=C3=A1r?=,

In message <1335634011-9104-11-git-send-email-

Quoted 4 lines · [email protected]> you wrote:
Quoted 2 lines

* if defined run env "premonitor" before Main Loop for Monitor Processing

What would be the difference compared to "preboot" ?

I need to run some script before monitor code but after menucmd. And preboot is called before bootdelay and also before menucmd. So I added premonitor which is called before monitor, but after bootdelay and menucmd.

Signature · 9 lines
Pali Roh?r
pali.rohar at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20120429/10a79b53/attachment.pgp>
#154 lore raw

PATCH v2 10/11 New config variable CONFIG_PREMONITOR

Dear Pali =?ISO-8859-1?Q?Roh=E1r?=,

Quoted 5 lines · In message <1886523.MLHYlDJPrM@pali> you wrote:

I need to run some script before monitor code but after menucmd. And preboot is called before bootdelay and also before menucmd. So I added premonitor which is called before monitor, but after bootdelay and menucmd.

What do you mean "after menucmd"? If you use a menu, why not run thse actions as part of the menu selected commands?

I do not want to add a growing list of locations in common code just because single boards feel they ned to run commands here or there.

Best regards,

Wolfgang Denk

Signature · 6 lines
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
As far as the laws of mathematics refer to reality, they are not cer-
tain, and as far as they are certain, they do not refer  to  reality.
                                                   -- Albert Einstein
#155 lore raw

PATCH v2 11/11 New board support: Nokia RX-51 aka N900

In reply to Pali Rohár

This board definition results in a u-boot.bin which can be chainloaded from NOLO in qemu or on a real N900. It does very little hardware config because NOLO has already configured the board. Only needed is enabling internal eMMC memory via twl4030 regulator which is not enabled by NOLO.

NOLO is expecting a kernel image and will treat any image it finds in onenand as such. This u-boot is intended to be flashed to the N900 like a kernel. In order to transparently boot the original kernel, it will be appended to u-boot.bin at 0x40000. NOLO will load the entire image into memory and execute u-boot, which saves the ATAGs set by NOLO. Then the bootscripts will attempt to load uImage or boot.scr from a fat or ext2 filesystem in external SD card or internal eMMC memory. If this fails or keyboard is closed the appended kernel image will be booted using the stored ATAGs (see boot order).

There is support for hardware watchdog. It is started by NOLO so u-boot must kick watchdog to prevent reboot device (but not very often, max every 2 seconds). There is also support for framebuffer display output with ANSI espace codes and the N900 HW keyboard input. USB tty works but is disabled because it prevents the current Maemo kernel from booting.

Based on previous work by: Alistair Buxton <[email protected]>

Default boot order:

* 0. if keyboard is closed boot automatically attached kernel image
* 1. try boot from external SD card
* 2. try boot from internal eMMC memory
* 3. try boot from attached kernel image

Boot from SD or eMMC in this order:

* find boot.scr on first fat partition
* find uImage on first fat parition
* same order for 2. - 4. fat partition

* find boot.scr on first ext2 partition
* find uImage on first ext2 parition
* same order for 2. - 4. ext2 partition

Available additional commands/variables:

* run sercon - Use serial port for control
* run usbcon - Use usbtty for control
* run vgacon - Use framebuffer and HW keyboard for control (default)

* run sdboot - Boot from external SD card (see boot order)
* run emmcboot - Boot from internal eMMC memory (see boot order)
* run attachboot - Boot attached kernel image (attached to U-Boot binary)

* run scriptload - Load boot script ${mmcscriptfile}
* run scriptboot - Run loaded boot script
* run kernload - Load kernel image ${mmckernfile}
* run initrdload - Load initrd image ${mmcinitrdfile}
* run kernboot - Boot loaded kernel image
* run kerninitrdboot - Boot loaded kernel image with loaded initrd image

* run trymmcscriptboot - Try to load and boot script ${mmcscriptfile}
* run trymmckernboot - Try to load and boot kernel image ${mmckernfile}
* run trymmckerninitrdboot - Try to load and boot kernel image ${mmckernfile}

                              with initrd image ${mmcinitrdfile}

Variables for loading files from mmc:

* mmc ${mmcnum} (0 - external, 1 - internal)
* partition number ${mmcpart} (1 - 4)
* parition type ${mmctype} (fat, ext2)

---
Changes since v1:
- Set correct configs for Memory Map
- Enable passing memory tag to kernel atags
- Use gpio input command for detecting keyboard slide
- Restore powerbus state after calling twl4030 regulator code
- Renamed command noloboot to attachboot
- Atag address must be always 0x80000100, removed code from lowlevel
- Added usb vendor, product id and product name
- Enabled command line editing
- Fixed keymap and cursor keys

Changes since original version:
- Removed Makefile targets: clean and distclean
- Rewrited bootcommand and env variables in nokia_rx51.h
- Removed useless CONFIG defines in nokia_rx51.h
- Disable L2 cache with CONFIG_SYS_L2CACHE_OFF - fixed battery draining
- Added onenand support (default disabled due to big u-boot size)
- Moved inlined asm code to new file lowlevel_init.S
- Fixed commit message

 board/nokia/rx51/Makefile        |   46 +++++
 board/nokia/rx51/lowlevel_init.S |   71 +++++++
 board/nokia/rx51/rx51.c          |  380 ++++++++++++++++++++++++++++++++++++++
 board/nokia/rx51/rx51.h          |  378 +++++++++++++++++++++++++++++++++++++
 boards.cfg                       |    1 +
 include/configs/nokia_rx51.h     |  373 +++++++++++++++++++++++++++++++++++++
 6 files changed, 1249 insertions(+)
 create mode 100644 board/nokia/rx51/Makefile
 create mode 100644 board/nokia/rx51/lowlevel_init.S
 create mode 100644 board/nokia/rx51/rx51.c
 create mode 100644 board/nokia/rx51/rx51.h
 create mode 100644 include/configs/nokia_rx51.h
board/nokia/rx51/Makefile new file +46 -0
new file mode 100644
index 0000000..86fb48c
@@ -0,0 +1,46 @@
+#
+# (C) Copyright 2000, 2001, 2002
+# Wolfgang Denk, DENX Software Engineering, wd at denx.de.
+#
+# See file CREDITS for list of people who contributed to this
+# project.
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of
+# the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+# MA 02111-1307 USA
+#
+
+include $(TOPDIR)/config.mk
+
+LIB	= $(obj)lib$(BOARD).o
+
+COBJS-y	:= $(BOARD).o
+SOBJS-y := lowlevel_init.o
+
+COBJS	:= $(sort $(COBJS-y))
+SOBJS	:= $(sort $(SOBJS-y))
+SRCS	:= $(COBJS:.o=.c) $(SOBJS:.o=.S)
+OBJS	:= $(addprefix $(obj),$(COBJS)) $(addprefix $(obj),$(SOBJS))
+
+$(LIB):	$(obj).depend $(OBJS)
+	$(call cmd_link_o_target, $(OBJS))
+
+#########################################################################
+
+# defines $(obj).depend target
+include $(SRCTREE)/rules.mk
+
+sinclude $(obj).depend
+
+#########################################################################
board/nokia/rx51/lowlevel_init.S new file +71 -0

71 lines not on this page · raw message

board/nokia/rx51/rx51.c new file +380 -0

380 lines not on this page · raw message

board/nokia/rx51/rx51.h new file +378 -0

378 lines not on this page · raw message

boards.cfg +1 -0
index 3cf75c3..9c78a7b 100644
@@ -214,6 +214,7 @@ devkit8000                   arm         armv7       devkit8000          timll
 mcx                          arm         armv7       mcx                 htkw           omap3
 tricorder                    arm         armv7       tricorder           corscience     omap3
 twister                      arm         armv7       twister             technexion     omap3
+nokia_rx51                   arm         armv7       rx51                nokia          omap3
 omap4_panda                  arm         armv7       panda               ti             omap4
 omap4_sdp4430                arm         armv7       sdp4430             ti             omap4
 omap5_evm                    arm         armv7       omap5_evm           ti		omap5
include/configs/nokia_rx51.h new file +373 -0

373 lines not on this page · raw message

Signature · 1 line
1.7.9.5
#156 lore raw

PATCH v2 11/11 New board support: Nokia RX-51 aka N900

Dear =?UTF-8?q?Pali=20Roh=C3=A1r?=,

Quoted 4 lines · In message <[email protected]> you wrote:

VGhpcyBib2FyZCBkZWZpbml0aW9uIHJlc3VsdHMgaW4gYSB1LWJvb3QuYmluIHdoaWNoIGNhbiBi ZSBjaGFpbmxvYWRlZApmcm9tIE5PTE8gaW4gcWVtdSBvciBvbiBhIHJlYWwgTjkwMC4gSXQgZG9l cyB2ZXJ5IGxpdHRsZSBoYXJkd2FyZSBjb25maWcKYmVjYXVzZSBOT0xPIGhhcyBhbHJlYWR5IGNv bmZpZ3VyZWQgdGhlIGJvYXJkLiBPbmx5IG5lZWRlZCBpcyBlbmFibGluZwppbnRlcm5hbCBlTU1D

...

Please stop sending base64 encoded patches! Send plain text only!

Quoted 60 lines

This board definition results in a u-boot.bin which can be chainloaded from NOLO in qemu or on a real N900. It does very little hardware config because NOLO has already configured the board. Only needed is enabling internal eMMC memory via twl4030 regulator which is not enabled by NOLO.

NOLO is expecting a kernel image and will treat any image it finds in onenand as such. This u-boot is intended to be flashed to the N900 like a kernel. In order to transparently boot the original kernel, it will be appended to u-boot.bin at 0x40000. NOLO will load the entire image into memory and execute u-boot, which saves the ATAGs set by NOLO. Then the bootscripts will attempt to load uImage or boot.scr from a fat or ext2 filesystem in external SD card or internal eMMC memory. If this fails or keyboard is closed the appended kernel image will be booted using the stored ATAGs (see boot order).

There is support for hardware watchdog. It is started by NOLO so u-boot must kick watchdog to prevent reboot device (but not very often, max every 2 seconds). There is also support for framebuffer display output with ANSI espace codes and the N900 HW keyboard input. USB tty works but is disabled because it prevents the current Maemo kernel from booting.

Based on previous work by: Alistair Buxton <[email protected]>

Default boot order:

* 0. if keyboard is closed boot automatically attached kernel image
* 1. try boot from external SD card
* 2. try boot from internal eMMC memory
* 3. try boot from attached kernel image

Boot from SD or eMMC in this order:

* find boot.scr on first fat partition
* find uImage on first fat parition
* same order for 2. - 4. fat partition

* find boot.scr on first ext2 partition
* find uImage on first ext2 parition
* same order for 2. - 4. ext2 partition

Available additional commands/variables:

* run sercon - Use serial port for control
* run usbcon - Use usbtty for control
* run vgacon - Use framebuffer and HW keyboard for control (default)

* run sdboot - Boot from external SD card (see boot order)
* run emmcboot - Boot from internal eMMC memory (see boot order)
* run attachboot - Boot attached kernel image (attached to U-Boot binary)

* run scriptload - Load boot script ${mmcscriptfile}
* run scriptboot - Run loaded boot script
* run kernload - Load kernel image ${mmckernfile}
* run initrdload - Load initrd image ${mmcinitrdfile}
* run kernboot - Boot loaded kernel image
* run kerninitrdboot - Boot loaded kernel image with loaded initrd image

* run trymmcscriptboot - Try to load and boot script ${mmcscriptfile}
* run trymmckernboot - Try to load and boot kernel image ${mmckernfile}
* run trymmckerninitrdboot - Try to load and boot kernel image ${mmckernfile}

Quoted 7 lines
                              with initrd image ${mmcinitrdfile}

Variables for loading files from mmc:

* mmc ${mmcnum} (0 - external, 1 - internal)
* partition number ${mmcpart} (1 - 4)
* parition type ${mmctype} (fat, ext2)

While it is a good idea to provide documentation, this is the wrong place for it. Here in the commit message is about the last place where most of the users will search for it. Please provide a README for this board - either in the board directory, or in doc/

BUt also keep in mind that this is a maintenance problem - who will make sure that this documentation gets updated when someone changes to code?

Quoted 4 lines
 board/nokia/rx51/Makefile        |   46 +++++
 board/nokia/rx51/lowlevel_init.S |   71 +++++++
 board/nokia/rx51/rx51.c          |  380 ++++++++++++++++++++++++++++++++++++++
 board/nokia/rx51/rx51.h          |  378 +++++++++++++++++++++++++++++++++++++
Quoted 8 lines
 boards.cfg                       |    1 +
 include/configs/nokia_rx51.h     |  373 +++++++++++++++++++++++++++++++++++++
 6 files changed, 1249 insertions(+)
 create mode 100644 board/nokia/rx51/Makefile
 create mode 100644 board/nokia/rx51/lowlevel_init.S
 create mode 100644 board/nokia/rx51/rx51.c
 create mode 100644 board/nokia/rx51/rx51.h
 create mode 100644 include/configs/nokia_rx51.h

Entry in MAINTAINERS missing.

include/configs/nokia_rx51.h line 83

Quoted 7 lines
include/configs/nokia_rx51.h new file +7 -0
+/*
+ * Size of malloc() pool
+ */
+#define CONFIG_ENV_SIZE			(128 << 10)	/* 128 KiB Sector */
+#define CONFIG_UBI_SIZE			(512 << 10)	/* 512 KiB Sector */
+#define CONFIG_SYS_MALLOC_LEN		(CONFIG_ENV_SIZE + CONFIG_UBI_SIZE + \
+					(128 << 10))

Comment appears to be misplaced.

include/configs/nokia_rx51.h line 126

Quoted 4 lines
include/configs/nokia_rx51.h new file +4 -0
+/* Maemo kernel 2.6.28 will crash if u-boot enable usb tty */
+/*
+#define CONFIG_USB_TTY
+*/

Please remove dead code.

include/configs/nokia_rx51.h line 137

Quoted 3 lines
include/configs/nokia_rx51.h new file +3 -0
+/* OneNand support is disabled, because U-Boot image is too big */
+/* Uncomment next line to enable it */
+/* #define ONENAND_SUPPORT */

Incorrect multiline comment / please remove dead code.

Best regards,

Wolfgang Denk

Signature · 5 lines
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
A year spent in artificial intelligence is enough to make one believe
in God.
#157 lore raw

PATCH v2 11/11 New board support: Nokia RX-51 aka N900

Quoted 3 lines · On Saturday 28 April 2012 23:32:25 Wolfgang Denk wrote:

Please stop sending base64 encoded patches! Send plain text
only!

I used git format-patch and git send-email. Is there easy way how to tell this to git?

Quoted 6 lines

While it is a good idea to provide documentation, this is the wrong place for it. Here in the commit message is about the last place where most of the users will search for it. Please provide a README for this board - either in the board directory, or in doc/

Is doc/README.nokia_rx51 correct place?

Quoted 21 lines

BUt also keep in mind that this is a maintenance problem - who will make sure that this documentation gets updated when someone changes to code?

Quoted 7 lines
 board/nokia/rx51/Makefile        |   46 +++++
 board/nokia/rx51/lowlevel_init.S |   71 +++++++
 board/nokia/rx51/rx51.c          |  380
 ++++++++++++++++++++++++++++++++++++++
 board/nokia/rx51/rx51.h          |  378
 +++++++++++++++++++++++++++++++++++++ boards.cfg           
            |    1 +
Quoted 8 lines
 include/configs/nokia_rx51.h     |  373
 +++++++++++++++++++++++++++++++++++++ 6 files changed, 1249
 insertions(+)
 create mode 100644 board/nokia/rx51/Makefile
 create mode 100644 board/nokia/rx51/lowlevel_init.S
 create mode 100644 board/nokia/rx51/rx51.c
 create mode 100644 board/nokia/rx51/rx51.h
 create mode 100644 include/configs/nokia_rx51.h
Quoted 1 line

Entry in MAINTAINERS missing.

Ok, I will add myself to MAINTAINERS.

Quoted 5 lines

include/configs/nokia_rx51.h

Quoted 5 lines
include/configs/nokia_rx51.h new file +4 -0
+/*
+ * Size of malloc() pool
+ */
+#define CONFIG_ENV_SIZE			(128 << 10)	/* 128 KiB 

Sector */

Quoted 1 line
Quoted 1 line

+#define CONFIG_UBI_SIZE (512 << 10) /* 512 KiB

Sector */

Quoted 4 lines
Quoted 2 lines

+#define CONFIG_SYS_MALLOC_LEN (CONFIG_ENV_SIZE +
CONFIG_UBI_SIZE + \ + (128 << 10))

Comment appears to be misplaced.

Ok, comment will be removed.

Quoted 8 lines

include/configs/nokia_rx51.h line 126

Quoted 6 lines

+/* Maemo kernel 2.6.28 will crash if u-boot enable usb tty */

include/configs/nokia_rx51.h new file +3 -0
+/*
+#define CONFIG_USB_TTY
+*/

Please remove dead code.

usb tty is usefull for debuging u-boot. because this device does not have easy access to serial console, usb tty is only option how to connect u-boot terminal to pc. but default (and still only one working on this device) kernel crash when u-boot enable usb tty. I want to have usb tty option in u-boot and belive that one day will be some upstream linux kernel with fixed usb drivers working on nokia n900.

Quoted 7 lines
Quoted 4 lines

+/* OneNand support is disabled, because U-Boot image is too big */ +/* Uncomment next line to enable it */
+/* #define ONENAND_SUPPORT */

Incorrect multiline comment / please remove dead code.

How to write correct comment?

Also onenand code working fine, but when is enabled u-boot binary is too big and cannot be flashed into this device. But for testing in qemu or booting u-boot with enabled onenand support stored in mmc via flashed u-boot (with disabled onenand support) working too.

Is there way how to decrease u-boot binary size?

Quoted 4 lines

Best regards,

Wolfgang Denk

Signature · 9 lines
Pali Roh?r
pali.rohar at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20120429/16f3ebf8/attachment.pgp>
#158 lore raw

PATCH v2 11/11 New board support: Nokia RX-51 aka N900

Dear Pali Roh?r,

Quoted 75 lines · On Saturday 28 April 2012 23:32:25 Wolfgang Denk wrote:
Quoted 2 lines

Please stop sending base64 encoded patches! Send plain text
only!

I used git format-patch and git send-email. Is there easy way how to tell this to git?

Quoted 5 lines

While it is a good idea to provide documentation, this is the wrong place for it. Here in the commit message is about the last place where most of the users will search for it. Please provide a README for this board - either in the board directory, or in doc/

Is doc/README.nokia_rx51 correct place?

Quoted 22 lines

BUt also keep in mind that this is a maintenance problem - who will make sure that this documentation gets updated when someone changes to code?

Quoted 9 lines
 board/nokia/rx51/Makefile        |   46 +++++
 board/nokia/rx51/lowlevel_init.S |   71 +++++++
 board/nokia/rx51/rx51.c          |  380
 ++++++++++++++++++++++++++++++++++++++
 board/nokia/rx51/rx51.h          |  378

+++++++++++++++++++++++++++++++++++++ boards.cfg

            |    1 +
Quoted 8 lines
 include/configs/nokia_rx51.h     |  373
 +++++++++++++++++++++++++++++++++++++ 6 files changed, 1249
 insertions(+)
 create mode 100644 board/nokia/rx51/Makefile
 create mode 100644 board/nokia/rx51/lowlevel_init.S
 create mode 100644 board/nokia/rx51/rx51.c
 create mode 100644 board/nokia/rx51/rx51.h
 create mode 100644 include/configs/nokia_rx51.h
Quoted 1 line

Entry in MAINTAINERS missing.

Ok, I will add myself to MAINTAINERS.

Quoted 4 lines

include/configs/nokia_rx51.h

Quoted 4 lines
include/configs/nokia_rx51.h new file +4 -0
+/*
+ * Size of malloc() pool
+ */
+#define CONFIG_ENV_SIZE			(128 << 10)	/* 128 KiB

Sector */

Quoted 1 line
Quoted 1 line

+#define CONFIG_UBI_SIZE (512 << 10) /* 512 KiB

Sector */

Quoted 4 lines
Quoted 2 lines

+#define CONFIG_SYS_MALLOC_LEN (CONFIG_ENV_SIZE +
CONFIG_UBI_SIZE + \ + (128 << 10))

Comment appears to be misplaced.

Ok, comment will be removed.

Quoted 7 lines

include/configs/nokia_rx51.h line 126

Quoted 5 lines

+/* Maemo kernel 2.6.28 will crash if u-boot enable usb tty */

include/configs/nokia_rx51.h new file +3 -0
+/*
+#define CONFIG_USB_TTY
+*/

Please remove dead code.

usb tty is usefull for debuging u-boot. because this device does not have easy access to serial console, usb tty is only option how to connect u-boot terminal to pc. but default (and still only one working on this device) kernel crash when u-boot enable usb tty. I want to have usb tty option in u-boot and belive that one day will be some upstream linux kernel with fixed usb drivers working on nokia n900.

Quoted 7 lines
Quoted 5 lines
Quoted 3 lines

+/* OneNand support is disabled, because U-Boot image is too big */ +/* Uncomment next line to enable it */
+/* #define ONENAND_SUPPORT */

Incorrect multiline comment / please remove dead code.

How to write correct comment?

/*
* BLURB blurb BLurB ...
* Blurb, hardware on fire
* foo bar it doesn't work.
*/

Quoted 8 lines

Also onenand code working fine, but when is enabled u-boot binary is too big and cannot be flashed into this device. But for testing in qemu or booting u-boot with enabled onenand support stored in mmc via flashed u-boot (with disabled onenand support) working too.

Is there way how to decrease u-boot binary size?

Try compiling it in thumb mode? I think Tom Rini added support for that and tested it on omap.

Quoted 4 lines
Quoted 4 lines

Best regards,

Wolfgang Denk

#159 lore raw

PATCH v2 11/11 New board support: Nokia RX-51 aka N900

Quoted 1 line · Marek Vasut

Dear Pali Roh?r,

[snip]

Quoted 10 lines
Quoted 7 lines

Also onenand code working fine, but when is enabled u-boot binary is too big and cannot be flashed into this device. But for testing in qemu or booting u-boot with enabled onenand support stored in mmc via flashed u-boot (with disabled onenand support) working too.

Is there way how to decrease u-boot binary size?

Try compiling it in thumb mode? I think Tom Rini added support for that and tested it on omap.

Aneesh V did the real work for thumb mode for omap4/5, I just picked it up and addressed some comments. It's currently in u-boot-arm/master.

Signature · 8 lines
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/20120430/43d1d75c/attachment.pgp>
#160 lore raw

PATCH v2 11/11 New board support: Nokia RX-51 aka N900

Dear Tom Rini,

Quoted 11 lines · Marek Vasut
Quoted 1 line

Dear Pali Roh?r,

[snip]

Quoted 6 lines
Quoted 6 lines

Also onenand code working fine, but when is enabled u-boot binary is too big and cannot be flashed into this device. But for testing in qemu or booting u-boot with enabled onenand support stored in mmc via flashed u-boot (with disabled onenand support) working too.

Quoted 7 lines
Quoted 4 lines
Quoted 1 line

Is there way how to decrease u-boot binary size?

Try compiling it in thumb mode? I think Tom Rini added support for that and tested it on omap.

Aneesh V did the real work for thumb mode for omap4/5, I just picked it up and addressed some comments. It's currently in u-boot-arm/master.

Since all omap3+ are cortexA, they have thumb2 support, so it should work, correct?

Best regards,
Marek Vasut

#161 lore raw

PATCH v2 11/11 New board support: Nokia RX-51 aka N900

Quoted 15 lines · Marek Vasut

Dear Tom Rini,

Quoted 13 lines · Marek Vasut
Quoted 1 line

Dear Pali Roh?r,

[snip]

Quoted 8 lines
Quoted 7 lines

Also onenand code working fine, but when is enabled u-boot binary is too big and cannot be flashed into this device. But for testing in qemu or booting u-boot with enabled onenand support stored in mmc via flashed u-boot (with disabled onenand support) working too.

Is there way how to decrease u-boot binary size?

Quoted 8 lines
Quoted 5 lines
Quoted 2 lines

Try compiling it in thumb mode? I think Tom Rini added support for that and tested it on omap.

Aneesh V did the real work for thumb mode for omap4/5, I just picked it up and addressed some comments. It's currently in u-boot-arm/master.

Since all omap3+ are cortexA, they have thumb2 support, so it should work, correct?

Correct. It is opt-in per-board.

Signature · 1 line
Tom
#162 lore raw

PATCH v2 11/11 New board support: Nokia RX-51 aka N900

In reply to Tom Rini
Quoted 11 lines · On Monday 30 April 2012 16:37:55 Tom Rini wrote:
Quoted 1 line · Marek Vasut

Dear Pali Roh?r,

[snip]

Quoted 6 lines
Quoted 6 lines

Also onenand code working fine, but when is enabled u-boot binary is too big and cannot be flashed into this device. But for testing in qemu or booting u-boot with enabled onenand support stored in mmc via flashed u-boot (with disabled onenand support) working too.

Quoted 8 lines
Quoted 4 lines
Quoted 1 line

Is there way how to decrease u-boot binary size?

Try compiling it in thumb mode? I think Tom Rini added support for that and tested it on omap.

Aneesh V did the real work for thumb mode for omap4/5, I just picked it up and addressed some comments. It's currently in u-boot-arm/master.

But N900 is omap3. Has u-boot thumb support for omap3 boards too?

Signature · 9 lines
Pali Roh?r
pali.rohar at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20120601/8a97b6c2/attachment.pgp>
#163 lore raw

PATCH v2 11/11 New board support: Nokia RX-51 aka N900

Dear Pali Roh?r,

Quoted 14 lines · On Monday 30 April 2012 16:37:55 Tom Rini wrote:
Quoted 13 lines · Marek Vasut
Quoted 1 line

Dear Pali Roh?r,

[snip]

Quoted 8 lines
Quoted 7 lines

Also onenand code working fine, but when is enabled u-boot binary is too big and cannot be flashed into this device. But for testing in qemu or booting u-boot with enabled onenand support stored in mmc via flashed u-boot (with disabled onenand support) working too.

Is there way how to decrease u-boot binary size?

Quoted 8 lines
Quoted 6 lines
Quoted 2 lines

Try compiling it in thumb mode? I think Tom Rini added support for that and tested it on omap.

Aneesh V did the real work for thumb mode for omap4/5, I just picked it up and addressed some comments. It's currently in u-boot-arm/master.

But N900 is omap3. Has u-boot thumb support for omap3 boards too?

OMAP3 has the same (CortexA8) core, it will work on it too. Dunno if it's enabled for OMAP3 now, but it shouldn't be hard to do so.

Best regards,
Marek Vasut

#164 lore raw

PATCH v2 11/11 New board support: Nokia RX-51 aka N900

Quoted 4 lines · On Friday 01 June 2012 20:48:15 Marek Vasut wrote:

Dear Pali Roh?r,

Quoted 2 lines · On Monday 30 April 2012 16:37:55 Tom Rini wrote:
Quoted 1 line

On Sun, Apr 29, 2012 at 11:18:48AM +0200, Marek Vasut

Quoted 23 lines · wrote:
Quoted 23 lines
Quoted 22 lines
Quoted 1 line

Dear Pali Roh?r,

[snip]

Quoted 8 lines
Quoted 8 lines

Also onenand code working fine, but when is enabled u-boot
binary is too big and cannot be flashed into this device.
But for testing in qemu or booting u-boot with enabled onenand support stored in mmc via flashed u-boot (with disabled onenand support) working too.

Quoted 4 lines
Quoted 1 line

Is there way how to decrease u-boot binary size?

Try compiling it in thumb mode? I think Tom Rini added support for that and tested it on omap.

Aneesh V did the real work for thumb mode for omap4/5, I just
picked it up and addressed some comments. It's currently in
u-boot-arm/master.

Quoted 8 lines
Quoted 2 lines

But N900 is omap3. Has u-boot thumb support for omap3 boards too?

OMAP3 has the same (CortexA8) core, it will work on it too. Dunno if it's enabled for OMAP3 now, but it shouldn't be hard to do so.

Best regards,
Marek Vasut

There is one HW problem with thumb on N900: thumb mode is buggy and thumb compiled applications crashing. But finaly last month we found solution for this problem. Errata 430973 workaround, calling uboot function omap3_emu_romcode_call for setting IBE bit in AUX CR. So now Ubuntu (which is thumb compiled) booting and working.

So for using thumb mode on N900 we first need to call first that function. It is possible to build u-boot in some mixed mode (some parts in arm and some in thumb)? Now omap3_emu_romcode_call is called from misc_init_r rx51 board code.

Signature · 9 lines
Pali Roh?r
pali.rohar at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20120601/ad66258e/attachment.pgp>
#165 lore raw

PATCH v2 11/11 New board support: Nokia RX-51 aka N900

Dear Pali Roh?r,

Quoted 37 lines · On Friday 01 June 2012 20:48:15 Marek Vasut wrote:
Quoted 4 lines

Dear Pali Roh?r,

Quoted 2 lines · On Monday 30 April 2012 16:37:55 Tom Rini wrote:
Quoted 1 line

On Sun, Apr 29, 2012 at 11:18:48AM +0200, Marek Vasut

Quoted 30 lines · wrote:
Quoted 17 lines
Quoted 17 lines
Quoted 1 line

Dear Pali Roh?r,

[snip]

Quoted 12 lines
Quoted 9 lines

Also onenand code working fine, but when is enabled u-boot
binary is too big and cannot be flashed into this device.
But for testing in qemu or booting u-boot with enabled onenand support stored in mmc via flashed u-boot (with disabled onenand support) working too.

Is there way how to decrease u-boot binary size?

Try compiling it in thumb mode? I think Tom Rini added support for that and tested it on omap.

Quoted 8 lines
Quoted 5 lines

Aneesh V did the real work for thumb mode for omap4/5, I just
picked it up and addressed some comments. It's currently in
u-boot-arm/master.

But N900 is omap3. Has u-boot thumb support for omap3 boards too?

OMAP3 has the same (CortexA8) core, it will work on it too. Dunno if it's enabled for OMAP3 now, but it shouldn't be hard to do so.

Quoted 5 lines
Quoted 2 lines

Best regards,
Marek Vasut

There is one HW problem with thumb on N900: thumb mode is buggy and thumb compiled applications crashing.

What? Is it the CPU being buggy?

Quoted 2 lines

But finaly last month
we found solution for this problem. Errata 430973 workaround,

Errata of what?

Quoted 2 lines

calling uboot function omap3_emu_romcode_call for setting IBE bit in AUX CR.

What exactly does it do?

Quoted 2 lines

So now Ubuntu (which is thumb compiled) booting and working.

Urh.

Quoted 3 lines

So for using thumb mode on N900 we first need to call first that function. It is possible to build u-boot in some mixed mode (some parts in arm and some in thumb)?

That's what you usually do -- you always start in ARM mode, then you switch to thumb mode. It's possible to mix thumb and arm of course, that's what normally happens.

Quoted 2 lines

Now omap3_emu_romcode_call is
called from misc_init_r rx51 board code.

So this problem isn't present on all omap3s ?

Best regards,
Marek Vasut

#166 lore raw

PATCH v2 11/11 New board support: Nokia RX-51 aka N900

In reply to Pali Rohár

Dear Pali =?ISO-8859-1?Q?Roh=E1r?=,

Quoted 6 lines · In message <2499233.2JzaJFJkCD@pali> you wrote:
Quoted 3 lines

Please stop sending base64 encoded patches! Send plain text
only!

I used git format-patch and git send-email. Is there easy way how to tell this to git?

Yes: do not use characters that cause problems.

Quoted 7 lines
Quoted 5 lines

While it is a good idea to provide documentation, this is the wrong place for it. Here in the commit message is about the last place where most of the users will search for it. Please provide a README for this board - either in the board directory, or in doc/

Is doc/README.nokia_rx51 correct place?

It ist what many other boards used, so it would be fine.

Personally, I don;t like this ever growing list of board specific documentation in doc; my personal preference would be something like board/nokia/rx51/README instead... Feel free to chose.

Quoted 3 lines
Quoted 1 line

Comment appears to be misplaced.

Ok, comment will be removed.

Rather fix it.

Quoted 8 lines
Quoted 7 lines

include/configs/nokia_rx51.h line 126

Quoted 5 lines

+/* Maemo kernel 2.6.28 will crash if u-boot enable usb tty */

include/configs/nokia_rx51.h new file +3 -0
+/*
+#define CONFIG_USB_TTY
+*/

Please remove dead code.

Quoted 7 lines

usb tty is usefull for debuging u-boot. because this device does not have easy access to serial console, usb tty is only option how to connect u-boot terminal to pc. but default (and still only one working on this device) kernel crash when u-boot enable usb tty. I want to have usb tty option in u-boot and belive that one day will be some upstream linux kernel with fixed usb drivers working on nokia n900.

As is, it is dead code and should be removed (not to mention that this is another case of incorrect multi-line comment style).

Please feel free to add such a description to the documentation.

Quoted 3 lines
Quoted 1 line

Incorrect multiline comment / please remove dead code.

How to write correct comment?

See
http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=Documentation/CodingStyle#l446

Quoted 1 line

Is there way how to decrease u-boot binary size?

Omit features ...

Best regards,

Wolfgang Denk

Signature · 5 lines
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
To the systems programmer,  users  and  applications  serve  only  to
provide a test load.
#167 lore raw

v3 cover Nokia RX-51 support

In reply to Pali Rohár

This patch series add support for new board Nokia RX-51 (aka N900). This patch series supersedes version v2.

Patch details:

Already commited (dropped) patches:
cfb_console: Fix function console_back
cfb_console: Add function console_clear and console_clear_line
cfb_console: Add functions for moving with cursor
cfb_console: Ignore bell character

Dropped patches:
arm: Optionally use existing atags in bootm.c
New command clear: Clear the ANSI terminal
New config variable CONFIG_PREMONITOR

New patches:
arm bootm: Allow to pass board specified atags
arm bootm: Do not append zero ATAG_MEM

Pali Roh?r (5):
arm bootm: Allow to pass board specified atags
arm bootm: Do not append zero ATAG_MEM
Add power bus message definitions in twl4030.h
cfb_console: Add support for some ANSI terminal escape codes New board support: Nokia RX-51 aka N900

 MAINTAINERS                      |    4 +
 README                           |    3 +
 arch/arm/include/asm/setup.h     |    5 +
 arch/arm/lib/bootm.c             |    8 +
 board/nokia/rx51/Makefile        |   46 +++
 board/nokia/rx51/lowlevel_init.S |  209 ++++++++++++
 board/nokia/rx51/rx51.c          |  673 ++++++++++++++++++++++++++++++++++++++
 board/nokia/rx51/rx51.h          |  389 ++++++++++++++++++++++
 board/nokia/rx51/tag_omap.h      |  311 ++++++++++++++++++
 boards.cfg                       |    1 +
 doc/README.nokia_rx51            |  104 ++++++
 drivers/video/cfb_console.c      |  313 +++++++++++++++++-
 include/configs/nokia_rx51.h     |  452 +++++++++++++++++++++++++
 include/twl4030.h                |   98 ++++++
 14 files changed, 2607 insertions(+), 9 deletions(-)
 create mode 100644 board/nokia/rx51/Makefile
 create mode 100644 board/nokia/rx51/lowlevel_init.S
 create mode 100644 board/nokia/rx51/rx51.c
 create mode 100644 board/nokia/rx51/rx51.h
 create mode 100644 board/nokia/rx51/tag_omap.h
 create mode 100644 doc/README.nokia_rx51
 create mode 100644 include/configs/nokia_rx51.h
Signature · 1 line
1.7.9.5
#168 lore raw

PATCH v3 1/5 arm bootm: Allow to pass board specified atags

---
 arch/arm/include/asm/setup.h |    5 +++++
 arch/arm/lib/bootm.c         |    5 +++++
 2 files changed, 10 insertions(+)
arch/arm/include/asm/setup.h +5 -0
index 89df4dc..78a7fac 100644
@@ -267,3 +267,8 @@ struct meminfo {
 extern struct meminfo meminfo;
 
 #endif
+
+/*
+ * Board specified tags
+ */
+void setup_board_tags(struct tag **in_params);
arch/arm/lib/bootm.c +5 -0
index a9070d5..c092bfa 100644
@@ -266,6 +266,10 @@ static int create_fdt(bootm_headers_t *images)
 }
 #endif
 
+void __setup_board_tags(void) {}
+void setup_board_tags(struct tag **in_params)
+	__attribute__((weak, alias("__setup_board_tags")));
+
 /* Subcommand: PREP */
 static void boot_prep_linux(bootm_headers_t *images)
 {
@@ -307,6 +311,7 @@ static void boot_prep_linux(bootm_headers_t *images)
 			setup_initrd_tag(gd->bd, images->rd_start,
 			images->rd_end);
 #endif
+		setup_board_tags(&params);
 		setup_end_tag(gd->bd);
 #else /* all tags */
 		printf("FDT and ATAGS support not compiled in - hanging\n");
Signature · 1 line
1.7.9.5
#169 lore raw

PATCH v3 1/5 arm bootm: Allow to pass board specified atags

Dear Pali Roh?r,

... missing commit message ...

Quoted 5 lines
---
 arch/arm/include/asm/setup.h |    5 +++++
 arch/arm/lib/bootm.c         |    5 +++++
 2 files changed, 10 insertions(+)

... missing changelog ...

arch/arm/include/asm/setup.h struct meminfo { · line 273

Quoted 12 lines
arch/arm/include/asm/setup.h +4 -0
index 89df4dc..78a7fac 100644
@@ -267,3 +267,8 @@ struct meminfo {
 extern struct meminfo meminfo;
 
 #endif
+
+/*
+ * Board specified tags
+ */

What's this ?

arch/arm/lib/bootm.c static int create_fdt(bootm_headers_t *images) · line 271

Quoted 12 lines
arch/arm/include/asm/setup.h +1 -0
+void setup_board_tags(struct tag **in_params);
arch/arm/lib/bootm.c +3 -0
index a9070d5..c092bfa 100644
@@ -266,6 +266,10 @@ static int create_fdt(bootm_headers_t *images)
 }
 #endif
 
+void __setup_board_tags(void) {}
+void setup_board_tags(struct tag **in_params)
+	__attribute__((weak, alias("__setup_board_tags")));

__weak void setup...(...) {} works just fine. Include linux/compiler.h

arch/arm/lib/bootm.c static void boot_prep_linux(bootm_headers_t *images) · line 317

Quoted 11 lines
arch/arm/lib/bootm.c +1 -0
 /* Subcommand: PREP */
 static void boot_prep_linux(bootm_headers_t *images)
 {
@@ -307,6 +311,7 @@ static void boot_prep_linux(bootm_headers_t *images)
 			setup_initrd_tag(gd->bd, images->rd_start,
 			images->rd_end);
 #endif
+		setup_board_tags(&params);
 		setup_end_tag(gd->bd);
 #else /* all tags */
 		printf("FDT and ATAGS support not compiled in - hanging\n");

Best regards,
Marek Vasut

#170 lore raw

PATCH v3 1/5 arm bootm: Allow to pass board specified atags

Quoted 4 lines · On Sunday 14 October 2012 01:43:25 Marek Vasut wrote:

Dear Pali Roh?r,

... missing commit message ...

Is not subject enought?

Quoted 9 lines
Quoted 6 lines

---

 arch/arm/include/asm/setup.h |    5 +++++
 arch/arm/lib/bootm.c         |    5 +++++
 2 files changed, 10 insertions(+)

... missing changelog ...

There is no changelog. This patch is new in v3. I wrote it in mail [PATCH v3 0/5].

Quoted 8 lines
Quoted 8 lines
(quoted diff) +0 -0

b/arch/arm/include/asm/setup.h index 89df4dc..78a7fac 100644

arch/arm/include/asm/setup.h +0 -0
@@ -267,3 +267,8 @@ struct meminfo {
 
 extern struct meminfo meminfo;
 
Quoted 9 lines

arch/arm/include/asm/setup.h struct meminfo { · line 273

Quoted 6 lines
arch/arm/include/asm/setup.h +4 -0
 #endif
 
+
+/*
+ * Board specified tags
+ */

What's this ?

Function which allow to pass board specified (non standard) atags. It is what you suggested:
http://www.mail-archive.com/u-boot at lists.denx.de/msg82803.html

Quoted 10 lines
Quoted 10 lines
arch/arm/include/asm/setup.h +1 -0
+void setup_board_tags(struct tag **in_params);
arch/arm/lib/bootm.c +0 -0
index a9070d5..c092bfa 100644
@@ -266,6 +266,10 @@ static int create_fdt(bootm_headers_t
 *images)> 
 }
 #endif
 
Quoted 6 lines

arch/arm/lib/bootm.c static int create_fdt(bootm_headers_t *images) · line 271

Quoted 3 lines
arch/arm/lib/bootm.c +3 -0
+void __setup_board_tags(void) {}
+void setup_board_tags(struct tag **in_params)
+	__attribute__((weak, alias("__setup_board_tags")));

__weak void setup...(...) {} works just fine. Include linux/compiler.h

I did not know about __weak. I will change it.

Signature · 9 lines
Pali Roh?r
pali.rohar at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20121014/af760316/attachment.pgp>
#171 lore raw

PATCH v3 1/5 arm bootm: Allow to pass board specified atags

Dear Pali Roh?r,

Quoted 6 lines · On Sunday 14 October 2012 01:43:25 Marek Vasut wrote:
Quoted 3 lines

Dear Pali Roh?r,

... missing commit message ...

Is not subject enought?

Sorry, but no.

Quoted 11 lines
Quoted 8 lines
Quoted 6 lines

---

 arch/arm/include/asm/setup.h |    5 +++++
 arch/arm/lib/bootm.c         |    5 +++++
 2 files changed, 10 insertions(+)

... missing changelog ...

There is no changelog. This patch is new in v3. I wrote it in mail [PATCH v3 0/5].

Good

Quoted 17 lines
Quoted 8 lines
Quoted 8 lines
(quoted diff) +0 -0

b/arch/arm/include/asm/setup.h index 89df4dc..78a7fac 100644

arch/arm/include/asm/setup.h +0 -0
@@ -267,3 +267,8 @@ struct meminfo {
 
 extern struct meminfo meminfo;
 
Quoted 8 lines

arch/arm/include/asm/setup.h struct meminfo { · line 273

Quoted 6 lines
arch/arm/include/asm/setup.h +4 -0
 #endif
 
+
+/*
+ * Board specified tags
+ */

What's this ?

Quoted 3 lines

Function which allow to pass board specified (non standard) atags.It is what you suggested:
http://www.mail-archive.com/u-boot at lists.denx.de/msg82803.html

Oh, there's one more line below. OK.

Quoted 11 lines
Quoted 11 lines
Quoted 11 lines
arch/arm/include/asm/setup.h +1 -0
+void setup_board_tags(struct tag **in_params);
arch/arm/lib/bootm.c +0 -0
index a9070d5..c092bfa 100644
@@ -266,6 +266,10 @@ static int create_fdt(bootm_headers_t
 *images)>
 
 }
 #endif
 
Quoted 8 lines
Quoted 6 lines

arch/arm/lib/bootm.c static int create_fdt(bootm_headers_t *images) · line 271

Quoted 3 lines
arch/arm/lib/bootm.c +3 -0
+void __setup_board_tags(void) {}
+void setup_board_tags(struct tag **in_params)
+	__attribute__((weak, alias("__setup_board_tags")));

__weak void setup...(...) {} works just fine. Include linux/compiler.h

I did not know about __weak. I will change it.

Best regards,
Marek Vasut

#172 lore raw

PATCH v3 1/5 arm bootm: Allow to pass board specified atags

Quoted 11 lines · On Sunday 14 October 2012 02:18:02 Marek Vasut wrote:

Dear Pali Roh?r,

Quoted 6 lines · On Sunday 14 October 2012 01:43:25 Marek Vasut wrote:
Quoted 3 lines

Dear Pali Roh?r,

... missing commit message ...

Is not subject enought?

Sorry, but no.

Commit message: With this patch is possible to pass board specified atags. Board can implement function setup_board_tags which could append or change atags before booting kernel.

Signature · 9 lines
Pali Roh?r
pali.rohar at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20121014/57726789/attachment.pgp>
#173 lore raw

PATCH v3 2/5 arm bootm: Do not append zero ATAG_MEM

In reply to Pali Rohár

If dram bank size is calculated at runtime, it can be zero on some boards. This patch added code which ignore these zero bank size in ATAG_MEM.

---
 arch/arm/lib/bootm.c |    3 +++
 1 file changed, 3 insertions(+)
arch/arm/lib/bootm.c +3 -0
index c092bfa..925925d 100644
@@ -132,6 +132,9 @@ static void setup_memory_tags(bd_t *bd)
 	int i;
 
 	for (i = 0; i < CONFIG_NR_DRAM_BANKS; i++) {
+		if (bd->bi_dram[i].size == 0)
+			continue;
+
 		params->hdr.tag = ATAG_MEM;
 		params->hdr.size = tag_size (tag_mem32);
 
Signature · 1 line
1.7.9.5
#174 lore raw

PATCH v3 2/5 arm bootm: Do not append zero ATAG_MEM

Dear Pali Roh?r,

Quoted 13 lines

If dram bank size is calculated at runtime, it can be zero on some boards. This patch added code which ignore these zero bank size in ATAG_MEM.

---
 arch/arm/lib/bootm.c |    3 +++
 1 file changed, 3 insertions(+)
arch/arm/lib/bootm.c +0 -0
index c092bfa..925925d 100644

arch/arm/lib/bootm.c static void setup_memory_tags(bd_t *bd) · line 136

Quoted 5 lines
arch/arm/lib/bootm.c +2 -0
@@ -132,6 +132,9 @@ static void setup_memory_tags(bd_t *bd)
 	int i;
 
 	for (i = 0; i < CONFIG_NR_DRAM_BANKS; i++) {
+		if (bd->bi_dram[i].size == 0)
+			continue;

This doesn't look right at all, your board is misconfigured if bd->bi_dram[i] ==
0. Did you misconfigure CONFIG_NR_DRAM_BANKS ?

arch/arm/lib/bootm.c static void setup_memory_tags(bd_t *bd) · line 139

Quoted 2 lines
arch/arm/lib/bootm.c +0 -0
 		params->hdr.tag = ATAG_MEM;
 		params->hdr.size = tag_size (tag_mem32);

Best regards,
Marek Vasut

#175 lore raw

PATCH v3 2/5 arm bootm: Do not append zero ATAG_MEM

Quoted 9 lines · On Sunday 14 October 2012 01:45:06 Marek Vasut wrote:

arch/arm/lib/bootm.c static void setup_memory_tags(bd_t *bd) · line 136

Quoted 5 lines
arch/arm/lib/bootm.c +2 -0
 	for (i = 0; i < CONFIG_NR_DRAM_BANKS; i++) {
 
+		if (bd->bi_dram[i].size == 0)
+			continue;

This doesn't look right at all, your board is misconfigured if bd->bi_dram[i] == 0. Did you misconfigure CONFIG_NR_DRAM_BANKS ?

On some N900 devices there are two banks and on some only one. If there is only one it has size 256 MB and if there are two both has 128 MB. CONFIG_NR_DRAM_BANKS must be specified at compile time, but for N900 I need runtime detection.

Signature · 9 lines
Pali Roh?r
pali.rohar at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20121014/fbaaba8e/attachment.pgp>
#176 lore raw

PATCH v3 2/5 arm bootm: Do not append zero ATAG_MEM

Dear Pali Roh?r,

Quoted 10 lines · On Sunday 14 October 2012 01:45:06 Marek Vasut wrote:
Quoted 8 lines

arch/arm/lib/bootm.c static void setup_memory_tags(bd_t *bd) · line 136

Quoted 4 lines
arch/arm/lib/bootm.c +2 -0
 	for (i = 0; i < CONFIG_NR_DRAM_BANKS; i++) {
 
+		if (bd->bi_dram[i].size == 0)
+			continue;

This doesn't look right at all, your board is misconfigured if bd->bi_dram[i] == 0. Did you misconfigure CONFIG_NR_DRAM_BANKS ?

Quoted 4 lines

On some N900 devices there are two banks and on some only one. If there is only one it has size 256 MB and if there are two both has 128 MB. CONFIG_NR_DRAM_BANKS must be specified at compile time, but for N900 I need runtime detection.

How can that be? Are these two banks contiguous?

Best regards,
Marek Vasut

#177 lore raw

PATCH v3 2/5 arm bootm: Do not append zero ATAG_MEM

Quoted 14 lines · On Sunday 14 October 2012 02:17:01 Marek Vasut wrote:

Dear Pali Roh?r,

Quoted 12 lines · On Sunday 14 October 2012 01:45:06 Marek Vasut wrote:
Quoted 10 lines

arch/arm/lib/bootm.c static void setup_memory_tags(bd_t *bd) · line 136

Quoted 4 lines
arch/arm/lib/bootm.c +2 -0
 	for (i = 0; i < CONFIG_NR_DRAM_BANKS; i++) {
 
+		if (bd->bi_dram[i].size == 0)
+			continue;

This doesn't look right at all, your board is misconfigured if
bd->bi_dram[i] == 0. Did you misconfigure CONFIG_NR_DRAM_BANKS
?

Quoted 8 lines
Quoted 5 lines

On some N900 devices there are two banks and on some only one. If there is only one it has size 256 MB and if there are two both has 128 MB. CONFIG_NR_DRAM_BANKS must be specified at compile time, but for N900 I need runtime detection.

How can that be? Are these two banks contiguous?

Yes.

Signature · 9 lines
Pali Roh?r
pali.rohar at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20121014/4eb10436/attachment.pgp>
#178 lore raw

PATCH v3 2/5 arm bootm: Do not append zero ATAG_MEM

Dear Pali Roh?r,

Quoted 21 lines · On Sunday 14 October 2012 02:17:01 Marek Vasut wrote:
Quoted 20 lines

Dear Pali Roh?r,

Quoted 17 lines · On Sunday 14 October 2012 01:45:06 Marek Vasut wrote:
Quoted 10 lines

arch/arm/lib/bootm.c static void setup_memory_tags(bd_t *bd) · line 136

Quoted 4 lines
arch/arm/lib/bootm.c +2 -0
 	for (i = 0; i < CONFIG_NR_DRAM_BANKS; i++) {
 
+		if (bd->bi_dram[i].size == 0)
+			continue;

This doesn't look right at all, your board is misconfigured if
bd->bi_dram[i] == 0. Did you misconfigure CONFIG_NR_DRAM_BANKS
?

On some N900 devices there are two banks and on some only one. If there is only one it has size 256 MB and if there are two both has 128 MB. CONFIG_NR_DRAM_BANKS must be specified at compile time, but for N900 I need runtime detection.

Quoted 3 lines
Quoted 1 line

How can that be? Are these two banks contiguous?

Yes.

And how does the memory map differ in case of device with one 256MB block then ?

Best regards,
Marek Vasut

#179 lore raw

PATCH v3 2/5 arm bootm: Do not append zero ATAG_MEM

Quoted 24 lines · On Sunday 14 October 2012 02:27:05 Marek Vasut wrote:

Dear Pali Roh?r,

Quoted 22 lines · On Sunday 14 October 2012 02:17:01 Marek Vasut wrote:
Quoted 21 lines

Dear Pali Roh?r,

Quoted 18 lines · On Sunday 14 October 2012 01:45:06 Marek Vasut wrote:
Quoted 11 lines

arch/arm/lib/bootm.c static void setup_memory_tags(bd_t *bd) · line 136

Quoted 4 lines
arch/arm/lib/bootm.c +2 -0
 	for (i = 0; i < CONFIG_NR_DRAM_BANKS; i++) {
 
+		if (bd->bi_dram[i].size == 0)
+			continue;

This doesn't look right at all, your board is
misconfigured
if
bd->bi_dram[i] == 0. Did you misconfigure
CONFIG_NR_DRAM_BANKS
?

On some N900 devices there are two banks and on some only one. If there is only one it has size 256 MB and if there are two both has 128 MB. CONFIG_NR_DRAM_BANKS must be specified at compile time, but for N900 I need runtime detection.

Quoted 7 lines
Quoted 3 lines
Quoted 1 line

How can that be? Are these two banks contiguous?

Yes.

And how does the memory map differ in case of device with one 256MB block then ?

Memory map is same, from 0x80000000 to 0x90000000.

For two bank devices uboot reports:
size=08000000 start=80000000
size=08000000 start=88000000

And for one:
size=10000000 start=80000000
size=00000000 start=90000000

Signature · 9 lines
Pali Roh?r
pali.rohar at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20121014/d65419a7/attachment.pgp>
#180 lore raw

PATCH v3 2/5 arm bootm: Do not append zero ATAG_MEM

Dear Pali Roh?r,

Quoted 34 lines · On Sunday 14 October 2012 02:27:05 Marek Vasut wrote:
Quoted 24 lines

Dear Pali Roh?r,

Quoted 22 lines · On Sunday 14 October 2012 02:17:01 Marek Vasut wrote:
Quoted 21 lines

Dear Pali Roh?r,

Quoted 18 lines · On Sunday 14 October 2012 01:45:06 Marek Vasut wrote:
Quoted 11 lines

Review

Quoted 4 lines
(quoted diff) +2 -0
 	for (i = 0; i < CONFIG_NR_DRAM_BANKS; i++) {
 
+		if (bd->bi_dram[i].size == 0)
+			continue;

This doesn't look right at all, your board is
misconfigured
if
bd->bi_dram[i] == 0. Did you misconfigure
CONFIG_NR_DRAM_BANKS
?

On some N900 devices there are two banks and on some only one. If there is only one it has size 256 MB and if there are two both has 128 MB. CONFIG_NR_DRAM_BANKS must be specified at compile time, but for N900 I need runtime detection.

Quoted 6 lines
Quoted 3 lines
Quoted 1 line

How can that be? Are these two banks contiguous?

Yes.

And how does the memory map differ in case of device with one 256MB block then ?

Memory map is same, from 0x80000000 to 0x90000000.

Quoted 7 lines

For two bank devices uboot reports:
size=08000000 start=80000000
size=08000000 start=88000000

And for one:
size=10000000 start=80000000
size=00000000 start=90000000

Tom, can this not be handled as a single area? How does the omap memory layout look?

Best regards,
Marek Vasut

#181 lore raw

PATCH v3 2/5 arm bootm: Do not append zero ATAG_MEM

Quoted 40 lines · Marek Vasut

Dear Pali Roh?r,

Quoted 38 lines · On Sunday 14 October 2012 02:27:05 Marek Vasut wrote:
Quoted 24 lines

Dear Pali Roh?r,

Quoted 22 lines · On Sunday 14 October 2012 02:17:01 Marek Vasut wrote:
Quoted 21 lines

Dear Pali Roh?r,

Quoted 18 lines · On Sunday 14 October 2012 01:45:06 Marek Vasut wrote:
Quoted 11 lines

Review

Quoted 4 lines
(quoted diff) +2 -0
 	for (i = 0; i < CONFIG_NR_DRAM_BANKS; i++) {
 
+		if (bd->bi_dram[i].size == 0)
+			continue;

This doesn't look right at all, your board is
misconfigured
if
bd->bi_dram[i] == 0. Did you misconfigure
CONFIG_NR_DRAM_BANKS
?

On some N900 devices there are two banks and on some only one. If there is only one it has size 256 MB and if there are two both has 128 MB. CONFIG_NR_DRAM_BANKS must be specified at compile time, but for N900 I need runtime detection.

Quoted 6 lines
Quoted 3 lines
Quoted 1 line

How can that be? Are these two banks contiguous?

Yes.

And how does the memory map differ in case of device with one 256MB block then ?

Memory map is same, from 0x80000000 to 0x90000000.

For two bank devices uboot reports:
size=08000000 start=80000000
size=08000000 start=88000000

Quoted 6 lines
Quoted 3 lines

And for one:
size=10000000 start=80000000
size=00000000 start=90000000

Tom, can this not be handled as a single area? How does the omap memory layout look?

On other platforms we simply lie about the number of banks as at least today nothing is re-using the number of banks and re-reconfiguring DDR. Making n900 also just claim one bank and then reporting the correct total memory size as the size of that one bank will put it into good company at least.

Signature · 8 lines
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/20121016/8c0be8c3/attachment.pgp>
#182 lore raw

PATCH v3 3/5 Add power bus message definitions in twl4030.h

In reply to Pali Rohár

* Code copied from linux kernel 3.0.0 from file include/linux/i2c/twl.h

---
 include/twl4030.h |   98 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 98 insertions(+)
include/twl4030.h +98 -0
index 9cd32ab..0c17f59 100644
@@ -151,6 +151,103 @@
 #define TWL4030_PM_MASTER_SW_EVENTS_DEVSLP		(1 << 1)
 #define TWL4030_PM_MASTER_SW_EVENTS_DEVOFF		(1 << 0)
 
+/* Power bus message definitions */
+
+/* The TWL4030/5030 splits its power-management resources (the various
+ * regulators, clock and reset lines) into 3 processor groups - P1, P2 and
+ * P3. These groups can then be configured to transition between sleep, wait-on
+ * and active states by sending messages to the power bus.  See Section 5.4.2
+ * Power Resources of TWL4030 TRM
+ */
+
+/* Processor groups */
+#define DEV_GRP_NULL		0x0
+#define DEV_GRP_P1		0x1	/* P1: all OMAP devices */
+#define DEV_GRP_P2		0x2	/* P2: all Modem devices */
+#define DEV_GRP_P3		0x4	/* P3: all peripheral devices */
+
+/* Resource groups */
+#define RES_GRP_RES		0x0	/* Reserved */
+#define RES_GRP_PP		0x1	/* Power providers */
+#define RES_GRP_RC		0x2	/* Reset and control */
+#define RES_GRP_PP_RC		0x3
+#define RES_GRP_PR		0x4	/* Power references */
+#define RES_GRP_PP_PR		0x5
+#define RES_GRP_RC_PR		0x6
+#define RES_GRP_ALL		0x7	/* All resource groups */
+
+#define RES_TYPE2_R0		0x0
+
+#define RES_TYPE_ALL		0x7
+
+/* Resource states */
+#define RES_STATE_WRST		0xF
+#define RES_STATE_ACTIVE	0xE
+#define RES_STATE_SLEEP		0x8
+#define RES_STATE_OFF		0x0
+
+/* Power resources */
+
+/* Power providers */
+#define RES_VAUX1               1
+#define RES_VAUX2               2
+#define RES_VAUX3               3
+#define RES_VAUX4               4
+#define RES_VMMC1               5
+#define RES_VMMC2               6
+#define RES_VPLL1               7
+#define RES_VPLL2               8
+#define RES_VSIM                9
+#define RES_VDAC                10
+#define RES_VINTANA1            11
+#define RES_VINTANA2            12
+#define RES_VINTDIG             13
+#define RES_VIO                 14
+#define RES_VDD1                15
+#define RES_VDD2                16
+#define RES_VUSB_1V5            17
+#define RES_VUSB_1V8            18
+#define RES_VUSB_3V1            19
+#define RES_VUSBCP              20
+#define RES_REGEN               21
+/* Reset and control */
+#define RES_NRES_PWRON          22
+#define RES_CLKEN               23
+#define RES_SYSEN               24
+#define RES_HFCLKOUT            25
+#define RES_32KCLKOUT           26
+#define RES_RESET               27
+/* Power Reference */
+#define RES_Main_Ref            28
+
+#define TOTAL_RESOURCES		28
+/*
+ * Power Bus Message Format ... these can be sent individually by Linux,
+ * but are usually part of downloaded scripts that are run when various
+ * power events are triggered.
+ *
+ *  Broadcast Message (16 Bits):
+ *    DEV_GRP[15:13] MT[12]  RES_GRP[11:9]  RES_TYPE2[8:7] RES_TYPE[6:4]
+ *    RES_STATE[3:0]
+ *
+ *  Singular Message (16 Bits):
+ *    DEV_GRP[15:13] MT[12]  RES_ID[11:4]  RES_STATE[3:0]
+ */
+
+#define MSG_BROADCAST(devgrp, grp, type, type2, state) \
+	((devgrp) << 13 | 1 << 12 | (grp) << 9 | (type2) << 7 \
+	| (type) << 4 | (state))
+
+#define MSG_SINGULAR(devgrp, id, state) \
+	((devgrp) << 13 | 0 << 12 | (id) << 4 | (state))
+
+#define MSG_BROADCAST_ALL(devgrp, state) \
+	((devgrp) << 5 | (state))
+
+#define MSG_BROADCAST_REF MSG_BROADCAST_ALL
+#define MSG_BROADCAST_PROV MSG_BROADCAST_ALL
+#define MSG_BROADCAST__CLK_RST MSG_BROADCAST_ALL
+
 /* Power Managment Receiver */
 #define TWL4030_PM_RECEIVER_SC_CONFIG			0x5B
 #define TWL4030_PM_RECEIVER_SC_DETECT1			0x5C
@@ -311,6 +408,7 @@
 #define TWL4030_PM_RECEIVER_VDAC_VSEL_18		0x03
 #define TWL4030_PM_RECEIVER_VMMC1_VSEL_30		0x02
 #define TWL4030_PM_RECEIVER_VMMC1_VSEL_32		0x03
+#define TWL4030_PM_RECEIVER_VSIM_VSEL_18		0x03
 
 /* Device Selection in PM Receiver Module */
 #define TWL4030_PM_RECEIVER_DEV_GRP_P1			0x20
Signature · 1 line
1.7.9.5
#184 lore raw

PATCH v3 3/5 Add power bus message definitions in twl4030.h

Quoted 7 lines · On Sunday 14 October 2012 01:46:30 you wrote:

Dear Pali Roh?r,

Quoted 2 lines

* Code copied from linux kernel 3.0.0 from file
include/linux/i2c/twl.h

Missing commit ... see
http://www.denx.de/wiki/U-Boot/Patches#Attributing_Code_Copyrig
hts_Sign

"... provide terse but precise information which exact version or even commit ID was used ..."

I copied code from 3.0.0 tarball, so I do not know commit ID. But 3.0.0 is exact version.

Quoted 4 lines

[...]

Missing changelog

Nothing was changed.

Signature · 9 lines
Pali Roh?r
pali.rohar at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20121014/ee23d4c4/attachment.pgp>
#185 lore raw

PATCH v3 3/5 Add power bus message definitions in twl4030.h

Dear Pali Roh?r,

Quoted 10 lines · On Sunday 14 October 2012 01:46:30 you wrote:
Quoted 8 lines

Dear Pali Roh?r,

Quoted 2 lines

* Code copied from linux kernel 3.0.0 from file
include/linux/i2c/twl.h

Missing commit ... see
http://www.denx.de/wiki/U-Boot/Patches#Attributing_Code_Copyrig
hts_Sign

Quoted 5 lines

"... provide terse but precise information which exact version or even commit ID was used ..."

I copied code from 3.0.0 tarball, so I do not know commit ID. But 3.0.0 is exact version.

Look here:

http://git.kernel.org/?p=linux/kernel/git/marex/linux-2.6.git;a=summary

Quoted 5 lines
Quoted 3 lines

[...]

Missing changelog

Nothing was changed.

It'd be good to state that.

Best regards,
Marek Vasut

#186 lore raw

PATCH v3 3/5 Add power bus message definitions in twl4030.h

Quoted 15 lines · On Sunday 14 October 2012 02:16:10 Marek Vasut wrote:

Dear Pali Roh?r,

Quoted 13 lines · On Sunday 14 October 2012 01:46:30 you wrote:
Quoted 8 lines

Dear Pali Roh?r,

Quoted 2 lines

* Code copied from linux kernel 3.0.0 from file
include/linux/i2c/twl.h

Missing commit ... see
http://www.denx.de/wiki/U-Boot/Patches#Attributing_Code_Cop
yrig hts_Sign

"... provide terse but precise information which exact version or even commit ID was used ..."

Quoted 7 lines
Quoted 2 lines

I copied code from 3.0.0 tarball, so I do not know commit ID. But 3.0.0 is exact version.

Look here:

http://git.kernel.org/?p=linux/kernel/git/marex/linux-2.6.git;a
=summary

Ok, last commit before 3.0.0 release was
6523b148b44be38d89c2ee9865d34da30d9f5f1c

Signature · 9 lines
Pali Roh?r
pali.rohar at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20121014/58583c10/attachment.pgp>
#187 lore raw

PATCH v3 3/5 Add power bus message definitions in twl4030.h

Dear Pali Roh?r,

Quoted 19 lines · On Sunday 14 October 2012 02:16:10 Marek Vasut wrote:
Quoted 18 lines

Dear Pali Roh?r,

Quoted 15 lines · On Sunday 14 October 2012 01:46:30 you wrote:
Quoted 8 lines

Dear Pali Roh?r,

Quoted 2 lines

* Code copied from linux kernel 3.0.0 from file
include/linux/i2c/twl.h

Missing commit ... see
http://www.denx.de/wiki/U-Boot/Patches#Attributing_Code_Cop
yrig hts_Sign

"... provide terse but precise information which exact version or even commit ID was used ..."

I copied code from 3.0.0 tarball, so I do not know commit ID. But 3.0.0 is exact version.

Quoted 7 lines
Quoted 4 lines

Look here:

http://git.kernel.org/?p=linux/kernel/git/marex/linux-2.6.git;a
=summary

Ok, last commit before 3.0.0 release was
6523b148b44be38d89c2ee9865d34da30d9f5f1c

Please put it into the commit message.

Best regards,
Marek Vasut

#188 lore raw

PATCH v3 4/5 cfb_console: Add support for some ANSI terminal escape codes

In reply to Pali Rohár

* This patch add support for move cursor, reverse colors and clear console via ANSI espace codes in cfb_console driver
* ANSI escape codes can be enabled/disabled via CONFIG_CFB_CONSOLE_ANSI

---
Changes since v2:
- Fixed multiline comments

Changes since v1:
- Added support ANSI code show/hide cursor
- Added info to README

Changes since original version:
- Fixed commit message

 README                      |    3 +
 drivers/video/cfb_console.c |  313 +++++++++++++++++++++++++++++++++++++++++--
 2 files changed, 307 insertions(+), 9 deletions(-)
README +3 -0
index 9804cea..d45a91d 100644
@@ -655,6 +655,9 @@ The following options need to be configured:
 						additional board info beside
 						the logo
 
+		When CONFIG_CFB_CONSOLE_ANSI is defined, console will have
+		ANSI terminal support. Needed for CONFIG_CMDLINE_EDITING.
+
 		When CONFIG_CFB_CONSOLE is defined, video console is
 		default i/o. Serial console can be forced with
 		environment 'console=serial'.
drivers/video/cfb_console.c +304 -9

376 lines not on this page · raw message

Signature · 1 line
1.7.9.5
#189 lore raw

PATCH v3 4/5 cfb_console: Add support for some ANSI terminal escape codes

Dear Pali Roh?r,

Quoted 6 lines

* This patch add support for move cursor, reverse colors and clear console via ANSI espace codes in cfb_console driver
* ANSI escape codes can be enabled/disabled via CONFIG_CFB_CONSOLE_ANSI

---

Missing v3?

Quoted 6 lines

Changes since v2:
- Fixed multiline comments

Changes since v1:
- Added support ANSI code show/hide cursor
- Added info to README

[...]

I'll leave the rest of the patch up to Anatolij, he's The Expert.

Best regards,
Marek Vasut

#190 lore raw

PATCH v3 4/5 cfb_console: Add support for some ANSI terminal escape codes

Quoted 6 lines · On Sunday 14 October 2012 01:48:20 Marek Vasut wrote:

Dear Pali Roh?r,

Quoted 4 lines

* This patch add support for move cursor, reverse colors and clear console>
via ANSI espace codes in cfb_console driver

Quoted 7 lines
Quoted 4 lines

* ANSI escape codes can be enabled/disabled via
CONFIG_CFB_CONSOLE_ANSI>

---

Missing v3?

In "Changes since v2" I wrote what was changed in open interval between v2 and v3. So it is not missing :-)

Quoted 14 lines
Quoted 6 lines

Changes since v2:
- Fixed multiline comments

Changes since v1:
- Added support ANSI code show/hide cursor
- Added info to README

[...]

I'll leave the rest of the patch up to Anatolij, he's The Expert.

Best regards,
Marek Vasut

Signature · 9 lines
Pali Roh?r
pali.rohar at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20121014/4681aa63/attachment.pgp>
#191 lore raw

PATCH v3 4/5 cfb_console: Add support for some ANSI terminal escape codes

Dear Pali Roh?r,

Quoted 11 lines · On Sunday 14 October 2012 01:48:20 Marek Vasut wrote:
Quoted 10 lines

Dear Pali Roh?r,

Quoted 8 lines

* This patch add support for move cursor, reverse colors and clear console>

via ANSI espace codes in cfb_console driver

* ANSI escape codes can be enabled/disabled via
CONFIG_CFB_CONSOLE_ANSI>

Quoted 7 lines
Quoted 4 lines
Quoted 2 lines

---

Missing v3?

In "Changes since v2" I wrote what was changed in open interval between v2 and v3. So it is not missing :-)

Please stop inventing new ways of writing changelog and obey:
http://www.denx.de/wiki/U-Boot/Patches

Quoted 7 lines
Quoted 7 lines
Quoted 6 lines

Changes since v2:
- Fixed multiline comments

Changes since v1:
- Added support ANSI code show/hide cursor
- Added info to README

Quoted 7 lines
Quoted 7 lines

[...]

I'll leave the rest of the patch up to Anatolij, he's The Expert.

Best regards,
Marek Vasut

Best regards,
Marek Vasut

#192 lore raw

PATCH v3 5/5 New board support: Nokia RX-51 aka N900

In reply to Pali Rohár

Based on previous work by: Alistair Buxton <[email protected]>

Cc ?????? ???????? <[email protected]>

---
Changes since v2:
- Added documentation in doc/README.nokia_rx51
- Updated MAINTAINERS
- Fixed Fix omap_mmc_init
- Code for errata 430973 workaround
- Added board specified atag support
- Generate omap atag table instead reusing from NOLO
- Load bootmenu.src always
- Enabled ext4 support
- Fixed comments
- Reserve protected RAM for attached kernel
- Rewritten assembler code in lowlevel_init.S
- Reset lp5523 led on init

Changes since v1:
- Set correct configs for Memory Map
- Enable passing memory tag to kernel atags
- Use gpio input command for detecting keyboard slide
- Restore powerbus state after calling twl4030 regulator code
- Renamed command noloboot to attachboot
- Atag address must be always 0x80000100, removed code from lowlevel
- Added usb vendor, product id and product name
- Enabled command line editing
- Fixed keymap and cursor keys

Changes since original version:
- Removed Makefile targets: clean and distclean
- Rewrited bootcommand and env variables in nokia_rx51.h
- Removed useless CONFIG defines in nokia_rx51.h
- Disable L2 cache with CONFIG_SYS_L2CACHE_OFF - fixed battery draining
- Added onenand support (default disabled due to big u-boot size)
- Moved inlined asm code to new file lowlevel_init.S
- Fixed commit message

 MAINTAINERS                      |    4 +
 board/nokia/rx51/Makefile        |   46 +++
 board/nokia/rx51/lowlevel_init.S |  209 ++++++++++++
 board/nokia/rx51/rx51.c          |  673 ++++++++++++++++++++++++++++++++++++++
 board/nokia/rx51/rx51.h          |  389 ++++++++++++++++++++++
 board/nokia/rx51/tag_omap.h      |  311 ++++++++++++++++++
 boards.cfg                       |    1 +
 doc/README.nokia_rx51            |  104 ++++++
 include/configs/nokia_rx51.h     |  452 +++++++++++++++++++++++++
 9 files changed, 2189 insertions(+)
 create mode 100644 board/nokia/rx51/Makefile
 create mode 100644 board/nokia/rx51/lowlevel_init.S
 create mode 100644 board/nokia/rx51/rx51.c
 create mode 100644 board/nokia/rx51/rx51.h
 create mode 100644 board/nokia/rx51/tag_omap.h
 create mode 100644 doc/README.nokia_rx51
 create mode 100644 include/configs/nokia_rx51.h
MAINTAINERS +4 -0
index 971235b..613d8cd 100644
@@ -1009,6 +1009,10 @@ Nobuhiro Iwamatsu <[email protected]>
 
 	armadillo-800eva	R8A7740 (RMOBILE SoC)
 
+Pali Roh?r <[email protected]>
+
+	nokia_rx51	ARM ARMV7 (OMAP3xx SoC)
+
 -------------------------------------------------------------------------
 
 Unknown / orphaned boards:
board/nokia/rx51/Makefile new file +46 -0

46 lines not on this page · raw message

board/nokia/rx51/lowlevel_init.S new file +209 -0

209 lines not on this page · raw message

board/nokia/rx51/rx51.c new file +673 -0

673 lines not on this page · raw message

board/nokia/rx51/rx51.h new file +389 -0

389 lines not on this page · raw message

board/nokia/rx51/tag_omap.h new file +311 -0

311 lines not on this page · raw message

boards.cfg +1 -0
index 4b17289..0647b3e 100644
@@ -264,6 +264,7 @@ devkit8000                   arm         armv7       devkit8000          timll
 mcx                          arm         armv7       mcx                 htkw           omap3
 tricorder                    arm         armv7       tricorder           corscience     omap3
 twister                      arm         armv7       twister             technexion     omap3
+nokia_rx51                   arm         armv7       rx51                nokia          omap3
 omap4_panda                  arm         armv7       panda               ti             omap4
 omap4_sdp4430                arm         armv7       sdp4430             ti             omap4
 omap5_evm                    arm         armv7       omap5_evm           ti		omap5
doc/README.nokia_rx51 new file +104 -0

104 lines not on this page · raw message

include/configs/nokia_rx51.h new file +452 -0

452 lines not on this page · raw message

Signature · 1 line
1.7.9.5
#193 lore raw

PATCH v3 5/5 New board support: Nokia RX-51 aka N900

Dear Pali Roh?r,

Quoted 4 lines

Based on previous work by: Alistair Buxton <[email protected]>

Cc ?????? ???????? <[email protected]>

Can we please stick to ASCII instead of UTF8?

Cc Ivaylo Dimitrov (if I'm not mistaken)
Quoted 59 lines

---
Changes since v2:
- Added documentation in doc/README.nokia_rx51
- Updated MAINTAINERS
- Fixed Fix omap_mmc_init
- Code for errata 430973 workaround
- Added board specified atag support
- Generate omap atag table instead reusing from NOLO
- Load bootmenu.src always
- Enabled ext4 support
- Fixed comments
- Reserve protected RAM for attached kernel
- Rewritten assembler code in lowlevel_init.S
- Reset lp5523 led on init

Changes since v1:
- Set correct configs for Memory Map
- Enable passing memory tag to kernel atags
- Use gpio input command for detecting keyboard slide
- Restore powerbus state after calling twl4030 regulator code
- Renamed command noloboot to attachboot
- Atag address must be always 0x80000100, removed code from lowlevel
- Added usb vendor, product id and product name
- Enabled command line editing
- Fixed keymap and cursor keys

Changes since original version:
- Removed Makefile targets: clean and distclean
- Rewrited bootcommand and env variables in nokia_rx51.h
- Removed useless CONFIG defines in nokia_rx51.h
- Disable L2 cache with CONFIG_SYS_L2CACHE_OFF - fixed battery draining
- Added onenand support (default disabled due to big u-boot size)
- Moved inlined asm code to new file lowlevel_init.S
- Fixed commit message

 MAINTAINERS                      |    4 +
 board/nokia/rx51/Makefile        |   46 +++
 board/nokia/rx51/lowlevel_init.S |  209 ++++++++++++
 board/nokia/rx51/rx51.c          |  673
++++++++++++++++++++++++++++++++++++++ board/nokia/rx51/rx51.h          | 
389 ++++++++++++++++++++++
 board/nokia/rx51/tag_omap.h      |  311 ++++++++++++++++++
 boards.cfg                       |    1 +
 doc/README.nokia_rx51            |  104 ++++++
 include/configs/nokia_rx51.h     |  452 +++++++++++++++++++++++++
 9 files changed, 2189 insertions(+)
 create mode 100644 board/nokia/rx51/Makefile
 create mode 100644 board/nokia/rx51/lowlevel_init.S
 create mode 100644 board/nokia/rx51/rx51.c
 create mode 100644 board/nokia/rx51/rx51.h
 create mode 100644 board/nokia/rx51/tag_omap.h
 create mode 100644 doc/README.nokia_rx51
 create mode 100644 include/configs/nokia_rx51.h
MAINTAINERS +0 -0
index 971235b..613d8cd 100644

MAINTAINERS Nobuhiro Iwamatsu <[email protected]> · line 1014

Quoted 6 lines
MAINTAINERS +3 -0
@@ -1009,6 +1009,10 @@ Nobuhiro Iwamatsu <[email protected]>
 
 	armadillo-800eva	R8A7740 (RMOBILE SoC)
 
+Pali Roh?r <[email protected]>
+
+	nokia_rx51	ARM ARMV7 (OMAP3xx SoC)

OMAP3xxx or OMAP34xx

Quoted 3 lines
MAINTAINERS +1 -0
+
 -------------------------------------------------------------------------
 

[..]

Quoted 12 lines
MAINTAINERS +12 -0
+relocaddr:		/* address of this relocaddr section after coping */
+	.word .		/* address of section (calculated at compile time) */
+
+startaddr:		/* address of u-boot after copying */
+	.word CONFIG_SYS_TEXT_BASE
+
+kernaddr:		/* address of kernel after copying */
+	.word KERNEL_ADDRESS
+
+kernsize:		/* maximal size of kernel image */
+	.word KERNEL_MAXSIZE
+

MAINTAINERS

Quoted 10 lines
MAINTAINERS +10 -0
+kernoffs:		/* offset of kernel image in loaded u-boot */
+	.word KERNEL_OFFSET
+
+imagesize:		/* maximal size of image */
+	.word IMAGE_MAXSIZE
+
+ih_magic:		/* IH_MAGIC in big endian from include/image.h */
+	.word 0x56190527
+
+/*

Try using the new kerneldoc style, the tools are now in.

See eg. here about the annotations:
http://permalink.gmane.org/gmane.comp.boot-loaders.u-boot/144173

Also see:
http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=Documentation/kernel-
doc-nano-HOWTO.txt

MAINTAINERS

Quoted 8 lines

+ * Routine: save_boot_params (called after reset from start.S)
+ * Description: Copy attached kernel to address KERNEL_ADDRESS
+ * Copy u-boot to address CONFIG_SYS_TEXT_BASE
+ * Return to copied u-boot address
+ */

MAINTAINERS +3 -0
+
+.global save_boot_params
+save_boot_params:

[...]

How much of the assembler crap can be made C?

[...]

Quoted 19 lines
MAINTAINERS +19 -0
+static char *boot_reason_ptr;
+static char *hw_build_ptr;
+static char *nolo_version_ptr;
+static char *boot_mode_ptr;
+
+/*
+ * Routine: init_omap_tags
+ * Description: Initialize pointers to values in tag_omap
+ */
+static void init_omap_tags(void)
+{
+	char *component;
+	char *version;
+	int i = 0;
+	while (omap[i].hdr.tag) {
+		switch (omap[i].hdr.tag) {
+		case OMAP_TAG_BOOT_REASON:
+			boot_reason_ptr = omap[i].u.boot_reason.reason_str;
+			break;

MAINTAINERS

Quoted 10 lines
MAINTAINERS +10 -0
+		case OMAP_TAG_VERSION_STR:
+			component = omap[i].u.version.component;
+			version = omap[i].u.version.version;
+			if (strcmp(component, "hw-build") == 0)
+				hw_build_ptr = version;
+			else if (strcmp(component, "nolo") == 0)
+				nolo_version_ptr = version;
+			else if (strcmp(component, "boot-mode") == 0)
+				boot_mode_ptr = version;
+			break;

default: missing.

MAINTAINERS

Quoted 2 lines
MAINTAINERS +2 -0
+		}
+		++i;

i++;

Quoted 2 lines
MAINTAINERS +2 -0
+	}
+}

[...]

MAINTAINERS

Quoted 3 lines
MAINTAINERS +3 -0
+	/* append omap atag only if env setup_omap_atag is set to 1 */
+	str = getenv("setup_omap_atag");
+	if (!str || strcmp(str, "1") != 0)

str[0] == '1' ? But still, you only want to check if it's defined, no?

[...]

MAINTAINERS

Quoted 11 lines
MAINTAINERS +11 -0
+/*
+ * Routine: twl4030_regulator_set_mode
+ * Description: Set twl4030 regulator mode over i2c powerbus.
+ */
+static void twl4030_regulator_set_mode(u8 id, u8 mode)
+{
+	u16 msg = MSG_SINGULAR(DEV_GRP_P1, id, mode);
+	twl4030_i2c_write_u8(TWL4030_CHIP_PM_MASTER, msg >> 8,
+			TWL4030_PM_MASTER_PB_WORD_MSB);
+	twl4030_i2c_write_u8(TWL4030_CHIP_PM_MASTER, msg & 0xff,
+			TWL4030_PM_MASTER_PB_WORD_LSB);

Uh, is this somehow special that you can't do longer transfer?

MAINTAINERS

Quoted 11 lines
MAINTAINERS +11 -0
+}
+
+static void omap3_emu_romcode_call(u32 service_id, u32 *parameters)
+{
+	u32 i, num_params = *parameters;
+	u32 *sram_scratch_space = (u32 *)OMAP3_PUBLIC_SRAM_SCRATCH_AREA;
+
+	/*
+	 * copy the parameters to an un-cached area to avoid coherency
+	 * issues
+	 */

_WHAT_ ?!

Use dcache_flush(). The Omap3 rom won't cope with cache memory? Actually -- why do you even do call into ROM ?

Quoted 10 lines
MAINTAINERS +10 -0
+	for (i = 0; i < num_params; i++) {
+		__raw_writel(*parameters, sram_scratch_space);
+		parameters++;
+		sram_scratch_space++;
+	}
+
+	/* Now make the PPA call */
+	do_omap3_emu_romcode_call(service_id, OMAP3_PUBLIC_SRAM_SCRATCH_AREA);
+}
+

[...]

MAINTAINERS

Quoted 3 lines
MAINTAINERS +3 -0
+	/* set env variable attkernaddr for relocated kernel */
+	sprintf(buf, "%#x", KERNEL_ADDRESS);
+	setenv("attkernaddr", buf);

Uhhh ? This definitelly isn't right! What are you trying to achieve here?

Quoted 22 lines
MAINTAINERS +22 -0
+
+	/* initialize omap tags */
+	init_omap_tags();
+
+	/* reuse atags from previous bootloader */
+	reuse_atags();
+
+	dieid_num_r();
+	print_cpuinfo();
+
+	/*
+	 * Cortex-A8(r1p0..r1p2) errata 430973 workaround
+	 * Set IBE bit in Auxiliary Control Register
+	 */
+	omap3_update_aux_cr_secure_rx51(1 << 6, 0);
+
+	return 0;
+}
+
+/*
+ * Routine: set_muxconf_regs
+ * Description: Setting up the configuration Mux registers specific to the

MAINTAINERS

Quoted 10 lines
MAINTAINERS +10 -0
+ *		hardware. Many pins need to be moved from protect to primary
+ *		mode.
+ */
+void set_muxconf_regs(void)
+{
+	MUX_RX51();
+}
+
+static unsigned long int twl_wd_time; /* last time of watchdog reset */
+static unsigned long int twl_i2c_lock;

Are you sure you want to use global vars for these? These won't work before reloc!

[..]

MAINTAINERS

Quoted 7 lines
MAINTAINERS +7 -0
+
+static u8 keys[8];
+static u8 old_keys[8] = {0, 0, 0, 0, 0, 0, 0, 0};
+#define KEYBUF_SIZE 32
+static u8 keybuf[KEYBUF_SIZE];
+static u8 keybuf_head;
+static u8 keybuf_tail;

How much of this can be made const ?

MAINTAINERS

Quoted 11 lines
MAINTAINERS +11 -0
+/*
+ * Routine: rx51_kp_init
+ * Description: Initialize HW keyboard.
+ */
+int rx51_kp_init(void)
+{
+	int ret = 0;
+	u8 ctrl;
+	ret = twl4030_i2c_read_u8(TWL4030_CHIP_KEYPAD, &ctrl,
+		TWL4030_KEYPAD_KEYP_CTRL_REG);
+

if (ret)

	return;

... do the rest here without additional indent ...

Quoted 3 lines
MAINTAINERS +3 -0
+	if (!ret) {
+		/* turn on keyboard and use hardware scanning */
+		ctrl |= TWL4030_KEYPAD_CTRL_KBD_ON;

[...]

MAINTAINERS

Quoted 2 lines
MAINTAINERS +2 -0
+static void rx51_kp_fill(u8 k, u8 mods)
+{

This magic needs at least _some_ documentation.

Quoted 3 lines
MAINTAINERS +3 -0
+	if (!(mods & 2) && (k == 18 || k == 31 || k == 33 || k == 34)) {
+		/* cursor keys, without fn */
+		keybuf[keybuf_tail++] = '\e';

[...]

Quoted 8 lines
MAINTAINERS +8 -0
+int rx51_kp_tstc(void)
+{
+	u8 c, r, dk, i;
+	u8 intr;
+	u8 mods;
+
+	/* localy lock twl4030 i2c bus */
+	if (test_and_set_bit(0, &twl_i2c_lock))

MAINTAINERS

Quoted 10 lines
MAINTAINERS +10 -0
+		return 0;
+
+	/* twl4030 remembers up to 2 events */
+	for (i = 0; i < 2; i++) {
+
+		/* check interrupt register for events */
+		twl4030_i2c_read_u8(TWL4030_CHIP_KEYPAD, &intr,
+				TWL4030_KEYPAD_KEYP_ISR1+(2*i));
+
+		if (intr&1) { /* got an event */

I will let you think about how to optimize the indent depth here ...

Quoted 17 lines
MAINTAINERS +17 -0
+			/* read the key state */
+			i2c_read(TWL4030_CHIP_KEYPAD,
+				TWL4030_KEYPAD_FULL_CODE_7_0, 1, keys, 8);
+
+			/* cut out modifier keys from the keystate */
+			mods = keys[4] >> 4;
+			keys[4] &= 0x0f;
+
+			for (c = 0; c < 8; c++) {
+
+				/* get newly pressed keys only */
+				dk = ((keys[c] ^ old_keys[c])&keys[c]);
+				old_keys[c] = keys[c];
+
+				/* fill the keybuf */
+				for (r = 0; r < 8; r++) {
+					if (dk&1)

[...]

MAINTAINERS

Quoted 10 lines
MAINTAINERS +10 -0
+/*
+ * Routine: rx51_kp_getc
+ * Description: Get last pressed key (from buffer).
+ */
+int rx51_kp_getc(void)
+{
+	keybuf_head %= KEYBUF_SIZE;
+	while (!rx51_kp_tstc()) {
+		udelay(1);
+		hw_watchdog_reset();

WATCHDOG_RESET() and drop the udelay();

Quoted 14 lines
MAINTAINERS +14 -0
+	}
+	return keybuf[keybuf_head++];
+}
+
+/*
+ * Routine: board_mmc_init
+ * Description: Initialize mmc devices.
+ */
+int board_mmc_init(bd_t *bis)
+{
+	omap_mmc_init(0, 0, 0);
+	omap_mmc_init(1, 0, 0);
+	return 0;
+}

[...]

MAINTAINERS

Quoted 2 lines
MAINTAINERS +2 -0
+#define tostring(s)		#s
+#define stringify(s)		tostring(s)

We do have __stringify(), use that!
[...]

#194 lore raw

PATCH v3 5/5 New board support: Nokia RX-51 aka N900

Hi Marek,

Quoted 8 lines · Marek Vasut

Dear Pali Roh?r,

Quoted 4 lines

Based on previous work by: Alistair Buxton <[email protected]>

Cc ?????? ???????? <[email protected]>

Can we please stick to ASCII instead of UTF8?

(cc:ing Wolfgang)

Not to nitpick too much here since for this particular contributor it will not make a difference, but UTF-8 in e-mail addresses is fine to me
[1] and is useful for people whose roman-alphabet-based names include diacritics not available in ASCII.

Thus, as far as constraints on e-mail addresses are concerned, I'd rather allow UTF-8 but impose the use of the roman alphabet (if needed, by transliterating) as opposed to e.g. using the cyrillic alphabet, or ideograms, because the common language here is English, so everyone posting here is at least used to roman, but not necessarily to other alphabets or writing systems.

[1] if not always to 'pwclient git-am', but then 'pwclient get' + 'git am' works fine.

Amicalement,

Signature · 1 line
Albert.
#195 lore raw

PATCH v3 5/5 New board support: Nokia RX-51 aka N900

In reply to Marek Vasut
Quoted 9 lines · On Sunday 14 October 2012 02:06:49 Marek Vasut wrote:
Quoted 9 lines
MAINTAINERS +0 -0
index 971235b..613d8cd 100644
@@ -1009,6 +1009,10 @@ Nobuhiro Iwamatsu

<[email protected]>>
armadillo-800eva R8A7740 (RMOBILE SoC)

Quoted 6 lines

MAINTAINERS Nobuhiro Iwamatsu <[email protected]> · line 1014

Quoted 3 lines
MAINTAINERS +3 -0
+Pali Roh?r <[email protected]>
+
+	nokia_rx51	ARM ARMV7 (OMAP3xx SoC)

OMAP3xxx or OMAP34xx

Ok.

Quoted 3 lines
Quoted 3 lines

+relocaddr: /* address of this relocaddr section after
coping */ + .word . /* address of section (calculated

at

Quoted 11 lines

MAINTAINERS

Quoted 11 lines

compile time) */ +

MAINTAINERS +10 -0
+startaddr:		/* address of u-boot after copying */
+	.word CONFIG_SYS_TEXT_BASE
+
+kernaddr:		/* address of kernel after copying */
+	.word KERNEL_ADDRESS
+
+kernsize:		/* maximal size of kernel image */
+	.word KERNEL_MAXSIZE
+
+kernoffs:		/* offset of kernel image in loaded u-boot 

*/

Quoted 6 lines

MAINTAINERS

Quoted 6 lines
MAINTAINERS +6 -0
+	.word KERNEL_OFFSET
+
+imagesize:		/* maximal size of image */
+	.word IMAGE_MAXSIZE
+
+ih_magic:		/* IH_MAGIC in big endian from 

include/image.h */

Quoted 6 lines

MAINTAINERS

Quoted 3 lines
MAINTAINERS +3 -0
+	.word 0x56190527
+
+/*

Try using the new kerneldoc style, the tools are now in.

Quoted 8 lines

See eg. here about the annotations:
http://permalink.gmane.org/gmane.comp.boot-loaders.u-boot/14417
3

Also see:
http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.gi
t;a=blob;f=Documentation/kernel- doc-nano-HOWTO.txt

Ok.

Quoted 9 lines
Quoted 8 lines

+ * Routine: save_boot_params (called after reset from start.S) + * Description: Copy attached kernel to address
KERNEL_ADDRESS + * Copy u-boot to address
CONFIG_SYS_TEXT_BASE + * Return to copied
u-boot address
+ */
+
+.global save_boot_params

Quoted 5 lines
Quoted 1 line

+save_boot_params:

[...]

How much of the assembler crap can be made C?

Nothing. This code must be in assembler because stack is not initialized. Also we must be sure that U-Boot will not overwrite attached kernel (with can be in U-Boot malloc/monitor area...)

Quoted 11 lines
Quoted 11 lines
MAINTAINERS +10 -0
+static char *boot_reason_ptr;
+static char *hw_build_ptr;
+static char *nolo_version_ptr;
+static char *boot_mode_ptr;
+
+/*
+ * Routine: init_omap_tags
+ * Description: Initialize pointers to values in tag_omap
+ */
+static void init_omap_tags(void)
Quoted 8 lines

MAINTAINERS

Quoted 8 lines
MAINTAINERS +8 -0
+{
+	char *component;
+	char *version;
+	int i = 0;
+	while (omap[i].hdr.tag) {
+		switch (omap[i].hdr.tag) {
+		case OMAP_TAG_BOOT_REASON:
+			boot_reason_ptr = 

omap[i].u.boot_reason.reason_str;

Quoted 5 lines
Quoted 5 lines
MAINTAINERS +5 -0
+			break;
+		case OMAP_TAG_VERSION_STR:
+			component = omap[i].u.version.component;
+			version = omap[i].u.version.version;
+			if (strcmp(component, "hw-build") == 0)
Quoted 9 lines

MAINTAINERS

Quoted 6 lines
MAINTAINERS +6 -0
+				hw_build_ptr = version;
+			else if (strcmp(component, "nolo") == 0)
+				nolo_version_ptr = version;
+			else if (strcmp(component, "boot-mode") == 0)
+				boot_mode_ptr = version;
+			break;

default: missing.

Is really needed? (if yes, I can add default: break;)

Quoted 5 lines

MAINTAINERS

Quoted 2 lines
MAINTAINERS +2 -0
+		}
+		++i;

i++;

Reason? ++i and i++ are same (for this situation).

Quoted 1 line

MAINTAINERS

Quoted 1 line
MAINTAINERS +1 -0
+	/* append omap atag only if env setup_omap_atag is set to 

1

Quoted 6 lines

MAINTAINERS

Quoted 2 lines

*/ + str = getenv("setup_omap_atag");

MAINTAINERS +1 -0
+	if (!str || strcmp(str, "1") != 0)

str[0] == '1' ? But still, you only want to check if it's defined, no?

Hm, I'm checking if setup_omap_atag is 1. But is it problem?

Quoted 16 lines

MAINTAINERS

Quoted 13 lines

+/*
+ * Routine: twl4030_regulator_set_mode
+ * Description: Set twl4030 regulator mode over i2c powerbus.
+ */

MAINTAINERS +7 -0
+static void twl4030_regulator_set_mode(u8 id, u8 mode)
+{
+	u16 msg = MSG_SINGULAR(DEV_GRP_P1, id, mode);
+	twl4030_i2c_write_u8(TWL4030_CHIP_PM_MASTER, msg >> 8,
+			TWL4030_PM_MASTER_PB_WORD_MSB);
+	twl4030_i2c_write_u8(TWL4030_CHIP_PM_MASTER, msg & 0xff,
+			TWL4030_PM_MASTER_PB_WORD_LSB);

Uh, is this somehow special that you can't do longer transfer?

I do not know how, because registers are different (MSB and LSB).

Quoted 7 lines

MAINTAINERS

Quoted 4 lines
MAINTAINERS +3 -0
+	/* set env variable attkernaddr for relocated kernel */
+	sprintf(buf, "%#x", KERNEL_ADDRESS);
+	setenv("attkernaddr", buf);

Uhhh ? This definitelly isn't right! What are you trying to achieve here?

I think it is right. I want to store address of kernel (in hex with leading 0x) to env attkernaddr. And %#x is doing it.

Quoted 7 lines
Quoted 3 lines
MAINTAINERS +2 -0
+
+static unsigned long int twl_wd_time; /* last time of

watchdog reset */ +static unsigned long int twl_i2c_lock;

Are you sure you want to use global vars for these? These won't work before reloc!

Why it does not work before reloc? U-Boot is on n900 always started from RAM.

Quoted 11 lines

MAINTAINERS

Quoted 8 lines
MAINTAINERS +7 -0
+
+static u8 keys[8];
+static u8 old_keys[8] = {0, 0, 0, 0, 0, 0, 0, 0};
+#define KEYBUF_SIZE 32
+static u8 keybuf[KEYBUF_SIZE];
+static u8 keybuf_head;
+static u8 keybuf_tail;

How much of this can be made const ?

Nothing. All is for keyboard and is changed by keyboard functions (tstc, getc)

Quoted 7 lines

This magic needs at least _some_ documentation.

MAINTAINERS

Quoted 3 lines
MAINTAINERS +1 -0
+	if (!(mods & 2) && (k == 18 || k == 31 || k == 33 || k ==

34)) { + /* cursor keys, without fn */

MAINTAINERS +1 -0
+		keybuf[keybuf_tail++] = '\e';

there is "cursor keys without fn" (fn is "meta" key on n900). So this condition check if some cursor key (without fn) was pressed.

Quoted 14 lines
Quoted 14 lines
MAINTAINERS +13 -0
+int rx51_kp_tstc(void)
+{
+	u8 c, r, dk, i;
+	u8 intr;
+	u8 mods;
+
+	/* localy lock twl4030 i2c bus */
+	if (test_and_set_bit(0, &twl_i2c_lock))
+		return 0;
+
+	/* twl4030 remembers up to 2 events */
+	for (i = 0; i < 2; i++) {
+
Quoted 8 lines

MAINTAINERS

Quoted 5 lines
MAINTAINERS +5 -0
+		/* check interrupt register for events */
+		twl4030_i2c_read_u8(TWL4030_CHIP_KEYPAD, &intr,
+				TWL4030_KEYPAD_KEYP_ISR1+(2*i));
+
+		if (intr&1) { /* got an event */

I will let you think about how to optimize the indent depth here ...

Ok, I will optimize indentation. This code (keyboard support) was written by Alistair Buxton and I reused it with minimal changes.

Quoted 5 lines

MAINTAINERS

Quoted 3 lines
MAINTAINERS +2 -0
+#define tostring(s)		#s
+#define stringify(s)		tostring(s)

We do have __stringify(), use that!

Ok, in April (when I wrote this part of code) __stringify was not in U-Boot (I checked it).

Signature · 9 lines
Pali Roh?r
pali.rohar at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20121016/cc3cdeb0/attachment.pgp>
#196 lore raw

PATCH v3 5/5 New board support: Nokia RX-51 aka N900

Dear Pali Roh?r,

[...]

Quoted 4 lines

Nothing. This code must be in assembler because stack is not initialized. Also we must be sure that U-Boot will not overwrite attached kernel (with can be in U-Boot malloc/monitor area...)

Don't we have something that can reserve a memory area?

Quoted 35 lines
Quoted 10 lines
Quoted 10 lines
board/nokia/rx51/rx51.c new file +10 -0
+static char *boot_reason_ptr;
+static char *hw_build_ptr;
+static char *nolo_version_ptr;
+static char *boot_mode_ptr;
+
+/*
+ * Routine: init_omap_tags
+ * Description: Initialize pointers to values in tag_omap
+ */
+static void init_omap_tags(void)
Quoted 8 lines

board/nokia/rx51/rx51.c

Quoted 8 lines
board/nokia/rx51/rx51.c new file +8 -0
+{
+	char *component;
+	char *version;
+	int i = 0;
+	while (omap[i].hdr.tag) {
+		switch (omap[i].hdr.tag) {
+		case OMAP_TAG_BOOT_REASON:
+			boot_reason_ptr =

omap[i].u.boot_reason.reason_str;

Quoted 5 lines
Quoted 5 lines
board/nokia/rx51/rx51.c new file +5 -0
+			break;
+		case OMAP_TAG_VERSION_STR:
+			component = omap[i].u.version.component;
+			version = omap[i].u.version.version;
+			if (strcmp(component, "hw-build") == 0)
Quoted 8 lines

board/nokia/rx51/rx51.c line 135

Quoted 6 lines
board/nokia/rx51/rx51.c new file +6 -0
+				hw_build_ptr = version;
+			else if (strcmp(component, "nolo") == 0)
+				nolo_version_ptr = version;
+			else if (strcmp(component, "boot-mode") == 0)
+				boot_mode_ptr = version;
+			break;

default: missing.

Quoted 1 line

Is really needed? (if yes, I can add default: break;)

It's a good practice.

Quoted 6 lines
Quoted 4 lines

board/nokia/rx51/rx51.c line 137

Quoted 2 lines
board/nokia/rx51/rx51.c new file +2 -0
+		}
+		++i;

i++;

Reason? ++i and i++ are same (for this situation).

On arm, yes, on intel, no in certain cases. Also, to keep the code consistent, go with postdecrement.

Quoted 11 lines
Quoted 1 line

Review

Quoted 1 line
(quoted diff) +1 -0
+	/* append omap atag only if env setup_omap_atag is set to

1

Quoted 5 lines

board/nokia/rx51/rx51.c line 249

Quoted 2 lines

*/ + str = getenv("setup_omap_atag");

board/nokia/rx51/rx51.c new file +1 -0
+	if (!str || strcmp(str, "1") != 0)

str[0] == '1' ? But still, you only want to check if it's defined, no?

Hm, I'm checking if setup_omap_atag is 1. But is it problem?

Then why not str[0] == '1' ?

Quoted 15 lines
Quoted 6 lines
Quoted 6 lines

+/*
+ * Routine: twl4030_regulator_set_mode
+ * Description: Set twl4030 regulator mode over i2c powerbus.
+ */
+static void twl4030_regulator_set_mode(u8 id, u8 mode)

Quoted 8 lines

board/nokia/rx51/rx51.c line 333

Quoted 6 lines
board/nokia/rx51/rx51.c new file +6 -0
+{
+	u16 msg = MSG_SINGULAR(DEV_GRP_P1, id, mode);
+	twl4030_i2c_write_u8(TWL4030_CHIP_PM_MASTER, msg >> 8,
+			TWL4030_PM_MASTER_PB_WORD_MSB);
+	twl4030_i2c_write_u8(TWL4030_CHIP_PM_MASTER, msg & 0xff,
+			TWL4030_PM_MASTER_PB_WORD_LSB);

Uh, is this somehow special that you can't do longer transfer?

Quoted 1 line

I do not know how, because registers are different (MSB and LSB).

Investigate ;-)

Quoted 9 lines
Quoted 6 lines

board/nokia/rx51/rx51.c line 422

Quoted 3 lines
board/nokia/rx51/rx51.c new file +3 -0
+	/* set env variable attkernaddr for relocated kernel */
+	sprintf(buf, "%#x", KERNEL_ADDRESS);
+	setenv("attkernaddr", buf);

Uhhh ? This definitelly isn't right! What are you trying to achieve here?

I think it is right. I want to store address of kernel (in hex with leading 0x) to env attkernaddr. And %#x is doing it.

Ah, now that you mentioned that you don't want kernel to be rewritten, I see the point of this variable.

Quoted 9 lines
Quoted 6 lines
Quoted 3 lines
(quoted diff) +2 -0
+
+static unsigned long int twl_wd_time; /* last time of

watchdog reset */ +static unsigned long int twl_i2c_lock;

Are you sure you want to use global vars for these? These won't work before reloc!

Why it does not work before reloc? U-Boot is on n900 always started from RAM.

The BSS isn't cleared though.

Quoted 13 lines
Quoted 9 lines

board/nokia/rx51/rx51.c line 519

Quoted 7 lines
board/nokia/rx51/rx51.c new file +7 -0
+
+static u8 keys[8];
+static u8 old_keys[8] = {0, 0, 0, 0, 0, 0, 0, 0};
+#define KEYBUF_SIZE 32
+static u8 keybuf[KEYBUF_SIZE];
+static u8 keybuf_head;
+static u8 keybuf_tail;

How much of this can be made const ?

Nothing. All is for keyboard and is changed by keyboard functions (tstc, getc)

Quoted 8 lines
Quoted 5 lines

This magic needs at least _some_ documentation.

board/nokia/rx51/rx51.c line 557

Quoted 3 lines
(quoted diff) +1 -0
+	if (!(mods & 2) && (k == 18 || k == 31 || k == 33 || k ==

34)) { + /* cursor keys, without fn */

board/nokia/rx51/rx51.c new file +1 -0
+		keybuf[keybuf_tail++] = '\e';

there is "cursor keys without fn" (fn is "meta" key on n900). So this condition check if some cursor key (without fn) was pressed.

Good, document it.

Quoted 22 lines
Quoted 13 lines
Quoted 13 lines
board/nokia/rx51/rx51.c new file +13 -0
+int rx51_kp_tstc(void)
+{
+	u8 c, r, dk, i;
+	u8 intr;
+	u8 mods;
+
+	/* localy lock twl4030 i2c bus */
+	if (test_and_set_bit(0, &twl_i2c_lock))
+		return 0;
+
+	/* twl4030 remembers up to 2 events */
+	for (i = 0; i < 2; i++) {
+
Quoted 8 lines

board/nokia/rx51/rx51.c line 615

Quoted 5 lines
board/nokia/rx51/rx51.c new file +5 -0
+		/* check interrupt register for events */
+		twl4030_i2c_read_u8(TWL4030_CHIP_KEYPAD, &intr,
+				TWL4030_KEYPAD_KEYP_ISR1+(2*i));
+
+		if (intr&1) { /* got an event */

I will let you think about how to optimize the indent depth here ...

Quoted 2 lines

Ok, I will optimize indentation. This code (keyboard support) was written by Alistair Buxton and I reused it with minimal changes.

That doesn't justify it ;-)

Quoted 7 lines
Quoted 4 lines

include/configs/nokia_rx51.h line 62

Quoted 2 lines
include/configs/nokia_rx51.h new file +2 -0
+#define tostring(s)		#s
+#define stringify(s)		tostring(s)

We do have __stringify(), use that!

Ok, in April (when I wrote this part of code) __stringify was not in U-Boot (I checked it).

Yep, time changed.

Best regards,
Marek Vasut

#197 lore raw

PATCH v3 5/5 New board support: Nokia RX-51 aka N900

Quoted 10 lines · On Tuesday 16 October 2012 16:55:20 Marek Vasut wrote:

Dear Pali Roh?r,

[...]

Quoted 4 lines

Nothing. This code must be in assembler because stack is not initialized. Also we must be sure that U-Boot will not overwrite attached kernel (with can be in U-Boot malloc/monitor area...)

Don't we have something that can reserve a memory area?

I'm using CONFIG_PRAM and KERNEL_ADDRESS is calculated from protected ram. But previous bootloader (NOLO) loading u-boot (+ attached kernel) at random address, so it can be in u-boot malloc area. That assembler code is called after reset and copy attached kernel to protected ram (so U-Boot will not touch it) and U-Boot to correct address.

Quoted 10 lines
Quoted 6 lines
Quoted 4 lines

board/nokia/rx51/rx51.c line 137

Quoted 2 lines
board/nokia/rx51/rx51.c new file +2 -0
+		}
+		++i;

i++;

Reason? ++i and i++ are same (for this situation).

On arm, yes, on intel, no in certain cases. Also, to keep the code consistent, go with postdecrement.

What is different on intel (without assigning value of i)?

Quoted 11 lines
Quoted 11 lines
Quoted 2 lines
Quoted 2 lines
(quoted diff) +1 -0
+	/* append omap atag only if env setup_omap_atag is set

to

1

Quoted 5 lines

board/nokia/rx51/rx51.c line 249

Quoted 2 lines

*/ + str = getenv("setup_omap_atag");

board/nokia/rx51/rx51.c new file +1 -0
+	if (!str || strcmp(str, "1") != 0)

str[0] == '1' ? But still, you only want to check if it's defined, no?

Quoted 4 lines
Quoted 1 line

Hm, I'm checking if setup_omap_atag is 1. But is it problem?

Then why not str[0] == '1' ?

Ok.

Quoted 17 lines
Quoted 17 lines
Quoted 16 lines

board/nokia/rx51/rx51.c line 333

Quoted 13 lines

+/*
+ * Routine: twl4030_regulator_set_mode
+ * Description: Set twl4030 regulator mode over i2c powerbus.
+ */

board/nokia/rx51/rx51.c new file +6 -0
+static void twl4030_regulator_set_mode(u8 id, u8 mode)
+{
+	u16 msg = MSG_SINGULAR(DEV_GRP_P1, id, mode);
+	twl4030_i2c_write_u8(TWL4030_CHIP_PM_MASTER, msg >> 8,
+			TWL4030_PM_MASTER_PB_WORD_MSB);
+	twl4030_i2c_write_u8(TWL4030_CHIP_PM_MASTER, msg &

0xff,

board/nokia/rx51/rx51.c new file +1 -0
+			TWL4030_PM_MASTER_PB_WORD_LSB);

Uh, is this somehow special that you can't do longer transfer?

Quoted 4 lines
Quoted 2 lines

I do not know how, because registers are different (MSB and LSB).

Investigate ;-)

I think it is not possible. Registers are in bad order. (So on some high endian system it could be possible)

Also in linux twl regulator driver is used two calls see:
https://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=blob;f=drivers/regulator/twl-
regulator.c;hb=HEAD#l327

Quoted 7 lines
Quoted 7 lines
Quoted 6 lines
Quoted 3 lines
(quoted diff) +2 -0
+
+static unsigned long int twl_wd_time; /* last time of

watchdog reset */ +static unsigned long int twl_i2c_lock;

Are you sure you want to use global vars for these? These won't work before reloc!

Quoted 5 lines
Quoted 2 lines

Why it does not work before reloc? U-Boot is on n900 always started from RAM.

The BSS isn't cleared though.

So how to fix it? I need to share these vars in more functions.

Quoted 23 lines
Quoted 15 lines
Quoted 9 lines

board/nokia/rx51/rx51.c line 519

Quoted 7 lines
board/nokia/rx51/rx51.c new file +7 -0
+
+static u8 keys[8];
+static u8 old_keys[8] = {0, 0, 0, 0, 0, 0, 0, 0};
+#define KEYBUF_SIZE 32
+static u8 keybuf[KEYBUF_SIZE];
+static u8 keybuf_head;
+static u8 keybuf_tail;

How much of this can be made const ?

Nothing. All is for keyboard and is changed by keyboard functions (tstc, getc)

Quoted 2 lines

This magic needs at least _some_ documentation.

Quoted 8 lines
Quoted 4 lines

board/nokia/rx51/rx51.c line 557

Quoted 4 lines
(quoted diff) +1 -0
+	if (!(mods & 2) && (k == 18 || k == 31 || k == 33 || k

==
34)) { + /* cursor keys, without fn */

board/nokia/rx51/rx51.c new file +1 -0
+		keybuf[keybuf_tail++] = '\e';

there is "cursor keys without fn" (fn is "meta" key on n900). So this condition check if some cursor key (without fn) was pressed.

Quoted 2 lines

Good, document it.

Ok.

Signature · 9 lines
Pali Roh?r
pali.rohar at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20121016/686e9247/attachment.pgp>
#198 lore raw

PATCH v3 5/5 New board support: Nokia RX-51 aka N900

Dear Pali Roh?r,

[...]

Quoted 6 lines
Quoted 4 lines
Quoted 1 line

Reason? ++i and i++ are same (for this situation).

On arm, yes, on intel, no in certain cases. Also, to keep the code consistent, go with postdecrement.

What is different on intel (without assigning value of i)?

IIRC the prefetch behaves differently. Ccing Graeme, but this might be a question to the GCC guys.

Quoted 34 lines
Quoted 11 lines
Quoted 11 lines
Quoted 2 lines
Quoted 2 lines
(quoted diff) +1 -0
+	/* append omap atag only if env setup_omap_atag is set

to

1

Quoted 5 lines

board/nokia/rx51/rx51.c line 249

Quoted 2 lines

*/ + str = getenv("setup_omap_atag");

board/nokia/rx51/rx51.c new file +1 -0
+	if (!str || strcmp(str, "1") != 0)

str[0] == '1' ? But still, you only want to check if it's defined, no?

Quoted 3 lines
Quoted 1 line

Hm, I'm checking if setup_omap_atag is 1. But is it problem?

Then why not str[0] == '1' ?

Ok.

Quoted 17 lines
Quoted 17 lines
Quoted 16 lines

board/nokia/rx51/rx51.c line 333

Quoted 13 lines

+/*
+ * Routine: twl4030_regulator_set_mode
+ * Description: Set twl4030 regulator mode over i2c powerbus.
+ */

board/nokia/rx51/rx51.c new file +6 -0
+static void twl4030_regulator_set_mode(u8 id, u8 mode)
+{
+	u16 msg = MSG_SINGULAR(DEV_GRP_P1, id, mode);
+	twl4030_i2c_write_u8(TWL4030_CHIP_PM_MASTER, msg >> 8,
+			TWL4030_PM_MASTER_PB_WORD_MSB);
+	twl4030_i2c_write_u8(TWL4030_CHIP_PM_MASTER, msg &

0xff,

board/nokia/rx51/rx51.c new file +1 -0
+			TWL4030_PM_MASTER_PB_WORD_LSB);

Uh, is this somehow special that you can't do longer transfer?

Quoted 7 lines
Quoted 4 lines
Quoted 2 lines

I do not know how, because registers are different (MSB and LSB).

Investigate ;-)

I think it is not possible. Registers are in bad order. (So on some high endian system it could be possible)

High endian :-)

Quoted 3 lines

Also in linux twl regulator driver is used two calls see:
https://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=blob;f=driv
ers/regulator/twl- regulator.c;hb=HEAD#l327

ok

Quoted 7 lines
Quoted 7 lines
Quoted 7 lines
Quoted 6 lines
Quoted 3 lines
(quoted diff) +2 -0
+
+static unsigned long int twl_wd_time; /* last time of

watchdog reset */ +static unsigned long int twl_i2c_lock;

Are you sure you want to use global vars for these? These won't work before reloc!

Quoted 6 lines
Quoted 4 lines
Quoted 2 lines

Why it does not work before reloc? U-Boot is on n900 always started from RAM.

The BSS isn't cleared though.

So how to fix it? I need to share these vars in more functions.

Make a struct and pass it around? Or if it's used only _after_ relocation, these will work.

Quoted 27 lines
Quoted 24 lines
Quoted 15 lines
Quoted 9 lines

board/nokia/rx51/rx51.c line 519

Quoted 7 lines
board/nokia/rx51/rx51.c new file +7 -0
+
+static u8 keys[8];
+static u8 old_keys[8] = {0, 0, 0, 0, 0, 0, 0, 0};
+#define KEYBUF_SIZE 32
+static u8 keybuf[KEYBUF_SIZE];
+static u8 keybuf_head;
+static u8 keybuf_tail;

How much of this can be made const ?

Nothing. All is for keyboard and is changed by keyboard functions (tstc, getc)

Quoted 2 lines

This magic needs at least _some_ documentation.

Quoted 8 lines
Quoted 4 lines

board/nokia/rx51/rx51.c line 557

Quoted 4 lines
(quoted diff) +1 -0
+	if (!(mods & 2) && (k == 18 || k == 31 || k == 33 || k

==
34)) { + /* cursor keys, without fn */

board/nokia/rx51/rx51.c new file +1 -0
+		keybuf[keybuf_tail++] = '\e';

there is "cursor keys without fn" (fn is "meta" key on n900). So this condition check if some cursor key (without fn) was pressed.

Quoted 1 line

Good, document it.

Ok.

#199 lore raw

PATCH v3 5/5 New board support: Nokia RX-51 aka N900

Quoted 15 lines · On Tuesday 16 October 2012 17:57:09 Marek Vasut wrote:
Quoted 15 lines
Quoted 15 lines
Quoted 14 lines
Quoted 10 lines
Quoted 6 lines
(quoted diff) +2 -0
+
+static unsigned long int twl_wd_time; /* last time

of
watchdog reset */ +static unsigned long int
twl_i2c_lock;

Are you sure you want to use global vars for these? These
won't work before reloc!

Why it does not work before reloc? U-Boot is on n900 always
started from RAM.

Quoted 7 lines
Quoted 4 lines
Quoted 1 line

The BSS isn't cleared though.

So how to fix it? I need to share these vars in more functions.

Make a struct and pass it around? Or if it's used only _after_ relocation, these will work.

It is used for keyboard input (tstc, getc) and watchdog reset. All functions are global for uboot, so parameters are fixed. Keyboard input is initialized in console_init_r.

I tested U-Boot on real N900 and in qemu N900 and both watchdog kicking & keyboard input worked without problem.

Signature · 9 lines
Pali Roh?r
pali.rohar at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20121016/c19d863d/attachment.pgp>
#200 lore raw

v4 cover Nokia RX-51 support

In reply to Pali Rohár

This patch series add support for new board Nokia RX-51 (aka N900). This patch series supersedes version v3.

Pali Roh?r (5):
arm bootm: Allow to pass board specified atags
arm bootm: Do not append zero ATAG_MEM
Add power bus message definitions in twl4030.h
cfb_console: Add support for some ANSI terminal escape codes New board support: Nokia RX-51 aka N900

 MAINTAINERS                      |    4 +
 README                           |    3 +
 arch/arm/include/asm/setup.h     |    5 +
 arch/arm/lib/bootm.c             |    7 +
 board/nokia/rx51/Makefile        |   46 +++
 board/nokia/rx51/lowlevel_init.S |  209 ++++++++++++
 board/nokia/rx51/rx51.c          |  679 ++++++++++++++++++++++++++++++++++++++
 board/nokia/rx51/rx51.h          |  389 ++++++++++++++++++++++
 board/nokia/rx51/tag_omap.h      |  311 +++++++++++++++++
 boards.cfg                       |    1 +
 doc/README.nokia_rx51            |  104 ++++++
 drivers/video/cfb_console.c      |  313 +++++++++++++++++-
 include/configs/nokia_rx51.h     |  450 +++++++++++++++++++++++++
 include/twl4030.h                |   98 ++++++
 14 files changed, 2610 insertions(+), 9 deletions(-)
 create mode 100644 board/nokia/rx51/Makefile
 create mode 100644 board/nokia/rx51/lowlevel_init.S
 create mode 100644 board/nokia/rx51/rx51.c
 create mode 100644 board/nokia/rx51/rx51.h
 create mode 100644 board/nokia/rx51/tag_omap.h
 create mode 100644 doc/README.nokia_rx51
 create mode 100644 include/configs/nokia_rx51.h
Signature · 1 line
1.7.9.5
#201 lore raw

PATCH v4 1/5 arm bootm: Allow to pass board specified atags

Board can implement function setup_board_tags which is used for adding atags

---
Changes in v4:
- Added commit message
- Use __weak instead gcc attribute

 arch/arm/include/asm/setup.h |    5 +++++
 arch/arm/lib/bootm.c         |    4 ++++
 2 files changed, 9 insertions(+)
arch/arm/include/asm/setup.h +5 -0
index 89df4dc..78a7fac 100644
@@ -267,3 +267,8 @@ struct meminfo {
 extern struct meminfo meminfo;
 
 #endif
+
+/*
+ * Board specified tags
+ */
+void setup_board_tags(struct tag **in_params);
arch/arm/lib/bootm.c +4 -0
index a9070d5..9323db0 100644
@@ -34,6 +34,7 @@
 #include <libfdt.h>
 #include <fdt_support.h>
 #include <asm/bootm.h>
+#include <linux/compiler.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -266,6 +267,8 @@ static int create_fdt(bootm_headers_t *images)
 }
 #endif
 
+__weak void setup_board_tags(struct tag **in_params) {}
+
 /* Subcommand: PREP */
 static void boot_prep_linux(bootm_headers_t *images)
 {
@@ -307,6 +310,7 @@ static void boot_prep_linux(bootm_headers_t *images)
 			setup_initrd_tag(gd->bd, images->rd_start,
 			images->rd_end);
 #endif
+		setup_board_tags(&params);
 		setup_end_tag(gd->bd);
 #else /* all tags */
 		printf("FDT and ATAGS support not compiled in - hanging\n");
Signature · 1 line
1.7.9.5
#202 lore raw

PATCH v4 2/5 arm bootm: Do not append zero ATAG_MEM

In reply to Pali Rohár

If dram bank size is calculated at runtime, it can be zero on some boards. This patch added code which ignore these zero bank size in ATAG_MEM.

---
Changes in v4:
- No changes

 arch/arm/lib/bootm.c |    3 +++
 1 file changed, 3 insertions(+)
arch/arm/lib/bootm.c +3 -0
index 9323db0..d5811e0 100644
@@ -133,6 +133,9 @@ static void setup_memory_tags(bd_t *bd)
 	int i;
 
 	for (i = 0; i < CONFIG_NR_DRAM_BANKS; i++) {
+		if (bd->bi_dram[i].size == 0)
+			continue;
+
 		params->hdr.tag = ATAG_MEM;
 		params->hdr.size = tag_size (tag_mem32);
 
Signature · 1 line
1.7.9.5
#203 lore raw

PATCH v4 2/5 arm bootm: Do not append zero ATAG_MEM

Dear Pali Roh?r,

Quoted 7 lines

If dram bank size is calculated at runtime, it can be zero on some boards. This patch added code which ignore these zero bank size in ATAG_MEM.

---
Changes in v4:
- No changes

Did we not discuss this patch?

Quoted 8 lines
 arch/arm/lib/bootm.c |    3 +++
 1 file changed, 3 insertions(+)
arch/arm/lib/bootm.c +0 -0
index 9323db0..d5811e0 100644

arch/arm/lib/bootm.c static void setup_memory_tags(bd_t *bd) · line 140

Quoted 8 lines
arch/arm/lib/bootm.c +3 -0
@@ -133,6 +133,9 @@ static void setup_memory_tags(bd_t *bd)
 	int i;
 
 	for (i = 0; i < CONFIG_NR_DRAM_BANKS; i++) {
+		if (bd->bi_dram[i].size == 0)
+			continue;
+
 		params->hdr.tag = ATAG_MEM;
 		params->hdr.size = tag_size (tag_mem32);

Best regards,
Marek Vasut

#204 lore raw

PATCH v4 2/5 arm bootm: Do not append zero ATAG_MEM

Quoted 6 lines · On Saturday 20 October 2012 11:34:20 Marek Vasut wrote:

Dear Pali Roh?r,

Quoted 4 lines

If dram bank size is calculated at runtime, it can be zero on some boards. This patch added code which ignore these zero bank size in ATAG_MEM.

Quoted 8 lines
Quoted 5 lines

---

Changes in v4:
- No changes

Did we not discuss this patch?

Yes, but there was no change, see:
http://www.mail-archive.com/u-boot at lists.denx.de/msg96706.html

Signature · 9 lines
Pali Roh?r
pali.rohar at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20121020/d501fe14/attachment.pgp>
#205 lore raw

PATCH v4 2/5 arm bootm: Do not append zero ATAG_MEM

Quoted 10 lines · Pali Roh?r
Quoted 9 lines · On Saturday 20 October 2012 11:34:20 Marek Vasut wrote:

Dear Pali Roh??r,

Quoted 7 lines

If dram bank size is calculated at runtime, it can be zero on some boards. This patch added code which ignore these zero bank size in ATAG_MEM.

---

Quoted 8 lines
Quoted 5 lines
Quoted 2 lines

Changes in v4:
- No changes

Did we not discuss this patch?

Yes, but there was no change, see:
http://www.mail-archive.com/u-boot at lists.denx.de/msg96706.html

I'm sorry if I wasn't clear then. This change should not be needed as N900 should simply always say 1 bank and the correct total memory size of all populated memory banks. Is the problem that in the ATAGs we're re-using we have a zero-size memory ATAG?

Signature · 8 lines
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/20121026/0f313470/attachment.pgp>
#206 lore raw

PATCH v4 2/5 arm bootm: Do not append zero ATAG_MEM

In reply to Pali Rohár
Quoted 4 lines · Pali Roh??r

If dram bank size is calculated at runtime, it can be zero on some boards. This patch added code which ignore these zero bank size in ATAG_MEM.

My reading of the kernel's arm_add_memory says that empty ATAG_MEM tags are handled correctly (which is to say, parsed and found as -EINVAL). So if we _have_to_ we can add this change.

Signature · 8 lines
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/20121026/843069da/attachment.pgp>
#207 lore raw

PATCH v4 2/5 arm bootm: Do not append zero ATAG_MEM

Dear Tom Rini,

Quoted 10 lines · Pali Roh??r
Quoted 5 lines

If dram bank size is calculated at runtime, it can be zero on some boards. This patch added code which ignore these zero bank size in ATAG_MEM.

My reading of the kernel's arm_add_memory says that empty ATAG_MEM tags are handled correctly (which is to say, parsed and found as -EINVAL). So if we _have_to_ we can add this change.

I don't think we _have_to_ ...

Best regards,
Marek Vasut

#208 lore raw

PATCH v4 2/5 arm bootm: Do not append zero ATAG_MEM

Quoted 7 lines · Marek Vasut

Dear Tom Rini,

Quoted 5 lines · Pali Roh??r
Quoted 4 lines

If dram bank size is calculated at runtime, it can be zero on some boards. This patch added code which ignore these zero bank size in ATAG_MEM.

Quoted 7 lines
Quoted 5 lines
Quoted 1 line

My reading of the kernel's arm_add_memory says that empty ATAG_MEM tags are handled correctly (which is to say, parsed and found as -EINVAL). So if we _have_to_ we can add this change.

I don't think we _have_to_ ...

Indeed. After talking with Pali on irc some more and checking things again, we can simply drop this patch. Other platforms pass 0 size ATAG_MEM to the kernel and have for ages, so it's handled.

Signature · 8 lines
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/20121029/22692ff9/attachment.pgp>
#209 lore raw

PATCH v4 3/5 Add power bus message definitions in twl4030.h

In reply to Pali Rohár

* Code copied from linux kernel 3.0.0 from file include/linux/i2c/twl.h
* commit 6523b148b44be38d89c2ee9865d34da30d9f5f1c

---
Changes in v4:
- Added commit id to commit message

 include/twl4030.h |   98 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 98 insertions(+)
include/twl4030.h +98 -0
index 9cd32ab..0c17f59 100644
@@ -151,6 +151,103 @@
 #define TWL4030_PM_MASTER_SW_EVENTS_DEVSLP		(1 << 1)
 #define TWL4030_PM_MASTER_SW_EVENTS_DEVOFF		(1 << 0)
 
+/* Power bus message definitions */
+
+/* The TWL4030/5030 splits its power-management resources (the various
+ * regulators, clock and reset lines) into 3 processor groups - P1, P2 and
+ * P3. These groups can then be configured to transition between sleep, wait-on
+ * and active states by sending messages to the power bus.  See Section 5.4.2
+ * Power Resources of TWL4030 TRM
+ */
+
+/* Processor groups */
+#define DEV_GRP_NULL		0x0
+#define DEV_GRP_P1		0x1	/* P1: all OMAP devices */
+#define DEV_GRP_P2		0x2	/* P2: all Modem devices */
+#define DEV_GRP_P3		0x4	/* P3: all peripheral devices */
+
+/* Resource groups */
+#define RES_GRP_RES		0x0	/* Reserved */
+#define RES_GRP_PP		0x1	/* Power providers */
+#define RES_GRP_RC		0x2	/* Reset and control */
+#define RES_GRP_PP_RC		0x3
+#define RES_GRP_PR		0x4	/* Power references */
+#define RES_GRP_PP_PR		0x5
+#define RES_GRP_RC_PR		0x6
+#define RES_GRP_ALL		0x7	/* All resource groups */
+
+#define RES_TYPE2_R0		0x0
+
+#define RES_TYPE_ALL		0x7
+
+/* Resource states */
+#define RES_STATE_WRST		0xF
+#define RES_STATE_ACTIVE	0xE
+#define RES_STATE_SLEEP		0x8
+#define RES_STATE_OFF		0x0
+
+/* Power resources */
+
+/* Power providers */
+#define RES_VAUX1               1
+#define RES_VAUX2               2
+#define RES_VAUX3               3
+#define RES_VAUX4               4
+#define RES_VMMC1               5
+#define RES_VMMC2               6
+#define RES_VPLL1               7
+#define RES_VPLL2               8
+#define RES_VSIM                9
+#define RES_VDAC                10
+#define RES_VINTANA1            11
+#define RES_VINTANA2            12
+#define RES_VINTDIG             13
+#define RES_VIO                 14
+#define RES_VDD1                15
+#define RES_VDD2                16
+#define RES_VUSB_1V5            17
+#define RES_VUSB_1V8            18
+#define RES_VUSB_3V1            19
+#define RES_VUSBCP              20
+#define RES_REGEN               21
+/* Reset and control */
+#define RES_NRES_PWRON          22
+#define RES_CLKEN               23
+#define RES_SYSEN               24
+#define RES_HFCLKOUT            25
+#define RES_32KCLKOUT           26
+#define RES_RESET               27
+/* Power Reference */
+#define RES_Main_Ref            28
+
+#define TOTAL_RESOURCES		28
+/*
+ * Power Bus Message Format ... these can be sent individually by Linux,
+ * but are usually part of downloaded scripts that are run when various
+ * power events are triggered.
+ *
+ *  Broadcast Message (16 Bits):
+ *    DEV_GRP[15:13] MT[12]  RES_GRP[11:9]  RES_TYPE2[8:7] RES_TYPE[6:4]
+ *    RES_STATE[3:0]
+ *
+ *  Singular Message (16 Bits):
+ *    DEV_GRP[15:13] MT[12]  RES_ID[11:4]  RES_STATE[3:0]
+ */
+
+#define MSG_BROADCAST(devgrp, grp, type, type2, state) \
+	((devgrp) << 13 | 1 << 12 | (grp) << 9 | (type2) << 7 \
+	| (type) << 4 | (state))
+
+#define MSG_SINGULAR(devgrp, id, state) \
+	((devgrp) << 13 | 0 << 12 | (id) << 4 | (state))
+
+#define MSG_BROADCAST_ALL(devgrp, state) \
+	((devgrp) << 5 | (state))
+
+#define MSG_BROADCAST_REF MSG_BROADCAST_ALL
+#define MSG_BROADCAST_PROV MSG_BROADCAST_ALL
+#define MSG_BROADCAST__CLK_RST MSG_BROADCAST_ALL
+
 /* Power Managment Receiver */
 #define TWL4030_PM_RECEIVER_SC_CONFIG			0x5B
 #define TWL4030_PM_RECEIVER_SC_DETECT1			0x5C
@@ -311,6 +408,7 @@
 #define TWL4030_PM_RECEIVER_VDAC_VSEL_18		0x03
 #define TWL4030_PM_RECEIVER_VMMC1_VSEL_30		0x02
 #define TWL4030_PM_RECEIVER_VMMC1_VSEL_32		0x03
+#define TWL4030_PM_RECEIVER_VSIM_VSEL_18		0x03
 
 /* Device Selection in PM Receiver Module */
 #define TWL4030_PM_RECEIVER_DEV_GRP_P1			0x20
Signature · 1 line
1.7.9.5
#210 lore raw

PATCH v4 4/5 cfb_console: Add support for some ANSI terminal escape codes

In reply to Pali Rohár

* This patch add support for move cursor, reverse colors and clear console via ANSI espace codes in cfb_console driver
* ANSI escape codes can be enabled/disabled via CONFIG_CFB_CONSOLE_ANSI

---
Changes in v4:
- No changes

Changes in v3:
- Fixed multiline comments

Changes in v2:
- Added support ANSI code show/hide cursor
- Added info to README

Changes since original version:
- Fixed commit message

 README                      |    3 +
 drivers/video/cfb_console.c |  313 +++++++++++++++++++++++++++++++++++++++++--
 2 files changed, 307 insertions(+), 9 deletions(-)
README +3 -0
index 9804cea..d45a91d 100644
@@ -655,6 +655,9 @@ The following options need to be configured:
 						additional board info beside
 						the logo
 
+		When CONFIG_CFB_CONSOLE_ANSI is defined, console will have
+		ANSI terminal support. Needed for CONFIG_CMDLINE_EDITING.
+
 		When CONFIG_CFB_CONSOLE is defined, video console is
 		default i/o. Serial console can be forced with
 		environment 'console=serial'.
drivers/video/cfb_console.c +304 -9

376 lines not on this page · raw message

Signature · 1 line
1.7.9.5
#211 lore raw

PATCH v5 4/5 cfb_console: Add support for some ANSI terminal escape codes

From: Pali Roh?r <[email protected]>

Add optional support for some ANSI escape sequences to the cfb_console driver. Define CONFIG_CFB_CONSOLE_ANSI to enable cursor moving, color reverting and clearing the cfb console via ANSI escape codes.

---
Changes in v5:
- do not init global ansi_buf[]
- cleanup build warnings shown when compiling without CONFIG_CFB_CONSOLE_ANSI
- reorder some functions and put them under ANSI support ifdef
- revise commit log and description in README
- fix typos and some minor style issues

 README                      |    4 +
 drivers/video/cfb_console.c |  328 +++++++++++++++++++++++++++++++++++++++++--
 2 files changed, 323 insertions(+), 9 deletions(-)
README +4 -0
index df4aed1..61e2e1f 100644
@@ -655,6 +655,10 @@ The following options need to be configured:
 						additional board info beside
 						the logo
 
+		When CONFIG_CFB_CONSOLE_ANSI is defined, console will support
+		a limited number of ANSI escape sequences (cursor control,
+		erase functions and limited graphics rendition control).
+
 		When CONFIG_CFB_CONSOLE is defined, video console is
 		default i/o. Serial console can be forced with
 		environment 'console=serial'.
drivers/video/cfb_console.c +319 -9

377 lines not on this page · raw message

Signature · 1 line
1.7.1
#212 lore raw

PATCH v5 4/5 cfb_console: Add support for some ANSI terminal escape codes

Quoted 9 lines · On Saturday 20 October 2012 01:30:09 Anatolij Gustschin wrote:

From: Pali Roh?r <[email protected]>

Add optional support for some ANSI escape sequences to the cfb_console driver. Define CONFIG_CFB_CONSOLE_ANSI to enable cursor moving, color reverting and clearing the cfb console via ANSI escape codes.

Quoted 9 lines

---
Changes in v5:
- do not init global ansi_buf[]
- cleanup build warnings shown when compiling without
CONFIG_CFB_CONSOLE_ANSI - reorder some functions and put them under ANSI support ifdef - revise commit log and description in README
- fix typos and some minor style issues

I tested v5 and for rx51 working fine.

Signature · 9 lines
Pali Roh?r
pali.rohar at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20121023/30f7361e/attachment.pgp>
#213 lore raw

PATCH v4 4/5 cfb_console: Add support for some ANSI terminal escape codes

In reply to Pali Rohár

Hi,

On Fri, 19 Oct 2012 14:00:07 +0200
Pali Roh?r <[email protected]> wrote:
...

README The following options need to be configured: · line 659

Quoted 2 lines
README +2 -0
+		When CONFIG_CFB_CONSOLE_ANSI is defined, console will have
+		ANSI terminal support. Needed for CONFIG_CMDLINE_EDITING.

What do you mean here? Doesn't command line editing work without ANSI support in cfb?

drivers/video/cfb_console.c static u32 eorx, fgx, bgx; /* color pats */ · line 388

Quoted 13 lines
README +1 -0
+
 		When CONFIG_CFB_CONSOLE is defined, video console is
 		default i/o. Serial console can be forced with
 		environment 'console=serial'.
drivers/video/cfb_console.c +1 -0
index 9f7794f..3ed96d3 100644
@@ -385,6 +385,11 @@ static u32 eorx, fgx, bgx;	/* color pats */
 
 static int cfb_do_flush_cache;
 
+static char ansi_buf[10] = { 0, };

initialisation is not needed here. I've fixed some issues with this patch, please test v5.

Thanks,
Anatolij

#214 lore raw

PATCH v4 4/5 cfb_console: Add support for some ANSI terminal escape codes

Quoted 7 lines · On Saturday 20 October 2012 01:38:14 Anatolij Gustschin wrote:

Hi,

On Fri, 19 Oct 2012 14:00:07 +0200
Pali Roh?r <[email protected]> wrote:
...

Review

Quoted 1 line
(quoted diff) +1 -0
+		When CONFIG_CFB_CONSOLE_ANSI is defined, console will 

have

Quoted 1 line

Review

Quoted 1 line
(quoted diff) +1 -0
+		ANSI terminal support. Needed for 

CONFIG_CMDLINE_EDITING.

Quoted 4 lines

What do you mean here? Doesn't command line editing work without ANSI support in cfb?

CONFIG_CMDLINE_EDITING using ansi escape codes, so in cfb it not working without CONFIG_CFB_CONSOLE_ANSI.

Signature · 9 lines
Pali Roh?r
pali.rohar at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20121023/e51411d1/attachment.pgp>
#215 lore raw

PATCH v4 5/5 New board support: Nokia RX-51 aka N900

In reply to Pali Rohár

This patch adding support for new board Nokia RX-51 (N900).

Based on previous work by: Alistair Buxton <[email protected]>

Cc ?????? ???????? <[email protected]>

---
Changes in v4:
- Fixed MAINTAINERS
- Added default to switches
- Added some documentation to code
- Optimize indent depth
- Using __stringify

Changes in v3:
- Added documentation in doc/README.nokia_rx51
- Updated MAINTAINERS
- Fixed Fix omap_mmc_init
- Code for errata 430973 workaround
- Added board specified atag support
- Generate omap atag table instead reusing from NOLO
- Load bootmenu.src always
- Enabled ext4 support
- Fixed comments
- Reserve protected RAM for attached kernel
- Rewritten assembler code in lowlevel_init.S
- Reset lp5523 led on init

Changes in v2:
- Set correct configs for Memory Map
- Enable passing memory tag to kernel atags
- Use gpio input command for detecting keyboard slide
- Restore powerbus state after calling twl4030 regulator code
- Renamed command noloboot to attachboot
- Atag address must be always 0x80000100, removed code from lowlevel
- Added usb vendor, product id and product name
- Enabled command line editing
- Fixed keymap and cursor keys

Changes since original version:
- Removed Makefile targets: clean and distclean
- Rewrited bootcommand and env variables in nokia_rx51.h
- Removed useless CONFIG defines in nokia_rx51.h
- Disable L2 cache with CONFIG_SYS_L2CACHE_OFF - fixed battery draining
- Added onenand support (default disabled due to big u-boot size)
- Moved inlined asm code to new file lowlevel_init.S
- Fixed commit message

 MAINTAINERS                      |    4 +
 board/nokia/rx51/Makefile        |   46 +++
 board/nokia/rx51/lowlevel_init.S |  209 ++++++++++++
 board/nokia/rx51/rx51.c          |  679 ++++++++++++++++++++++++++++++++++++++
 board/nokia/rx51/rx51.h          |  389 ++++++++++++++++++++++
 board/nokia/rx51/tag_omap.h      |  311 +++++++++++++++++
 boards.cfg                       |    1 +
 doc/README.nokia_rx51            |  104 ++++++
 include/configs/nokia_rx51.h     |  450 +++++++++++++++++++++++++
 9 files changed, 2193 insertions(+)
 create mode 100644 board/nokia/rx51/Makefile
 create mode 100644 board/nokia/rx51/lowlevel_init.S
 create mode 100644 board/nokia/rx51/rx51.c
 create mode 100644 board/nokia/rx51/rx51.h
 create mode 100644 board/nokia/rx51/tag_omap.h
 create mode 100644 doc/README.nokia_rx51
 create mode 100644 include/configs/nokia_rx51.h
MAINTAINERS +4 -0
index 971235b..9e0b1b2 100644
@@ -1009,6 +1009,10 @@ Nobuhiro Iwamatsu <[email protected]>
 
 	armadillo-800eva	R8A7740 (RMOBILE SoC)
 
+Pali Roh?r <[email protected]>
+
+	nokia_rx51	ARM ARMV7 (OMAP34xx SoC)
+
 -------------------------------------------------------------------------
 
 Unknown / orphaned boards:
board/nokia/rx51/Makefile new file +46 -0

46 lines not on this page · raw message

board/nokia/rx51/lowlevel_init.S new file +209 -0

209 lines not on this page · raw message

board/nokia/rx51/rx51.c new file +679 -0

679 lines not on this page · raw message

board/nokia/rx51/rx51.h new file +389 -0

389 lines not on this page · raw message

board/nokia/rx51/tag_omap.h new file +311 -0

311 lines not on this page · raw message

boards.cfg +1 -0
index 4b17289..0647b3e 100644
@@ -264,6 +264,7 @@ devkit8000                   arm         armv7       devkit8000          timll
 mcx                          arm         armv7       mcx                 htkw           omap3
 tricorder                    arm         armv7       tricorder           corscience     omap3
 twister                      arm         armv7       twister             technexion     omap3
+nokia_rx51                   arm         armv7       rx51                nokia          omap3
 omap4_panda                  arm         armv7       panda               ti             omap4
 omap4_sdp4430                arm         armv7       sdp4430             ti             omap4
 omap5_evm                    arm         armv7       omap5_evm           ti		omap5
doc/README.nokia_rx51 new file +104 -0

104 lines not on this page · raw message

include/configs/nokia_rx51.h new file +450 -0

450 lines not on this page · raw message

Signature · 1 line
1.7.9.5
#216 lore raw

PATCH v4 5/5 New board support: Nokia RX-51 aka N900

Hi Pali Roh?r,

Quoted 7 lines · Pali Roh?r

This patch adding support for new board Nokia RX-51 (N900).

Based on previous work by: Alistair Buxton <[email protected]>

Cc ?????? ???????? <[email protected]>

---

[...]

Quoted 5 lines
board/nokia/rx51/rx51.c new file +0 -0
new file mode 100644
index 0000000..60446cb

[...]

board/nokia/rx51/rx51.c line 216

Quoted 9 lines
board/nokia/rx51/rx51.c new file +9 -0
+/*
+ * Routine: board_init
+ * Description: Early hardware init.
+ */
+int board_init(void)
+{
+	gpmc_init(); /* in SRAM or SDRAM, finish GPMC */
+	/* board id for Linux */
+	gd->bd->bi_arch_number = MACH_TYPE_NOKIA_RX51;

This should be specified in the board config file (see CONFIG_MACH_TYPE in README), unless, you have multiple board types supported in the same board file/binary (which does not look like the case here) and it is runtime detectable.

Quoted 5 lines
board/nokia/rx51/rx51.c new file +5 -0
+	/* boot param addr */
+	gd->bd->bi_boot_params = OMAP34XX_SDRC_CS0 + 0x100;
+
+	return 0;
+}

[...]

Signature · 2 lines
Regards,
Igor.
#217 lore raw

PATCH v4 5/5 New board support: Nokia RX-51 aka N900

Quoted 17 lines · On Tuesday 23 October 2012 09:20:39 Igor Grinberg wrote:

board/nokia/rx51/rx51.c line 216

Quoted 10 lines
board/nokia/rx51/rx51.c new file +9 -0
+/*
+ * Routine: board_init
+ * Description: Early hardware init.
+ */
+int board_init(void)
+{
+	gpmc_init(); /* in SRAM or SDRAM, finish GPMC */
+	/* board id for Linux */
+	gd->bd->bi_arch_number = MACH_TYPE_NOKIA_RX51;

This should be specified in the board config file (see CONFIG_MACH_TYPE in README), unless, you have multiple board types supported in the same board file/binary (which does not look like the case here) and it is runtime detectable.

I sent new version of this patch.

Signature · 9 lines
Pali Roh?r
pali.rohar at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20121029/6caa927d/attachment.pgp>
#218 lore raw

PATCH v5 5/5 New board support: Nokia RX-51 aka N900

In reply to Pali Rohár

Based on previous work by: Alistair Buxton <[email protected]>

Cc ?????? ???????? <[email protected]>

---
Changes in v5:
- Define CONFIG_MACH_TYPE in config file
- Remove gd->bd->bi_arch_number from board code

Changes in v4:
- Fixed MAINTAINERS
- Added default to switches
- Added some documentation to code
- Optimize indent depth
- Using __stringify

Changes in v3:
- Added documentation in doc/README.nokia_rx51
- Updated MAINTAINERS
- Fixed Fix omap_mmc_init
- Code for errata 430973 workaround
- Added board specified atag support
- Generate omap atag table instead reusing from NOLO
- Load bootmenu.src always
- Enabled ext4 support
- Fixed comments
- Reserve protected RAM for attached kernel
- Rewritten assembler code in lowlevel_init.S
- Reset lp5523 led on init

Changes in v2:
- Set correct configs for Memory Map
- Enable passing memory tag to kernel atags
- Use gpio input command for detecting keyboard slide
- Restore powerbus state after calling twl4030 regulator code
- Renamed command noloboot to attachboot
- Atag address must be always 0x80000100, removed code from lowlevel
- Added usb vendor, product id and product name
- Enabled command line editing
- Fixed keymap and cursor keys

Changes since original version:
- Removed Makefile targets: clean and distclean
- Rewrited bootcommand and env variables in nokia_rx51.h
- Removed useless CONFIG defines in nokia_rx51.h
- Disable L2 cache with CONFIG_SYS_L2CACHE_OFF - fixed battery draining
- Added onenand support (default disabled due to big u-boot size)
- Moved inlined asm code to new file lowlevel_init.S
- Fixed commit message

 MAINTAINERS                      |    4 +
 board/nokia/rx51/Makefile        |   46 +++
 board/nokia/rx51/lowlevel_init.S |  209 ++++++++++++
 board/nokia/rx51/rx51.c          |  677 ++++++++++++++++++++++++++++++++++++++
 board/nokia/rx51/rx51.h          |  389 ++++++++++++++++++++++
 board/nokia/rx51/tag_omap.h      |  311 +++++++++++++++++
 boards.cfg                       |    1 +
 doc/README.nokia_rx51            |  104 ++++++
 include/configs/nokia_rx51.h     |  452 +++++++++++++++++++++++++
 9 files changed, 2193 insertions(+)
 create mode 100644 board/nokia/rx51/Makefile
 create mode 100644 board/nokia/rx51/lowlevel_init.S
 create mode 100644 board/nokia/rx51/rx51.c
 create mode 100644 board/nokia/rx51/rx51.h
 create mode 100644 board/nokia/rx51/tag_omap.h
 create mode 100644 doc/README.nokia_rx51
 create mode 100644 include/configs/nokia_rx51.h
MAINTAINERS +4 -0
index 971235b..9e0b1b2 100644
@@ -1009,6 +1009,10 @@ Nobuhiro Iwamatsu <[email protected]>
 
 	armadillo-800eva	R8A7740 (RMOBILE SoC)
 
+Pali Roh?r <[email protected]>
+
+	nokia_rx51	ARM ARMV7 (OMAP34xx SoC)
+
 -------------------------------------------------------------------------
 
 Unknown / orphaned boards:
board/nokia/rx51/Makefile new file +46 -0

46 lines not on this page · raw message

board/nokia/rx51/lowlevel_init.S new file +209 -0

209 lines not on this page · raw message

board/nokia/rx51/rx51.c new file +677 -0

677 lines not on this page · raw message

board/nokia/rx51/rx51.h new file +389 -0

389 lines not on this page · raw message

board/nokia/rx51/tag_omap.h new file +311 -0

311 lines not on this page · raw message

boards.cfg +1 -0
index 4b17289..0647b3e 100644
@@ -264,6 +264,7 @@ devkit8000                   arm         armv7       devkit8000          timll
 mcx                          arm         armv7       mcx                 htkw           omap3
 tricorder                    arm         armv7       tricorder           corscience     omap3
 twister                      arm         armv7       twister             technexion     omap3
+nokia_rx51                   arm         armv7       rx51                nokia          omap3
 omap4_panda                  arm         armv7       panda               ti             omap4
 omap4_sdp4430                arm         armv7       sdp4430             ti             omap4
 omap5_evm                    arm         armv7       omap5_evm           ti		omap5
doc/README.nokia_rx51 new file +104 -0

104 lines not on this page · raw message

include/configs/nokia_rx51.h new file +452 -0

452 lines not on this page · raw message

Signature · 1 line
1.7.10.4
#219 lore raw

PATCH v5 5/5 New board support: Nokia RX-51 aka N900

Quoted 4 lines · Pali Roh??r

Based on previous work by: Alistair Buxton <[email protected]>

Cc ???????????? ???????????????? <[email protected]>

This, along with the latest versions of the rest of the series are now applied to u-boot-ti/master, thanks!

Signature · 8 lines
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/20121102/af7ad927/attachment.pgp>