diff mbox

[U-Boot] sunxi: Add a bootcmd_old to the default environment to boot old kernels

Message ID 1444407352-1847-1-git-send-email-hdegoede@redhat.com
State Accepted
Delegated to: Hans de Goede
Headers show

Commit Message

Hans de Goede Oct. 9, 2015, 4:15 p.m. UTC
Add a bootcmd_old value to the default environment when building with
CONFIG_OLD_SUNXI_KERNEL_COMPAT, this way people who occasionally want
to boot an old kernel can do so by simply typing "run bootcmd_old"
rather then needing to have 2 separe setups / sdcards for old and
new kernels.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
---
 include/configs/sunxi-common.h | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

Comments

Ian Campbell Oct. 11, 2015, 9:12 a.m. UTC | #1
On Fri, 2015-10-09 at 18:15 +0200, Hans de Goede wrote:
> Add a bootcmd_old value to the default environment when building with
> CONFIG_OLD_SUNXI_KERNEL_COMPAT, this way people who occasionally want
> to boot an old kernel can do so by simply typing "run bootcmd_old"
> rather then needing to have 2 separe setups / sdcards for old and

"separate"?


"old" is a bit non-specific (e.g. there are also old mainline kernels).
Perhaps bootcmd_sunxi_compat? It's a bit of a mouthful but it will tab
complete b<tab>sun<tab> or close to that.

> +#ifdef CONFIG_OLD_SUNXI_KERNEL_COMPAT
> +#define BOOTCMD_OLD \
> +	"root=/dev/mmcblk0p3 rootwait\0" \

Does something other than the below setenv bootargs rely on this? It'd
be better not to pollute the default env with such a generically named
thing. I suggest following the naming of the command, so
root_sunxi_compat.

If it is important to have root= present e.g. for script.bin or
uEnv.txt then perhaps put setenv root ${root_sunxi_compat} at the start
of the command?

> +	"bootcmd_old=" \
> +		"if ext2load mmc 0 0x44000000 uEnv.txt; then " \
> +			"echo Loaded environment from uEnv.txt; " \
> +			"env import -t 0x44000000 ${filesize}; " \
> +		"fi; " \
> +		"setenv bootargs console=${console} root=${root}
> ${extraargs}; " \
> +		"ext2load mmc 0 0x43000000 script.bin && " \
> +		"ext2load mmc 0 0x48000000 uImage && " \
> +		"bootm 0x48000000\0"
> +#else
> +#define BOOTCMD_OLD
> +#endif
> +
>  #include <config_distro_bootcmd.h>
>  
>  #ifdef CONFIG_USB_KEYBOARD
> @@ -495,6 +511,7 @@ extern int soft_i2c_gpio_scl;
>  	MTD_ENV_SETTINGS \
>  	"fdtfile=" CONFIG_DEFAULT_DEVICE_TREE ".dtb\0" \
>  	"console=ttyS0,115200\0" \
> +	BOOTCMD_OLD \
>  	BOOTENV
>  
>  #else /* ifndef CONFIG_SPL_BUILD */
Hans de Goede Oct. 11, 2015, 10:38 a.m. UTC | #2
Hi,

On 11-10-15 11:12, Ian Campbell wrote:
> On Fri, 2015-10-09 at 18:15 +0200, Hans de Goede wrote:
>> Add a bootcmd_old value to the default environment when building with
>> CONFIG_OLD_SUNXI_KERNEL_COMPAT, this way people who occasionally want
>> to boot an old kernel can do so by simply typing "run bootcmd_old"
>> rather then needing to have 2 separe setups / sdcards for old and
>
> "separate"?

Yep, my bad.

> "old" is a bit non-specific (e.g. there are also old mainline kernels).
> Perhaps bootcmd_sunxi_compat? It's a bit of a mouthful but it will tab
> complete b<tab>sun<tab> or close to that.

Ok, bootcmd_sunxi_compat it is.

>> +#ifdef CONFIG_OLD_SUNXI_KERNEL_COMPAT
>> +#define BOOTCMD_OLD \
>> +	"root=/dev/mmcblk0p3 rootwait\0" \
>
> Does something other than the below setenv bootargs rely on this? It'd
> be better not to pollute the default env with such a generically named
> thing. I suggest following the naming of the command, so
> root_sunxi_compat.
>
> If it is important to have root= present e.g. for script.bin or
> uEnv.txt then perhaps put setenv root ${root_sunxi_compat} at the start
> of the command?

Right, we need this because it is typically set from uEnv.txt, using
setenv before importing uEnv.txt is a good idea though. And there
is no need for the root_sunxi_compat indirection there IMHO.

Patch v2 with all this fixed coming up.

>
>> +	"bootcmd_old=" \
>> +		"if ext2load mmc 0 0x44000000 uEnv.txt; then " \
>> +			"echo Loaded environment from uEnv.txt; " \
>> +			"env import -t 0x44000000 ${filesize}; " \
>> +		"fi; " \
>> +		"setenv bootargs console=${console} root=${root}
>> ${extraargs}; " \
>> +		"ext2load mmc 0 0x43000000 script.bin && " \
>> +		"ext2load mmc 0 0x48000000 uImage && " \
>> +		"bootm 0x48000000\0"
>> +#else
>> +#define BOOTCMD_OLD
>> +#endif
>> +
>>   #include <config_distro_bootcmd.h>
>>
>>   #ifdef CONFIG_USB_KEYBOARD
>> @@ -495,6 +511,7 @@ extern int soft_i2c_gpio_scl;
>>   	MTD_ENV_SETTINGS \
>>   	"fdtfile=" CONFIG_DEFAULT_DEVICE_TREE ".dtb\0" \
>>   	"console=ttyS0,115200\0" \
>> +	BOOTCMD_OLD \
>>   	BOOTENV
>>
>>   #else /* ifndef CONFIG_SPL_BUILD */

Regards,

Hans
diff mbox

Patch

diff --git a/include/configs/sunxi-common.h b/include/configs/sunxi-common.h
index 29745fe..37e9c6b 100644
--- a/include/configs/sunxi-common.h
+++ b/include/configs/sunxi-common.h
@@ -464,6 +464,22 @@  extern int soft_i2c_gpio_scl;
 	func(PXE, pxe, na) \
 	func(DHCP, dhcp, na)
 
+#ifdef CONFIG_OLD_SUNXI_KERNEL_COMPAT
+#define BOOTCMD_OLD \
+	"root=/dev/mmcblk0p3 rootwait\0" \
+	"bootcmd_old=" \
+		"if ext2load mmc 0 0x44000000 uEnv.txt; then " \
+			"echo Loaded environment from uEnv.txt; " \
+			"env import -t 0x44000000 ${filesize}; " \
+		"fi; " \
+		"setenv bootargs console=${console} root=${root} ${extraargs}; " \
+		"ext2load mmc 0 0x43000000 script.bin && " \
+		"ext2load mmc 0 0x48000000 uImage && " \
+		"bootm 0x48000000\0"
+#else
+#define BOOTCMD_OLD
+#endif
+
 #include <config_distro_bootcmd.h>
 
 #ifdef CONFIG_USB_KEYBOARD
@@ -495,6 +511,7 @@  extern int soft_i2c_gpio_scl;
 	MTD_ENV_SETTINGS \
 	"fdtfile=" CONFIG_DEFAULT_DEVICE_TREE ".dtb\0" \
 	"console=ttyS0,115200\0" \
+	BOOTCMD_OLD \
 	BOOTENV
 
 #else /* ifndef CONFIG_SPL_BUILD */