From 05a2fcc1b3d524cad5a8ca6e1a45a93cfbc53340 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= Date: Tue, 2 Mar 2021 18:05:32 +0100 Subject: [PATCH 01/11] bmips: switch to upstream brcmnand patch MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This patch has been accepted upstream for v5.13. Signed-off-by: Álvaro Fernández Rojas --- ...nand-brcmnand-fix-OOB-R-W-with-Hamming-ECC.patch} | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) rename target/linux/bmips/patches-5.10/{203-nand-brcmnand-fix-OOB-R-W-with-Hamming-ECC.patch => 051-v5.13-mtd-rawnand-brcmnand-fix-OOB-R-W-with-Hamming-ECC.patch} (69%) diff --git a/target/linux/bmips/patches-5.10/203-nand-brcmnand-fix-OOB-R-W-with-Hamming-ECC.patch b/target/linux/bmips/patches-5.10/051-v5.13-mtd-rawnand-brcmnand-fix-OOB-R-W-with-Hamming-ECC.patch similarity index 69% rename from target/linux/bmips/patches-5.10/203-nand-brcmnand-fix-OOB-R-W-with-Hamming-ECC.patch rename to target/linux/bmips/patches-5.10/051-v5.13-mtd-rawnand-brcmnand-fix-OOB-R-W-with-Hamming-ECC.patch index 130985ec42..a4c61c8715 100644 --- a/target/linux/bmips/patches-5.10/203-nand-brcmnand-fix-OOB-R-W-with-Hamming-ECC.patch +++ b/target/linux/bmips/patches-5.10/051-v5.13-mtd-rawnand-brcmnand-fix-OOB-R-W-with-Hamming-ECC.patch @@ -1,18 +1,22 @@ -From cf0d2fbaae9e962d91a321de75e0d4f9f9ccbdfe Mon Sep 17 00:00:00 2001 +From 095b4dabff2a929cefd330110c5c578956213188 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= -Date: Thu, 21 Jan 2021 18:17:37 +0100 -Subject: [PATCH] nand: brcmnand: fix OOB R/W with Hamming ECC +Date: Wed, 24 Feb 2021 09:02:10 +0100 +Subject: [PATCH] mtd: rawnand: brcmnand: fix OOB R/W with Hamming ECC MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Hamming ECC doesn't cover the OOB data, so reading or writing OOB shall always be done without ECC enabled. -This is a problem when adding JFFS2 cleanmarkers to erased blocks. When JFFS2 +This is a problem when adding JFFS2 cleanmarkers to erased blocks. If JFFS2 clenmarkers are added to the OOB with ECC enabled, OOB bytes will be changed from ff ff ff to 00 00 00, reporting incorrect ECC errors. +Fixes: 27c5b17cd1b1 ("mtd: nand: add NAND driver "library" for Broadcom STB NAND controller") Signed-off-by: Álvaro Fernández Rojas +Acked-by: Brian Norris +Signed-off-by: Miquel Raynal +Link: https://lore.kernel.org/linux-mtd/20210224080210.23686-1-noltari@gmail.com --- drivers/mtd/nand/raw/brcmnand/brcmnand.c | 6 ++++++ 1 file changed, 6 insertions(+) From c82cc4407adebd683593d8f0b71d10e694ff8804 Mon Sep 17 00:00:00 2001 From: Daniel Golle Date: Tue, 2 Mar 2021 19:09:11 +0000 Subject: [PATCH 02/11] libubox: update to git HEAD 2e52c7e libubox: fix BLOBMSG_CAST_INT64 (do not override BLOBMSG_TYPE_DOUBLE) Signed-off-by: Daniel Golle --- package/libs/libubox/Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package/libs/libubox/Makefile b/package/libs/libubox/Makefile index 4d582eacfd..90e953aa46 100644 --- a/package/libs/libubox/Makefile +++ b/package/libs/libubox/Makefile @@ -5,9 +5,9 @@ PKG_RELEASE=1 PKG_SOURCE_PROTO:=git PKG_SOURCE_URL=$(PROJECT_GIT)/project/libubox.git -PKG_MIRROR_HASH:=97dc4eba01cf2c5d6a6d0db3747e0cdc0d95cb87e51b3115272e7d3e69a8b255 -PKG_SOURCE_DATE:=2020-12-12 -PKG_SOURCE_VERSION:=357877693ca363b12e6e7e14d345639b2440cd07 +PKG_MIRROR_HASH:=042398d1295ac892e09c6d2e8f68861c6f859fc6752e809a114f451834e7a05e +PKG_SOURCE_DATE:=2021-03-02 +PKG_SOURCE_VERSION:=2e52c7e9a90ab7ba1cf9d2986d1505ca5d184698 PKG_ABI_VERSION:=$(call abi_version_str,$(PKG_SOURCE_DATE)) CMAKE_INSTALL:=1 From 1cd4a02c8e3f8574f1ba8c40b1bd4decbfb49e62 Mon Sep 17 00:00:00 2001 From: Daniel Golle Date: Tue, 2 Mar 2021 19:12:25 +0000 Subject: [PATCH 03/11] procd: update to git HEAD 64e9f3a procd: fix compilation with newer musl Signed-off-by: Daniel Golle --- package/system/procd/Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package/system/procd/Makefile b/package/system/procd/Makefile index 30d5adf427..64c14b534d 100644 --- a/package/system/procd/Makefile +++ b/package/system/procd/Makefile @@ -12,9 +12,9 @@ PKG_RELEASE:=$(AUTORELEASE) PKG_SOURCE_PROTO:=git PKG_SOURCE_URL=$(PROJECT_GIT)/project/procd.git -PKG_SOURCE_DATE:=2021-02-23 -PKG_SOURCE_VERSION:=37eed131e9967a35f47bacb3437a9d3c8a57b3f4 -PKG_MIRROR_HASH:=2b0131ff9055ccf987cbeb5f36c2c2585dc780999df6be312fbbbcd61ce676d4 +PKG_SOURCE_DATE:=2021-03-02 +PKG_SOURCE_VERSION:=64e9f3a4ef61b53f72d0c9cf03da109e43b6700e +PKG_MIRROR_HASH:=59e1ea81e16b865c8e1bf16d747fd802285fd6bf8d689065e48dc1dee07447fb CMAKE_INSTALL:=1 PKG_LICENSE:=GPL-2.0 From ec76cbc521e182d04bc07339e3c7b5a7a8f15a5b Mon Sep 17 00:00:00 2001 From: Daniel Golle Date: Tue, 2 Mar 2021 19:15:28 +0000 Subject: [PATCH 04/11] fstools: update to git HEAD 19d7d93 libfstools: partname: several fixes Signed-off-by: Daniel Golle --- package/system/fstools/Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package/system/fstools/Makefile b/package/system/fstools/Makefile index aa2b4ccc26..b6d757b899 100644 --- a/package/system/fstools/Makefile +++ b/package/system/fstools/Makefile @@ -12,9 +12,9 @@ PKG_RELEASE:=$(AUTORELEASE) PKG_SOURCE_PROTO:=git PKG_SOURCE_URL=$(PROJECT_GIT)/project/fstools.git -PKG_MIRROR_HASH:=ce8b2ecff1e4f5e0c45b707a4d34a34f313362edf52327ac255909f709d07182 -PKG_SOURCE_DATE:=2021-02-27 -PKG_SOURCE_VERSION:=bad1835f27ec31dbc30060b03cc714212275168a +PKG_MIRROR_HASH:=d9b6a24bd8c03b89178141926db17240fe72f52af3d11f70baca352415c7214d +PKG_SOURCE_DATE:=2021-03-02 +PKG_SOURCE_VERSION:=19d7d9313d9e868669ae6cb1bf9e840ba2461b41 CMAKE_INSTALL:=1 PKG_LICENSE:=GPL-2.0 From 46c411e0b30a6f581c0c25f7a03385eb49effd03 Mon Sep 17 00:00:00 2001 From: Oskari Lemmela Date: Tue, 2 Mar 2021 21:42:06 +0200 Subject: [PATCH 05/11] firmware-utils/ptgen: fix compile warnings remove extra arguments from printf message Signed-off-by: Oskari Lemmela --- tools/firmware-utils/src/ptgen.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/firmware-utils/src/ptgen.c b/tools/firmware-utils/src/ptgen.c index 93c2d32a3f..a55f2e7a14 100644 --- a/tools/firmware-utils/src/ptgen.c +++ b/tools/firmware-utils/src/ptgen.c @@ -311,7 +311,7 @@ static int gen_ptable(uint32_t signature, int nr) if (parts[i].start != 0) { if (parts[i].start * 2 < start) { fprintf(stderr, "Invalid start %ld for partition %d!\n", - parts[i].start, i, start); + parts[i].start, i); return ret; } start = parts[i].start * 2; @@ -398,7 +398,7 @@ static int gen_gptable(uint32_t signature, guid_t guid, unsigned nr) if (parts[i].start != 0) { if (parts[i].start * 2 < start) { fprintf(stderr, "Invalid start %ld for partition %d!\n", - parts[i].start, i, start); + parts[i].start, i); return ret; } start = parts[i].start * 2; From 4a078bd1354eaa2bba109d411218820e03b2e1de Mon Sep 17 00:00:00 2001 From: Oskari Lemmela Date: Tue, 2 Mar 2021 21:42:07 +0200 Subject: [PATCH 06/11] firmware-utils/ptgen: fix partition guid and name guid and name function should be called before storing partition info. Signed-off-by: Oskari Lemmela --- tools/firmware-utils/src/ptgen.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tools/firmware-utils/src/ptgen.c b/tools/firmware-utils/src/ptgen.c index a55f2e7a14..d50c12b714 100644 --- a/tools/firmware-utils/src/ptgen.c +++ b/tools/firmware-utils/src/ptgen.c @@ -529,7 +529,8 @@ static guid_t type_to_guid_and_name(unsigned char type, char **name) switch (type) { case 0xef: - *name = "EFI System Partition"; + if(*name == NULL) + *name = "EFI System Partition"; guid = GUID_PARTITION_SYSTEM; break; case 0x83: @@ -586,6 +587,7 @@ int main (int argc, char **argv) *(p++) = 0; parts[part].start = to_kbytes(p); } + part_guid = type_to_guid_and_name(type, &name); parts[part].size = to_kbytes(optarg); parts[part].required = required; parts[part].name = name; @@ -598,7 +600,6 @@ int main (int argc, char **argv) */ name = NULL; required = 0; - part_guid = type_to_guid_and_name(type, &name); break; case 'N': name = optarg; From 460dd2fe28f83e93f0b4e755131b3b3ab24fb0d9 Mon Sep 17 00:00:00 2001 From: Oskari Lemmela Date: Tue, 2 Mar 2021 21:42:08 +0200 Subject: [PATCH 07/11] firmware-utils/ptgen: add support for hybrid MBR Adding -H option copies partition to MBR after pmbr entry. Max 3 partitions can be copied to MBR. Hybrid MBR is needed only in special cases. For example mt7622 SD card boot needs MBR entry with boot flag enabled. Signed-off-by: Oskari Lemmela --- tools/firmware-utils/src/ptgen.c | 39 +++++++++++++++++++++++--------- 1 file changed, 28 insertions(+), 11 deletions(-) diff --git a/tools/firmware-utils/src/ptgen.c b/tools/firmware-utils/src/ptgen.c index d50c12b714..a8b89a870a 100644 --- a/tools/firmware-utils/src/ptgen.c +++ b/tools/firmware-utils/src/ptgen.c @@ -123,6 +123,7 @@ struct partinfo { unsigned long start; unsigned long size; int type; + int hybrid; char *name; short int required; guid_t guid; @@ -369,7 +370,7 @@ fail: /* check the partition sizes and write the guid partition table */ static int gen_gptable(uint32_t signature, guid_t guid, unsigned nr) { - struct pte pte; + struct pte pte[MBR_ENTRY_MAX]; struct gpth gpth = { .signature = cpu_to_le64(GPT_SIGNATURE), .revision = cpu_to_le32(GPT_REVISION), @@ -384,8 +385,9 @@ static int gen_gptable(uint32_t signature, guid_t guid, unsigned nr) struct gpte gpte[GPT_ENTRY_MAX]; uint64_t start, end, sect = 0; int fd, ret = -1; - unsigned i; + unsigned i, pmbr = 1; + memset(pte, 0, sizeof(struct pte) * MBR_ENTRY_MAX); memset(gpte, 0, GPT_ENTRY_SIZE * GPT_ENTRY_MAX); for (i = 0; i < nr; i++) { if (!parts[i].size) { @@ -415,6 +417,16 @@ static int gen_gptable(uint32_t signature, guid_t guid, unsigned nr) gpte[i].guid.b[sizeof(guid_t) -1] += i + 1; gpte[i].type = parts[i].guid; + if (parts[i].hybrid && pmbr < MBR_ENTRY_MAX) { + pte[pmbr].active = ((i + 1) == active) ? 0x80 : 0; + pte[pmbr].type = parts[i].type; + pte[pmbr].start = cpu_to_le32(start); + pte[pmbr].length = cpu_to_le32(sect - start); + to_chs(start, pte[1].chs_start); + to_chs(sect - 1, pte[1].chs_end); + pmbr++; + } + if (parts[i].name) init_utf16(parts[i].name, (uint16_t *)gpte[i].name, GPT_ENTRY_NAME_SIZE / sizeof(uint16_t)); @@ -441,11 +453,11 @@ static int gen_gptable(uint32_t signature, guid_t guid, unsigned nr) end = sect + sectors - 1; - pte.type = 0xEE; - pte.start = cpu_to_le32(GPT_HEADER_SECTOR); - pte.length = cpu_to_le32(end); - to_chs(GPT_HEADER_SECTOR, pte.chs_start); - to_chs(end, pte.chs_end); + pte[0].type = 0xEE; + pte[0].start = cpu_to_le32(GPT_HEADER_SECTOR); + pte[0].length = cpu_to_le32(end - GPT_HEADER_SECTOR); + to_chs(GPT_HEADER_SECTOR, pte[0].chs_start); + to_chs(end, pte[0].chs_end); gpth.last_usable = cpu_to_le64(end - GPT_ENTRY_SIZE * GPT_ENTRY_MAX / DISK_SECTOR_SIZE - 1); gpth.alternate = cpu_to_le64(end); @@ -464,7 +476,7 @@ static int gen_gptable(uint32_t signature, guid_t guid, unsigned nr) } lseek(fd, MBR_PARTITION_ENTRY_OFFSET, SEEK_SET); - if (write(fd, &pte, sizeof(struct pte)) != sizeof(struct pte)) { + if (write(fd, pte, sizeof(struct pte) * MBR_ENTRY_MAX) != sizeof(struct pte) * MBR_ENTRY_MAX) { fputs("write failed.\n", stderr); goto fail; } @@ -551,13 +563,13 @@ int main (int argc, char **argv) int ch; int part = 0; char *name = NULL; - unsigned short int required = 0; + unsigned short int hybrid = 0, required = 0; uint32_t signature = 0x5452574F; /* 'OWRT' */ guid_t guid = GUID_INIT( signature, 0x2211, 0x4433, \ 0x55, 0x66, 0x77, 0x88, 0x99, 0xAA, 0xBB, 0x00); guid_t part_guid = GUID_PARTITION_BASIC_DATA; - while ((ch = getopt(argc, argv, "h:s:p:a:t:o:vnN:gl:rS:G:")) != -1) { + while ((ch = getopt(argc, argv, "h:s:p:a:t:o:vnHN:gl:rS:G:")) != -1) { switch (ch) { case 'o': filename = optarg; @@ -571,6 +583,9 @@ int main (int argc, char **argv) case 'g': use_guid_partition_table = 1; break; + case 'H': + hybrid = 1; + break; case 'h': heads = (int)strtoul(optarg, NULL, 0); break; @@ -591,15 +606,17 @@ int main (int argc, char **argv) parts[part].size = to_kbytes(optarg); parts[part].required = required; parts[part].name = name; + parts[part].hybrid = hybrid; parts[part].guid = part_guid; fprintf(stderr, "part %ld %ld\n", parts[part].start, parts[part].size); parts[part++].type = type; /* - * reset 'name' and 'required' + * reset 'name','required' and 'hybrid' * 'type' is deliberately inherited from the previous delcaration */ name = NULL; required = 0; + hybrid = 0; break; case 'N': name = optarg; From 87406bbc09a81735f084d16b19fffc241cc60135 Mon Sep 17 00:00:00 2001 From: Oskari Lemmela Date: Tue, 2 Mar 2021 21:42:09 +0200 Subject: [PATCH 08/11] firmware-utils/ptgen: change GPT to LBA addressing Do not align partitions with sectors. Only kb align for GPT is supported. Use 254 heads and 63 sectors for PMBR. Signed-off-by: Oskari Lemmela --- tools/firmware-utils/src/ptgen.c | 33 +++++++++++++++++++------------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/tools/firmware-utils/src/ptgen.c b/tools/firmware-utils/src/ptgen.c index a8b89a870a..1eed21393d 100644 --- a/tools/firmware-utils/src/ptgen.c +++ b/tools/firmware-utils/src/ptgen.c @@ -94,6 +94,7 @@ typedef struct { #define GPT_ENTRY_SIZE 128 #define GPT_ENTRY_MAX 128 #define GPT_ENTRY_NAME_SIZE 72 +#define GPT_SIZE GPT_ENTRY_SIZE * GPT_ENTRY_MAX / DISK_SECTOR_SIZE #define GPT_ATTR_PLAT_REQUIRED BIT(0) #define GPT_ATTR_EFI_IGNORE BIT(1) @@ -120,6 +121,7 @@ struct pte { }; struct partinfo { + unsigned long actual_start; unsigned long start; unsigned long size; int type; @@ -383,7 +385,8 @@ static int gen_gptable(uint32_t signature, guid_t guid, unsigned nr) .entry_size = cpu_to_le32(GPT_ENTRY_SIZE), }; struct gpte gpte[GPT_ENTRY_MAX]; - uint64_t start, end, sect = 0; + uint64_t start, end; + uint64_t sect = GPT_SIZE + GPT_FIRST_ENTRY_SECTOR; int fd, ret = -1; unsigned i, pmbr = 1; @@ -396,7 +399,7 @@ static int gen_gptable(uint32_t signature, guid_t guid, unsigned nr) fprintf(stderr, "Invalid size in partition %d!\n", i); return ret; } - start = sect + sectors; + start = sect; if (parts[i].start != 0) { if (parts[i].start * 2 < start) { fprintf(stderr, "Invalid start %ld for partition %d!\n", @@ -407,11 +410,10 @@ static int gen_gptable(uint32_t signature, guid_t guid, unsigned nr) } else if (kb_align != 0) { start = round_to_kb(start); } + parts[i].actual_start = start; gpte[i].start = cpu_to_le64(start); sect = start + parts[i].size * 2; - if (kb_align == 0) - sect = round_to_cyl(sect); gpte[i].end = cpu_to_le64(sect -1); gpte[i].guid = guid; gpte[i].guid.b[sizeof(guid_t) -1] += i + 1; @@ -445,13 +447,15 @@ static int gen_gptable(uint32_t signature, guid_t guid, unsigned nr) printf("%" PRIu64 "\n", (sect - start) * DISK_SECTOR_SIZE); } - gpte[GPT_ENTRY_MAX - 1].start = cpu_to_le64(GPT_FIRST_ENTRY_SECTOR + GPT_ENTRY_SIZE * GPT_ENTRY_MAX / DISK_SECTOR_SIZE); - gpte[GPT_ENTRY_MAX - 1].end = cpu_to_le64((kb_align ? round_to_kb(sectors) : (unsigned long)sectors) - 1); - gpte[GPT_ENTRY_MAX - 1].type = GUID_PARTITION_BIOS_BOOT; - gpte[GPT_ENTRY_MAX - 1].guid = guid; - gpte[GPT_ENTRY_MAX - 1].guid.b[sizeof(guid_t) -1] += GPT_ENTRY_MAX; + if (parts[0].actual_start > GPT_FIRST_ENTRY_SECTOR + GPT_SIZE) { + gpte[GPT_ENTRY_MAX - 1].start = cpu_to_le64(GPT_FIRST_ENTRY_SECTOR + GPT_SIZE); + gpte[GPT_ENTRY_MAX - 1].end = cpu_to_le64(parts[0].actual_start - 1); + gpte[GPT_ENTRY_MAX - 1].type = GUID_PARTITION_BIOS_BOOT; + gpte[GPT_ENTRY_MAX - 1].guid = guid; + gpte[GPT_ENTRY_MAX - 1].guid.b[sizeof(guid_t) -1] += GPT_ENTRY_MAX; + } - end = sect + sectors - 1; + end = sect + GPT_SIZE; pte[0].type = 0xEE; pte[0].start = cpu_to_le32(GPT_HEADER_SECTOR); @@ -459,7 +463,7 @@ static int gen_gptable(uint32_t signature, guid_t guid, unsigned nr) to_chs(GPT_HEADER_SECTOR, pte[0].chs_start); to_chs(end, pte[0].chs_end); - gpth.last_usable = cpu_to_le64(end - GPT_ENTRY_SIZE * GPT_ENTRY_MAX / DISK_SECTOR_SIZE - 1); + gpth.last_usable = cpu_to_le64(end - GPT_SIZE - 1); gpth.alternate = cpu_to_le64(end); gpth.entry_crc32 = cpu_to_le32(gpt_crc32(gpte, GPT_ENTRY_SIZE * GPT_ENTRY_MAX)); gpth.crc32 = cpu_to_le32(gpt_crc32((char *)&gpth, GPT_HEADER_SIZE)); @@ -651,11 +655,14 @@ int main (int argc, char **argv) } } argc -= optind; - if (argc || (heads <= 0) || (sectors <= 0) || !filename) + if (argc || (!use_guid_partition_table && ((heads <= 0) || (sectors <= 0))) || !filename) usage(argv[0]); - if (use_guid_partition_table) + if (use_guid_partition_table) { + heads = 254; + sectors = 63; return gen_gptable(signature, guid, part) ? EXIT_FAILURE : EXIT_SUCCESS; + } return gen_ptable(signature, part) ? EXIT_FAILURE : EXIT_SUCCESS; } From 0234881f31e627e2e4cca266a9e5b943c6bf5148 Mon Sep 17 00:00:00 2001 From: Oskari Lemmela Date: Tue, 2 Mar 2021 21:42:10 +0200 Subject: [PATCH 09/11] mediatek: mt7622: use ptgen generated MBR header mt7622 uses MBR partition for booting from SD card. Add hybrid MBR entry with boot flag after PMBR entry. Signed-off-by: Oskari Lemmela --- target/linux/mediatek/image/mt7622.mk | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/target/linux/mediatek/image/mt7622.mk b/target/linux/mediatek/image/mt7622.mk index d2c1fb5b13..8d7854d5d1 100644 --- a/target/linux/mediatek/image/mt7622.mk +++ b/target/linux/mediatek/image/mt7622.mk @@ -16,9 +16,10 @@ endef define Build/mt7622-gpt cp $@ $@.tmp || true - ptgen -g -o $@.tmp -h 4 -s 31 -a 1 -l 1024 -g \ + ptgen -g -o $@.tmp -a 1 -l 1024 \ -t 0xef \ $(if $(findstring sdmmc,$1), \ + -H \ -N bl2 -r -p 512k@512k \ ) \ -N fip -r -p 1M@2M \ @@ -30,7 +31,6 @@ define Build/mt7622-gpt $(if $(findstring emmc,$1), \ -t 0x2e -N production -p 980M@40M \ ) - dd if=$(STAGING_DIR_IMAGE)/mt7622-header_$1.bin bs=512 count=1 of=$@.tmp conv=notrunc cat $@.tmp >> $@ rm $@.tmp endef From 60d2623cc547dbad1df12c08ac2853003b75b83d Mon Sep 17 00:00:00 2001 From: Oskari Lemmela Date: Tue, 2 Mar 2021 21:42:11 +0200 Subject: [PATCH 10/11] mediatek: mt7622: change image generation - set only one EFI system partition - use shorter path for DEVICE_DTS file Signed-off-by: Oskari Lemmela --- target/linux/mediatek/image/mt7622.mk | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/target/linux/mediatek/image/mt7622.mk b/target/linux/mediatek/image/mt7622.mk index 8d7854d5d1..11185ba52a 100644 --- a/target/linux/mediatek/image/mt7622.mk +++ b/target/linux/mediatek/image/mt7622.mk @@ -17,14 +17,13 @@ endef define Build/mt7622-gpt cp $@ $@.tmp || true ptgen -g -o $@.tmp -a 1 -l 1024 \ - -t 0xef \ $(if $(findstring sdmmc,$1), \ -H \ - -N bl2 -r -p 512k@512k \ + -t 0x83 -N bl2 -r -p 512k@512k \ ) \ - -N fip -r -p 1M@2M \ - -N ubootenv -r -p 1M@4M \ - -N recovery -r -p 32M@6M \ + -t 0xef -N fip -r -p 1M@2M \ + -t 0x83 -N ubootenv -r -p 1M@4M \ + -N recovery -r -p 32M@6M \ $(if $(findstring sdmmc,$1), \ -t 0x2e -N production -p 216M@40M \ ) \ @@ -52,8 +51,8 @@ define Device/bananapi_bpi-r64 bl2 emmc-2ddr | pad-to 512k | bl2 sdmmc-2ddr | pad-to 1M | bl31-uboot bananapi_bpi-r64-emmc | pad-to 2M |\ bl31-uboot bananapi_bpi-r64-sdmmc | pad-to 6M KERNEL := kernel-bin | gzip - KERNEL_INITRAMFS := kernel-bin | lzma | fit lzma $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb with-initrd | pad-to 128k - IMAGE/sysupgrade.itb := append-kernel | fit gzip $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb external-static-with-rootfs | append-metadata + KERNEL_INITRAMFS := kernel-bin | lzma | fit lzma $$(DTS_DIR)/$$(DEVICE_DTS).dtb with-initrd | pad-to 128k + IMAGE/sysupgrade.itb := append-kernel | fit gzip $$(DTS_DIR)/$$(DEVICE_DTS).dtb external-static-with-rootfs | append-metadata endef TARGET_DEVICES += bananapi_bpi-r64 From 5a3562cd1da77348f8b542f8e32f75125c492474 Mon Sep 17 00:00:00 2001 From: Daniel Golle Date: Wed, 3 Mar 2021 00:56:31 +0000 Subject: [PATCH 11/11] arm-trusted-firmware-mediatek: remove {e,sd}mmc headers Turned out those are simply MBR with active boot partition. And not needed at all on emmc. Remove them as ptgen can now generate hybrid MBR sufficient to boot MT7622 from SD Card. Signed-off-by: Daniel Golle --- .../arm-trusted-firmware-mediatek/Makefile | 20 ------------------- 1 file changed, 20 deletions(-) diff --git a/package/boot/arm-trusted-firmware-mediatek/Makefile b/package/boot/arm-trusted-firmware-mediatek/Makefile index 98d421ed87..b775a744c8 100644 --- a/package/boot/arm-trusted-firmware-mediatek/Makefile +++ b/package/boot/arm-trusted-firmware-mediatek/Makefile @@ -36,20 +36,6 @@ define Download/tfa-files HASH:=689b097e4531d3eeca0c477675ab3dc3cace6ba4ed8a339116a9ede6537839d7 endef -define Download/mt7622-header-emmc - URL:=https://raw.githubusercontent.com/frank-w/BPI-R64-ATF/a36efa5f7435b8079479d13b562fedc0aa0d42f0 - URL_FILE:=header_emmc.bin - FILE:=mt7622-header_emmc.bin - HASH:=0a09c55d90c5fc375c59468a4331555f77cbc3e1dd107ca83b5b8c9625f38d8c -endef - -define Download/mt7622-header-sdmmc - URL:=https://raw.githubusercontent.com/frank-w/BPI-R64-ATF/a36efa5f7435b8079479d13b562fedc0aa0d42f0 - URL_FILE:=header_sdmmc.bin - FILE:=mt7622-header_sdmmc.bin - HASH:=242908c04e25289d25ba9fab61a1930425af173051c43d275d1ac9877d6accb1 -endef - define Trusted-Firmware-A/Default BUILD_TARGET:=mediatek BUILD_SUBTARGET:=mt7622 @@ -121,12 +107,6 @@ TFA_MAKE_FLAGS += BOOT_DEVICE=$(BOOT_DEVICE) all define Build/Prepare $(call Build/Prepare/Default) -ifeq ($(BOOT_DEVICE),emmc) - $(eval $(call Download,mt7622-header-emmc)) -endif -ifeq ($(BOOT_DEVICE),sdmmc) - $(eval $(call Download,mt7622-header-sdmmc)) -endif $(eval $(call Download,tfa-files)) # replace 'bromimage' tool by static version $(TAR) -vxzf $(DL_DIR)/$(BLOBS_TARBALL) --wildcards \