kernel: refresh upstreamed patches

Replace pending patches which are already integrated in upstream Linux
with their upstream versions.

These patches were exported with:
git format-patch -1 -k

Link: https://github.com/openwrt/openwrt/pull/21366
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
This commit is contained in:
Hauke Mehrtens 2026-01-01 02:08:19 +01:00
parent ded99c2984
commit 7130053695
13 changed files with 62 additions and 443 deletions

View file

@ -40,6 +40,6 @@ Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
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

View file

@ -1,16 +1,14 @@
To: Miquel Raynal <miquel.raynal@bootlin.com>,
Richard Weinberger <richard@nod.at>, Vignesh Raghavendra <vigneshr@ti.com>,
Tudor Ambarus <tudor.ambarus@linaro.org>, Mark Brown <broonie@kernel.org>
Cc: linux-kernel@vger.kernel.org, linux-mtd@lists.infradead.org
From f6dffe2a9ed1bdcee1879e2728310fb1e08602cf Mon Sep 17 00:00:00 2001
From: Mikhail Zhilkin <csharper2005@gmail.com>
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 <csharper2005@gmail.com>
Link: https://lore.kernel.org/linux-mtd/130e0f3f-93e4-47cf-82f0-93ba58a3a670@gmail.com
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
---
drivers/mtd/nand/spi/fmsh.c | 72 +++++++++++++++++++++++++++++++++++++
1 file changed, 72 insertions(+)

View file

@ -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 <mikhail.kshevetskiy@iopsys.eu>
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 <mikhail.kshevetskiy@iopsys.eu>
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
---
drivers/mtd/nand/spi/core.c | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)

View file

@ -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 <mikhail.kshevetskiy@iopsys.eu>
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 <mikhail.kshevetskiy@iopsys.eu>
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
---
drivers/mtd/nand/spi/core.c | 43 ++++++++++++++++++++++++++++++-------
1 file changed, 35 insertions(+), 8 deletions(-)

View file

@ -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 <mikhail.kshevetskiy@iopsys.eu>
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 <mikhail.kshevetskiy@iopsys.eu>
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
---
drivers/mtd/nand/spi/core.c | 25 +++++++++++++++++++++----
1 file changed, 21 insertions(+), 4 deletions(-)

View file

@ -1,7 +1,7 @@
From 65cb56d49f6edea409600a3c61effc70ee5d43d8 Mon Sep 17 00:00:00 2001
From: Gabor Juhos <j4g8y7@gmail.com>
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 <j4g8y7@gmail.com>
Link: https://patch.msgid.link/20250501-qpic-snand-validate-ecc-v1-1-532776581a66@gmail.com
Signed-off-by: Mark Brown <broonie@kernel.org>
---
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

View file

@ -1,7 +1,7 @@
From 0dc7e656ddd54c3267b7cc18c1ac8ec1297ed02f Mon Sep 17 00:00:00 2001
From: Gabor Juhos <j4g8y7@gmail.com>
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 <quic_mdalam@quicinc.com>
Signed-off-by: Gabor Juhos <j4g8y7@gmail.com>
Acked-by: Miquel Raynal <miquel.raynal@bootlin.com>
Link: https://patch.msgid.link/20250702-qpic-snand-8bit-ecc-v2-1-ae2c17a30bb7@gmail.com
Signed-off-by: Mark Brown <broonie@kernel.org>
---
drivers/mtd/nand/raw/qcom_nandc.c | 6 +++---
drivers/spi/spi-qpic-snand.c | 2 +-

View file

@ -1,7 +1,7 @@
From 913bf8d50cbd144c87e9660b591781179182ff59 Mon Sep 17 00:00:00 2001
From: Gabor Juhos <j4g8y7@gmail.com>
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 <j4g8y7@gmail.com>
---
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 <broonie@kernel.org>
---
drivers/spi/spi-qpic-snand.c | 21 ++++++++++++++++-----
1 file changed, 16 insertions(+), 5 deletions(-)

View file

@ -1,17 +1,7 @@
From 599b92fd0efa8b7c43e7f58c9dd0f7951f7cbf09 Mon Sep 17 00:00:00 2001
From: Vicentiu Galanopulo <vicentiu.galanopulo@remote-tech.co.uk>
To: Pavel Machek <pavel@ucw.cz>, Lee Jones <lee@kernel.org>,
Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>,
Jonathan Corbet <corbet@lwn.net>,
Vicentiu Galanopulo <vicentiu.galanopulo@remote-tech.co.uk>,
linux-leds@vger.kernel.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org
Cc: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
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 <vicentiu.galanopulo@remote-tech.co.uk>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Link: https://lore.kernel.org/r/20241218183401.41687-3-vicentiu.galanopulo@remote-tech.co.uk
Signed-off-by: Lee Jones <lee@kernel.org>
---
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

View file

@ -1,16 +1,7 @@
From 939757aafeb9c266dda37657ee5f7a73ffd35ae2 Mon Sep 17 00:00:00 2001
From: Vicentiu Galanopulo <vicentiu.galanopulo@remote-tech.co.uk>
To: Pavel Machek <pavel@ucw.cz>, Lee Jones <lee@kernel.org>,
Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>,
Jonathan Corbet <corbet@lwn.net>,
Vicentiu Galanopulo <vicentiu.galanopulo@remote-tech.co.uk>,
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 <vicentiu.galanopulo@remote-tech.co.uk>
Link: https://lore.kernel.org/r/20241218183401.41687-4-vicentiu.galanopulo@remote-tech.co.uk
Signed-off-by: Lee Jones <lee@kernel.org>
---
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/<led>/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 <vicentiu.galanopulo@remote-tech.co.uk>
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 @@

View file

@ -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 <fombuena@outlook.com>
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 <fombuena@outlook.com>
Link: https://lore.kernel.org/r/CWLP123MB54732771AC0CE5491B3C84DCC5C32@CWLP123MB5473.GBRP123.PROD.OUTLOOK.COM
Signed-off-by: Lee Jones <lee@kernel.org>
---
drivers/leds/leds-st1202.c | 21 ++++++++++-----------
1 file changed, 10 insertions(+), 11 deletions(-)

View file

@ -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

View file

@ -46,8 +46,8 @@ Signed-off-by: Sander Vanheule <sander@svanheule.net>
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 @@