summaryrefslogtreecommitdiff
path: root/drivers/spi
AgeCommit message (Collapse)Author
12 daysspi: fsl_espi: fix read transactionsMichael Walle
Since commit 7917c2e35604 ("spi: fsl_espi: fix din offset") MTD is basically broken because any read transaction will get wrong data. While the commit in question will fix simple transfers (where both SPI_XFER_BEGIN and SPI_XFER_END is set), it will break the most common case, where opcode and address is send first and then data comes as a second transfer. This basically reverts commit 7917c2e35604 ("spi: fsl_espi: fix din offset") and make the fix particular for this simple case. Instead of providing two buffers for reading and writing, just malloc one which is used for both. This will work because the data is first written on the SPI bus and then it will be read (and overwite the written data) into the same buffer. Suggested-by: Tomas Alvarez Vanoli <[email protected]> Fixes: 7917c2e35604 ("spi: fsl_espi: fix din offset") Signed-off-by: Michael Walle <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2026-05-12spi: apple: Add "apple,t8103-spi" compatibleJanne Grunau
After discussion with the devicetree maintainers we agreed to not extend lists with the generic compatible "apple,spi" anymore [1]. Use "apple,t8103-spi" as base compatible as it is the SoC driver and bindings were originally written for. The t602x (M2 Pro/Max/Ultra) devicetrees submitted in [2] use this compatible as fallback instead of "apple,spi". Link: https://lore.kernel.org/asahi/[email protected]/ [1] Link: https://lore.kernel.org/asahi/[email protected]/ [2] Signed-off-by: Janne Grunau <[email protected]> Acked-by: Mark Kettenis <[email protected]>
2026-04-30spi: sunxi: wait for TX/RX fifo reset doneYixun Lan
Once reset SPI TX or RX fifo, the underlying hardware need to take some time to actually settle down, the two bits will automatically clear to 0, so use a poll mechanism to check status bits to make sure it's done correctly. On Cubie A7A board which using A733 SoC, we encoutered a SPI nor flash timeout issue, it turns out that the SPI fifo reset take a few time to settle down, Add a loop to poll the status. This was the error message shows on A7A board once this issue happened. => sf probe ERROR: sun4i_spi: Timeout transferring data Failed to initialize SPI flash at 0:0 (error -2) Signed-off-by: Yixun Lan <[email protected]> Reviewed-by: Jernej Skrabec <[email protected]> Acked-by: Andre Przywara <[email protected]>
2026-04-30Merge tag 'u-boot-stm32-20260430' of ↵Tom Rini
https://source.denx.de/u-boot/custodians/u-boot-stm - arm; stm32mp2: Factorize TAMP_FWU_BOOT_IDX_MASK/OFFSET definition - arm: stm32mp: Drop unnecessary BOARD_EARLY_INIT_F usage - board: stm32mp25: support dynamic A/B bank bootup - board: stm32pm1: Fix board_check_usb_power() - clk: stm32: Add STM32MP23 support - video: stm32: dsi: fix unchecked return values - video: support Rocktech RK050HR345-CT106A panel - Remove non-existent STM32_RESET flag
2026-04-30spi: stm32: extend support to STM32MP25Dario Binacchi
The SPI IP in this platform is fully compatible with the current driver implementation, requiring only a new compatible string. Signed-off-by: Dario Binacchi <[email protected]> Reviewed-by: Patrice Chotard <[email protected]>
2026-04-30spi: stm32: add support for bits-per-word settingDario Binacchi
Implement the set_wordlen operation to allow dynamic bus width configuration. This is required for peripherals with non-standard requirements, such as display panels that need 9-bit word transfers during the initialization and setup phase. Signed-off-by: Dario Binacchi <[email protected]> Reviewed-by: Patrice Chotard <[email protected]>
2026-04-30spi: stm32: add stm32_spi_is_enabled() helperDario Binacchi
Add a helper to check the SPE (SPI Enable) bit and replace the open-coded bitwise check in stm32_spi_stopxfer() with this helper to improve readability and consistency. This is also a preparatory step for future driver updates that require checking the SPI enable state across different code paths. Signed-off-by: Dario Binacchi <[email protected]> Reviewed-by: Patrice Chotard <[email protected]>
2026-04-30spi: stm32: clean up buffer length assignmentDario Binacchi
Remove redundant divisions by using the already available xferlen variable for setting the rx/tx buffer lengths. Signed-off-by: Dario Binacchi <[email protected]> Reviewed-by: Patrice Chotard <[email protected]>
2026-04-30test: spi: add sandbox_spi_get_wordlen interfaceDario Binacchi
Add the sandbox_spi_get_wordlen() public interface to retrieve the internal word length state of the sandbox SPI device. This is intended for use in sandbox SPI test cases to verify that the word length is correctly propagated from the SPI uclass to the driver. Signed-off-by: Dario Binacchi <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2026-04-30spi: sandbox_spi: support wordlen setupDario Binacchi
The driver currently ignores the word length configuration. Implement the set_wordlen operation to store and track the current word length. Signed-off-by: Dario Binacchi <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2026-04-30spi: add support for bits-per-word settingDario Binacchi
Allow dynamic configuration of the SPI word length. This is required for controllers and slaves that need to operate with non-standard word lengths, such as 9-bit wide transfers. Signed-off-by: Dario Binacchi <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2026-04-30spi: add STM32MP23 OSPI supportPatrice Chotard
Add STM32MP23 OSPI support. Signed-off-by: Patrice Chotard <[email protected]>
2026-04-28spi: mtk_snor: Remove status register write procedure in probe()Meiker Gao
Remove status register write procedure in probe(). This is handled in spi-nor-core by the SPI_NOR_HAS_LOCK flag. Signed-off-by: Meiker Gao <[email protected]> Reviewed-by: Julien Stephan <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: David Lechner <[email protected]>
2026-04-28spi: mtk_snor: fix zeroed data in DMA read bounce pathMacpaul Lin
Implement proper bounce buffer handling for the read path to fix zeroed data when using DMA. In the bounce path, map the bounce buffer with dma_map_single(), perform DMA using bounce_dma, then copy data from the bounce buffer to the user buffer, and finally unmap with dma_unmap_single(). Signed-off-by: Macpaul Lin <[email protected]> Reviewed-by: Julien Stephan <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: David Lechner <[email protected]>
2026-04-28spi: mtk_snor: support newer SOCsNoah.Shen
Add support for some newer SOCs. New compatible strings are added to the lookup table. Some SOCs also need a extra bit clocked out as a hardware quirk, so a new capability structure and code is added to support that. Signed-off-by: Noah.Shen <[email protected]> Reviewed-by: Julien Stephan <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: David Lechner <[email protected]>
2026-04-28spi: mtk-snor: add bounds checking in mtk_snor_cmd_program()Noah.Shen
Add bounds checking of the various lengths in mtk_snor_cmd_program() to prevent reading or writing registers out of bounds. Signed-off-by: Noah.Shen <[email protected]> Reviewed-by: Julien Stephan <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: David Lechner <[email protected]>
2026-04-28spi: mtk_snor: check return value of mtk_snor_cmd_exec()Noah.Shen
Always check the return value of mtk_snor_cmd_exec() and propagate the error. Signed-off-by: Noah.Shen <[email protected]> Reviewed-by: Julien Stephan <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: David Lechner <[email protected]>
2026-04-28spi: mtk_snor: conditionally copy tx/rx dataNoah.Shen
Only write out data for OUT command and read in data for IN commands. Signed-off-by: Noah.Shen <[email protected]> Reviewed-by: Julien Stephan <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: David Lechner <[email protected]>
2026-04-28spi: mtk_snor: avoid alloc in mtk_snor_cmd_program()Noah.Shen
Rework mtk_snor_cmd_program() to avoid allocating a temporary buffer for tx data. This improves performance a bit by avoiding the need to allocate memory and copy data an extra time. Signed-off-by: Noah.Shen <[email protected]> Reviewed-by: Julien Stephan <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: David Lechner <[email protected]>
2026-04-28spi: mtk_snor: clean up commentsNoah.Shen
Avoid use of C++-style comments and fix multi-line comment style. Signed-off-by: Noah.Shen <[email protected]> Reviewed-by: Julien Stephan <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: David Lechner <[email protected]>
2026-04-15spi: cadence_xspi: enable automatic platform data allocationChen Huei Lok
Enable automatic allocation of platform data for the Cadence XSPI controller by setting .plat_auto. Without this, dev_get_plat() may return invalid or uninitialized platform data when multiple XSPI controllers are present, leading to incorrect IOBASE/SDMABASE/AUXBASE values and causing SPI flash probe failures. Setting .plat_auto ensures each controller instance receives a properly sized cdns_xspi_plat structure, allowing SF probe to work correctly. Tested on an Altera Simics platform with multiple XSPI controllers. Signed-off-by: Chen Huei Lok <[email protected]>
2026-04-07global: Correct duplicate U_BOOT_DRIVER entry namesTom Rini
The U_BOOT_DRIVER macro creates a list of drivers used at link time, and all entries here must be unique. This in turn means that all entries in the code should also be unique in order to not lead to build failures later with unexpected build combinations. Typically, the problem we have here is when a driver is obviously based on another driver and didn't update this particular field and so while the name field reflects something unique the linker entry itself is not. In a few places this provides a more suitable string name as well, however. Reviewed-by: Marek Vasut <[email protected]> Reviewed-by: Svyatoslav Ryhel <[email protected]> # Tegra Reviewed-by: Peter Robinson <[email protected]> Reviewed-by: Heiko Schocher <[email protected]> Reviewed-by: Simon Glass <[email protected]> Signed-off-by: Tom Rini <[email protected]>
2026-04-03spi: Correct dependency on SPI_MEM for many driversTom Rini
A large number of drivers "depends on" SPI_MEM but this is library type functionality and so must be select'd instead in order to ensure that drivers will build. Correct this usage and hide the symbol normally. Signed-off-by: Tom Rini <[email protected]>
2026-04-02spi: fsl_espi: fix din offsetTomas Alvarez Vanoli
In the case of SPI_XFER_BEGIN | SPI_XFER_END, the function creates a buffer of double the size of the transaction, so that it can write the data in into the second half. It sets the rx_offset to len, and in the while loop we are setting an internal "din" to buffer + rx_offset. However, at the end of each loop, the driver copies "buffer + 2 * cmd_len" back to the data_in pointer. This commit changes the source of the data to buffer + rx_offset. Signed-off-by: Tomas Alvarez Vanoli <[email protected]>
2026-03-23spi: cadence_qspi: pulse controller reset at probePadmarao Begari
The driver previously only deasserted the optional bulk reset, leaving the controller in whatever state earlier stages left it and risking failed probes or bad transfers. Assert the reset first, wait 10 µs, and then deassert so the OSPI block starts from a known state. Signed-off-by: Padmarao Begari <[email protected]> Signed-off-by: Michal Simek <[email protected]> Link: https://lore.kernel.org/r/[email protected]
2026-03-23spi: cadence_qspi: Disable the DAC mode in indirect readVenkatesh Yadav Abbarapu
Hang has been observed on QEMU, as it starts with indac read and fills sram, but after dma is triggered, it tries dac read instead (based on priority) which gets blocked. Disable the DAC mode in indirect DMA read and enable back for writes as DAC mode is used. Signed-off-by: Venkatesh Yadav Abbarapu <[email protected]> Tested-by: Padmarao Begari <[email protected]> Signed-off-by: Michal Simek <[email protected]> Link: https://lore.kernel.org/r/[email protected]
2026-03-16spi: nxp_xspi: Add new driver for NXP XSPI controllerAlice Guo
Add new driver to support NXP XSPI controller for NOR and NAND flash. XSPI controller also uses a programmable sequence engine to provide flexibility to support existing and future memory devices. It supports single, dual, quad, octal modes of operation. Signed-off-by: Ye Li <[email protected]> Signed-off-by: Alice Guo <[email protected]>
2026-03-09Merge tag 'v2026.04-rc4' into nextTom Rini
Prepare v2026.04-rc4
2026-03-04treewide: Remove Timesys from ADI ADSP maintenancePhilip Molloy
After years of developing the ADI ADSP platform, Timesys was purchased by another company and is no longer contracted to maintain the platform. Signed-off-by: Philip Molloy <[email protected]> Reviewed-by: Greg Malysa <[email protected]>
2026-02-17Merge patch series "treewide: Clean up usage of DECLARE_GLOBAL_DATA_PTR"Tom Rini
Peng Fan (OSS) <[email protected]> says: This patch set primarily removes unused DECLARE_GLOBAL_DATA_PTR instances. Many files declare DECLARE_GLOBAL_DATA_PTR and include asm/global_data.h even though gd is never used. In these cases, asm/global_data.h is effectively treated as a proxy header, which is not a good practice. Following the Include What You Use principle, files should include only the headers they actually depend on, rather than relying on global_data.h indirectly. This approach is also adopted in Linux kernel [1]. The first few patches are prepartion to avoid building break after remove the including of global_data.h. A script is for filtering the files: list=`find . -name "*.[ch]"` for source in ${list} do result=`sed -n '/DECLARE_GLOBAL_DATA_PTR/p' ${source}` if [ "${result}" == "DECLARE_GLOBAL_DATA_PTR;" ]; then echo "Found in ${source}" result=`sed -n '/\<gd\>/p' ${source}` result2=`sed -n '/\<gd_/p' ${source}` result3=`sed -n '/\<gd->/p' ${source}` if [ "${result}" == "" ] && [ "${result2}" == "" ] && [ "${result3}" == "" ];then echo "Cleanup ${source}" sed -i '/DECLARE_GLOBAL_DATA_PTR/{N;/\n[[:space:]]*$/d;s/.*\n//;}' ${source} sed -i '/DECLARE_GLOBAL_DATA_PTR/d' ${source} sed -i '/global_data.h/d' ${source} git add ${source} fi fi done [1] https://lpc.events/event/17/contributions/1620/attachments/1228/2520/Linux%20Kernel%20Header%20Optimization.pdf CI: https://github.com/u-boot/u-boot/pull/865 Link: https://lore.kernel.org/r/[email protected]
2026-02-17treewide: Clean up DECLARE_GLOBAL_DATA_PTR usagePeng Fan
Remove DECLARE_GLOBAL_DATA_PTR from files where gd is not used, and drop the unnecessary inclusion of asm/global_data.h. Headers should be included directly by the files that need them, rather than indirectly via global_data.h. Reviewed-by: Patrice Chotard <[email protected]> #STMicroelectronics boards and STM32MP1 ram test driver Tested-by: Anshul Dalal <[email protected]> #TI boards Acked-by: Yao Zi <[email protected]> #TH1520 Signed-off-by: Peng Fan <[email protected]>
2026-02-14soft_spi performance enhancementJean-Marie Verdun
Add a test when delay is set to 0 to improve performances by 20% on ARM based systems Signed-off-by: Jean-Marie Verdun <[email protected]> Reviewed-by: Neil Armstrong <[email protected]>
2026-02-13spi: Clean up more of the stacked parallel ifdefferyMarek Vasut
Invert the conditional when to exit, and fall back to common code in the default case. This should have no functional impact on either code path. Signed-off-by: Marek Vasut <[email protected]>
2026-02-13spi: Squash spi_slave_of_to_plat() into spi_child_post_bind()Marek Vasut
The spi_slave_of_to_plat() is called from one place, spi_child_post_bind(). Squash it into the later and remove the public declaration, make this function local static. No functional change. Signed-off-by: Marek Vasut <[email protected]>
2026-01-29spi: stm32-qspi: Optimize FIFO accesses using u16 or u32Patrice Chotard
FIFO accesses uses u8 only for read/write. In order to optimize throughput, add u16 or u32 read/write accesses when possible. Set FIFO threshold level value accordingly. Test performed by writing and reading 64MB on sNOR on stm32mp157c-ev1 board: before after ratio Write : 428 KB/s 719 KB/s +68% Read : 520 KB/s 3200 KB/s +615% Reviewed-by: Patrick Delaunay <[email protected]> Signed-off-by: Patrice Chotard <[email protected]>
2026-01-29spi: stm32-qspi: Increase read throughput in indirect modePatrice Chotard
When WATCHDOG_RESET() was replaced by schedule() in commit 29caf9305b6f ("cyclic: Use schedule() instead of WATCHDOG_RESET()") we not only reset the watchdog but also call the cyclic infrastructure which takes time and has impact on read accesses performances. Move schedule() from _stm32_qspi_read_fifo() to _stm32_qspi_poll() and call schedule() only every 1MB chunk of data. Test performed by reading 64MB on sNOR on stm32mp157c-ev1 board: before after ratio Read : 201 KB/s 520KB/s +258% Reviewed-by: Patrick Delaunay <[email protected]> Signed-off-by: Patrice Chotard <[email protected]>
2026-01-29spi: stm32-ospi: Increase read throughput in indirect modePatrice Chotard
Schedule() is called every u8/u16 or u32 read accesses which is overkill. Move schedule() from stm32_ospi_read_fifo() to stm32_ospi_tx_poll() and call schedule() only every 1MB chunk of data. Test performed by reading 64MB on sNOR on stm32mp257f-ev1 board: before after ratio Read : 10.6MB/s 14.2MB/s +34% Reviewed-by: Patrick Delaunay <[email protected]> Signed-off-by: Patrice Chotard <[email protected]>
2026-01-09Merge patch series "Enable / require DEVRES for devm_.alloc usage outside xPL"Tom Rini
Tom Rini <[email protected]> says: As seen by a number of patches fixing memory leaks, U-Boot has a problem with developer expectations around devm_kmalloc and friends. Namely, whereas in Linux these memory allocations will be freed automatically in most cases, in U-Boot this is only true if DEVRES is enabled. Now, intentionally, in xPL phases, we do not (and do not offer as an option) enabling DEVRES. However in full U-Boot this is left either to the user, or some drivers have select'd DEVRES on their own. This inconsistency is a problem. This series goes and deals with two small issues that were shown by having all drivers that use devm_.alloc to allocate memory also select DEVRES and then we make DEVRES no longer be a prompted option and instead select'd as needed. We do not make this unconditional as it would result in growing the resulting binary on the many platforms which have no users of the devm_.alloc family of functions. Link: https://lore.kernel.org/r/[email protected]
2026-01-09dm: core: Default to using DEVRES outside of xPLTom Rini
The devm alloc functions that we have may follow the Linux kernel model where allocations are (almost always) automatically free()'d. However, quite often we don't enable, in full U-Boot, the tracking and free()'ing functionality. This in turn leads to memory leaks because the driver author expects that since the functions have the same name as in the Linux Kernel they have the same behavior. In turn we then get functionally correct commits such as commit 00e1fed93c8c ("firmware: ti_sci: Fix memory leaks in devm_ti_sci_get_of_resource") that manually add these calls. Rather than manually tracking allocations and implementing free()s, rework things so that we follow expectations by enabling the DEVRES functionality (outside of xPL phases). This turns DEVRES from a prompted symbol to a symbol that must be select'd, and we now remove our non-managed alloc/free functions from outside of xPL builds. Reviewed-by: Michael Trimarchi <[email protected]> Signed-off-by: Tom Rini <[email protected]>
2026-01-06spi: Correct dependencies on AIROHA_SNFI_SPITom Rini
This driver is only possible to build on ARCH_AIROHA, so update the dependencies. Fixes: 6134e4efd432 ("spi: airoha: Add Airoha SPI NAND driver") Signed-off-by: Tom Rini <[email protected]>
2025-12-19xilinx: versal: Get rid of xlnx-versal-power.h from bindingsMichal Simek
Remove xlnx-versal-power.h dt binding header because they should be moved directly to folder where DTs are. In the Linux kernel this shift already started by moving xlnx-zynqmp-clk.h to arch/arm64/boot/dts/xilinx/ folder. U-Boot is using only one PD_DEV_OSPI constact which is moved to zynqmp_firmware.h header. But handling around it should be fixed anyway because no driver should be calling xilinx_pm_request() directly. Signed-off-by: Michal Simek <[email protected]> Link: https://lore.kernel.org/r/a0f0154ef89929517c3217efe025e8021a910b90.1764233963.git.michal.simek@amd.com
2025-12-19cadence_qspi: Update the delays for flash resetVenkatesh Yadav Abbarapu
Updating the delays for flash reset in the mini u-boot case. These experimental delay values by looking at different flash device vendors datasheets. Signed-off-by: Venkatesh Yadav Abbarapu <[email protected]> Signed-off-by: Michal Simek <[email protected]> Link: https://lore.kernel.org/r/3fd0641a164a4d628fdf28a94771829f3bf9cb0c.1764181308.git.michal.simek@amd.com
2025-12-19cadence_qspi: Remove duplicated returnMichal Simek
The commit 6d234a79e9eb ("cadence_qspi: Refactor the flash reset functionality") introduced two returns in cadence_spi_probe() that's why remove it. Fixes: 6d234a79e9eb ("cadence_qspi: Refactor the flash reset functionality") Signed-off-by: Michal Simek <[email protected]> Link: https://lore.kernel.org/r/5f6d6db9c301daf10ddb707a9031f1a467d6ebf1.1764180937.git.michal.simek@amd.com
2025-12-19spi: cadence: Remove cdns,is-dma DT propertyMichal Simek
cdns,is-dma is not documented property that's why setup CQSPI_DMA_MODE quirk to enable DMA mode based on compatible string. And also change compatible string for mini configurations also with recording compatible string in the driver (Compatible string is already the part of existing DT binding). Signed-off-by: Michal Simek <[email protected]> Link: https://lore.kernel.org/r/f109829793900e57558d98ed22caf80c1a72b232.1762787994.git.michal.simek@amd.com
2025-12-17spi: designware: Allow disabling designware driver in SPLRalph Siemsen
To reduce SPL size, make it possible to exclude designware driver, while keeping it enabled in the main u-boot. Signed-off-by: Ralph Siemsen <[email protected]> Reviewed-by: Sean Anderson <[email protected]>
2025-12-01spi: cadence: Add driver for xSPIBoon Khai Ng
This patch ports the Cadence xSPI controller driver from the Linux kernel. The controller supports three operating modes: 1. ACMD (Auto Command) mode - Includes PIO and CDMA submodes. - CDMA mode uses linked descriptors for high-performance, low-overhead operation. - PIO mode is suitable for simple, single-command transactions. 2. STIG (Software Triggered Instruction Generator) mode - Issues low-level 128-bit instructions to memory. - Uses the Slave DMA interface for data transfers. 3. Direct mode - Enables direct data access through the slave interface without commands. Currently, only the STIG work mode is enabled. Additional modes will be supported in future updates. At the same time, also enabling the kconfig option for xSPI driver. This driver has been ported and functionally verified on the Intel Simics platform. It is intended for evaluation and experimental use at this stage. Link: https://lore.kernel.org/all/[email protected]/ Signed-off-by: Boon Khai Ng <[email protected]> Reviewed-by: Tien Fong Chee <[email protected]>
2025-11-18spi: airoha: en7523: workaround flash damaging if UART_TXD was short to GNDMikhail Kshevetskiy
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. This patch detects booting in reserved mode, turn off DMA and print big fat warning. Signed-off-by: Mikhail Kshevetskiy <[email protected]>
2025-11-18spi: airoha: avoid usage of flash specific parametersMikhail Kshevetskiy
The spinand driver do 3 type of dirmap requests: * read/write whole flash page without oob (offs = 0, len = page_size) * read/write whole flash page including oob (offs = 0, len = page_size + oob_size) * read/write oob area only (offs = page_size, len = oob_size) The trick is: * read/write a single "sector" * set a custom sector size equal to offs + len. It's a bit safer to round up "sector size" value 64. * set the transfer length equal to custom sector size And it works! Thus we can find all data directly from dirmap request, so flash specific parameters is not needed anymore. Also * airoha_snand_nfi_config(), * airoha_snand_nfi_setup() functions becomes unnecessary. Signed-off-by: Mikhail Kshevetskiy <[email protected]>
2025-11-18spi: airoha: set custom sector size equal to flash page sizeMikhail Kshevetskiy
Set custom sector size equal to flash page size including oob. Thus we will always read a single sector. The maximum custom sector size is 8187, so all possible flash sector sizes are supported. This patch is a necessary step to avoid usage of flash specific parameters. Signed-off-by: Mikhail Kshevetskiy <[email protected]>
2025-11-18spi: airoha: reduce the number of modification of REG_SPI_NFI_CNFG and ↵Mikhail Kshevetskiy
REG_SPI_NFI_SECCUS_SIZE registers This just reduce the number of modification of REG_SPI_NFI_CNFG and REG_SPI_NFI_SECCUS_SIZE registers during dirmap operation. This patch is a necessary step to avoid usage of flash specific parameters. Signed-off-by: Mikhail Kshevetskiy <[email protected]>