blob: 92a420527a594fce017d79dd656e8aa6ff3dadb9
1 | IMGPACK := $(BUILD_OUT_EXECUTABLES)/logo_img_packer$(BUILD_EXECUTABLE_SUFFIX) |
2 | PRODUCT_UPGRADE_OUT := $(PRODUCT_OUT)/upgrade |
3 | AML_EMMC_BIN_GENERATOR := vendor/amlogic/tools/aml_upgrade/amlogic_emmc_bin_maker.sh |
4 | PRODUCT_COMMON_DIR := device/amlogic/common/products/$(PRODUCT_TYPE) |
5 | |
6 | ifeq ($(TARGET_NO_RECOVERY),true) |
7 | BUILT_IMAGES := boot.img u-boot.bin dtb.img |
8 | else |
9 | BUILT_IMAGES := boot.img recovery.img u-boot.bin dtb.img |
10 | endif |
11 | ifeq ($(PRODUCT_BUILD_SECURE_BOOT_IMAGE_DIRECTLY),true) |
12 | BUILT_IMAGES := $(addsuffix .encrypt, $(BUILT_IMAGES)) |
13 | endif#ifeq ($(PRODUCT_BUILD_SECURE_BOOT_IMAGE_DIRECTLY),true) |
14 | |
15 | BUILT_IMAGES += system.img userdata.img |
16 | |
17 | ifneq ($(AB_OTA_UPDATER),true) |
18 | BUILT_IMAGES += cache.img |
19 | endif |
20 | |
21 | ifneq ($(BOARD_OLD_PARTITION),true) |
22 | BUILT_IMAGES += vendor.img |
23 | ifeq ($(BOARD_USES_ODMIMAGE),true) |
24 | BUILT_IMAGES += odm.img |
25 | endif |
26 | endif |
27 | |
28 | # ----------------------------------------------------------------- |
29 | # odm partition image |
30 | ifdef BOARD_ODMIMAGE_FILE_SYSTEM_TYPE |
31 | INTERNAL_ODMIMAGE_FILES := \ |
32 | $(filter $(TARGET_OUT_ODM)/%,$(ALL_DEFAULT_INSTALLED_MODULES)) |
33 | |
34 | odmimage_intermediates := \ |
35 | $(call intermediates-dir-for,PACKAGING,odm) |
36 | BUILT_ODMIMAGE_TARGET := $(PRODUCT_OUT)/odm.img |
37 | # We just build this directly to the install location. |
38 | INSTALLED_ODMIMAGE_TARGET := $(BUILT_ODMIMAGE_TARGET) |
39 | |
40 | $(INSTALLED_ODMIMAGE_TARGET) : $(INTERNAL_USERIMAGES_DEPS) $(INTERNAL_ODMIMAGE_FILES) $(PRODUCT_OUT)/system.img |
41 | $(call pretty,"Target odm fs image: $(INSTALLED_ODMIMAGE_TARGET)") |
42 | @mkdir -p $(TARGET_OUT_ODM) |
43 | @mkdir -p $(odmimage_intermediates) && rm -rf $(odmimage_intermediates)/odm_image_info.txt |
44 | $(call generate-userimage-prop-dictionary, $(odmimage_intermediates)/odm_image_info.txt, skip_fsck=true) |
45 | mkuserimg.sh -s $(PRODUCT_OUT)/odm $(INSTALLED_ODMIMAGE_TARGET) $(BOARD_ODMIMAGE_FILE_SYSTEM_TYPE) odm $(BOARD_ODMIMAGE_PARTITION_SIZE) -D $(PRODUCT_OUT)/system -L odm $(PRODUCT_OUT)/obj/ETC/file_contexts.bin_intermediates/file_contexts.bin |
46 | make_ext4fs -s -T -1 -S $(PRODUCT_OUT)/obj/ETC/file_contexts.bin_intermediates/file_contexts.bin -L odm -l $(BOARD_ODMIMAGE_PARTITION_SIZE) -a odm $(INSTALLED_ODMIMAGE_TARGET) $(PRODUCT_OUT)/odm $(PRODUCT_OUT)/system |
47 | $(hide) $(call assert-max-image-size,$(INSTALLED_ODMIMAGE_TARGET),$(BOARD_ODMIMAGE_PARTITION_SIZE)) |
48 | |
49 | .PHONY: odm_image |
50 | odm_image : $(INSTALLED_ODMIMAGE_TARGET) |
51 | $(call dist-for-goals, odm_image, $(INSTALLED_ODMIMAGE_TARGET)) |
52 | |
53 | endif |
54 | |
55 | ifdef KERNEL_DEVICETREE |
56 | DTBTOOL := vendor/amlogic/tools/dtbTool |
57 | |
58 | ifdef KERNEL_DEVICETREE_CUSTOMER_DIR |
59 | KERNEL_DEVICETREE_DIR := $(KERNEL_DEVICETREE_CUSTOMER_DIR) |
60 | else |
61 | KERNEL_DEVICETREE_DIR := arch/$(KERNEL_ARCH)/boot/dts/amlogic/ |
62 | endif |
63 | |
64 | KERNEL_DEVICETREE_SRC := $(addprefix $(KERNEL_ROOTDIR)/$(KERNEL_DEVICETREE_DIR), $(KERNEL_DEVICETREE) ) |
65 | KERNEL_DEVICETREE_SRC := $(wildcard $(addsuffix .dtd, $(KERNEL_DEVICETREE_SRC)) $(addsuffix .dts, $(KERNEL_DEVICETREE_SRC))) |
66 | |
67 | KERNEL_DEVICETREE_BIN := $(addprefix $(KERNEL_OUT)/$(KERNEL_DEVICETREE_DIR), $(KERNEL_DEVICETREE)) |
68 | KERNEL_DEVICETREE_BIN := $(addsuffix .dtb, $(KERNEL_DEVICETREE_BIN)) |
69 | |
70 | INSTALLED_BOARDDTB_TARGET := $(PRODUCT_OUT)/dtb.img |
71 | ifeq ($(PRODUCT_BUILD_SECURE_BOOT_IMAGE_DIRECTLY),true) |
72 | INSTALLED_BOARDDTB_TARGET := $(INSTALLED_BOARDDTB_TARGET).encrypt |
73 | endif# ifeq ($(PRODUCT_BUILD_SECURE_BOOT_IMAGE_DIRECTLY),true) |
74 | |
75 | $(INSTALLED_BOARDDTB_TARGET) : $(KERNEL_DEVICETREE_SRC) $(KERNEL_OUT) $(KERNEL_CONFIG) |
76 | $(foreach aDts, $(KERNEL_DEVICETREE), \ |
77 | sed -i 's/^#include \"partition_.*/#include \"$(TARGET_PARTITION_DTSI)\"/' $(KERNEL_ROOTDIR)/$(KERNEL_DEVICETREE_DIR)/$(strip $(aDts)).dts; \ |
78 | if [ -f "$(KERNEL_ROOTDIR)/$(KERNEL_DEVICETREE_DIR)/$(aDts).dtd" ]; then \ |
79 | $(MAKE) -C $(KERNEL_ROOTDIR) O=../$(KERNEL_OUT) ARCH=$(KERNEL_ARCH) CROSS_COMPILE=$(PREFIX_CROSS_COMPILE) $(strip $(aDts)).dtd; \ |
80 | fi;\ |
81 | $(MAKE) -C $(KERNEL_ROOTDIR) O=../$(KERNEL_OUT) ARCH=$(KERNEL_ARCH) CROSS_COMPILE=$(PREFIX_CROSS_COMPILE) $(strip $(aDts)).dtb; \ |
82 | ) |
83 | ifneq ($(strip $(word 2, $(KERNEL_DEVICETREE)) ),) |
84 | $(hide) $(DTBTOOL) -o $@ -p $(KERNEL_OUT)/scripts/dtc/ $(KERNEL_OUT)/$(KERNEL_DEVICETREE_DIR) |
85 | else# elif dts num == 1 |
86 | cp -f $(KERNEL_DEVICETREE_BIN) $@ |
87 | endif |
88 | $(hide) $(call aml-secureboot-sign-bin, $@) |
89 | @echo "Instaled $@" |
90 | |
91 | .PHONY: dtbimage |
92 | dtbimage: $(INSTALLED_BOARDDTB_TARGET) |
93 | |
94 | else #KERNEL_DEVICETREE undefined in Kernel.mk |
95 | INSTALLED_BOARDDTB_TARGET := |
96 | endif # ifdef KERNEL_DEVICETREE |
97 | |
98 | |
99 | UPGRADE_FILES := \ |
100 | aml_sdc_burn.ini \ |
101 | ddr_init.bin \ |
102 | u-boot.bin.sd.bin u-boot.bin.usb.bl2 u-boot.bin.usb.tpl \ |
103 | u-boot-comp.bin |
104 | |
105 | ifneq ($(TARGET_USE_SECURITY_MODE),true) |
106 | UPGRADE_FILES += \ |
107 | platform.conf |
108 | else # secureboot mode |
109 | UPGRADE_FILES += \ |
110 | u-boot-usb.bin.aml \ |
111 | platform_enc.conf |
112 | endif |
113 | |
114 | UPGRADE_FILES := $(addprefix $(TARGET_DEVICE_DIR)/upgrade/,$(UPGRADE_FILES)) |
115 | UPGRADE_FILES := $(wildcard $(UPGRADE_FILES)) #extract only existing files for burnning |
116 | |
117 | PACKAGE_CONFIG_FILE := aml_upgrade_package |
118 | ifeq ($(AB_OTA_UPDATER),true) |
119 | PACKAGE_CONFIG_FILE := $(PACKAGE_CONFIG_FILE)_AB |
120 | endif # ifeq ($(AB_OTA_UPDATER),true) |
121 | ifeq ($(PRODUCT_BUILD_SECURE_BOOT_IMAGE_DIRECTLY),true) |
122 | PACKAGE_CONFIG_FILE := $(PACKAGE_CONFIG_FILE)_enc |
123 | endif # ifeq ($(PRODUCT_BUILD_SECURE_BOOT_IMAGE_DIRECTLY),true) |
124 | PACKAGE_CONFIG_FILE := $(TARGET_DEVICE_DIR)/upgrade/$(PACKAGE_CONFIG_FILE).conf |
125 | |
126 | ifeq ($(wildcard $(PACKAGE_CONFIG_FILE)),) |
127 | ifeq ($(BOARD_OLD_PARTITION),true) |
128 | PACKAGE_CONFIG_FILE := $(PRODUCT_COMMON_DIR)/upgrade_3.14/$(notdir $(PACKAGE_CONFIG_FILE)) |
129 | else |
130 | PACKAGE_CONFIG_FILE := $(PRODUCT_COMMON_DIR)/upgrade_4.9/$(notdir $(PACKAGE_CONFIG_FILE)) |
131 | endif |
132 | endif ## ifeq ($(wildcard $(TARGET_DEVICE_DIR)/upgrade/$(PACKAGE_CONFIG_FILE))) |
133 | UPGRADE_FILES += $(PACKAGE_CONFIG_FILE) |
134 | |
135 | ifneq ($(TARGET_AMLOGIC_RES_PACKAGE),) |
136 | INSTALLED_AML_LOGO := $(PRODUCT_UPGRADE_OUT)/logo.img |
137 | $(INSTALLED_AML_LOGO): $(IMGPACK) $(wildcard $(TARGET_AMLOGIC_RES_PACKAGE)/*) |
138 | @echo "generate $(INSTALLED_AML_LOGO)" |
139 | $(hide) mkdir -p $(PRODUCT_UPGRADE_OUT)/logo |
140 | $(hide) rm -rf $(PRODUCT_UPGRADE_OUT)/logo/* |
141 | @cp -rf $(TARGET_AMLOGIC_RES_PACKAGE)/* $(PRODUCT_UPGRADE_OUT)/logo |
142 | $(hide) $(IMGPACK) -r $(PRODUCT_UPGRADE_OUT)/logo $@ |
143 | @echo "Installed $@" |
144 | else |
145 | INSTALLED_AML_LOGO := |
146 | endif |
147 | |
148 | .PHONY: logoimg |
149 | logoimg: $(INSTALLED_AML_LOGO) |
150 | |
151 | ifneq ($(BOARD_AUTO_COLLECT_MANIFEST),false) |
152 | BUILD_TIME := $(shell date +%Y-%m-%d--%H-%M) |
153 | INSTALLED_MANIFEST_XML := $(PRODUCT_OUT)/manifests/manifest-$(BUILD_TIME).xml |
154 | $(INSTALLED_MANIFEST_XML): |
155 | $(hide) mkdir -p $(PRODUCT_OUT)/manifests |
156 | $(hide) mkdir -p $(PRODUCT_OUT)/upgrade |
157 | repo manifest -r -o $(INSTALLED_MANIFEST_XML) |
158 | $(hide) cp $(INSTALLED_MANIFEST_XML) $(PRODUCT_OUT)/upgrade/manifest.xml |
159 | |
160 | .PHONY:build_manifest |
161 | build_manifest:$(INSTALLED_MANIFEST_XML) |
162 | else |
163 | INSTALLED_MANIFEST_XML := |
164 | endif |
165 | |
166 | INSTALLED_AML_USER_IMAGES := |
167 | ifeq ($(TARGET_BUILD_USER_PARTS),true) |
168 | define aml-mk-user-img-template |
169 | INSTALLED_AML_USER_IMAGES += $(2) |
170 | $(eval tempUserSrcDir := $$($(strip $(1))_PART_DIR)) |
171 | $(2): $(call intermediates-dir-for,ETC,file_contexts.bin)/file_contexts.bin $(MAKE_EXT4FS) $(shell find $(tempUserSrcDir) -type f) |
172 | @echo $(MAKE_EXT4FS) -s -S $$< -l $$($(strip $(1))_PART_SIZE) -a $(1) $$@ $(tempUserSrcDir) && \ |
173 | $(MAKE_EXT4FS) -s -S $$< -l $$($(strip $(1))_PART_SIZE) -a $(1) $$@ $(tempUserSrcDir) |
174 | endef |
175 | .PHONY:contexts_add |
176 | contexts_add:$(TARGET_ROOT_OUT)/file_contexts |
177 | $(foreach userPartName, $(BOARD_USER_PARTS_NAME), \ |
178 | $(shell sed -i "/\/$(strip $(userPartName))/d" $< && \ |
179 | echo -e "/$(strip $(userPartName))(/.*)? u:object_r:system_file:s0" >> $<)) |
180 | $(foreach userPartName, $(BOARD_USER_PARTS_NAME), \ |
181 | $(eval $(call aml-mk-user-img-template, $(userPartName),$(PRODUCT_OUT)/$(userPartName).img))) |
182 | |
183 | define aml-user-img-update-pkg |
184 | ln -sf $(ANDROID_BUILD_TOP)/$(PRODUCT_OUT)/$(1).img $(PRODUCT_UPGRADE_OUT)/$(1).img && \ |
185 | sed -i "/file=\"$(1)\.img\"/d" $(2) && \ |
186 | echo -e "file=\"$(1).img\"\t\tmain_type=\"PARTITION\"\t\tsub_type=\"$(1)\"" >> $(2) ; |
187 | endef |
188 | |
189 | .PHONY: aml_usrimg |
190 | aml_usrimg :$(INSTALLED_AML_USER_IMAGES) |
191 | endif # ifeq ($(TARGET_BUILD_USER_PARTS),true) |
192 | |
193 | INSTALLED_AMLOGIC_BOOTLOADER_TARGET := $(PRODUCT_OUT)/u-boot.bin |
194 | ifeq ($(PRODUCT_BUILD_SECURE_BOOT_IMAGE_DIRECTLY),true) |
195 | INSTALLED_AMLOGIC_BOOTLOADER_TARGET := $(INSTALLED_AMLOGIC_BOOTLOADER_TARGET).encrypt |
196 | endif# ifeq ($(PRODUCT_BUILD_SECURE_BOOT_IMAGE_DIRECTLY),true) |
197 | |
198 | $(INSTALLED_AMLOGIC_BOOTLOADER_TARGET) : $(TARGET_DEVICE_DIR)/u-boot.bin |
199 | $(hide) cp $< $(PRODUCT_OUT)/u-boot.bin |
200 | $(hide) $(call aml-secureboot-sign-bootloader, $@) |
201 | @echo "make $@: bootloader installed end" |
202 | |
203 | ifeq ($(TARGET_SUPPORT_USB_BURNING_V2),true) |
204 | INSTALLED_AML_UPGRADE_PACKAGE_TARGET := $(PRODUCT_OUT)/aml_upgrade_package.img |
205 | |
206 | PACKAGE_CONFIG_FILE := $(PRODUCT_UPGRADE_OUT)/$(notdir $(PACKAGE_CONFIG_FILE)) |
207 | |
208 | ifeq ($(TARGET_USE_SECURITY_DM_VERITY_MODE_WITH_TOOL),true) |
209 | SYSTEMIMG_INTERMEDIATES := $(PRODUCT_OUT)/obj/PACKAGING/systemimage_intermediates/system.img. |
210 | SYSTEMIMG_INTERMEDIATES := $(SYSTEMIMG_INTERMEDIATES)verity_table.bin $(SYSTEMIMG_INTERMEDIATES)verity.img |
211 | define security_dm_verity_conf |
212 | @echo "copy verity.img and verity_table.bin" |
213 | @sed -i "/verity_table.bin/d" $(PACKAGE_CONFIG_FILE) |
214 | @sed -i "/verity.img/d" $(PACKAGE_CONFIG_FILE) |
215 | $(hide) \ |
216 | sed -i "/aml_sdc_burn\.ini/ s/.*/&\nfile=\"system.img.verity.img\"\t\tmain_type=\"img\"\t\tsub_type=\"verity\"/" $(PACKAGE_CONFIG_FILE); \ |
217 | sed -i "/aml_sdc_burn\.ini/ s/.*/&\nfile=\"system.img.verity_table.bin\"\t\tmain_type=\"bin\"\t\tsub_type=\"verity_table\"/" $(PACKAGE_CONFIG_FILE); |
218 | cp $(SYSTEMIMG_INTERMEDIATES) $(PRODUCT_UPGRADE_OUT)/ |
219 | endef #define security_dm_verity_conf |
220 | endif # ifeq ($(TARGET_USE_SECURITY_DM_VERITY_MODE_WITH_TOOL),true) |
221 | |
222 | ifeq ($(PRODUCT_BUILD_SECURE_BOOT_IMAGE_DIRECTLY),true) |
223 | define aml-secureboot-sign-bootloader |
224 | @echo -----aml-secureboot-sign-bootloader ------ |
225 | $(hide) $(PRODUCT_AML_SECUREBOOT_SIGNBOOTLOADER) --input $(basename $(1)) --output $(1) |
226 | @echo ----- Made aml secure-boot singed bootloader: $(1) -------- |
227 | endef #define aml-secureboot-sign-bootloader |
228 | define aml-secureboot-sign-kernel |
229 | @echo -----aml-secureboot-sign-kernel ------ |
230 | $(hide) mv -f $(1) $(basename $(1)) |
231 | $(hide) $(PRODUCT_AML_SECUREBOOT_SIGNIMAGE) --input $(basename $(1)) --output $(1) |
232 | @echo ----- Made aml secure-boot singed bootloader: $(1) -------- |
233 | endef #define aml-secureboot-sign-kernel |
234 | define aml-secureboot-sign-bin |
235 | @echo -----aml-secureboot-sign-bin------ |
236 | $(hide) mv -f $(1) $(basename $(1)) |
237 | $(hide) $(PRODUCT_AML_SECUREBOOT_SIGBIN) --input $(basename $(1)) --output $(1) |
238 | @echo ----- Made aml secure-boot singed bin: $(1) -------- |
239 | endef #define aml-secureboot-sign-bin |
240 | endif# ifeq ($(PRODUCT_BUILD_SECURE_BOOT_IMAGE_DIRECTLY),true) |
241 | |
242 | .PHONY:aml_upgrade |
243 | aml_upgrade:$(INSTALLED_AML_UPGRADE_PACKAGE_TARGET) |
244 | $(INSTALLED_AML_UPGRADE_PACKAGE_TARGET): \ |
245 | $(addprefix $(PRODUCT_OUT)/,$(BUILT_IMAGES)) \ |
246 | $(UPGRADE_FILES) \ |
247 | $(INSTALLED_AML_USER_IMAGES) \ |
248 | $(INSTALLED_AML_LOGO) \ |
249 | $(INSTALLED_MANIFEST_XML) \ |
250 | $(TARGET_USB_BURNING_V2_DEPEND_MODULES) |
251 | mkdir -p $(PRODUCT_UPGRADE_OUT) |
252 | $(hide) $(foreach file,$(UPGRADE_FILES), \ |
253 | echo cp $(file) $(PRODUCT_UPGRADE_OUT)/$(notdir $(file)); \ |
254 | cp -f $(file) $(PRODUCT_UPGRADE_OUT)/$(notdir $(file)); \ |
255 | ) |
256 | $(hide) $(foreach file,$(BUILT_IMAGES), \ |
257 | echo ln -sf $(PRODUCT_OUT)/$(file) $(PRODUCT_UPGRADE_OUT)/$(file); \ |
258 | ln -sf $(ANDROID_BUILD_TOP)/$(PRODUCT_OUT)/$(file) $(PRODUCT_UPGRADE_OUT)/$(file); \ |
259 | ) |
260 | ifeq ($(PRODUCT_BUILD_SECURE_BOOT_IMAGE_DIRECTLY),true) |
261 | $(hide) rm -f $(PRODUCT_UPGRADE_OUT)/u-boot.bin.encrypt.* |
262 | $(hide) $(ACP) $(PRODUCT_OUT)/u-boot.bin.encrypt.* $(PRODUCT_UPGRADE_OUT)/ |
263 | ln -sf $(ANDROID_BUILD_TOP)/$(PRODUCT_OUT)/dtb.img $(PRODUCT_UPGRADE_OUT)/dtb.img |
264 | ln -sf $(ANDROID_BUILD_TOP)/$(PRODUCT_OUT)/u-boot.bin.encrypt.efuse $(PRODUCT_UPGRADE_OUT)/SECURE_BOOT_SET |
265 | endif# ifeq ($(PRODUCT_BUILD_SECURE_BOOT_IMAGE_DIRECTLY),true) |
266 | $(security_dm_verity_conf) |
267 | $(update-aml_upgrade-conf) |
268 | $(hide) $(foreach userPartName, $(BOARD_USER_PARTS_NAME), \ |
269 | $(call aml-user-img-update-pkg,$(userPartName),$(PACKAGE_CONFIG_FILE))) |
270 | @echo "Package: $@" |
271 | @echo ./vendor/amlogic/tools/aml_upgrade/aml_image_v2_packer -r \ |
272 | $(PACKAGE_CONFIG_FILE) $(PRODUCT_UPGRADE_OUT)/ $@ |
273 | ./vendor/amlogic/tools/aml_upgrade/aml_image_v2_packer -r \ |
274 | $(PACKAGE_CONFIG_FILE) $(PRODUCT_UPGRADE_OUT)/ $@ |
275 | @echo " $@ installed" |
276 | else |
277 | #none |
278 | INSTALLED_AML_UPGRADE_PACKAGE_TARGET := |
279 | endif |
280 | |
281 | INSTALLED_AML_FASTBOOT_ZIP := $(PRODUCT_OUT)/$(TARGET_PRODUCT)-fastboot-$(BUILD_NUMBER).zip |
282 | |
283 | FASTBOOT_IMAGES := android-info.txt system.img |
284 | |
285 | ifeq ($(TARGET_NO_RECOVERY),true) |
286 | FASTBOOT_IMAGES += boot.img |
287 | else |
288 | FASTBOOT_IMAGES += boot.img recovery.img |
289 | endif |
290 | |
291 | ifneq ($(BOARD_OLD_PARTITION),true) |
292 | FASTBOOT_IMAGES += vendor.img |
293 | ifeq ($(BOARD_USES_ODMIMAGE),true) |
294 | FASTBOOT_IMAGES += odm.img |
295 | endif |
296 | endif |
297 | |
298 | .PHONY:aml_fastboot_zip |
299 | aml_fastboot_zip:$(INSTALLED_AML_FASTBOOT_ZIP) |
300 | $(INSTALLED_AML_FASTBOOT_ZIP): $(addprefix $(PRODUCT_OUT)/,$(FASTBOOT_IMAGES)) |
301 | echo "install $@" |
302 | cd $(PRODUCT_OUT); zip -r $(TARGET_PRODUCT)-fastboot-$(BUILD_NUMBER).zip $(FASTBOOT_IMAGES) |
303 | |
304 | droidcore: $(INSTALLED_AML_UPGRADE_PACKAGE_TARGET) $(INSTALLED_MANIFEST_XML) $(INSTALLED_AML_FASTBOOT_ZIP) |
305 | otapackage: $(INSTALLED_AML_UPGRADE_PACKAGE_TARGET) $(INSTALLED_MANIFEST_XML) $(INSTALLED_AML_FASTBOOT_ZIP) |
306 | |
307 |