[PATCH 2/3] qi-commandline-split.patch

Andy Green andy at openmoko.com
Thu Nov 20 00:52:32 CET 2008


Signed-off-by: Andy Green <andy at openmoko.com>
---

 include/qi.h                             |    4 +-
 src/cpu/s3c2410/gta01.c                  |   65 +++++++--------------------
 src/cpu/s3c2442/gta02.c                  |   73 ++++++++----------------------
 src/cpu/s3c6410/gta03-steppingstone.c    |   11 ++---
 src/cpu/s3c6410/smdk6410-steppingstone.c |   14 +++---
 src/phase2.c                             |   21 ++++++---
 6 files changed, 64 insertions(+), 124 deletions(-)

diff --git a/include/qi.h b/include/qi.h
index 1ecf31f..6cf4cf5 100644
--- a/include/qi.h
+++ b/include/qi.h
@@ -54,7 +54,7 @@ struct kernel_source {
 	int partition_index; /* -1 means no partition table */
 	int offset_blocks512_if_no_partition; /* used if partition_index is -1 */
 	enum filesystem filesystem;
-	const char * commandline;
+	const char * commandline_append;
 };
 
 /* describes a board variant, eg, PCB revision */
@@ -72,6 +72,8 @@ struct board_api {
 	unsigned long linux_mem_start;
 	unsigned long linux_mem_size;
 	unsigned long linux_tag_placement;
+	const char *commandline_board;
+	const char *commandline_board_debug;
 	const struct board_variant const * (*get_board_variant)(void);
 	int (*is_this_board)(void);
 	void (*early_port_init)(void);
diff --git a/src/cpu/s3c2410/gta01.c b/src/cpu/s3c2410/gta01.c
index 4b34112..5ad84ca 100644
--- a/src/cpu/s3c2410/gta01.c
+++ b/src/cpu/s3c2410/gta01.c
@@ -224,6 +224,17 @@ const struct board_api board_api_gta01 = {
 	.port_init = port_init_gta01,
 	.putc = putc_gta01,
 	.close = close_gta01,
+	.commandline_board = "mtdparts=" \
+				"neo1973-nand:" \
+				 "0x00040000(qi)," \
+				 "0x00004000(u-boot_env)," \
+				 "0x00200000(kernel)," \
+				 "0x000a0000(splash)," \
+				 "0x03d1c000(rootfs) " \
+			       "console=ttySAC0,115200 " \
+			       "init=/sbin/init "\
+			       "ro",
+	.commandline_board_debug = " loglevel=8 console=tty0",
 	/* these are the ways we could boot GTA01 in order to try */
 	.kernel_source = {
 		[0] = {
@@ -233,18 +244,7 @@ const struct board_api board_api_gta01 = {
 			.partition_index = 1,
 			.filesystem = FS_EXT2,
 			.filepath = "boot/uImage-GTA01.bin",
-			.commandline = "mtdparts=" \
-					"neo1973-nand:" \
-					 "0x00040000(qi)," \
-					 "0x00004000(u-boot_env)," \
-					 "0x00200000(kernel)," \
-					 "0x000a0000(splash)," \
-					 "0x03d1c000(rootfs) " \
-				       "root=/dev/mmcblk0p2 " \
-				       "console=ttySAC0,115200 " \
-				       "loglevel=4 " \
-				       "init=/sbin/init "\
-				       "ro"
+			.commandline_append = " root=/dev/mmcblk0p1",
 		},
 		[1] = {
 			.name = "SD Card EXT2 Kernel p2",
@@ -253,18 +253,7 @@ const struct board_api board_api_gta01 = {
 			.partition_index = 2,
 			.filesystem = FS_EXT2,
 			.filepath = "boot/uImage-GTA01.bin",
-			.commandline = "mtdparts=" \
-					"neo1973-nand:" \
-					 "0x00040000(qi)," \
-					 "0x00004000(u-boot_env)," \
-					 "0x00200000(kernel)," \
-					 "0x000a0000(splash)," \
-					 "0x03d1c000(rootfs) " \
-				       "root=/dev/mmcblk0p2 " \
-				       "console=ttySAC0,115200 " \
-				       "loglevel=4 " \
-				       "init=/sbin/init "\
-				       "ro"
+			.commandline_append = " root=/dev/mmcblk0p2",
 		},
 		[2] = {
 			.name = "SD Card EXT2 Kernel p3",
@@ -273,37 +262,15 @@ const struct board_api board_api_gta01 = {
 			.partition_index = 3,
 			.filesystem = FS_EXT2,
 			.filepath = "boot/uImage-GTA01.bin",
-			.commandline = "mtdparts=" \
-					"neo1973-nand:" \
-					 "0x00040000(qi)," \
-					 "0x00004000(u-boot_env)," \
-					 "0x00200000(kernel)," \
-					 "0x000a0000(splash)," \
-					 "0x03d1c000(rootfs) " \
-				       "root=/dev/mmcblk0p2 " \
-				       "console=ttySAC0,115200 " \
-				       "loglevel=4 " \
-				       "init=/sbin/init "\
-				       "ro"
+			.commandline_append = " root=/dev/mmcblk0p3",
 		},
 		[3] = {
 			.name = "NAND Kernel",
 			.block_read = nand_read_ll,
 			.offset_blocks512_if_no_partition = 0x44000 / 512,
 			.filesystem = FS_RAW,
-			.commandline = "mtdparts=" \
-					"neo1973-nand:" \
-					 "0x00040000(qi)," \
-					 "0x00004000(u-boot_env)," \
-					 "0x00200000(kernel)," \
-					 "0x000a0000(splash)," \
-					 "0x03d1c000(rootfs) " \
-				       "rootfstype=jffs2 " \
-				       "root=/dev/mtdblock4 " \
-				       "console=ttySAC0,115200 " \
-				       "loglevel=4 " \
-				       "init=/sbin/init "\
-				       "ro"
+			.commandline_append = " rootfstype=jffs2 " \
+				       "root=/dev/mtdblock4 ",
 		},
 	},
 };
diff --git a/src/cpu/s3c2442/gta02.c b/src/cpu/s3c2442/gta02.c
index a9078fe..f434ba9 100644
--- a/src/cpu/s3c2442/gta02.c
+++ b/src/cpu/s3c2442/gta02.c
@@ -383,7 +383,20 @@ const struct board_api board_api_gta02 = {
 	.port_init = port_init_gta02,
 	.putc = putc_gta02,
 	.close = close_gta02,
-	/* these are the ways we could boot GTA02 in order to try */
+	.commandline_board = "mtdparts=physmap-flash:-(nor);" \
+				       "neo1973-nand:" \
+				       "0x00040000(qi)," \
+				       "0x00040000(cmdline)," \
+				       "0x00800000(backupkernel)," \
+				       "0x000a0000(extra)," \
+				       "0x00040000(identity)," \
+				       "0x0f6a0000(backuprootfs) " \
+				      "console=ttySAC2,115200 " \
+				      "init=/sbin/init " \
+				      "ro",
+	.commandline_board_debug = " console=tty0 " \
+				   "loglevel=8",
+	/* these are the ways we could boot GTA02 in the order to try */
 	.kernel_source = {
 		[0] = {
 			.name = "SD Card EXT2 P1 Kernel",
@@ -392,19 +405,7 @@ const struct board_api board_api_gta02 = {
 			.partition_index = 1,
 			.filesystem = FS_EXT2,
 			.filepath = "boot/uImage-GTA02.bin",
-			.commandline = "mtdparts=physmap-flash:-(nor);" \
-					"neo1973-nand:" \
-					 "0x00040000(qi)," \
-					 "0x00040000(cmdline)," \
-					 "0x00800000(backupkernel)," \
-					 "0x000a0000(extra)," \
-					 "0x00040000(identity)," \
-					 "0x0f6a0000(backuprootfs) " \
-				       "root=/dev/mmcblk0p1 " \
-				       "console=ttySAC2,115200 " \
-				       "loglevel=8 console=tty0 " \
-				       "init=/sbin/init "\
-				       "ro"
+			.commandline_append = " root=/dev/mmcblk0p1",
 		},
 		[1] = {
 			.name = "SD Card EXT2 P2 Kernel",
@@ -413,19 +414,7 @@ const struct board_api board_api_gta02 = {
 			.partition_index = 2,
 			.filesystem = FS_EXT2,
 			.filepath = "boot/uImage-GTA02.bin",
-			.commandline = "mtdparts=physmap-flash:-(nor);" \
-					"neo1973-nand:" \
-					 "0x00040000(qi)," \
-					 "0x00040000(cmdline)," \
-					 "0x00800000(backupkernel)," \
-					 "0x000a0000(extra)," \
-					 "0x00040000(identity)," \
-					 "0x0f6a0000(backuprootfs) " \
-				       "root=/dev/mmcblk0p2 " \
-				       "console=ttySAC2,115200 " \
-				       "loglevel=8 console=tty0 " \
-				       "init=/sbin/init "\
-				       "ro"
+			.commandline_append = " root=/dev/mmcblk0p2",
 		},
 		[2] = {
 			.name = "SD Card EXT2 P3 Kernel",
@@ -434,39 +423,15 @@ const struct board_api board_api_gta02 = {
 			.partition_index = 3,
 			.filesystem = FS_EXT2,
 			.filepath = "boot/uImage-GTA02.bin",
-			.commandline = "mtdparts=physmap-flash:-(nor);" \
-					"neo1973-nand:" \
-					 "0x00040000(qi)," \
-					 "0x00040000(cmdline)," \
-					 "0x00800000(backupkernel)," \
-					 "0x000a0000(extra)," \
-					 "0x00040000(identity)," \
-					 "0x0f6a0000(backuprootfs) " \
-				       "root=/dev/mmcblk0p3 " \
-				       "console=ttySAC2,115200 " \
-				       "loglevel=8 console=tty0 " \
-				       "init=/sbin/init "\
-				       "ro"
+			.commandline_append = " root=/dev/mmcblk0p3",
 		},
 		[3] = {
 			.name = "NAND Kernel",
 			.block_read = nand_read_ll,
 			.offset_blocks512_if_no_partition = 0x80000 / 512,
 			.filesystem = FS_RAW,
-			.commandline = "mtdparts=physmap-flash:-(nor);" \
-					"neo1973-nand:" \
-					 "0x00040000(qi)," \
-					 "0x00040000(cmdline)," \
-					 "0x00800000(backupkernel)," \
-					 "0x000a0000(extra)," \
-					 "0x00040000(identity)," \
-					 "0x0f6a0000(backuprootfs) " \
-				       "rootfstype=jffs2 " \
-				       "root=/dev/mtdblock6 " \
-				       "console=ttySAC2,115200 " \
-				       "loglevel=8 console=tty0 " \
-				       "init=/sbin/init "\
-				       "ro"
+			.commandline_append = " rootfstype=jffs2 " \
+					      "root=/dev/mtdblock6",
 		},
 	},
 };
diff --git a/src/cpu/s3c6410/gta03-steppingstone.c b/src/cpu/s3c6410/gta03-steppingstone.c
index eb10622..ac147c2 100644
--- a/src/cpu/s3c6410/gta03-steppingstone.c
+++ b/src/cpu/s3c6410/gta03-steppingstone.c
@@ -57,6 +57,9 @@ const struct board_api board_api_gta03 = {
 	.is_this_board = is_this_board_gta03,
 	.port_init = port_init_gta03,
 	.putc = putc_gta03,
+	.commandline_board = "console=ttySAC3,115200 " \
+			     "init=/bin/sh " \
+			     "loglevel=8 ",
 	.kernel_source = {
 		[0] = {
 			.name = "SD Card rootfs",
@@ -64,9 +67,7 @@ const struct board_api board_api_gta03 = {
 			.filesystem = FS_EXT2,
 			.partition_index = 2,
 			.filepath = "boot/uImage-GTA03.bin",
-			.commandline = "console=ttySAC3,115200 " \
-				       "loglevel=8 init=/bin/sh " \
-				       "root=/dev/mmcblk0p2"
+			.commandline_append = "root=/dev/mmcblk0p2",
 		},
 		[1] = {
 			.name = "SD Card backup rootfs",
@@ -74,9 +75,7 @@ const struct board_api board_api_gta03 = {
 			.filesystem = FS_EXT2,
 			.partition_index = 3,
 			.filepath = "boot/uImage-GTA03.bin",
-			.commandline = "console=ttySAC3,115200 " \
-				       "loglevel=8 init=/bin/sh " \
-				       "root=/dev/mmcblk0p3"
+			.commandline_append = "root=/dev/mmcblk0p3",
 		},
 	},
 };
diff --git a/src/cpu/s3c6410/smdk6410-steppingstone.c b/src/cpu/s3c6410/smdk6410-steppingstone.c
index f41d904..8a62b6c 100644
--- a/src/cpu/s3c6410/smdk6410-steppingstone.c
+++ b/src/cpu/s3c6410/smdk6410-steppingstone.c
@@ -45,6 +45,9 @@ const struct board_api board_api_smdk6410 = {
 	.get_board_variant = get_board_variant_smdk6410,
 	.is_this_board = is_this_board_smdk6410,
 	.putc = putc_smdk6410,
+	.commandline_board = "console=ttySAC0,115200 " \
+			     "loglevel=3 " \
+			     "init=/bin/sh",
 	.kernel_source = {
 		[0] = {
 			.name = "SD Card rootfs",
@@ -52,9 +55,7 @@ const struct board_api board_api_smdk6410 = {
 			.filesystem = FS_EXT2,
 			.partition_index = 2,
 			.filepath = "boot/uImage.bin",
-			.commandline = "console=ttySAC0,115200 " \
-				       "loglevel=3 init=/bin/sh " \
-				       "root=/dev/mmcblk0p2"
+			.commandline_append = " root=/dev/mmcblk0p2"
 		},
 		[1] = {
 			.name = "SD Card backup rootfs",
@@ -62,9 +63,8 @@ const struct board_api board_api_smdk6410 = {
 			.filesystem = FS_EXT2,
 			.partition_index = 3,
 			.filepath = "boot/uImage.bin",
-			.commandline = "console=ttySAC0,115200 " \
-				       "loglevel=8 init=/bin/sh " \
-				       "root=/dev/mmcblk0p3"
-		},	},
+			.commandline_append = " root=/dev/mmcblk0p3"
+		},
+	},
 };
 
diff --git a/src/phase2.c b/src/phase2.c
index 847dfc8..60bace3 100644
--- a/src/phase2.c
+++ b/src/phase2.c
@@ -94,6 +94,7 @@ void bootloader_second_phase(void)
 
 	while (this_kernel->name) {
 		const char *p;
+		char * cmdline;
 		struct tag *params = (struct tag *)this_board->linux_tag_placement;
 		void * kernel_dram = (void *)this_board->linux_mem_start + 0x8000;
 		unsigned long crc;
@@ -104,7 +105,7 @@ void bootloader_second_phase(void)
 		partition_length_blocks = 0;
 
 		/* eat leading white space */
-		for (p = this_kernel->commandline; *p == ' '; p++);
+		for (p = this_board->commandline_board; *p == ' '; p++);
 
 		puts("\nTrying kernel: ");
 		puts(this_kernel->name);
@@ -208,10 +209,6 @@ void bootloader_second_phase(void)
 			}
 		}
 
-		puts("      Cmdline: ");
-		puts(p);
-		puts("\n");
-
 		/*
 		 * It's good for now to know that our kernel is intact from
 		 * the storage before we jump into it and maybe crash silently
@@ -266,10 +263,20 @@ void bootloader_second_phase(void)
 		/* kernel commandline */
 
 		if (*p) {
+			cmdline = params->u.cmdline.cmdline;
+			cmdline += strlen(strcpy(cmdline, p));
+			if (this_kernel->commandline_append)
+				cmdline += strlen(strcpy(cmdline,
+					      this_kernel->commandline_append));
+
 			params->hdr.tag = ATAG_CMDLINE;
 			params->hdr.size = (sizeof (struct tag_header) +
-						       strlen (p) + 1 + 4) >> 2;
-			strcpy (params->u.cmdline.cmdline, p);
+				strlen(params->u.cmdline.cmdline) + 1 + 4) >> 2;
+
+			puts("      Cmdline: ");
+			puts(params->u.cmdline.cmdline);
+			puts("\n");
+
 			params = tag_next (params);
 		}
 




More information about the openmoko-kernel mailing list