platform.sh 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  1. REQUIRE_IMAGE_METADATA=1
  2. xiaomi_initial_setup()
  3. {
  4. # initialize UBI and setup uboot-env if it's running on initramfs
  5. [ "$(rootfs_type)" = "tmpfs" ] || return 0
  6. local mtdnum="$( find_mtd_index ubi )"
  7. if [ ! "$mtdnum" ]; then
  8. echo "unable to find mtd partition ubi"
  9. return 1
  10. fi
  11. local kern_mtdnum="$( find_mtd_index ubi_kernel )"
  12. if [ ! "$kern_mtdnum" ]; then
  13. echo "unable to find mtd partition ubi_kernel"
  14. return 1
  15. fi
  16. ubidetach -m "$mtdnum"
  17. ubiformat /dev/mtd$mtdnum -y
  18. ubidetach -m "$kern_mtdnum"
  19. ubiformat /dev/mtd$kern_mtdnum -y
  20. if ! fw_printenv -n flag_try_sys2_failed &>/dev/null; then
  21. echo "failed to access u-boot-env. skip env setup."
  22. return 0
  23. fi
  24. fw_setenv boot_wait on
  25. fw_setenv uart_en 1
  26. fw_setenv flag_boot_rootfs 0
  27. fw_setenv flag_last_success 1
  28. fw_setenv flag_boot_success 1
  29. fw_setenv flag_try_sys1_failed 8
  30. fw_setenv flag_try_sys2_failed 8
  31. local board=$(board_name)
  32. case "$board" in
  33. xiaomi,mi-router-wr30u-stock)
  34. 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)"
  35. ;;
  36. xiaomi,redmi-router-ax6000-stock)
  37. 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)"
  38. ;;
  39. esac
  40. }
  41. platform_do_upgrade() {
  42. local board=$(board_name)
  43. case "$board" in
  44. acer,predator-w6)
  45. CI_KERNPART="kernel"
  46. CI_ROOTPART="rootfs"
  47. emmc_do_upgrade "$1"
  48. ;;
  49. asus,tuf-ax4200|\
  50. asus,tuf-ax6000)
  51. CI_UBIPART="UBI_DEV"
  52. CI_KERNPART="linux"
  53. nand_do_upgrade "$1"
  54. ;;
  55. bananapi,bpi-r3)
  56. local rootdev="$(cmdline_get_var root)"
  57. rootdev="${rootdev##*/}"
  58. rootdev="${rootdev%p[0-9]*}"
  59. case "$rootdev" in
  60. mmc*)
  61. CI_ROOTDEV="$rootdev"
  62. CI_KERNPART="production"
  63. emmc_do_upgrade "$1"
  64. ;;
  65. mtdblock*)
  66. PART_NAME="fit"
  67. default_do_upgrade "$1"
  68. ;;
  69. ubiblock*)
  70. CI_KERNPART="fit"
  71. nand_do_upgrade "$1"
  72. ;;
  73. esac
  74. ;;
  75. cmcc,rax3000m)
  76. case "$(cmdline_get_var root)" in
  77. /dev/mmc*)
  78. CI_KERNPART="production"
  79. emmc_do_upgrade "$1"
  80. ;;
  81. *)
  82. CI_KERNPART="fit"
  83. nand_do_upgrade "$1"
  84. ;;
  85. esac
  86. ;;
  87. cudy,wr3000-v1)
  88. default_do_upgrade "$1"
  89. ;;
  90. glinet,gl-mt2500|\
  91. glinet,gl-mt6000)
  92. CI_KERNPART="kernel"
  93. CI_ROOTPART="rootfs"
  94. emmc_do_upgrade "$1"
  95. ;;
  96. h3c,magic-nx30-pro|\
  97. jcg,q30-pro|\
  98. mediatek,mt7981-rfb|\
  99. qihoo,360t7|\
  100. tplink,tl-xdr4288|\
  101. tplink,tl-xdr6086|\
  102. tplink,tl-xdr6088|\
  103. xiaomi,mi-router-wr30u-ubootmod|\
  104. xiaomi,redmi-router-ax6000-ubootmod)
  105. CI_KERNPART="fit"
  106. nand_do_upgrade "$1"
  107. ;;
  108. mercusys,mr90x-v1)
  109. CI_UBIPART="ubi0"
  110. nand_do_upgrade "$1"
  111. ;;
  112. ubnt,unifi-6-plus)
  113. CI_KERNPART="kernel0"
  114. EMMC_ROOT_DEV="$(cmdline_get_var root)"
  115. emmc_do_upgrade "$1"
  116. ;;
  117. xiaomi,mi-router-wr30u-stock|\
  118. xiaomi,redmi-router-ax6000-stock)
  119. CI_KERN_UBIPART=ubi_kernel
  120. CI_ROOT_UBIPART=ubi
  121. nand_do_upgrade "$1"
  122. ;;
  123. zyxel,ex5601-t0-ubootmod)
  124. CI_KERNPART="fit"
  125. CI_ROOTPART="ubi_rootfs"
  126. nand_do_upgrade "$1"
  127. ;;
  128. *)
  129. nand_do_upgrade "$1"
  130. ;;
  131. esac
  132. }
  133. PART_NAME=firmware
  134. platform_check_image() {
  135. local board=$(board_name)
  136. local magic="$(get_magic_long "$1")"
  137. [ "$#" -gt 1 ] && return 1
  138. case "$board" in
  139. bananapi,bpi-r3|\
  140. cmcc,rax3000m)
  141. [ "$magic" != "d00dfeed" ] && {
  142. echo "Invalid image type."
  143. return 1
  144. }
  145. return 0
  146. ;;
  147. *)
  148. nand_do_platform_check "$board" "$1"
  149. return $?
  150. ;;
  151. esac
  152. return 0
  153. }
  154. platform_copy_config() {
  155. case "$(board_name)" in
  156. bananapi,bpi-r3|\
  157. cmcc,rax3000m)
  158. case "$(cmdline_get_var root)" in
  159. /dev/mmc*)
  160. emmc_copy_config
  161. ;;
  162. esac
  163. ;;
  164. glinet,gl-mt2500|\
  165. glinet,gl-mt6000|\
  166. ubnt,unifi-6-plus)
  167. emmc_copy_config
  168. ;;
  169. esac
  170. }
  171. platform_pre_upgrade() {
  172. local board=$(board_name)
  173. case "$board" in
  174. xiaomi,mi-router-wr30u-stock|\
  175. xiaomi,redmi-router-ax6000-stock)
  176. xiaomi_initial_setup
  177. ;;
  178. esac
  179. }