1 /* SPDX-License-Identifier: GPL-2.0+ */ 2 3 /* Common env settings */ 4 5 /** set_bootargs() 6 * input: 7 * console: string, tty, etc. 8 * baudrate: string, tty baudrate 9 * testargs: string 10 * optargs: string 11 * output: 12 * bootargs: string, default boot string 13 */ 14 #define ENV_BOOTARGS_DEFAULT "set_bootargs=" \ 15 "setenv bootargs " \ 16 "console=${console} " \ 17 "${testargs} " \ 18 "${optargs}\0" 19 20 /** set_bootargs_net() 21 * input: 22 * kernel_name: 23 * dtb_name: 24 * project_dir: 25 * output: 26 */ 27 #define ENV_NET_FCT_NETARGS "set_bootargs_net=" \ 28 "run set_bootargs;" \ 29 "setenv bootfile ${project_dir}/boot/${kernel_name};" \ 30 "setenv bootdtb ${project_dir}/boot/${dtb_name_nfs}.dtb;" \ 31 "setenv rootpath /home/projects/${project_dir}/;" \ 32 "setenv bootargs ${bootargs} " \ 33 "root=/dev/nfs " \ 34 "nfsroot=${serverip}:${rootpath},${nfsopts} " \ 35 "ip=${ipaddr}:${serverip}:" \ 36 "${gatewayip}:${netmask}:${hostname}:eth0:off\0" 37 38 /** net_nfs() 39 * input: 40 * output: 41 */ 42 #define ENV_NET_FCT_BOOT "net_nfs=" \ 43 "echo Booting from network ...; " \ 44 "run set_bootargs_net; " \ 45 "tftpboot ${dtb_loadaddr} ${serverip}:${bootdtb};" \ 46 "if test $? -eq 1;" \ 47 "then " \ 48 "echo Loading default.dtb!;" \ 49 "tftpboot ${dtb_loadaddr} ${serverip}:${project_dir}/boot/${dtb_name_default}.dtb;" \ 50 "fi;" \ 51 "tftpboot ${kernel_loadaddr} ${serverip}:${bootfile};" \ 52 "printenv bootargs;" \ 53 "booti ${kernel_loadaddr} - ${dtb_loadaddr}\0" 54 55 /** check_update() 56 * input: 57 * upgrade_available: [0|1], if set to 1 check bootcount variables 58 * bootcount: int, bootcount 59 * bootlimit: int, limit cootcount 60 * toggle_partition(): - toggles active partition set 61 * output: 62 * upgrade_available: [0|1], set to 0 if bootcount > bootlimit 63 */ 64 #define ENV_FCT_CHECK_UPGRADE "check_upgrade="\ 65 "if test ${upgrade_available} -eq 1; " \ 66 "then " \ 67 "echo upgrade_available is set; " \ 68 "if test ${bootcount} -gt ${bootlimit}; " \ 69 "then " \ 70 "setenv upgrade_available 0;" \ 71 "echo toggle partition;" \ 72 "run toggle_partition;" \ 73 "fi;" \ 74 "fi;\0" 75 76 /** toggle_partition() 77 * input: 78 * partitionset_active: [A|B], selected partition set 79 * output: 80 * partitionset_active: [A|B], toggle 81 */ 82 #define ENV_FCT_TOGGLE_PARTITION "toggle_partition="\ 83 "setenv ${partitionset_active} true;" \ 84 "if test -n ${A}; " \ 85 "then " \ 86 "setenv partitionset_active B; " \ 87 "env delete A; " \ 88 "fi;" \ 89 "if test -n ${B}; "\ 90 "then " \ 91 "setenv partitionset_active A; " \ 92 "env delete B; " \ 93 "fi;" \ 94 "saveenv\0" 95 96 /** set_partition() 97 * input: 98 * partitionset_active: [A|B], selected partition set 99 * rootfs_name: string, mmc device file in kernel, e.g. /dev/mmcblk0 100 * output: 101 * mmc_active_vol: string, mmc partition device file in kernel, e.g. /dev/mmcblk0p2 102 * mmc_part_nr: int, partition number of mmc, e.g. /dev/mmcblk0p2 --> 2 103 */ 104 #define ENV_EMMC_FCT_SET_ACTIVE_PARTITION "set_partition=" \ 105 "setenv ${partitionset_active} true;" \ 106 "if test -n ${A}; " \ 107 "then " \ 108 "setenv mmc_part_nr 1;" \ 109 "fi;" \ 110 "if test -n ${B}; " \ 111 "then " \ 112 "setenv mmc_part_nr 2;" \ 113 "fi;" \ 114 "setenv mmc_active_vol ${rootfs_name}p${mmc_part_nr} \0" 115 116 /** set_bootargs_mmc() 117 * input: 118 * bootargs: string, default bootargs 119 * mmc_active_vol string, mmc partition device file in kernel, e.g. /dev/mmcblk0p2 120 * ip_method: string, [none|?] 121 * output: 122 * bootargs: string 123 */ 124 #define ENV_EMMC_FCT_SET_EMMC_BOOTARGS "set_bootargs_mmc=" \ 125 "setenv bootargs ${bootargs} " \ 126 "root=${mmc_active_vol} rw " \ 127 "rootdelay=1 rootwait " \ 128 "rootfstype=ext4 " \ 129 "ip=${ip_method} \0" 130 131 /** mmc_load_bootfiles() 132 * input: 133 * mmc_part_nr: 134 * dtb_loadaddr: 135 * dtb_name: 136 * kernel_loadaddr: 137 * kernel_name: 138 */ 139 #define ENV_EMMC_FCT_LOADFROM_EMMC "mmc_load_bootfiles=" \ 140 "echo Loading from eMMC ...;" \ 141 "ext4load mmc 0:${mmc_part_nr} ${dtb_loadaddr} boot/${dtb_name}.dtb;" \ 142 "if test $? -eq 1;" \ 143 "then " \ 144 "echo Loading default.dtb!;" \ 145 "ext4load mmc 0:${mmc_part_nr} ${dtb_loadaddr} boot/${dtb_name_default}.dtb;" \ 146 "fi;" \ 147 "ext4load mmc 0:${mmc_part_nr} ${kernel_loadaddr} boot/${kernel_name};" \ 148 "printenv bootargs;\0" 149 150 /** mmc_boot() 151 * input: 152 * mmc_part_nr: 153 * dtb_loadaddr: 154 * dtb_name: 155 * kernel_loadaddr: 156 * kernel_name: 157 */ 158 #define ENV_EMMC_FCT_EMMC_BOOT "mmc_boot=" \ 159 "run set_bootargs;" \ 160 "run check_upgrade; " \ 161 "run set_partition;" \ 162 "run set_bootargs_mmc;" \ 163 "run mmc_load_bootfiles;" \ 164 "echo Booting from eMMC ...; " \ 165 "booti ${kernel_loadaddr} - ${dtb_loadaddr} \0" 166 167 #define ENV_EMMC_ALIASES "" \ 168 "flash_self=run mmc_boot\0" \ 169 "flash_self_test=setenv testargs test; " \ 170 "run mmc_boot\0" 171 172 #define ENV_COMMON "" \ 173 "project_dir=targetdir/rootfs\0" \ 174 "serverip=192.168.251.2\0" \ 175 "ipaddr=192.168.251.1\0" \ 176 "dtb_name_nfs=default\0" \ 177 "dtb_name_default=default\0" \ 178 "kernel_name=Image\0" \ 179 "partitionset_active=A\0" \ 180 "dtb_loadaddr=0x83000000\0" \ 181 "kernel_loadaddr=0x80280000\0" \ 182 "ip_method=none\0" \ 183 "rootfs_name=/dev/mmcblk0\0" \ 184 "upgrade_available=0\0" \ 185 "bootlimit=3\0" \ 186 "altbootcmd=run bootcmd\0" \ 187 "optargs=\0" \ 188 189 /**********************************************************************/ 190 191 #define ENV_EMMC ENV_EMMC_FCT_EMMC_BOOT \ 192 ENV_EMMC_FCT_LOADFROM_EMMC \ 193 ENV_EMMC_FCT_SET_EMMC_BOOTARGS \ 194 ENV_EMMC_FCT_SET_ACTIVE_PARTITION \ 195 ENV_FCT_CHECK_UPGRADE \ 196 ENV_EMMC_ALIASES \ 197 ENV_FCT_TOGGLE_PARTITION 198 199 #define ENV_NET ENV_NET_FCT_BOOT \ 200 ENV_NET_FCT_NETARGS \ 201 ENV_BOOTARGS_DEFAULT 202