Re: [PATCH v3 00/14] spi: airoha: driver fixes & improvements
From: Mikhail Kshevetskiy <hidden>
Date: 2025-08-21 11:13:21
Also in:
linux-spi, lkml
On 21.08.2025 09:58, Lorenzo Bianconi wrote:
quoted
This patch series greatly improve airoha snfi driver and fix a number of serious bug. Fixed bugs: * Fix reading/writing of flashes with more than one plane per lun * Fix inability to read/write oob area * Fill the buffer with 0xff before writing * Fix reading of flashes supporting continuous reading mode * Fix error paths Improvements: * Add support of dual/quad wires spi modes in exec_op(). * Support of dualio/quadio flash reading commands * Remove dirty hack that reads flash page settings from SNFI registers during driver startup Unfortunately I am unable to test the driver with linux at the moment, so only the following testing was done:It seems to me this is quite an important rework of the driver. I would prefer to have some test results for this series. Are you able to run mtd_test kernel module for testing?
I'll try to build latest openwrt with this patches and mtd_test kernel module and try it on one of our boards. Actually patches can be divided on to parts: * fixes of current driver (patches 1-10) * change of behavior to avoid reading flash page settings from SNFI registers during driver startup (patches 11-14) The changes are based on the code we are using for more than 3 years. I adapt it to latest linux/u-boot code. Up to now the only known issue appears on en7523 chips only. Here a corresponding patch description (not added to this series) ====================================================== spi: airoha: en7523: workaround flash damaging if UART_TXD was short to GND We found that some serial console may pull TX line to GROUND during board boot time. Airoha uses TX line as one of it's BOOT pins. This will lead to booting in RESERVED boot mode. It was found that some flashes operates incorrectly in RESERVED mode. Micron and Skyhigh flashes are definitely affected by the issue, Winbond flashes are NOT affected. Details: -------- DMA reading of odd pages on affected flashes operates incorrectly. Page reading offset (start of the page) on hardware level is replaced by 0x10. Thus results in incorrect data reading. Usage of UBI make things even worse. Any attempt to access UBI leads to ubi damaging. As result OS loading becomes impossible. Non-DMA reading is OK. ======================================================= Regards, Mikhail
Regards, Lorenzoquoted
* Driver compiles without error. * All changes were tested with corresponding u-boot driver. U-Boot SpiNAND driver was modified as well to match linux-6.17-rc2 with additional fixes for continuous mode. Changes v2: * minor fix * add comments to code Changes v3: * add patch to prevent continuous reading Mikhail Kshevetskiy (14): spi: airoha: return an error for continuous mode dirmap creation cases spi: airoha: remove unnecessary restriction length spi: airoha: add support of dual/quad wires spi modes spi: airoha: remove unnecessary switch to non-dma mode spi: airoha: unify dirmap read/write code spi: airoha: switch back to non-dma mode in the case of error spi: airoha: fix reading/writing of flashes with more than one plane per lun spi: airoha: support of dualio/quadio flash reading commands spi: airoha: allow reading/writing of oob area spi: airoha: buffer must be 0xff-ed before writing spi: airoha: avoid setting of page/oob sizes in REG_SPI_NFI_PAGEFMT spi: airoha: reduce the number of modification of REG_SPI_NFI_CNFG and REG_SPI_NFI_SECCUS_SIZE registers spi: airoha: set custom sector size equal to flash page size spi: airoha: avoid reading flash page settings from SNFI registers during driver startup drivers/spi/spi-airoha-snfi.c | 508 +++++++++++++++++----------------- 1 file changed, 260 insertions(+), 248 deletions(-) -- 2.50.1