diff --git a/patches-mt798x-7.6.6.1/0103-target-mediatek-amend-board-for-GL.iNet-GL-X3000.patch b/patches-mt798x-7.6.6.1/0103-target-mediatek-amend-board-for-GL.iNet-GL-X3000.patch index d01161e..9b93fa3 100644 --- a/patches-mt798x-7.6.6.1/0103-target-mediatek-amend-board-for-GL.iNet-GL-X3000.patch +++ b/patches-mt798x-7.6.6.1/0103-target-mediatek-amend-board-for-GL.iNet-GL-X3000.patch @@ -32,7 +32,7 @@ index 769a9416e6..25647db01d 100755 + bootargs = "console=ttyS0,115200n1 loglevel=8 \ + earlycon=uart8250,mmio32,0x11002000 \ + root=PARTLABEL=rootfs rootwait rootfstype=squashfs,f2fs \ -+ block2mtd.block2mtd=/dev/mmcblk0p1,65536,log"; ++ block2mtd.block2mtd=/dev/mmcblk0p1,65536,log;/dev/mmcblk0p5,65536,custom"; + }; + + reg_3p3v: regulator-3p3v { diff --git a/patches-mt798x-7.6.6.1/0404-block2mtd-support-multi-partition-map.patch b/patches-mt798x-7.6.6.1/0404-block2mtd-support-multi-partition-map.patch new file mode 100644 index 0000000..7dd3f4f --- /dev/null +++ b/patches-mt798x-7.6.6.1/0404-block2mtd-support-multi-partition-map.patch @@ -0,0 +1,110 @@ +From b5e925691515b17c0353d164eb96fc3e1fc402be Mon Sep 17 00:00:00 2001 +From: Li Zhang +Date: Thu, 22 Dec 2022 17:40:04 +0800 +Subject: [PATCH] block2mtd: support multi partition map + +Signed-off-by: Li Zhang +--- + ...999-support-block2mtd-multi-partition-map.patch | 90 ++++++++++++++++++++++ + 1 file changed, 90 insertions(+) + create mode 100644 target/linux/mediatek/patches-5.4/9999-support-block2mtd-multi-partition-map.patch + +diff --git a/target/linux/mediatek/patches-5.4/9999-support-block2mtd-multi-partition-map.patch b/target/linux/mediatek/patches-5.4/9999-support-block2mtd-multi-partition-map.patch +new file mode 100644 +index 0000000..d4b3440 +--- /dev/null ++++ b/target/linux/mediatek/patches-5.4/9999-support-block2mtd-multi-partition-map.patch +@@ -0,0 +1,90 @@ ++--- linux-origin/drivers/mtd/devices/block2mtd.c 2022-12-21 14:34:02.660311157 +0800 +++++ linux/drivers/mtd/devices/block2mtd.c 2022-12-22 15:42:12.318660704 +0800 ++@@ -386,9 +386,10 @@ ++ ++ static int block2mtd_setup2(const char *val) ++ { +++ char cmdline[256] = {0}; +++ char *cmd = cmdline; ++ /* 80 for device, 12 for erase size, 80 for name, 8 for timeout */ ++ char buf[80 + 12 + 80 + 8]; ++- char *str = buf; ++ char *token[4]; ++ char *name; ++ size_t erase_size = PAGE_SIZE; ++@@ -400,42 +401,47 @@ ++ return 0; ++ } ++ ++- strcpy(str, val); ++- kill_final_newline(str); +++ strcpy(cmd,val); +++ kill_final_newline(cmd); +++ for(;NULL != cmd;){ +++ memset(buf, 0, sizeof(cmd)); +++ strcpy(buf, strsep(&cmd, ";")); +++ char *str = buf; ++ ++- for (i = 0; i < 4; i++) ++- token[i] = strsep(&str, ","); +++ for (i = 0; i < 4; i++) +++ token[i] = strsep(&str, ","); ++ ++- if (str) { ++- pr_err("too many arguments\n"); ++- return 0; ++- } ++- ++- if (!token[0]) { ++- pr_err("no argument\n"); ++- return 0; ++- } +++ if (str) { +++ pr_err("too many arguments\n"); +++ return 0; +++ } ++ ++- name = token[0]; ++- if (strlen(name) + 1 > 80) { ++- pr_err("device name too long\n"); ++- return 0; ++- } +++ if (!token[0]) { +++ pr_err("no argument\n"); +++ return 0; +++ } ++ ++- if (token[1]) { ++- ret = parse_num(&erase_size, token[1]); ++- if (ret) { ++- pr_err("illegal erase size\n"); +++ name = token[0]; +++ if (strlen(name) + 1 > 80) { +++ pr_err("device name too long\n"); ++ return 0; ++ } ++- } ++- if (token[2] && (strlen(token[2]) + 1 > 80)) ++- pr_err("mtd device name too long\n"); ++ ++- if (token[3] && kstrtoul(token[3], 0, &timeout)) ++- pr_err("invalid timeout\n"); +++ if (token[1]) { +++ ret = parse_num(&erase_size, token[1]); +++ if (ret) { +++ pr_err("illegal erase size\n"); +++ return 0; +++ } +++ } +++ if (token[2] && (strlen(token[2]) + 1 > 80)) +++ pr_err("mtd device name too long\n"); +++ +++ if (token[3] && kstrtoul(token[3], 0, &timeout)) +++ pr_err("invalid timeout\n"); ++ ++- add_device(name, erase_size, token[2], timeout); +++ add_device(name, erase_size, token[2], timeout); +++ } ++ ++ return 0; ++ } +-- +2.7.4 +