diff --git a/include/kernel-5.15 b/include/kernel-5.15 index 2f7ef8d59d..1575a9ad0e 100644 --- a/include/kernel-5.15 +++ b/include/kernel-5.15 @@ -1,2 +1,2 @@ -LINUX_VERSION-5.15 = .37 -LINUX_KERNEL_HASH-5.15.37 = 18bf091a2157faa8d92a1aba2ecb66b5124bb0e033fc7797343984e069a2c026 +LINUX_VERSION-5.15 = .38 +LINUX_KERNEL_HASH-5.15.38 = 7e415d420990b88bfec038d56e920b9b28f99d54f31dbbd7aa82e66acca11052 diff --git a/target/linux/ath79/patches-5.15/910-unaligned_access_hacks.patch b/target/linux/ath79/patches-5.15/910-unaligned_access_hacks.patch index 260cf4f45a..436d6e0907 100644 --- a/target/linux/ath79/patches-5.15/910-unaligned_access_hacks.patch +++ b/target/linux/ath79/patches-5.15/910-unaligned_access_hacks.patch @@ -305,7 +305,7 @@ list_for_each_entry(p, head, list) { --- a/net/ipv4/tcp_output.c +++ b/net/ipv4/tcp_output.c -@@ -612,48 +612,53 @@ static void tcp_options_write(__be32 *pt +@@ -613,48 +613,53 @@ static void tcp_options_write(__be32 *pt u16 options = opts->options; /* mungable copy */ if (unlikely(OPTION_MD5 & options)) { @@ -382,7 +382,7 @@ } if (unlikely(opts->num_sack_blocks)) { -@@ -661,16 +666,17 @@ static void tcp_options_write(__be32 *pt +@@ -662,16 +667,17 @@ static void tcp_options_write(__be32 *pt tp->duplicate_sack : tp->selective_acks; int this_sack; @@ -406,7 +406,7 @@ } tp->rx_opt.dsack = 0; -@@ -683,13 +689,14 @@ static void tcp_options_write(__be32 *pt +@@ -684,13 +690,14 @@ static void tcp_options_write(__be32 *pt if (foc->exp) { len = TCPOLEN_EXP_FASTOPEN_BASE + foc->len; @@ -706,7 +706,7 @@ EXPORT_SYMBOL(xfrm_parse_spi); --- a/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c -@@ -4129,14 +4129,16 @@ static bool tcp_parse_aligned_timestamp( +@@ -4130,14 +4130,16 @@ static bool tcp_parse_aligned_timestamp( { const __be32 *ptr = (const __be32 *)(th + 1); diff --git a/target/linux/generic/hack-5.15/780-usb-net-MeigLink_modem_support.patch b/target/linux/generic/hack-5.15/780-usb-net-MeigLink_modem_support.patch index 85dc3db98d..8affabdab6 100644 --- a/target/linux/generic/hack-5.15/780-usb-net-MeigLink_modem_support.patch +++ b/target/linux/generic/hack-5.15/780-usb-net-MeigLink_modem_support.patch @@ -19,7 +19,7 @@ #define QUECTEL_VENDOR_ID 0x2c7c /* These Quectel products use Quectel's vendor ID */ -@@ -1127,6 +1129,11 @@ static const struct usb_device_id option +@@ -1129,6 +1131,11 @@ static const struct usb_device_id option { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EG95, 0xff, 0, 0) }, { USB_DEVICE(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_BG96), .driver_info = RSVD(4) }, diff --git a/target/linux/generic/pending-5.15/400-mtd-mtdsplit-support.patch b/target/linux/generic/pending-5.15/400-mtd-mtdsplit-support.patch index 18f26d9941..1acb8d718f 100644 --- a/target/linux/generic/pending-5.15/400-mtd-mtdsplit-support.patch +++ b/target/linux/generic/pending-5.15/400-mtd-mtdsplit-support.patch @@ -272,7 +272,7 @@ obj-$(CONFIG_MTD_BLOCK) += mtdblock.o --- a/include/linux/mtd/mtd.h +++ b/include/linux/mtd/mtd.h -@@ -615,6 +615,24 @@ static inline void mtd_align_erase_req(s +@@ -613,6 +613,24 @@ static inline void mtd_align_erase_req(s req->len += mtd->erasesize - mod; } @@ -297,7 +297,7 @@ static inline uint32_t mtd_div_by_ws(uint64_t sz, struct mtd_info *mtd) { if (mtd->writesize_shift) -@@ -687,6 +705,13 @@ extern void __put_mtd_device(struct mtd_ +@@ -685,6 +703,13 @@ extern void __put_mtd_device(struct mtd_ extern struct mtd_info *get_mtd_device_nm(const char *name); extern void put_mtd_device(struct mtd_info *mtd); diff --git a/target/linux/generic/pending-5.15/495-mtd-core-add-get_mtd_device_by_node.patch b/target/linux/generic/pending-5.15/495-mtd-core-add-get_mtd_device_by_node.patch index 45fbcf7658..a708a46b04 100644 --- a/target/linux/generic/pending-5.15/495-mtd-core-add-get_mtd_device_by_node.patch +++ b/target/linux/generic/pending-5.15/495-mtd-core-add-get_mtd_device_by_node.patch @@ -64,7 +64,7 @@ Reviewed-by: Miquel Raynal mutex_lock(&mtd_table_mutex); --- a/include/linux/mtd/mtd.h +++ b/include/linux/mtd/mtd.h -@@ -705,6 +705,8 @@ extern struct mtd_info *get_mtd_device(s +@@ -703,6 +703,8 @@ extern struct mtd_info *get_mtd_device(s extern int __get_mtd_device(struct mtd_info *mtd); extern void __put_mtd_device(struct mtd_info *mtd); extern struct mtd_info *get_mtd_device_nm(const char *name); diff --git a/target/linux/ipq806x/patches-5.15/099-1-mtd-nand-raw-qcom_nandc-add-boot_layout_mode-support.patch b/target/linux/ipq806x/patches-5.15/099-1-mtd-nand-raw-qcom_nandc-add-boot_layout_mode-support.patch index ec1d0e5f4d..08c067255e 100644 --- a/target/linux/ipq806x/patches-5.15/099-1-mtd-nand-raw-qcom_nandc-add-boot_layout_mode-support.patch +++ b/target/linux/ipq806x/patches-5.15/099-1-mtd-nand-raw-qcom_nandc-add-boot_layout_mode-support.patch @@ -204,7 +204,7 @@ Signed-off-by: Ansuel Smith host->use_ecc = true; clear_bam_transaction(nandc); -@@ -2899,6 +2958,7 @@ static int qcom_nand_host_init_and_regis +@@ -2912,6 +2971,7 @@ static int qcom_nand_host_init_and_regis struct nand_chip *chip = &host->chip; struct mtd_info *mtd = nand_to_mtd(chip); struct device *dev = nandc->dev; @@ -212,7 +212,7 @@ Signed-off-by: Ansuel Smith int ret; ret = of_property_read_u32(dn, "reg", &host->cs); -@@ -2960,6 +3020,17 @@ static int qcom_nand_host_init_and_regis +@@ -2962,6 +3022,17 @@ static int qcom_nand_host_init_and_regis if (ret) nand_cleanup(chip); @@ -230,7 +230,7 @@ Signed-off-by: Ansuel Smith return ret; } -@@ -3125,6 +3196,7 @@ static int qcom_nandc_remove(struct plat +@@ -3127,6 +3198,7 @@ static int qcom_nandc_remove(struct plat static const struct qcom_nandc_props ipq806x_nandc_props = { .ecc_modes = (ECC_RS_4BIT | ECC_BCH_8BIT), .is_bam = false, diff --git a/target/linux/mediatek/patches-5.15/120-10-v5.18-mtd-nand-fix-ecc-parameters-for-mt7622.patch b/target/linux/mediatek/patches-5.15/120-10-v5.18-mtd-nand-fix-ecc-parameters-for-mt7622.patch deleted file mode 100644 index e1c9493a1c..0000000000 --- a/target/linux/mediatek/patches-5.15/120-10-v5.18-mtd-nand-fix-ecc-parameters-for-mt7622.patch +++ /dev/null @@ -1,88 +0,0 @@ -From 41825166744c6e5664281611f5e6d9a2e9333c2b Mon Sep 17 00:00:00 2001 -From: Chuanhong Guo -Date: Sat, 2 Apr 2022 22:31:20 +0800 -Subject: [PATCH 10/15] mtd: nand: fix ecc parameters for mt7622 - -According to the datasheet, mt7622 only has 5 ECC capabilities instead -of 7, and the decoding error register is arranged as follows: -+------+---------+---------+---------+---------+ -| Bits | 19:15 | 14:10 | 9:5 | 4:0 | -+------+---------+---------+---------+---------+ -| Name | ERRNUM3 | ERRNUM2 | ERRNUM1 | ERRNUM0 | -+------+---------+---------+---------+---------+ -This means err_mask should be 0x1f instead of 0x3f and the number of -bits shifted in mtk_ecc_get_stats should be 5 instead of 8. - -This commit introduces err_shift for the difference in this register -and fix other existing parameters. - -Public MT7622 reference manual can be found on [0] and the info this -commit is based on is from page 656 and page 660. - -[0]: https://wiki.banana-pi.org/Banana_Pi_BPI-R64#Documents - -Fixes: 98dea8d71931 ("mtd: nand: mtk: Support MT7622 NAND flash controller.") -Signed-off-by: Chuanhong Guo -(cherry picked from commit 088b769abd1bd21753002b17b696ae1778b16e8c) ---- - drivers/mtd/nand/raw/mtk_ecc.c | 12 ++++++++---- - 1 file changed, 8 insertions(+), 4 deletions(-) - ---- a/drivers/mtd/nand/raw/mtk_ecc.c -+++ b/drivers/mtd/nand/raw/mtk_ecc.c -@@ -43,6 +43,7 @@ - - struct mtk_ecc_caps { - u32 err_mask; -+ u32 err_shift; - const u8 *ecc_strength; - const u32 *ecc_regs; - u8 num_ecc_strength; -@@ -76,7 +77,7 @@ static const u8 ecc_strength_mt2712[] = - }; - - static const u8 ecc_strength_mt7622[] = { -- 4, 6, 8, 10, 12, 14, 16 -+ 4, 6, 8, 10, 12 - }; - - enum mtk_ecc_regs { -@@ -221,7 +222,7 @@ void mtk_ecc_get_stats(struct mtk_ecc *e - for (i = 0; i < sectors; i++) { - offset = (i >> 2) << 2; - err = readl(ecc->regs + ECC_DECENUM0 + offset); -- err = err >> ((i % 4) * 8); -+ err = err >> ((i % 4) * ecc->caps->err_shift); - err &= ecc->caps->err_mask; - if (err == ecc->caps->err_mask) { - /* uncorrectable errors */ -@@ -449,6 +450,7 @@ EXPORT_SYMBOL(mtk_ecc_get_parity_bits); - - static const struct mtk_ecc_caps mtk_ecc_caps_mt2701 = { - .err_mask = 0x3f, -+ .err_shift = 8, - .ecc_strength = ecc_strength_mt2701, - .ecc_regs = mt2701_ecc_regs, - .num_ecc_strength = 20, -@@ -459,6 +461,7 @@ static const struct mtk_ecc_caps mtk_ecc - - static const struct mtk_ecc_caps mtk_ecc_caps_mt2712 = { - .err_mask = 0x7f, -+ .err_shift = 8, - .ecc_strength = ecc_strength_mt2712, - .ecc_regs = mt2712_ecc_regs, - .num_ecc_strength = 23, -@@ -468,10 +471,11 @@ static const struct mtk_ecc_caps mtk_ecc - }; - - static const struct mtk_ecc_caps mtk_ecc_caps_mt7622 = { -- .err_mask = 0x3f, -+ .err_mask = 0x1f, -+ .err_shift = 5, - .ecc_strength = ecc_strength_mt7622, - .ecc_regs = mt7622_ecc_regs, -- .num_ecc_strength = 7, -+ .num_ecc_strength = 5, - .ecc_mode_shift = 4, - .parity_bits = 13, - .pg_irq_sel = 0,