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