diff --git a/target/linux/bmips/patches-6.12/700-leds-add-support-for-Sercomm-MSP430-LED-controller.patch b/target/linux/bmips/patches-6.12/700-leds-add-support-for-Sercomm-MSP430-LED-controller.patch index 8e92e39675..cb367832ad 100644 --- a/target/linux/bmips/patches-6.12/700-leds-add-support-for-Sercomm-MSP430-LED-controller.patch +++ b/target/linux/bmips/patches-6.12/700-leds-add-support-for-Sercomm-MSP430-LED-controller.patch @@ -40,6 +40,6 @@ Signed-off-by: Álvaro Fernández Rojas obj-$(CONFIG_LEDS_REGULATOR) += leds-regulator.o obj-$(CONFIG_LEDS_SC27XX_BLTC) += leds-sc27xx-bltc.o +obj-$(CONFIG_LEDS_SERCOMM_MSP430) += leds-sercomm-msp430.o - obj-$(CONFIG_LEDS_SUN50I_A100) += leds-sun50i-a100.o obj-$(CONFIG_LEDS_ST1202) += leds-st1202.o + obj-$(CONFIG_LEDS_SUN50I_A100) += leds-sun50i-a100.o obj-$(CONFIG_LEDS_SUNFIRE) += leds-sunfire.o diff --git a/target/linux/generic/pending-6.12/403-mtd-spinand-add-support-for-FudanMicro-FM25S01BI3.patch b/target/linux/generic/pending-6.12/403-mtd-spinand-add-support-for-FudanMicro-FM25S01BI3.patch index f35344233f..7355efe36b 100644 --- a/target/linux/generic/pending-6.12/403-mtd-spinand-add-support-for-FudanMicro-FM25S01BI3.patch +++ b/target/linux/generic/pending-6.12/403-mtd-spinand-add-support-for-FudanMicro-FM25S01BI3.patch @@ -1,16 +1,14 @@ -To: Miquel Raynal , - Richard Weinberger , Vignesh Raghavendra , - Tudor Ambarus , Mark Brown -Cc: linux-kernel@vger.kernel.org, linux-mtd@lists.infradead.org +From f6dffe2a9ed1bdcee1879e2728310fb1e08602cf Mon Sep 17 00:00:00 2001 From: Mikhail Zhilkin -Subject: [PATCH] mtd: spinand: add support for FudanMicro FM25S01BI3 +Date: Thu, 27 Nov 2025 22:59:00 +0300 +Subject: mtd: spinand: add support for FudanMicro FM25S01BI3 Add support for FudanMicro FM25S01BI3 SPI NAND. Link: https://www.fmsh.com/nvm/FM25S01BI3_ds_eng.pdf Signed-off-by: Mikhail Zhilkin -Link: https://lore.kernel.org/linux-mtd/130e0f3f-93e4-47cf-82f0-93ba58a3a670@gmail.com +Signed-off-by: Miquel Raynal --- drivers/mtd/nand/spi/fmsh.c | 72 +++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) diff --git a/target/linux/generic/pending-6.12/405-01-mtd-spinand-fix-direct-mapping-creation-sizes.patch b/target/linux/generic/pending-6.12/405-01-mtd-spinand-fix-direct-mapping-creation-sizes.patch index 3cb7844800..994e06e4fe 100644 --- a/target/linux/generic/pending-6.12/405-01-mtd-spinand-fix-direct-mapping-creation-sizes.patch +++ b/target/linux/generic/pending-6.12/405-01-mtd-spinand-fix-direct-mapping-creation-sizes.patch @@ -1,12 +1,13 @@ -From 5eea4228aaa3c5aeba843d8ea2a60993c268419d Mon Sep 17 00:00:00 2001 +From e4a0cf9f1d90e6888e5373da3314f761024f6c97 Mon Sep 17 00:00:00 2001 From: Mikhail Kshevetskiy -Date: Sun, 3 Aug 2025 17:23:27 +0300 -Subject: [PATCH RESEND v5 1/3] mtd: spinand: fix direct mapping creation sizes +Date: Thu, 18 Sep 2025 00:53:59 +0300 +Subject: mtd: spinand: fix direct mapping creation sizes Continuous mode is only supported for data reads, thus writing requires only single flash page mapping. Signed-off-by: Mikhail Kshevetskiy +Signed-off-by: Miquel Raynal --- drivers/mtd/nand/spi/core.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/target/linux/generic/pending-6.12/405-02-mtd-spinand-try-a-regular-dirmap-if-creating-a-di.patch b/target/linux/generic/pending-6.12/405-02-mtd-spinand-try-a-regular-dirmap-if-creating-a-di.patch index 5c54a9116c..005c0aa9a1 100644 --- a/target/linux/generic/pending-6.12/405-02-mtd-spinand-try-a-regular-dirmap-if-creating-a-di.patch +++ b/target/linux/generic/pending-6.12/405-02-mtd-spinand-try-a-regular-dirmap-if-creating-a-di.patch @@ -1,8 +1,8 @@ -From 9d13b7857de8834c6246fa5bc83f767675360240 Mon Sep 17 00:00:00 2001 +From 004f8ea0d9917398aabff7388b3bf62a84a4088b Mon Sep 17 00:00:00 2001 From: Mikhail Kshevetskiy -Date: Sun, 3 Aug 2025 19:06:40 +0300 -Subject: [PATCH RESEND v5 2/3] mtd: spinand: try a regular dirmap if creating - a dirmap for continuous reading fails +Date: Thu, 18 Sep 2025 00:54:00 +0300 +Subject: mtd: spinand: try a regular dirmap if creating a dirmap for + continuous reading fails Continuous reading may result in multiple flash pages reading in one operation. Typically only one flash page has read/written (a little bit @@ -22,6 +22,7 @@ This patch tries to create dirmap for continuous reading first and fallback to regular reading if spi controller refuses to create it. Signed-off-by: Mikhail Kshevetskiy +Signed-off-by: Miquel Raynal --- drivers/mtd/nand/spi/core.c | 43 ++++++++++++++++++++++++++++++------- 1 file changed, 35 insertions(+), 8 deletions(-) diff --git a/target/linux/generic/pending-6.12/405-03-mtd-spinand-repeat-reading-in-regular-mode-if-con.patch b/target/linux/generic/pending-6.12/405-03-mtd-spinand-repeat-reading-in-regular-mode-if-con.patch index ad13fbafc3..af53d2065e 100644 --- a/target/linux/generic/pending-6.12/405-03-mtd-spinand-repeat-reading-in-regular-mode-if-con.patch +++ b/target/linux/generic/pending-6.12/405-03-mtd-spinand-repeat-reading-in-regular-mode-if-con.patch @@ -1,8 +1,8 @@ -From 6ffbbe473b98e3944d4cb9379bf725b374e587a9 Mon Sep 17 00:00:00 2001 +From 010dc7f2dd6a0078ade3f88f627ed5fbf45ceb94 Mon Sep 17 00:00:00 2001 From: Mikhail Kshevetskiy -Date: Sun, 3 Aug 2025 17:54:17 +0300 -Subject: [PATCH RESEND v5 3/3] mtd: spinand: repeat reading in regular mode if - continuous reading fails +Date: Thu, 18 Sep 2025 00:54:01 +0300 +Subject: mtd: spinand: repeat reading in regular mode if continuous reading + fails Continuous reading may result in multiple flash pages reading in one operation. Unfortunately, not all spinand controllers support such @@ -14,6 +14,7 @@ In this case: * repeat reading in regular mode. Signed-off-by: Mikhail Kshevetskiy +Signed-off-by: Miquel Raynal --- drivers/mtd/nand/spi/core.c | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/target/linux/generic/pending-6.12/416-09-next-spi-spi-qpic-snand-validate-user-chip-specific-ECC-properties.patch b/target/linux/generic/pending-6.12/416-09-next-spi-spi-qpic-snand-validate-user-chip-specific-ECC-properties.patch index c03a529963..2f951564c1 100644 --- a/target/linux/generic/pending-6.12/416-09-next-spi-spi-qpic-snand-validate-user-chip-specific-ECC-properties.patch +++ b/target/linux/generic/pending-6.12/416-09-next-spi-spi-qpic-snand-validate-user-chip-specific-ECC-properties.patch @@ -1,7 +1,7 @@ +From 65cb56d49f6edea409600a3c61effc70ee5d43d8 Mon Sep 17 00:00:00 2001 From: Gabor Juhos -Date: Thu, 01 May 2025 18:19:16 +0200 -Subject: [PATCH next] spi: spi-qpic-snand: validate user/chip specific ECC - properties +Date: Thu, 1 May 2025 18:19:16 +0200 +Subject: spi: spi-qpic-snand: validate user/chip specific ECC properties The driver only supports 512 bytes ECC step size and 4 bit ECC strength at the moment, however it does not reject unsupported step/strength @@ -81,20 +81,12 @@ strength gets implemented. Fixes: 7304d1909080 ("spi: spi-qpic: add driver for QCOM SPI NAND flash Interface") Signed-off-by: Gabor Juhos +Link: https://patch.msgid.link/20250501-qpic-snand-validate-ecc-v1-1-532776581a66@gmail.com +Signed-off-by: Mark Brown --- -Marked for next because it depends on commit f48d80503504 ("spi: spi-qpic-snand: -use kmalloc() for OOB buffer allocation"). ---- - drivers/spi/spi-qpic-snand.c | 42 +++++++++++++++++++++++++++++++++++++----- + drivers/spi/spi-qpic-snand.c | 42 +++++++++++++++++++++++++++++++----- 1 file changed, 37 insertions(+), 5 deletions(-) - ---- -base-commit: a7f035c2c72496cf7ac34bfaa8c289e0d4c45836 -change-id: 20250501-qpic-snand-validate-ecc-383b3e33e238 - -Best regards, - --- a/drivers/spi/spi-qpic-snand.c +++ b/drivers/spi/spi-qpic-snand.c @@ -249,9 +249,11 @@ static const struct mtd_ooblayout_ops qc diff --git a/target/linux/generic/pending-6.12/416-10-next-1-2-mtd-nand-qpic-common-add-defines-for-ECC_MODE-values.patch b/target/linux/generic/pending-6.12/416-10-next-1-2-mtd-nand-qpic-common-add-defines-for-ECC_MODE-values.patch index 8029e4992e..c232410549 100644 --- a/target/linux/generic/pending-6.12/416-10-next-1-2-mtd-nand-qpic-common-add-defines-for-ECC_MODE-values.patch +++ b/target/linux/generic/pending-6.12/416-10-next-1-2-mtd-nand-qpic-common-add-defines-for-ECC_MODE-values.patch @@ -1,7 +1,7 @@ +From 0dc7e656ddd54c3267b7cc18c1ac8ec1297ed02f Mon Sep 17 00:00:00 2001 From: Gabor Juhos -Date: Fri, 02 May 2025 21:31:16 +0200 -Subject: [PATCH next 1/2] mtd: nand: qpic-common: add defines for ECC_MODE - values +Date: Wed, 2 Jul 2025 14:35:23 +0200 +Subject: mtd: nand: qpic-common: add defines for ECC_MODE values Add defines for the values of the ECC_MODE field of the NAND_DEV0_ECC_CFG register and change both the 'qcom-nandc' and 'spi-qpic-snand' drivers to @@ -10,7 +10,11 @@ use those instead of magic numbers. No functional changes. This is in preparation for adding 8 bit ECC strength support for the 'spi-qpic-snand' driver. +Reviewed-by: Md Sadre Alam Signed-off-by: Gabor Juhos +Acked-by: Miquel Raynal +Link: https://patch.msgid.link/20250702-qpic-snand-8bit-ecc-v2-1-ae2c17a30bb7@gmail.com +Signed-off-by: Mark Brown --- drivers/mtd/nand/raw/qcom_nandc.c | 6 +++--- drivers/spi/spi-qpic-snand.c | 2 +- diff --git a/target/linux/generic/pending-6.12/416-11-next-2-2-spi-spi-qpic-snand-add-support-for-8-bits-ECC-strength.patch b/target/linux/generic/pending-6.12/416-11-next-2-2-spi-spi-qpic-snand-add-support-for-8-bits-ECC-strength.patch index 5b1dee3eb1..acf5d603b6 100644 --- a/target/linux/generic/pending-6.12/416-11-next-2-2-spi-spi-qpic-snand-add-support-for-8-bits-ECC-strength.patch +++ b/target/linux/generic/pending-6.12/416-11-next-2-2-spi-spi-qpic-snand-add-support-for-8-bits-ECC-strength.patch @@ -1,7 +1,7 @@ +From 913bf8d50cbd144c87e9660b591781179182ff59 Mon Sep 17 00:00:00 2001 From: Gabor Juhos -Date: Fri, 02 May 2025 21:31:17 +0200 -Subject: [PATCH next 2/2] spi: spi-qpic-snand: add support for 8 bits ECC - strength +Date: Wed, 2 Jul 2025 14:35:24 +0200 +Subject: spi: spi-qpic-snand: add support for 8 bits ECC strength Even though the hardware supports 8 bits ECC strength, but that is not handled in the driver yet. This change adds the missing bits in order @@ -13,330 +13,8 @@ strength support. Tested on an IPQ9574 platform using a GigaDevice GD5F2GM7REYIG chip. Signed-off-by: Gabor Juhos ---- -mtdtest results: - - # dmesg | grep nand - [ 0.678143] spi-nand spi0.0: GigaDevice SPI NAND was found. - [ 0.687393] spi-nand spi0.0: 256 MiB, block size: 128 KiB, page size: 2048, OOB size: 128 - # cat /proc/mtd - dev: size erasesize name - mtd0: 10000000 00020000 "spi0.0" - # insmod mtd_test - # insmod mtd_speedtest dev=0 - [ 63.128425] - [ 63.128452] ================================================= - [ 63.128979] mtd_speedtest: MTD device: 0 - [ 63.134622] mtd_speedtest: MTD device size 268435456, eraseblock size 131072, page size 2048, count of eraseblocks 2048, pages per eraseblock 64, OOB size 128 - [ 63.139561] mtd_test: scanning for bad eraseblocks - [ 63.756447] mtd_test: scanned 2048 eraseblocks, 0 are bad - [ 71.085514] mtd_speedtest: testing eraseblock write speed - [ 202.745977] mtd_speedtest: eraseblock write speed is 1991 KiB/s - [ 202.746022] mtd_speedtest: testing eraseblock read speed - [ 284.104591] mtd_speedtest: eraseblock read speed is 3222 KiB/s - [ 291.405533] mtd_speedtest: testing page write speed - [ 422.516341] mtd_speedtest: page write speed is 1999 KiB/s - [ 422.516384] mtd_speedtest: testing page read speed - [ 504.144630] mtd_speedtest: page read speed is 3211 KiB/s - [ 511.476726] mtd_speedtest: testing 2 page write speed - [ 643.114443] mtd_speedtest: 2 page write speed is 1991 KiB/s - [ 643.114485] mtd_speedtest: testing 2 page read speed - [ 724.434752] mtd_speedtest: 2 page read speed is 3223 KiB/s - [ 724.434796] mtd_speedtest: Testing erase speed - [ 731.792729] mtd_speedtest: erase speed is 35648 KiB/s - [ 731.792772] mtd_speedtest: Testing 2x multi-block erase speed - [ 739.162513] mtd_speedtest: 2x multi-block erase speed is 35589 KiB/s - [ 739.162558] mtd_speedtest: Testing 4x multi-block erase speed - [ 746.486241] mtd_speedtest: 4x multi-block erase speed is 35820 KiB/s - [ 746.486287] mtd_speedtest: Testing 8x multi-block erase speed - [ 753.789683] mtd_speedtest: 8x multi-block erase speed is 35919 KiB/s - [ 753.789728] mtd_speedtest: Testing 16x multi-block erase speed - [ 761.093075] mtd_speedtest: 16x multi-block erase speed is 35920 KiB/s - [ 761.093120] mtd_speedtest: Testing 32x multi-block erase speed - [ 768.396145] mtd_speedtest: 32x multi-block erase speed is 35922 KiB/s - [ 768.396222] mtd_speedtest: Testing 64x multi-block erase speed - [ 775.699819] mtd_speedtest: 64x multi-block erase speed is 35918 KiB/s - [ 775.699863] mtd_speedtest: finished - [ 775.705259] ================================================= - # insmod mtd_readtest dev=0 - [ 919.060671] - [ 919.060699] ================================================= - [ 919.061226] mtd_readtest: MTD device: 0 - [ 919.066957] mtd_readtest: MTD device size 268435456, eraseblock size 131072, page size 2048, count of eraseblocks 2048, pages per eraseblock 64, OOB size 128 - [ 919.070556] mtd_test: scanning for bad eraseblocks - [ 919.086016] mtd_test: scanned 2048 eraseblocks, 0 are bad - [ 919.089465] mtd_readtest: testing page read - [ 1090.778227] mtd_readtest: finished - [ 1090.778286] ================================================= - # insmod mtd_pagetest dev=0 - [ 1216.297313] - [ 1216.297341] ================================================= - [ 1216.297867] mtd_pagetest: MTD device: 0 - [ 1216.303509] mtd_pagetest: MTD device size 268435456, eraseblock size 131072, page size 2048, count of eraseblocks 2048, pages per eraseblock 64, OOB size 128 - [ 1216.307213] mtd_test: scanning for bad eraseblocks - [ 1216.322680] mtd_test: scanned 2048 eraseblocks, 0 are bad - [ 1216.326077] mtd_pagetest: erasing whole device - [ 1223.694968] mtd_pagetest: erased 2048 eraseblocks - [ 1223.695009] mtd_pagetest: writing whole device - [ 1223.763930] mtd_pagetest: written up to eraseblock 0 - [ 1240.268942] mtd_pagetest: written up to eraseblock 256 - [ 1256.641498] mtd_pagetest: written up to eraseblock 512 - [ 1273.139048] mtd_pagetest: written up to eraseblock 768 - [ 1289.718929] mtd_pagetest: written up to eraseblock 1024 - [ 1306.244553] mtd_pagetest: written up to eraseblock 1280 - [ 1322.939723] mtd_pagetest: written up to eraseblock 1536 - [ 1339.246937] mtd_pagetest: written up to eraseblock 1792 - [ 1355.613729] mtd_pagetest: written 2048 eraseblocks - [ 1355.613770] mtd_pagetest: verifying all eraseblocks - [ 1355.854290] mtd_pagetest: verified up to eraseblock 0 - [ 1416.657733] mtd_pagetest: verified up to eraseblock 256 - [ 1477.384593] mtd_pagetest: verified up to eraseblock 512 - [ 1538.008142] mtd_pagetest: verified up to eraseblock 768 - [ 1599.080797] mtd_pagetest: verified up to eraseblock 1024 - [ 1660.775431] mtd_pagetest: verified up to eraseblock 1280 - [ 1722.177149] mtd_pagetest: verified up to eraseblock 1536 - [ 1783.090166] mtd_pagetest: verified up to eraseblock 1792 - [ 1844.450757] mtd_pagetest: verified 2048 eraseblocks - [ 1844.450798] mtd_pagetest: crosstest - [ 1844.455676] mtd_pagetest: reading page at 0x0 - [ 1844.458603] mtd_pagetest: reading page at 0xffff800 - [ 1844.463047] mtd_pagetest: reading page at 0x0 - [ 1844.467790] mtd_pagetest: verifying pages read at 0x0 match - [ 1844.471636] mtd_pagetest: crosstest ok - [ 1844.477062] mtd_pagetest: erasecrosstest - [ 1844.480833] mtd_pagetest: erasing block 0 - [ 1844.488498] mtd_pagetest: writing 1st page of block 0 - [ 1844.489821] mtd_pagetest: reading 1st page of block 0 - [ 1844.494475] mtd_pagetest: verifying 1st page of block 0 - [ 1844.498942] mtd_pagetest: erasing block 0 - [ 1844.507505] mtd_pagetest: writing 1st page of block 0 - [ 1844.509042] mtd_pagetest: erasing block 2047 - [ 1844.516725] mtd_pagetest: reading 1st page of block 0 - [ 1844.518087] mtd_pagetest: verifying 1st page of block 0 - [ 1844.522415] mtd_pagetest: erasecrosstest ok - [ 1844.527495] mtd_pagetest: erasetest - [ 1844.531613] mtd_pagetest: erasing block 0 - [ 1844.538671] mtd_pagetest: writing 1st page of block 0 - [ 1844.540249] mtd_pagetest: erasing block 0 - [ 1844.547869] mtd_pagetest: reading 1st page of block 0 - [ 1844.548927] mtd_pagetest: verifying 1st page of block 0 is all 0xff - [ 1844.553326] mtd_pagetest: erasetest ok - [ 1844.559440] mtd_pagetest: finished with 0 errors - [ 1844.563233] ================================================= - # insmod mtd_subpagetest dev=0 - [ 1942.429708] - [ 1942.429736] ================================================= - [ 1942.430262] mtd_subpagetest: MTD device: 0 - [ 1942.435905] mtd_subpagetest: MTD device size 268435456, eraseblock size 131072, page size 2048, subpage size 2048, count of eraseblocks 2048, pages per eraseblock 64, OOB size 128 - [ 1942.439994] mtd_test: scanning for bad eraseblocks - [ 1942.457111] mtd_test: scanned 2048 eraseblocks, 0 are bad - [ 1949.824564] mtd_subpagetest: writing whole device - [ 1949.826670] mtd_subpagetest: written up to eraseblock 0 - [ 1950.351816] mtd_subpagetest: written up to eraseblock 256 - [ 1950.875797] mtd_subpagetest: written up to eraseblock 512 - [ 1951.399912] mtd_subpagetest: written up to eraseblock 768 - [ 1951.923618] mtd_subpagetest: written up to eraseblock 1024 - [ 1952.447361] mtd_subpagetest: written up to eraseblock 1280 - [ 1952.970834] mtd_subpagetest: written up to eraseblock 1536 - [ 1953.494635] mtd_subpagetest: written up to eraseblock 1792 - [ 1954.016265] mtd_subpagetest: written 2048 eraseblocks - [ 1954.016294] mtd_subpagetest: verifying all eraseblocks - [ 1954.021617] mtd_subpagetest: verified up to eraseblock 0 - [ 1954.347458] mtd_subpagetest: verified up to eraseblock 256 - [ 1954.667446] mtd_subpagetest: verified up to eraseblock 512 - [ 1954.987343] mtd_subpagetest: verified up to eraseblock 768 - [ 1955.307385] mtd_subpagetest: verified up to eraseblock 1024 - [ 1955.627462] mtd_subpagetest: verified up to eraseblock 1280 - [ 1955.947277] mtd_subpagetest: verified up to eraseblock 1536 - [ 1956.266834] mtd_subpagetest: verified up to eraseblock 1792 - [ 1956.585581] mtd_subpagetest: verified 2048 eraseblocks - [ 1963.889308] mtd_subpagetest: verifying all eraseblocks for 0xff - [ 1963.930487] mtd_subpagetest: verified up to eraseblock 0 - [ 1974.592567] mtd_subpagetest: verified up to eraseblock 256 - [ 1985.180953] mtd_subpagetest: verified up to eraseblock 512 - [ 1995.805397] mtd_subpagetest: verified up to eraseblock 768 - [ 2006.348859] mtd_subpagetest: verified up to eraseblock 1024 - [ 2016.900530] mtd_subpagetest: verified up to eraseblock 1280 - [ 2027.447587] mtd_subpagetest: verified up to eraseblock 1536 - [ 2037.962383] mtd_subpagetest: verified up to eraseblock 1792 - [ 2048.587863] mtd_subpagetest: verified 2048 eraseblocks - [ 2048.587906] mtd_subpagetest: writing whole device - [ 2048.648174] mtd_subpagetest: written up to eraseblock 0 - [ 2062.643145] mtd_subpagetest: written up to eraseblock 256 - [ 2076.699015] mtd_subpagetest: written up to eraseblock 512 - [ 2091.004910] mtd_subpagetest: written up to eraseblock 768 - [ 2105.149879] mtd_subpagetest: written up to eraseblock 1024 - [ 2119.470691] mtd_subpagetest: written up to eraseblock 1280 - [ 2133.746861] mtd_subpagetest: written up to eraseblock 1536 - [ 2147.776477] mtd_subpagetest: written up to eraseblock 1792 - [ 2161.947734] mtd_subpagetest: written 2048 eraseblocks - [ 2161.947776] mtd_subpagetest: verifying all eraseblocks - [ 2161.986109] mtd_subpagetest: verified up to eraseblock 0 - [ 2170.818316] mtd_subpagetest: verified up to eraseblock 256 - [ 2179.596875] mtd_subpagetest: verified up to eraseblock 512 - [ 2188.405116] mtd_subpagetest: verified up to eraseblock 768 - [ 2197.188588] mtd_subpagetest: verified up to eraseblock 1024 - [ 2206.002204] mtd_subpagetest: verified up to eraseblock 1280 - [ 2214.784815] mtd_subpagetest: verified up to eraseblock 1536 - [ 2223.557141] mtd_subpagetest: verified up to eraseblock 1792 - [ 2232.472832] mtd_subpagetest: verified 2048 eraseblocks - [ 2239.818213] mtd_subpagetest: verifying all eraseblocks for 0xff - [ 2239.861404] mtd_subpagetest: verified up to eraseblock 0 - [ 2250.439035] mtd_subpagetest: verified up to eraseblock 256 - [ 2261.176485] mtd_subpagetest: verified up to eraseblock 512 - [ 2271.713183] mtd_subpagetest: verified up to eraseblock 768 - [ 2282.356892] mtd_subpagetest: verified up to eraseblock 1024 - [ 2292.891424] mtd_subpagetest: verified up to eraseblock 1280 - [ 2303.543110] mtd_subpagetest: verified up to eraseblock 1536 - [ 2314.116690] mtd_subpagetest: verified up to eraseblock 1792 - [ 2324.607804] mtd_subpagetest: verified 2048 eraseblocks - [ 2324.607846] mtd_subpagetest: finished with 0 errors - [ 2324.611859] ================================================= - # insmod mtd_oobtest dev=0 - [ 2336.159109] - [ 2336.159138] ================================================= - [ 2336.159664] mtd_oobtest: MTD device: 0 - [ 2336.165308] mtd_oobtest: MTD device size 268435456, eraseblock size 131072, page size 2048, count of eraseblocks 2048, pages per eraseblock 64, OOB size 128 - [ 2336.169043] mtd_test: scanning for bad eraseblocks - [ 2336.184354] mtd_test: scanned 2048 eraseblocks, 0 are bad - [ 2336.187716] mtd_oobtest: test 1 of 5 - [ 2343.495966] mtd_oobtest: writing OOBs of whole device - [ 2343.496073] mtd_oobtest: written up to eraseblock 0 - [ 2343.516803] mtd_oobtest: written up to eraseblock 256 - [ 2343.533527] mtd_oobtest: written up to eraseblock 512 - [ 2343.549945] mtd_oobtest: written up to eraseblock 768 - [ 2343.563666] mtd_oobtest: written up to eraseblock 1024 - [ 2343.575186] mtd_oobtest: written up to eraseblock 1280 - [ 2343.584310] mtd_oobtest: written up to eraseblock 1536 - [ 2343.593011] mtd_oobtest: written up to eraseblock 1792 - [ 2343.600847] mtd_oobtest: written 2048 eraseblocks - [ 2343.600861] mtd_oobtest: verifying all eraseblocks - [ 2343.604542] mtd_oobtest: verified up to eraseblock 0 - [ 2343.616606] mtd_oobtest: verified up to eraseblock 256 - [ 2343.623992] mtd_oobtest: verified up to eraseblock 512 - [ 2343.631390] mtd_oobtest: verified up to eraseblock 768 - [ 2343.638788] mtd_oobtest: verified up to eraseblock 1024 - [ 2343.646184] mtd_oobtest: verified up to eraseblock 1280 - [ 2343.653570] mtd_oobtest: verified up to eraseblock 1536 - [ 2343.660970] mtd_oobtest: verified up to eraseblock 1792 - [ 2343.668356] mtd_oobtest: verified 2048 eraseblocks - [ 2343.668369] mtd_oobtest: test 2 of 5 - [ 2350.985635] mtd_oobtest: writing OOBs of whole device - [ 2350.985743] mtd_oobtest: written up to eraseblock 0 - [ 2351.006445] mtd_oobtest: written up to eraseblock 256 - [ 2351.023170] mtd_oobtest: written up to eraseblock 512 - [ 2351.039645] mtd_oobtest: written up to eraseblock 768 - [ 2351.053395] mtd_oobtest: written up to eraseblock 1024 - [ 2351.064954] mtd_oobtest: written up to eraseblock 1280 - [ 2351.074144] mtd_oobtest: written up to eraseblock 1536 - [ 2351.082848] mtd_oobtest: written up to eraseblock 1792 - [ 2351.090707] mtd_oobtest: written 2048 eraseblocks - [ 2351.090721] mtd_oobtest: verifying all eraseblocks - [ 2351.094373] mtd_oobtest: verified up to eraseblock 0 - [ 2351.099353] mtd_oobtest: verified up to eraseblock 256 - [ 2351.104460] mtd_oobtest: verified up to eraseblock 512 - [ 2351.109437] mtd_oobtest: verified up to eraseblock 768 - [ 2351.114528] mtd_oobtest: verified up to eraseblock 1024 - [ 2351.119683] mtd_oobtest: verified up to eraseblock 1280 - [ 2351.124772] mtd_oobtest: verified up to eraseblock 1536 - [ 2351.129996] mtd_oobtest: verified up to eraseblock 1792 - [ 2351.135187] mtd_oobtest: verified 2048 eraseblocks - [ 2351.140130] mtd_oobtest: test 3 of 5 - [ 2358.448438] mtd_oobtest: writing OOBs of whole device - [ 2358.448546] mtd_oobtest: written up to eraseblock 0 - [ 2358.469297] mtd_oobtest: written up to eraseblock 256 - [ 2358.486095] mtd_oobtest: written up to eraseblock 512 - [ 2358.501993] mtd_oobtest: written up to eraseblock 768 - [ 2358.515473] mtd_oobtest: written up to eraseblock 1024 - [ 2358.526708] mtd_oobtest: written up to eraseblock 1280 - [ 2358.535426] mtd_oobtest: written up to eraseblock 1536 - [ 2358.544152] mtd_oobtest: written up to eraseblock 1792 - [ 2358.551732] mtd_oobtest: written 2048 eraseblocks - [ 2358.551744] mtd_oobtest: verifying all eraseblocks - [ 2358.555424] mtd_oobtest: verified up to eraseblock 0 - [ 2358.567572] mtd_oobtest: verified up to eraseblock 256 - [ 2358.575045] mtd_oobtest: verified up to eraseblock 512 - [ 2358.582537] mtd_oobtest: verified up to eraseblock 768 - [ 2358.590024] mtd_oobtest: verified up to eraseblock 1024 - [ 2358.597511] mtd_oobtest: verified up to eraseblock 1280 - [ 2358.604984] mtd_oobtest: verified up to eraseblock 1536 - [ 2358.612468] mtd_oobtest: verified up to eraseblock 1792 - [ 2358.619923] mtd_oobtest: verified 2048 eraseblocks - [ 2358.619936] mtd_oobtest: test 4 of 5 - [ 2365.924669] mtd_oobtest: attempting to start write past end of OOB - [ 2365.924711] mtd_oobtest: an error is expected... - [ 2365.929795] mtd_oobtest: error occurred as expected - [ 2365.934520] mtd_oobtest: attempting to start read past end of OOB - [ 2365.939150] mtd_oobtest: an error is expected... - [ 2365.945371] mtd_oobtest: error occurred as expected - [ 2365.950087] mtd_oobtest: attempting to write past end of device - [ 2365.954660] mtd_oobtest: an error is expected... - [ 2365.960623] mtd_oobtest: error occurred as expected - [ 2365.965422] mtd_oobtest: attempting to read past end of device - [ 2365.970064] mtd_oobtest: an error is expected... - [ 2365.975925] mtd_oobtest: error occurred as expected - [ 2365.984256] mtd_oobtest: attempting to write past end of device - [ 2365.985300] mtd_oobtest: an error is expected... - [ 2365.991242] mtd_oobtest: error: wrote past end of device - [ 2365.996064] mtd_oobtest: attempting to read past end of device - [ 2366.001389] mtd_oobtest: an error is expected... - [ 2366.007028] mtd_oobtest: error: read past end of device - [ 2366.011776] mtd_oobtest: test 5 of 5 - [ 2373.317991] mtd_oobtest: writing OOBs of whole device - [ 2373.318034] mtd_oobtest: written up to eraseblock 0 - [ 2373.322028] mtd_oobtest: written up to eraseblock 0 - [ 2373.327465] mtd_oobtest: written up to eraseblock 256 - [ 2373.331576] mtd_oobtest: written up to eraseblock 256 - [ 2373.337501] mtd_oobtest: written up to eraseblock 512 - [ 2373.341820] mtd_oobtest: written up to eraseblock 512 - [ 2373.347566] mtd_oobtest: written up to eraseblock 768 - [ 2373.351888] mtd_oobtest: written up to eraseblock 768 - [ 2373.357634] mtd_oobtest: written up to eraseblock 1024 - [ 2373.361957] mtd_oobtest: written up to eraseblock 1024 - [ 2373.367710] mtd_oobtest: written up to eraseblock 1280 - [ 2373.372113] mtd_oobtest: written up to eraseblock 1280 - [ 2373.377841] mtd_oobtest: written up to eraseblock 1536 - [ 2373.382355] mtd_oobtest: written up to eraseblock 1536 - [ 2373.387962] mtd_oobtest: written up to eraseblock 1792 - [ 2373.392597] mtd_oobtest: written up to eraseblock 1792 - [ 2373.398190] mtd_oobtest: written 2047 eraseblocks - [ 2373.402838] mtd_oobtest: verifying all eraseblocks - [ 2373.407629] mtd_oobtest: verified up to eraseblock 0 - [ 2373.412483] mtd_oobtest: verified up to eraseblock 256 - [ 2373.417625] mtd_oobtest: verified up to eraseblock 512 - [ 2373.422518] mtd_oobtest: verified up to eraseblock 768 - [ 2373.427650] mtd_oobtest: verified up to eraseblock 1024 - [ 2373.432760] mtd_oobtest: verified up to eraseblock 1280 - [ 2373.437912] mtd_oobtest: verified up to eraseblock 1536 - [ 2373.443091] mtd_oobtest: verified up to eraseblock 1792 - [ 2373.448337] mtd_oobtest: verified 2047 eraseblocks - [ 2373.453358] mtd_oobtest: finished with 2 errors - [ 2373.458250] ================================================= - -Note: the two errors are present even even without this patch when testing -the driver with a flash chip requiring 4 bits ECC strength. - - # insmod mtd_stresstest dev=0 - [ 2383.256453] - [ 2383.256482] ================================================= - [ 2383.257008] mtd_stresstest: MTD device: 0 - [ 2383.262650] mtd_stresstest: MTD device size 268435456, eraseblock size 131072, page size 2048, count of eraseblocks 2048, pages per eraseblock 64, OOB size 128 - [ 2383.268254] mtd_test: scanning for bad eraseblocks - [ 2383.281992] mtd_test: scanned 2048 eraseblocks, 0 are bad - [ 2383.285565] mtd_stresstest: doing operations - [ 2383.291047] mtd_stresstest: 0 operations done - [ 2427.841267] mtd_stresstest: 1024 operations done - [ 2471.142229] mtd_stresstest: 2048 operations done - [ 2514.405277] mtd_stresstest: 3072 operations done - [ 2555.451926] mtd_stresstest: 4096 operations done - [ 2598.107133] mtd_stresstest: 5120 operations done - [ 2639.936952] mtd_stresstest: 6144 operations done - [ 2680.724751] mtd_stresstest: 7168 operations done - [ 2720.344163] mtd_stresstest: 8192 operations done - [ 2761.645640] mtd_stresstest: 9216 operations done - [ 2791.760534] mtd_stresstest: finished, 10000 operations done - [ 2791.760817] ================================================= - # +Link: https://patch.msgid.link/20250702-qpic-snand-8bit-ecc-v2-2-ae2c17a30bb7@gmail.com +Signed-off-by: Mark Brown --- drivers/spi/spi-qpic-snand.c | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/target/linux/generic/pending-6.12/891-dt-bindings-leds-Add-LED1202-LED-Controller.patch b/target/linux/generic/pending-6.12/891-dt-bindings-leds-Add-LED1202-LED-Controller.patch index 164256081a..9901d13241 100644 --- a/target/linux/generic/pending-6.12/891-dt-bindings-leds-Add-LED1202-LED-Controller.patch +++ b/target/linux/generic/pending-6.12/891-dt-bindings-leds-Add-LED1202-LED-Controller.patch @@ -1,17 +1,7 @@ +From 599b92fd0efa8b7c43e7f58c9dd0f7951f7cbf09 Mon Sep 17 00:00:00 2001 From: Vicentiu Galanopulo -To: Pavel Machek , Lee Jones , - Rob Herring , - Krzysztof Kozlowski , - Conor Dooley , - Jonathan Corbet , - Vicentiu Galanopulo , - linux-leds@vger.kernel.org, devicetree@vger.kernel.org, - linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org -Cc: Krzysztof Kozlowski -Subject: [PATCH v11 2/3] dt-bindings: leds: Add LED1202 LED Controller -Date: Wed, 18 Dec 2024 18:33:58 +0000 [thread overview] -Message-ID: <20241218183401.41687-3-vicentiu.galanopulo@remote-tech.co.uk> (raw) -In-Reply-To: <20241218183401.41687-1-vicentiu.galanopulo@remote-tech.co.uk> +Date: Wed, 18 Dec 2024 18:33:58 +0000 +Subject: dt-bindings: leds: Add LED1202 LED Controller The LED1202 is a 12-channel low quiescent current LED driver with: * Supply range from 2.6 V to 5 V @@ -26,20 +16,9 @@ set to active. Signed-off-by: Vicentiu Galanopulo Reviewed-by: Krzysztof Kozlowski +Link: https://lore.kernel.org/r/20241218183401.41687-3-vicentiu.galanopulo@remote-tech.co.uk +Signed-off-by: Lee Jones --- - v1: https://lore.kernel.org/lkml/ZnCnnQfwuRueCIQ0@admins-Air/T/ - v2: https://lore.kernel.org/all/ZniNdGgKyUMV-hjq@admins-Air/T/ - v3: https://lore.kernel.org/all/ZniNdGgKyUMV-hjq@admins-Air/T/ - - Changes in v4: - - remove label property, use devm_led_classdev_register_ext instead - Changes in v3: - - remove active property - Changes in v2: - - renamed label to remove color from it - - add color property for each node - - add function and function-enumerator property for each node - .../devicetree/bindings/leds/st,led1202.yaml | 132 ++++++++++++++++++ 1 file changed, 132 insertions(+) create mode 100644 Documentation/devicetree/bindings/leds/st,led1202.yaml diff --git a/target/linux/generic/pending-6.12/892-leds-Add-LED1202-I2C-driver.patch b/target/linux/generic/pending-6.12/892-leds-Add-LED1202-I2C-driver.patch index 089f0921ff..ee2ea076fa 100644 --- a/target/linux/generic/pending-6.12/892-leds-Add-LED1202-I2C-driver.patch +++ b/target/linux/generic/pending-6.12/892-leds-Add-LED1202-I2C-driver.patch @@ -1,16 +1,7 @@ +From 939757aafeb9c266dda37657ee5f7a73ffd35ae2 Mon Sep 17 00:00:00 2001 From: Vicentiu Galanopulo -To: Pavel Machek , Lee Jones , - Rob Herring , - Krzysztof Kozlowski , - Conor Dooley , - Jonathan Corbet , - Vicentiu Galanopulo , - linux-leds@vger.kernel.org, devicetree@vger.kernel.org, - linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org -Subject: [PATCH v11 3/3] leds: Add LED1202 I2C driver -Date: Wed, 18 Dec 2024 18:33:59 +0000 [thread overview] -Message-ID: <20241218183401.41687-4-vicentiu.galanopulo@remote-tech.co.uk> (raw) -In-Reply-To: <20241218183401.41687-1-vicentiu.galanopulo@remote-tech.co.uk> +Date: Wed, 18 Dec 2024 18:33:59 +0000 +Subject: leds: Add LED1202 I2C driver The output current can be adjusted separately for each channel by 8-bit analog (current sink input) and 12-bit digital (PWM) dimming control. The @@ -25,38 +16,9 @@ corresponds to the per channel analog dimming, while the patterns[1-8] to the PWM dimming control. Signed-off-by: Vicentiu Galanopulo +Link: https://lore.kernel.org/r/20241218183401.41687-4-vicentiu.galanopulo@remote-tech.co.uk +Signed-off-by: Lee Jones --- - Changes in v10: - - update description help in Kconfig - - move st1202_led and st1202_chip into one line, declaration and definition - Changes in v9: - - log errors directly in st1202_write_reg and st1202_read_reg - - use mutex guards instead of lock/unlock - - remove i2c_set_clientdata - Changes in v7: - - fix st1202_brightness_get() error: uninitialized symbol 'value' - Changes in v6: - - fix build error - Changes in v5: - - remove unused macros - - switch to using devm_led_classdev_register_ext (struct st1202_led update) - - add prescalar_to_milliseconds (convert [22..5660]ms to [0..255] reg value) - - remove register range check in dt_init (range protected by yaml) - - address all review comments in v4 - Changes in v4: - - Remove attributes/extended attributes implementation - - Use /sys/class/leds//hw_pattern (Pavel suggestion) - - Implement review findings of Christophe JAILLET - Changes in v3: - - Rename all ll1202 to st1202, including driver file name - - Convert all magic numbers to defines - - Refactor the show/store callbacks as per Lee's and Thomas's review - - Remove ll1202_get_channel and use dev_ext_attributes instead - - Log all error values for all the functions - - Use sysfs_emit for show callbacks - Changes in v2: - - Fix build error for device_attribute modes - drivers/leds/Kconfig | 10 + drivers/leds/Makefile | 1 + drivers/leds/leds-st1202.c | 416 +++++++++++++++++++++++++++++++++++++ @@ -84,14 +46,14 @@ Signed-off-by: Vicentiu Galanopulo depends on LEDS_CLASS --- a/drivers/leds/Makefile +++ b/drivers/leds/Makefile -@@ -82,6 +82,7 @@ obj-$(CONFIG_LEDS_PWM) += leds-pwm.o +@@ -81,6 +81,7 @@ obj-$(CONFIG_LEDS_POWERNV) += leds-powe + obj-$(CONFIG_LEDS_PWM) += leds-pwm.o obj-$(CONFIG_LEDS_REGULATOR) += leds-regulator.o obj-$(CONFIG_LEDS_SC27XX_BLTC) += leds-sc27xx-bltc.o - obj-$(CONFIG_LEDS_SUN50I_A100) += leds-sun50i-a100.o +obj-$(CONFIG_LEDS_ST1202) += leds-st1202.o + obj-$(CONFIG_LEDS_SUN50I_A100) += leds-sun50i-a100.o obj-$(CONFIG_LEDS_SUNFIRE) += leds-sunfire.o obj-$(CONFIG_LEDS_SYSCON) += leds-syscon.o - obj-$(CONFIG_LEDS_TCA6507) += leds-tca6507.o --- /dev/null +++ b/drivers/leds/leds-st1202.c @@ -0,0 +1,416 @@ diff --git a/target/linux/generic/pending-6.12/893-leds_st1202-Fix-NULL-pointer-access-error.patch b/target/linux/generic/pending-6.12/893-leds_st1202-Fix-NULL-pointer-access-error.patch index d763c5dfbd..39d8ddbf74 100644 --- a/target/linux/generic/pending-6.12/893-leds_st1202-Fix-NULL-pointer-access-error.patch +++ b/target/linux/generic/pending-6.12/893-leds_st1202-Fix-NULL-pointer-access-error.patch @@ -1,18 +1,21 @@ -From e3da313ebcace17f1227566fe1b0d0c3883061f9 Mon Sep 17 00:00:00 2001 +From c72e455b89f216b43cd0dbb518036ec4c98f5c46 Mon Sep 17 00:00:00 2001 From: Manuel Fombuena -Date: Fri, 17 Jan 2025 12:31:49 +0000 -Subject: [PATCH 1/5] leds: leds-st1202: fix NULL pointer access on race - condition +Date: Tue, 25 Feb 2025 22:01:02 +0000 +Subject: leds: leds-st1202: Fix NULL pointer access on race condition st1202_dt_init() calls devm_led_classdev_register_ext() before the -internal data structures are properly setup, so the leds become visible +internal data structures are properly set up, so the LEDs become visible to user space while being partially initialized, leading to a window where trying to access them causes a NULL pointer access. -This change moves devm_led_classdev_register_ext() to the last thing to -happen during initialization to eliminate it. +Move devm_led_classdev_register_ext() from DT initialization +to the end of the probe function when DT and hardware are fully +initialized and ready to interact with user space. +Fixes: 259230378c65 ("leds: Add LED1202 I2C driver") Signed-off-by: Manuel Fombuena +Link: https://lore.kernel.org/r/CWLP123MB54732771AC0CE5491B3C84DCC5C32@CWLP123MB5473.GBRP123.PROD.OUTLOOK.COM +Signed-off-by: Lee Jones --- drivers/leds/leds-st1202.c | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/target/linux/mediatek/patches-6.12/950-smartrg-i2c-led-driver.patch b/target/linux/mediatek/patches-6.12/950-smartrg-i2c-led-driver.patch index faa801fc82..95f39f1a2a 100644 --- a/target/linux/mediatek/patches-6.12/950-smartrg-i2c-led-driver.patch +++ b/target/linux/mediatek/patches-6.12/950-smartrg-i2c-led-driver.patch @@ -29,6 +29,6 @@ obj-$(CONFIG_LEDS_REGULATOR) += leds-regulator.o obj-$(CONFIG_LEDS_SC27XX_BLTC) += leds-sc27xx-bltc.o +obj-$(CONFIG_LEDS_SMARTRG_LED) += leds-smartrg-system.o - obj-$(CONFIG_LEDS_SUN50I_A100) += leds-sun50i-a100.o obj-$(CONFIG_LEDS_ST1202) += leds-st1202.o + obj-$(CONFIG_LEDS_SUN50I_A100) += leds-sun50i-a100.o obj-$(CONFIG_LEDS_SUNFIRE) += leds-sunfire.o diff --git a/target/linux/realtek/patches-6.12/804-leds-Add-support-for-RTL8231-LED-scan-matrix.patch b/target/linux/realtek/patches-6.12/804-leds-Add-support-for-RTL8231-LED-scan-matrix.patch index 6187d095c8..324b556998 100644 --- a/target/linux/realtek/patches-6.12/804-leds-Add-support-for-RTL8231-LED-scan-matrix.patch +++ b/target/linux/realtek/patches-6.12/804-leds-Add-support-for-RTL8231-LED-scan-matrix.patch @@ -46,8 +46,8 @@ Signed-off-by: Sander Vanheule obj-$(CONFIG_LEDS_REGULATOR) += leds-regulator.o +obj-$(CONFIG_LEDS_RTL8231) += leds-rtl8231.o obj-$(CONFIG_LEDS_SC27XX_BLTC) += leds-sc27xx-bltc.o - obj-$(CONFIG_LEDS_SUN50I_A100) += leds-sun50i-a100.o obj-$(CONFIG_LEDS_ST1202) += leds-st1202.o + obj-$(CONFIG_LEDS_SUN50I_A100) += leds-sun50i-a100.o --- /dev/null +++ b/drivers/leds/leds-rtl8231.c @@ -0,0 +1,285 @@