mt7623.mk 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. ifneq ($(KERNEL),6.1)
  2. DTS_DIR := $(DTS_DIR)/mediatek
  3. endif
  4. DEVICE_VARS += UBOOT_TARGET UBOOT_OFFSET UBOOT_IMAGE
  5. # The bootrom of MT7623 expects legacy MediaTek headers present in
  6. # exactly the location also used for the primary GPT partition table.
  7. # (*MMC_BOOT and BRLYT)
  8. # Hence only MSDOS/MBR partitioning can work here.
  9. #
  10. # ------------------------ Sector Offset
  11. # | MBR + SDMMC_BOOT | 0 0x0
  12. # |----------------------|
  13. # | BRLYT header | 1 0x200
  14. # |----------------------|
  15. # . .
  16. # . .
  17. # |----------------------|
  18. # | | 4 0x800
  19. # | |
  20. # | Preloader |
  21. # . .
  22. # . .
  23. # | | 639
  24. # |----------------------|
  25. # | MBR partition #1 | 640 0x50000
  26. # | |
  27. # | U-Boot |
  28. # . .
  29. # . .
  30. # | | 1663
  31. # |----------------------|
  32. # | MBR partition #2 |
  33. # | |
  34. # | Recovery |
  35. # . .
  36. # . (uImage.FIT) .
  37. # | |
  38. # |----------------------|
  39. # | MBR partition #3 |
  40. # | |
  41. # | Production |
  42. # | |
  43. # | (uImage.FIT, |
  44. # . rootfs_Data.) .
  45. # . .
  46. # | |
  47. # ------------------------
  48. #
  49. # For eMMC boot, everything up to and including the preloader must be
  50. # written to /dev/mmcblk0boot0, with the SDMMC_BOOT header changed to
  51. # read EMMC_BOOT\0 instead.
  52. #
  53. # The contents of the main eMMC are identical to the SD card layout,
  54. # with the preloader loading 512KiB of U-Boot starting at 0x50000.
  55. define Build/mt7623-mbr
  56. cp $@ [email protected] 2>/dev/null || true
  57. ptgen -o [email protected] -h 4 -s 63 -a 0 -l 1024 \
  58. -t 0x41 -N uboot -p 1M@$(UBOOT_OFFSET) \
  59. -t 0xea -N recovery -p 40M@4M \
  60. -t 0x2e -N production -p $(CONFIG_TARGET_ROOTFS_PARTSIZE)M@48M
  61. echo -en \
  62. $(if $(findstring sdmmc,$1),"SDMMC_BOOT\x00\x00\x01\x00\x00\x00\x00\x02\x00\x00") \
  63. $(if $(findstring emmc,$1),"EMMC_BOOT\x00\x00\x00\x01\x00\x00\x00\x00\x02\x00\x00") \
  64. | dd bs=1 of="[email protected]" seek=0 conv=notrunc
  65. echo -en "BRLYT\x00\x00\x00\x01\x00\x00\x00\x00\x08\x00\x00\x00\x08\x00\x00\x42\x42\x42\x42\x08\x00\x01\x00\x00\x08\x00\x00\x00\x08\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"\
  66. | dd bs=1 of="[email protected]" seek=512 conv=notrunc
  67. cat [email protected] >> $@
  68. rm [email protected]
  69. endef
  70. define Build/append-preloader
  71. cat $(STAGING_DIR_IMAGE)/$1-preloader.bin >> $@
  72. endef
  73. define Build/append-bootloader
  74. cat $(STAGING_DIR_IMAGE)/$1-$(UBOOT_IMAGE) >> $@
  75. endef
  76. define Build/scatterfile
  77. ./gen_scatterfile.sh $(subst mt,MT,$(SUBTARGET)) "$1" \
  78. $(subst -scatter.txt,,$(notdir $@)) "$(DEVICE_TITLE)" > $@
  79. endef
  80. define Device/bananapi_bpi-r2
  81. DEVICE_VENDOR := Bananapi
  82. DEVICE_MODEL := BPi-R2
  83. DEVICE_DTS := mt7623n-bananapi-bpi-r2
  84. DEVICE_PACKAGES := mkf2fs e2fsprogs kmod-usb3 kmod-ata-ahci
  85. UBOOT_OFFSET := 320k
  86. UBOOT_TARGET := mt7623n_bpir2
  87. UBOOT_IMAGE := u-boot.bin
  88. UBOOT_PATH := $(STAGING_DIR_IMAGE)/$$(UBOOT_TARGET)-$$(UBOOT_IMAGE)
  89. IMAGES := sysupgrade.itb
  90. KERNEL := kernel-bin | gzip
  91. KERNEL_INITRAMFS_SUFFIX := -recovery.itb
  92. KERNEL_INITRAMFS := kernel-bin | gzip | fit gzip $$(DTS_DIR)/$$(DEVICE_DTS).dtb with-initrd
  93. ifeq ($(DUMP),)
  94. IMAGE_SIZE := $$(shell expr 48 + $$(CONFIG_TARGET_ROOTFS_PARTSIZE))m
  95. endif
  96. IMAGE/sysupgrade.itb := append-kernel | fit gzip $$(DTS_DIR)/$$(DEVICE_DTS).dtb external-static-with-rootfs | append-metadata
  97. ARTIFACT/preloader.bin := mt7623-mbr emmc |\
  98. pad-to 2k | append-preloader $$(UBOOT_TARGET)
  99. ARTIFACT/u-boot.bin := append-uboot
  100. ARTIFACT/sdcard.img.gz := mt7623-mbr sdmmc |\
  101. pad-to 2k | append-preloader $$(UBOOT_TARGET) |\
  102. pad-to $$(UBOOT_OFFSET) | append-bootloader $$(UBOOT_TARGET) |\
  103. pad-to 4092k | mt7623-mbr emmc |\
  104. $(if $(CONFIG_TARGET_ROOTFS_INITRAMFS),\
  105. pad-to 4M | append-image-stage initramfs-recovery.itb | check-size 48m |\
  106. ) \
  107. $(if $(CONFIG_TARGET_ROOTFS_SQUASHFS),\
  108. pad-to 48M | append-image squashfs-sysupgrade.itb | check-size |\
  109. ) \
  110. gzip
  111. ARTIFACTS := u-boot.bin preloader.bin sdcard.img.gz
  112. SUPPORTED_DEVICES := bananapi,bpi-r2
  113. DEVICE_COMPAT_VERSION := 1.1
  114. DEVICE_COMPAT_MESSAGE := Bootloader update required for switch to fitblk
  115. endef
  116. TARGET_DEVICES += bananapi_bpi-r2
  117. define Device/unielec_u7623-02
  118. DEVICE_VENDOR := UniElec
  119. DEVICE_MODEL := U7623-02
  120. # When we use FIT images, U-Boot will populate the /memory node with the correct
  121. # memory size discovered from the preloader, so we don't need separate builds.
  122. DEVICE_DTS := mt7623a-unielec-u7623-02
  123. DEVICE_DTS_DIR := ../dts
  124. DEVICE_PACKAGES := kmod-fs-vfat kmod-nls-cp437 kmod-nls-iso8859-1 kmod-mmc \
  125. mkf2fs e2fsprogs kmod-usb-ohci kmod-usb2 kmod-usb3 kmod-ata-ahci
  126. UBOOT_OFFSET := 256k
  127. UBOOT_TARGET := mt7623a_unielec_u7623
  128. UBOOT_IMAGE := u-boot-mtk.bin
  129. UBOOT_PATH := $(STAGING_DIR_IMAGE)/$$(UBOOT_TARGET)-$$(UBOOT_IMAGE)
  130. ifeq ($(DUMP),)
  131. IMAGE_SIZE := $$(shell expr 48 + $$(CONFIG_TARGET_ROOTFS_PARTSIZE))m
  132. endif
  133. IMAGES := sysupgrade.itb
  134. KERNEL := kernel-bin | gzip
  135. KERNEL_INITRAMFS_SUFFIX := -recovery.itb
  136. KERNEL_INITRAMFS := kernel-bin | gzip | fit gzip $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb with-initrd
  137. IMAGE/sysupgrade.itb := append-kernel | fit gzip $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb external-static-with-rootfs | append-metadata
  138. ARTIFACT/u-boot.bin := append-uboot
  139. # vendor Preloader seems not to care about SDMMC_BOOT/EMMC_BOOT header,
  140. # but OpenWrt expects 'SDMM' magic for sysupgrade.
  141. ARTIFACT/emmc.img.gz := mt7623-mbr sdmmc |\
  142. pad-to $$(UBOOT_OFFSET) | append-bootloader $$(UBOOT_TARGET) |\
  143. $(if $(CONFIG_TARGET_ROOTFS_INITRAMFS),\
  144. pad-to 4M | append-image-stage initramfs-recovery.itb | check-size 48m |\
  145. ) \
  146. $(if $(CONFIG_TARGET_ROOTFS_SQUASHFS),\
  147. pad-to 48M | append-image squashfs-sysupgrade.itb | check-size |\
  148. ) \
  149. gzip | append-metadata
  150. ARTIFACT/scatter.txt := scatterfile emmc.img.gz
  151. ARTIFACTS := u-boot.bin scatter.txt emmc.img.gz
  152. SUPPORTED_DEVICES += unielec,u7623-02-emmc-512m
  153. endef
  154. TARGET_DEVICES += unielec_u7623-02
  155. # Legacy helper for U7623 board
  156. define Build/fat-recovery-fs
  157. rm -f [email protected]
  158. mkfs.fat -C [email protected] 3070
  159. cat [email protected] >> $@
  160. endef
  161. # Legacy partial image for U7623
  162. # This preserves the vendor U-Boot and starts with a uImage at 0xA00
  163. define Device/unielec_u7623-02-emmc-512m-legacy
  164. DEVICE_VENDOR := UniElec
  165. DEVICE_MODEL := U7623-02
  166. DEVICE_VARIANT := eMMC/512MiB RAM (legacy image)
  167. DEVICE_DTS := mt7623a-unielec-u7623-02-emmc-512m
  168. DEVICE_DTS_DIR := ../dts
  169. KERNEL_NAME := zImage
  170. KERNEL := kernel-bin | append-dtb | uImage none
  171. KERNEL_INITRAMFS := kernel-bin | append-dtb | uImage none
  172. DEVICE_PACKAGES := kmod-fs-vfat kmod-nls-cp437 kmod-nls-iso8859-1 kmod-mmc \
  173. mkf2fs e2fsprogs kmod-usb-ohci kmod-usb2 kmod-usb3 kmod-ata-ahci \
  174. partx-utils
  175. IMAGES := sysupgrade.bin.gz
  176. IMAGE/sysupgrade.bin.gz := append-kernel |\
  177. pad-to 4864k | fat-recovery-fs |\
  178. pad-to 7936k | append-rootfs |\
  179. gzip | append-metadata
  180. SUPPORTED_DEVICES := unielec,u7623-02-emmc-512m
  181. endef
  182. TARGET_DEVICES += unielec_u7623-02-emmc-512m-legacy