platform.sh 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263
  1. REQUIRE_IMAGE_METADATA=1
  2. RAMFS_COPY_BIN='fitblk'
  3. asus_initial_setup()
  4. {
  5. # initialize UBI if it's running on initramfs
  6. [ "$(rootfs_type)" = "tmpfs" ] || return 0
  7. ubirmvol /dev/ubi0 -N rootfs
  8. ubirmvol /dev/ubi0 -N rootfs_data
  9. ubirmvol /dev/ubi0 -N jffs2
  10. ubimkvol /dev/ubi0 -N jffs2 -s 0x3e000
  11. }
  12. xiaomi_initial_setup()
  13. {
  14. # initialize UBI and setup uboot-env if it's running on initramfs
  15. [ "$(rootfs_type)" = "tmpfs" ] || return 0
  16. local mtdnum="$( find_mtd_index ubi )"
  17. if [ ! "$mtdnum" ]; then
  18. echo "unable to find mtd partition ubi"
  19. return 1
  20. fi
  21. local kern_mtdnum="$( find_mtd_index ubi_kernel )"
  22. if [ ! "$kern_mtdnum" ]; then
  23. echo "unable to find mtd partition ubi_kernel"
  24. return 1
  25. fi
  26. ubidetach -m "$mtdnum"
  27. ubiformat /dev/mtd$mtdnum -y
  28. ubidetach -m "$kern_mtdnum"
  29. ubiformat /dev/mtd$kern_mtdnum -y
  30. if ! fw_printenv -n flag_try_sys2_failed &>/dev/null; then
  31. echo "failed to access u-boot-env. skip env setup."
  32. return 0
  33. fi
  34. fw_setenv boot_wait on
  35. fw_setenv uart_en 1
  36. fw_setenv flag_boot_rootfs 0
  37. fw_setenv flag_last_success 1
  38. fw_setenv flag_boot_success 1
  39. fw_setenv flag_try_sys1_failed 8
  40. fw_setenv flag_try_sys2_failed 8
  41. local board=$(board_name)
  42. case "$board" in
  43. xiaomi,mi-router-ax3000t|\
  44. xiaomi,mi-router-wr30u-stock)
  45. fw_setenv mtdparts "nmbm0:1024k(bl2),256k(Nvram),256k(Bdata),2048k(factory),2048k(fip),256k(crash),256k(crash_log),34816k(ubi),34816k(ubi1),32768k(overlay),12288k(data),256k(KF)"
  46. ;;
  47. xiaomi,redmi-router-ax6000-stock)
  48. fw_setenv mtdparts "nmbm0:1024k(bl2),256k(Nvram),256k(Bdata),2048k(factory),2048k(fip),256k(crash),256k(crash_log),30720k(ubi),30720k(ubi1),51200k(overlay)"
  49. ;;
  50. esac
  51. }
  52. platform_do_upgrade() {
  53. local board=$(board_name)
  54. case "$board" in
  55. acer,predator-w6|\
  56. smartrg,sdg-8612|\
  57. smartrg,sdg-8614|\
  58. smartrg,sdg-8622|\
  59. smartrg,sdg-8632)
  60. CI_KERNPART="kernel"
  61. CI_ROOTPART="rootfs"
  62. emmc_do_upgrade "$1"
  63. ;;
  64. asus,rt-ax59u|\
  65. asus,tuf-ax4200|\
  66. asus,tuf-ax6000)
  67. CI_UBIPART="UBI_DEV"
  68. CI_KERNPART="linux"
  69. nand_do_upgrade "$1"
  70. ;;
  71. bananapi,bpi-r3|\
  72. bananapi,bpi-r3-mini|\
  73. bananapi,bpi-r4|\
  74. tplink,tl-xdr4288|\
  75. tplink,tl-xdr6086|\
  76. tplink,tl-xdr6088|\
  77. xiaomi,redmi-router-ax6000-ubootmod)
  78. [ -e /dev/fit0 ] && fitblk /dev/fit0
  79. [ -e /dev/fitrw ] && fitblk /dev/fitrw
  80. bootdev="$(fitblk_get_bootdev)"
  81. case "$bootdev" in
  82. mmcblk*)
  83. EMMC_KERN_DEV="/dev/$bootdev"
  84. emmc_do_upgrade "$1"
  85. ;;
  86. mtdblock*)
  87. PART_NAME="/dev/mtd${bootdev:8}"
  88. default_do_upgrade "$1"
  89. ;;
  90. ubiblock*)
  91. CI_KERNPART="fit"
  92. nand_do_upgrade "$1"
  93. ;;
  94. esac
  95. ;;
  96. cmcc,rax3000m)
  97. case "$(cmdline_get_var root)" in
  98. /dev/mmc*)
  99. CI_KERNPART="production"
  100. emmc_do_upgrade "$1"
  101. ;;
  102. *)
  103. CI_KERNPART="fit"
  104. nand_do_upgrade "$1"
  105. ;;
  106. esac
  107. ;;
  108. cudy,re3000-v1|\
  109. cudy,wr3000-v1|\
  110. yuncore,ax835)
  111. default_do_upgrade "$1"
  112. ;;
  113. glinet,gl-mt2500|\
  114. glinet,gl-mt6000|\
  115. glinet,gl-x3000|\
  116. glinet,gl-xe3000)
  117. CI_KERNPART="kernel"
  118. CI_ROOTPART="rootfs"
  119. emmc_do_upgrade "$1"
  120. ;;
  121. h3c,magic-nx30-pro|\
  122. jcg,q30-pro|\
  123. mediatek,mt7981-rfb|\
  124. netcore,n60|\
  125. qihoo,360t7|\
  126. xiaomi,mi-router-ax3000t-ubootmod|\
  127. xiaomi,mi-router-wr30u-ubootmod)
  128. CI_KERNPART="fit"
  129. nand_do_upgrade "$1"
  130. ;;
  131. jdcloud,re-cp-03)
  132. CI_KERNPART="production"
  133. emmc_do_upgrade "$1"
  134. ;;
  135. mercusys,mr90x-v1)
  136. CI_UBIPART="ubi0"
  137. nand_do_upgrade "$1"
  138. ;;
  139. ubnt,unifi-6-plus)
  140. CI_KERNPART="kernel0"
  141. EMMC_ROOT_DEV="$(cmdline_get_var root)"
  142. emmc_do_upgrade "$1"
  143. ;;
  144. xiaomi,mi-router-ax3000t|\
  145. xiaomi,mi-router-wr30u-stock|\
  146. xiaomi,redmi-router-ax6000-stock)
  147. CI_KERN_UBIPART=ubi_kernel
  148. CI_ROOT_UBIPART=ubi
  149. nand_do_upgrade "$1"
  150. ;;
  151. zyxel,ex5601-t0-ubootmod)
  152. CI_KERNPART="fit"
  153. CI_ROOTPART="ubi_rootfs"
  154. nand_do_upgrade "$1"
  155. ;;
  156. unielec,u7981-01*)
  157. local rootdev="$(cmdline_get_var root)"
  158. rootdev="${rootdev##*/}"
  159. rootdev="${rootdev%p[0-9]*}"
  160. case "$rootdev" in
  161. mmc*)
  162. CI_ROOTDEV="$rootdev"
  163. CI_KERNPART="kernel"
  164. CI_ROOTPART="rootfs"
  165. emmc_do_upgrade "$1"
  166. ;;
  167. *)
  168. CI_KERNPART="fit"
  169. nand_do_upgrade "$1"
  170. ;;
  171. esac
  172. ;;
  173. *)
  174. nand_do_upgrade "$1"
  175. ;;
  176. esac
  177. }
  178. PART_NAME=firmware
  179. platform_check_image() {
  180. local board=$(board_name)
  181. local magic="$(get_magic_long "$1")"
  182. [ "$#" -gt 1 ] && return 1
  183. case "$board" in
  184. bananapi,bpi-r3|\
  185. bananapi,bpi-r4|\
  186. cmcc,rax3000m)
  187. [ "$magic" != "d00dfeed" ] && {
  188. echo "Invalid image type."
  189. return 1
  190. }
  191. return 0
  192. ;;
  193. *)
  194. nand_do_platform_check "$board" "$1"
  195. return $?
  196. ;;
  197. esac
  198. return 0
  199. }
  200. platform_copy_config() {
  201. case "$(board_name)" in
  202. cmcc,rax3000m)
  203. case "$(cmdline_get_var root)" in
  204. /dev/mmc*)
  205. emmc_copy_config
  206. ;;
  207. esac
  208. ;;
  209. bananapi,bpi-r3|\
  210. bananapi,bpi-r3-mini|\
  211. bananapi,bpi-r4)
  212. case "$(fitblk_get_bootdev)" in
  213. mmcblk*)
  214. emmc_copy_config
  215. ;;
  216. esac
  217. ;;
  218. acer,predator-w6|\
  219. glinet,gl-mt2500|\
  220. glinet,gl-mt6000|\
  221. glinet,gl-x3000|\
  222. glinet,gl-xe3000|\
  223. jdcloud,re-cp-03|\
  224. ubnt,unifi-6-plus)
  225. emmc_copy_config
  226. ;;
  227. esac
  228. }
  229. platform_pre_upgrade() {
  230. local board=$(board_name)
  231. case "$board" in
  232. asus,rt-ax59u|\
  233. asus,tuf-ax4200|\
  234. asus,tuf-ax6000)
  235. asus_initial_setup
  236. ;;
  237. xiaomi,mi-router-ax3000t|\
  238. xiaomi,mi-router-wr30u-stock|\
  239. xiaomi,redmi-router-ax6000-stock)
  240. xiaomi_initial_setup
  241. ;;
  242. esac
  243. }