siemens-env-common.h 5.3 KB

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