Skip to content
Snippets Groups Projects
Commit 22ba3a38 authored by Jonas Höppner's avatar Jonas Höppner
Browse files

bootscript: Add bootselect as u-boot script

Bootselect button is working until now (Tanaro)

RTC based bootselect is working for rv8803, including oneshot modes.
Untested for PCF Rtc and one not implemented for PCF RTC

bootselect: Use 'bootable' flag in initialized mode as low bat fallback
The rtc may ran low, but in case of A-B boot mode, the same OS should be
booted anyway.

BCS 746-000378
parent 0b010f84
No related branches found
No related tags found
1 merge request!6Merge changes from v2019.04 to v2020.04 branch
...@@ -42,6 +42,7 @@ ...@@ -42,6 +42,7 @@
pinctrl_hog_1: hoggrp-1 { pinctrl_hog_1: hoggrp-1 {
fsl,pins = < fsl,pins = <
MX8MM_IOMUXC_GPIO1_IO08_GPIO1_IO8 0x19 MX8MM_IOMUXC_GPIO1_IO08_GPIO1_IO8 0x19
MX8MM_IOMUXC_NAND_CLE_GPIO3_IO5 0x80000000
>; >;
}; };
......
...@@ -32,6 +32,7 @@ CONFIG_CMD_GPIO=y ...@@ -32,6 +32,7 @@ CONFIG_CMD_GPIO=y
CONFIG_CMD_CACHE=y CONFIG_CMD_CACHE=y
CONFIG_CMD_REGULATOR=y CONFIG_CMD_REGULATOR=y
CONFIG_CMD_MEMTEST=y CONFIG_CMD_MEMTEST=y
CONFIG_CMD_IMPORTENV=y
CONFIG_OF_CONTROL=y CONFIG_OF_CONTROL=y
CONFIG_FASTBOOT=y CONFIG_FASTBOOT=y
CONFIG_USB_FUNCTION_FASTBOOT=y CONFIG_USB_FUNCTION_FASTBOOT=y
......
...@@ -32,6 +32,7 @@ CONFIG_CMD_GPIO=y ...@@ -32,6 +32,7 @@ CONFIG_CMD_GPIO=y
CONFIG_CMD_CACHE=y CONFIG_CMD_CACHE=y
CONFIG_CMD_REGULATOR=y CONFIG_CMD_REGULATOR=y
CONFIG_CMD_MEMTEST=y CONFIG_CMD_MEMTEST=y
CONFIG_CMD_IMPORTENV=y
CONFIG_OF_CONTROL=y CONFIG_OF_CONTROL=y
CONFIG_FASTBOOT=y CONFIG_FASTBOOT=y
CONFIG_USB_FUNCTION_FASTBOOT=y CONFIG_USB_FUNCTION_FASTBOOT=y
......
...@@ -135,7 +135,6 @@ ...@@ -135,7 +135,6 @@
#define CONFIG_OF_BOARD_SETUP #define CONFIG_OF_BOARD_SETUP
#undef CONFIG_CMD_EXPORTENV #undef CONFIG_CMD_EXPORTENV
#undef CONFIG_CMD_IMPORTENV
#undef CONFIG_CMD_IMLS #undef CONFIG_CMD_IMLS
#if 0 #if 0
...@@ -355,123 +354,133 @@ ...@@ -355,123 +354,133 @@
#else #else
#define CONFIG_EXTRA_ENV_SETTINGS \ #define CONFIG_EXTRA_ENV_SETTINGS \
CONFIG_MFG_ENV_SETTINGS \ CONFIG_MFG_ENV_SETTINGS \
JAILHOUSE_ENV \ "fdt_addr=0x43000000\0" \
KUK_FUSE_PRODUCTION \
"display=auto\0" \
"pcie=none\0" \
"append_bootargs=androidboot.selinux=permissive\0"\
"script=boot.scr\0" \
"splashpos=m,m\0" \
"image=Image\0" \
"console=ttymxc0,115200 earlycon=ec_imx6q,0x30860000,115200\0" \
"fdt_addr=0x40300000\0" \
"script_addr="__stringify(SCRIPT_ADDR)"\0" \
"fdt_high=0xffffffffffffffff\0" \
"boot_fdt=try\0" \
"fdt_file=" CONFIG_DEFAULT_FDT_FILE "\0" \
"initrd_addr=0x43800000\0" \ "initrd_addr=0x43800000\0" \
"initrd_high=0xffffffffffffffff\0" \ "console=ttymxc0,115200\0" \
"uart4-access=both\0" \ \
"uart2=acess=both\0" \ \
"emmc_ack=1\0" \ "bootmode_read_rtc=" \
"emmc_dev="__stringify(CONFIG_SYS_MMC_ENV_DEV)"\0" \ "i2c dev 2; " \
"mmcdev="__stringify(CONFIG_SYS_MMC_ENV_DEV)"\0" \ "if i2c read 0x32 0xc 1 81000000; " \
"mmcpart="__stringify(CONFIG_SYS_MMC_IMG_LOAD_PART) "\0" \ "then " \
"target_ubootdev="__stringify(CONFIG_SYS_MMC_ENV_DEV)"\0"\ "rtc_addr=0x32; " \
"mmc_bootloader_partition="__stringify(CONF_SYS_BL_PART)"\0" \ "setexpr.b bootmode_rtc *0x81000000 / 0x10; " \
"partfdtandroid=8\0" \ "setexpr.b bootmode_rtc ${bootmode_rtc} \"&\" 0x7; " \
"ethspeed=100M\0" \ "elif i2c read 0x51 0xe 1 81000000; " \
"mmcroot=" CONFIG_MMCROOT " rootwait rw\0" \ "then " \
"mmcpartext4=1\0" \ "rtc_addr=0x51; " \
"mmcautodetect=yes\0" \ "setexpr.b bootmode_rtc *0x81000000 \"&\" 0x3; " \
"bootsector=66\0" \ "i2c read 0x51 0x1 1 81000000; " \
"brickme_sd=mmc erase $bootsector 10\0" \ "setexpr.b bootmode_rtc2 *0x81000000 \"&\" 0x1; " \
"brickme_mmc=mmc partconf 0 1 0 1 ; mmc erase $bootsector 10 ;mmc partconf 0 1 1 1 ; mmc erase $bootsector 10 ;mmc partconf 0 0 0 0 ; mmc erase $bootsector 10 \0" \ "setexpr.b bootmode_rtc2 ${bootmode_rtc2} * 0x4; " \
"updateusb=1\0" \ "setexpr.b bootmode_rtc ${bootmode_rtc} \"|\" ${bootmode_rtc2}; " \
"updatesd1=1\0" \ "else " \
"loadupdatescriptfatusb=if test -n ${updateusb} = 1; then if usb start; then fatload usb 0 ${script_addr} autoboot.bat; fi; fi;\0 " \ "echo Failed to read from rtc; " \
"loadupdatescriptfatsd=if test -n ${updatesd1} = 1; then fatload mmc 1 ${script_addr} autoboot.bat; fi;\0" \ "fi " \
"update_bl=mmc partconf 0 0 0 0 ; ums 0 mmc 0 \0" \ "\0" \
"serial_download=i2c dev 2; i2c mw 0x10 2.1 2 \0" \ \
"serial_download2=mw 0x30390098 0x40000000; reset \0" \ \
"mmcargs=setenv bootargs ${jh_clk} console=${console} root=${mmcroot}\0 " \ "bootmode_write_rtc=" \
"loadbootscriptext4=ext4load mmc ${mmcdev}:${mmcpartext4} ${script_addr} ${script};\0" \ "i2c dev 2; " \
"loadbootscriptfat=fatload mmc ${mmcdev}:${mmcpart} ${script_addr} ${script};\0" \ "if test 0x32 -eq ${rtc_addr}; " \
"loadbootscript =fatload mmc ${mmcdev}:${mmcpart} ${script_addr} ${script};\0" \ "then " \
"loadbootscriptfatandroid=fatload mmc ${mmcdev}:${partfdtandroid} ${script_addr} ${script};\0" \ "setexpr.b tmp ${nextbootmode} * 0x10; " \
"loadbootscriptfatusb=fatload usb ${usbdev}:${usbpart} ${script_addr} ${script};\0" \ "mw.b 0x81000000 ${tmp}; " \
"bootscript=echo Running bootscript...; source ${script_addr}\0" \ "i2c write 81000000 0x32 0xc 1; " \
"loadimageext4=ext4load mmc ${mmcdev}:${mmcpartext4} ${loadaddr} ${image}\0" \ "elif test 0x31 -eq ${rtc_addr}; " \
"loadimagefat=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image}\0" \ "then " \
"loadandroid=boota mmc${mmcdev}\0" \ "rtc_addr=0x51; " \
"loadfdtfat=fatload mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdt_file}\0" \ "echo Writing to PCF RTC is not implemented; " \
"loadfdtext4=ext4load mmc ${mmcdev}:${mmcpartext4} ${fdt_addr} ${fdt_file}\0" \ "else " \
"loadfdtandroid=fatload mmc ${mmcdev}:${partfdtandroid} ${fdt_addr} ${fdt_file}\0" \ "echo Unknown rtc addr; " \
"loadfdt=echo loading fdt..;" \ "fi " \
"if run loadfdtext4; then echo loadtdext4 ok; else echo trying from fat....; " \ "\0" \
"if run loadfdtfat; then echo loadftdfat ok; fi; fi;\0" \ \
"loadbootiot=echo Try Booting IoT Core ...; part list mmc ${mmcdev} devplist; for bootpar in ${devplist}; do part type mmc ${mmcdev}:${bootpar} part_type; if test -n ${part_type} && test ${part_type} = 1d30adf8-0aef-4d83-b78c-ac719086c709; then if read mmc ${mmcdev}:${bootpar} 0x40800000 0 1000; then usb start; bootm 0x40800000; fi; fi; done;\0" \ \
"loadbootenterprise=echo Try Booting IoT...; part list mmc ${mmcdev} devplist; for bootpar in ${devplist}; do part type mmc ${mmcdev}:${bootpar} part_type; if test -n ${part_type} && test ${part_type} = c12a7328-f81f-11d2-ba4b-00a0c93ec93b; then if mmc dev ${mmcdev} ${emmcbootpart}; mmc read 0x40800000 0xBFA 1000; then usb start; mmc dev ${mmcdev} 1; bootm 0x40800000; fi; fi; done;\0" \ "run_script_from_partition=echo Try to run ${script} from partition mmc ${current_partition}; " \
"loadinstallenterprise=echo Try Install IoT...;if mmc dev 1; then part list mmc 1 devplist; for bootpar in ${devplist}; do part type mmc 1:${bootpar} part_type; if test -n ${part_type} && test ${part_type} = c12a7328-f81f-11d2-ba4b-00a0c93ec93b; then if mmc dev ${mmcdev} ${emmcbootpart}; mmc read 0x40800000 0xBFA 1000; then usb start; mmc dev ${mmcdev} 1; bootm 0x40800000; fi; fi; done; else echo no sd card found; fi;\0" \ "if fatload mmc ${current_partition} ${loadaddr} ${script}; " \
"mmcboot=echo Booting from mmc ...; " \ "then source ${loadaddr};" \
"run mmcargs; " \ "fi;" \
"if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \ "\0" \
"if run loadfdt; then " \ \
"booti ${loadaddr} - ${fdt_addr}; " \ \
"else " \ "search_and_run_bootscript=for i in 1 2 3 4 5 6 7;do " \
"echo WARN: Cannot load the DT; " \ "current_partition=0:${i}; " \
"fi; " \ "run run_script_from_partition; " \
"else " \ "done; " \
"echo wait for boot; " \ "\0" \
"fi;\0" \ \
"netargs=setenv bootargs ${jh_clk} console=${console} " \ \
"root=/dev/nfs " \ "bootselect=if gpio input 69; then " \
"ip=dhcp nfsroot=${serverip}:${nfsroot},v3,tcp\0" \ "echo Run Flash-N-Go System; " \
"netboot=echo Booting from net ...; " \ "script=boot-alt.scr;" \
"run netargs; " \ "run search_and_run_bootscript; " \
"if test ${ip_dyn} = yes; then " \ "else " \
"setenv get_cmd dhcp; " \ "run bootmode_read_rtc; " \
"else " \ "if test ${bootmode_rtc} -eq 0;then " \
"setenv get_cmd tftp; " \ "echo Bootmode initialized; " \
"fi; " \ "part list mmc 0 -bootable partbootable; " \
"${get_cmd} ${loadaddr} ${image}; " \ "current_partition=0:${partbootable}; " \
"if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \ "script=boot.scr; " \
"if ${get_cmd} ${fdt_addr} ${fdt_file}; then " \ "run run_script_from_partition; " \
"booti ${loadaddr} - ${fdt_addr}; " \ "script=bootB.scr; " \
"else " \ "run run_script_from_partition; " \
"echo WARN: Cannot load the DT; " \ "script=boot.scr; " \
"fi; " \ "script1=bootB.scr; " \
"else " \ "script2=boot-alt.scr; " \
"booti; " \ "elif test ${bootmode_rtc} -eq 1;then " \
"fi;\0" "echo Bootmode alternative; " \
"script=boot-alt.scr; " \
"script1=boot.scr; " \
"script2=bootB.scr; " \
"elif test ${bootmode_rtc} -eq 2;then " \
"echo Bootmode regular; " \
"script=boot.scr; " \
"script1=bootB.scr; " \
"script2=boot-alt.scr; " \
"elif test ${bootmode_rtc} -eq 3;then " \
"echo Bootmode oneshot; " \
"script=boot.scr; " \
"script1=boot-alt.scr; " \
"script2=bootB.scr; " \
"nextbootmode=1; " \
"run bootmode_write_rtc; " \
"elif test ${bootmode_rtc} -eq 4;then " \
"echo Bootmode regular B; " \
"script=bootB.scr; " \
"script1=boot.scr; " \
"script2=boot-alt.scr; " \
"elif test ${bootmode_rtc} -eq 5;then " \
"echo Bootmode oneshot A; " \
"script=boot.scr; " \
"script1=bootB.scr; " \
"script2=boot-alt.scr; " \
"nextbootmode=4; " \
"run bootmode_write_rtc; " \
"elif test ${bootmode_rtc} -eq 6;then " \
"echo Bootmode oneshot B; " \
"script=bootB.scr; " \
"script1=boot.scr; " \
"script2=boot-alt.scr; " \
"nextbootmode=2; " \
"run bootmode_write_rtc; " \
"else " \
"echo Unknown bootmode $bootmode_rtc; " \
"script=boot-alt.scr; " \
"script1=boot.scr; " \
"script2=bootB.scr; " \
"fi; " \
"run search_and_run_bootscript;" \
"script=${script1}; run search_and_run_bootscript;" \
"script=${script2}; run search_and_run_bootscript;" \
"fi; " \
"script=boot-alt.scr; " \
"run search_and_run_bootscript\0" \
#ifndef CONFIG_BOOTCOMMAND #ifndef CONFIG_BOOTCOMMAND
#define CONFIG_BOOTCOMMAND \ #define CONFIG_BOOTCOMMAND \
"mmc dev ${mmcdev};mmc partconf ${mmcdev}; "\ "run bootselect"
"if run loadupdatescriptfatusb; then run bootscript; " \
"else if run loadupdatescriptfatsd; then run bootscript; " \
"fi; " \
"fi; " \
"if mmc rescan; "\
"then "\
"run loadbootenterprise; " \
"run loadinstallenterprise; " \
"run loadbootiot; " \
"usb stop; " \
"if run loadbootscriptext4; then run bootscript; " \
"else if run loadbootscriptfat; then run bootscript; " \
"else if run loadbootscriptfatandroid; then run bootscript; " \
"else if run loadimageext4; then run mmcboot; " \
"else if run loadimagefat; then run mmcboot; " \
"else mw.b $fdt_addr 0 0x40; run loadfdtandroid; " \
"if run loadandroid; then ; else run loadandroid; " \
"fi; "\
"fi; " \
"fi; " \
"fi; " \
"fi; " \
"fi; " \
"else booti ${loadaddr} - ${fdt_addr}; fi "
#endif #endif
#endif #endif
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment