linux/drivers/spi
Dhruva Gole d403fb6e76
spi: cadence-quadspi: use STIG mode for small reads
Fix the issue where some flash chips like cypress S25HS256T return the
value of the same register over and over in DAC mode.

For example in the TI K3-AM62x Processors refer [0] Technical Reference
Manual there is a layer of digital logic in front of the QSPI/OSPI
Drive when used in DAC mode. This is part of the Flash Subsystem (FSS)
which provides access to external Flash devices.

The FSS0_0_SYSCONFIG Register (Offset = 4h) has a BIT Field for
OSPI_32B_DISABLE_MODE which has a Reset value = 0. This means, OSPI 32bit
mode enabled by default.

Thus, by default controller operates in 32 bit mode causing it to always
align all data to 4 bytes from a 4byte aligned address. In some flash
chips like cypress for example if we try to read some regs in DAC mode
then it keeps sending the value of the first register that was requested
and inorder to read the next reg, we have to stop and re-initiate a new
transaction.

This causes wrong register values to be read than what is desired when
registers are read in DAC mode. Hence if the data.nbytes is very less
then prefer STIG mode for such small reads.

[0] https://www.ti.com/lit/ug/spruiv7a/spruiv7a.pdf

Signed-off-by: Dhruva Gole <d-gole@ti.com>
Link: https://lore.kernel.org/r/20230125081023.1573712-5-d-gole@ti.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2023-02-14 13:25:26 +00:00
..
atmel-quadspi.c spi: atmel-quadspi: switch to use modern name 2023-01-23 13:31:05 +00:00
internals.h
Kconfig spi: bcmbca-hsspi: Add driver for newer HSSPI controller 2023-02-10 21:36:45 +00:00
Makefile spi: bcmbca-hsspi: Add driver for newer HSSPI controller 2023-02-10 21:36:45 +00:00
spi-altera-core.c spi: altera: switch to use modern name 2022-12-29 13:22:03 +00:00
spi-altera-dfl.c spi: spi-altera-dfl: switch to use modern name 2022-12-29 13:22:04 +00:00
spi-altera-platform.c spi: spi-altera-platform: switch to use modern name 2022-12-29 13:22:05 +00:00
spi-amd.c spi: amd: Fix SPI_SPD7 value 2022-11-04 12:25:03 +00:00
spi-ar934x.c spi: ar934x: switch to use modern name 2023-01-03 13:52:13 +00:00
spi-armada-3700.c spi: a3700: switch to use modern name 2023-01-03 13:52:13 +00:00
spi-aspeed-smc.c Linux 6.1-rc4 2022-11-25 19:16:05 +00:00
spi-at91-usart.c spi: at91-usart: switch to use modern name 2023-01-23 13:31:04 +00:00
spi-ath79.c spi: ath79: switch to use modern name 2023-01-03 13:52:12 +00:00
spi-atmel.c spi: atmel: switch to use modern name 2023-01-23 13:31:03 +00:00
spi-au1550.c spi: spi-au1550: replace ternary operator with min() 2022-05-16 17:57:01 +01:00
spi-axi-spi-engine.c
spi-bcm63xx-hsspi.c spi: bcm63xx-hsspi: bcmbca-hsspi: fix _be16 type usage 2023-02-13 12:45:01 +00:00
spi-bcm63xx.c spi: bcm63xx: Use devm_platform_get_and_ioremap_resource() 2022-10-17 12:49:49 +01:00
spi-bcm2835.c spi: Updates for v5.20 2022-08-02 10:55:04 -07:00
spi-bcm2835aux.c spi: bcm2835aux: Convert to use GPIO descriptors 2022-02-01 16:08:47 +00:00
spi-bcm-qspi.c spi: bcm-qspi: Make bcm_qspi_remove() return void 2022-10-18 19:16:53 +01:00
spi-bcm-qspi.h spi: bcm-qspi: Make bcm_qspi_remove() return void 2022-10-18 19:16:53 +01:00
spi-bcmbca-hsspi.c spi: bcm63xx-hsspi: bcmbca-hsspi: fix _be16 type usage 2023-02-13 12:45:01 +00:00
spi-bitbang-txrx.h spi: bitbang: Fix lsb-first Rx 2022-08-15 01:26:20 +01:00
spi-bitbang.c
spi-brcmstb-qspi.c spi: bcm-qspi: Make bcm_qspi_remove() return void 2022-10-18 19:16:53 +01:00
spi-butterfly.c
spi-cadence-quadspi.c spi: cadence-quadspi: use STIG mode for small reads 2023-02-14 13:25:26 +00:00
spi-cadence-xspi.c spi: cadence: Fix busy cycles calculation 2022-12-26 23:23:21 +00:00
spi-cadence.c spi: spi-cadence: Fix SPI NO Slave Select macro definition 2022-07-20 18:45:21 +01:00
spi-cavium-octeon.c
spi-cavium-thunderx.c
spi-cavium.c
spi-cavium.h
spi-clps711x.c spi: clps711x: Use syscon_regmap_lookup_by_phandle 2022-04-25 14:01:09 +01:00
spi-coldfire-qspi.c
spi-davinci.c
spi-dln2.c
spi-dw-bt1.c spi: dw: Fix PM disable depth imbalance in dw_spi_bt1_probe 2022-09-26 16:10:36 +01:00
spi-dw-core.c spi: dw: Fix wrong FIFO level setting for long xfers 2023-01-27 16:38:04 +00:00
spi-dw-dma.c spi: dw-dma: decrease reference count in dw_spi_dma_init_mfld() 2022-11-16 13:43:03 +00:00
spi-dw-mmio.c spi: dw: Add support for Intel Thunder Bay SPI controller 2022-07-13 13:32:32 +01:00
spi-dw-pci.c
spi-dw.h spi: dw: Add support for Intel Thunder Bay SPI controller 2022-07-13 13:32:32 +01:00
spi-ep93xx.c
spi-falcon.c
spi-fsi.c spi: fsi: Increase timeout and ensure status is checked 2022-06-23 15:48:21 +01:00
spi-fsl-cpm.c spi: fsl-cpm: substitute empty_zero_page with helper ZERO_PAGE(0) 2022-10-19 13:05:37 +01:00
spi-fsl-cpm.h
spi-fsl-dspi.c spi: fsl-dspi: add cs-gpios support 2022-11-16 14:46:07 +00:00
spi-fsl-espi.c
spi-fsl-lib.c
spi-fsl-lib.h
spi-fsl-lpspi.c spi: spi-fsl-lpspi: support multiple cs for lpspi 2022-12-07 14:19:20 +00:00
spi-fsl-qspi.c spi: spi-fsl-qspi: Use devm_platform_ioremap_resource_byname() 2022-09-26 16:10:41 +01:00
spi-fsl-spi.c spi: fsl_spi: Don't change speed while chipselect is active 2022-12-14 14:24:51 +00:00
spi-fsl-spi.h
spi-geni-qcom.c spi: spi-geni-qcom: Add support for SE DMA mode 2022-12-25 23:34:34 +00:00
spi-gpio.c spi: spi-gpio: Don't set MOSI as an input if not 3WIRE mode 2022-12-08 11:46:41 +00:00
spi-gxp.c spi: spi-gxp: fix typo in SPDX identifier line 2022-10-04 12:45:07 +01:00
spi-hisi-kunpeng.c
spi-hisi-sfc-v3xx.c spi: hisi-sfc-v3xx: Fix a typo ("duall") 2022-11-03 19:34:33 +00:00
spi-img-spfi.c spi: img-spfi: Use devm_platform_get_and_ioremap_resource() 2022-10-19 15:57:01 +01:00
spi-imx.c spi: Updates for v6.2 2022-12-13 12:54:31 -08:00
spi-ingenic.c spi: ingenic: Add support for new Ingenic SoCs. 2022-04-25 14:00:51 +01:00
spi-intel-pci.c spi: intel: Add support for controllers 2023-02-02 11:42:30 +00:00
spi-intel-platform.c mtd: spi-nor: intel-spi: Convert to SPI MEM 2022-02-14 12:53:09 +00:00
spi-intel.c spi: intel: Fix device private data and PR_NUM for Broxton controllers 2023-02-02 11:42:29 +00:00
spi-intel.h mtd: spi-nor: intel-spi: Convert to SPI MEM 2022-02-14 12:53:09 +00:00
spi-iproc-qspi.c spi: bcm-qspi: Make bcm_qspi_remove() return void 2022-10-18 19:16:53 +01:00
spi-jcore.c
spi-lantiq-ssc.c spi: Use of_device_get_match_data() 2022-02-21 13:25:19 +00:00
spi-lm70llp.c
spi-loopback-test.c spi: spi-loopback-test: Allow skipping delays 2023-01-03 15:25:02 +00:00
spi-lp8841-rtc.c
spi-mem.c spi: spi-mem: Allow controller supporting mem_ops without exec_op 2023-02-10 21:36:43 +00:00
spi-meson-spicc.c spi: Updates for v6.2 2022-12-13 12:54:31 -08:00
spi-meson-spifc.c
spi-microchip-core-qspi.c spi: microchip-core-qspi: Add support for microchip fpga qspi controllers 2022-08-15 12:17:38 +01:00
spi-microchip-core.c spi: microchip-core: Remove the unused function mchp_corespi_enable() 2022-10-17 12:49:47 +01:00
spi-mpc52xx-psc.c spi: mpc52xx-psc: Switch to using core message queue 2022-06-27 13:24:36 +01:00
spi-mpc52xx.c spi: mpc52xx: Replace NO_IRQ by 0 2022-10-10 13:01:20 +01:00
spi-mpc512x-psc.c spi: mpc512x-psc: Fix compile errors 2022-02-02 16:09:29 +00:00
spi-mt65xx.c spi: mediatek: Enable irq before the spi registration 2022-12-26 23:23:21 +00:00
spi-mt7621.c spi: mt7621: Remove 'clk' from 'struct mt7621_spi' 2022-08-29 17:51:39 +01:00
spi-mtk-nor.c spi: spi-mtk-nor: Add recovery mechanism for dma read timeout 2022-12-07 14:19:22 +00:00
spi-mtk-snfi.c spi: mtk-snfi: Add snfi sample delay and read latency adjustment 2023-02-09 17:07:20 +00:00
spi-mux.c spi: mux: Fix mux interaction with fast path optimisations 2022-09-02 13:27:13 +01:00
spi-mxic.c spi: mxic: Use devm_platform_ioremap_resource_byname() 2022-10-31 13:20:25 +00:00
spi-mxs.c spi: mxs: using pm_runtime_resume_and_get instead of pm_runtime_get_sync 2022-04-25 14:00:59 +01:00
spi-npcm-fiu.c spi: npcm-fiu: Use devm_platform_ioremap_resource_byname() 2022-10-31 13:20:24 +00:00
spi-npcm-pspi.c spi: npcm-pspi: Add NPCM845 peripheral SPI support 2022-08-15 12:17:29 +01:00
spi-nxp-fspi.c spi: nxp-fspi: make const array ls1028a_soc_attr static 2022-11-02 16:44:15 +00:00
spi-oc-tiny.c
spi-omap2-mcspi.c spi: omap2-mcspi: Fix probe so driver works again 2022-09-21 10:28:20 +01:00
spi-omap-100k.c spi/omap100k:Fix PM disable depth imbalance in omap1_spi100k_probe 2022-09-26 16:10:37 +01:00
spi-omap-uwire.c ARM: omap1: move perseus spi pinconf to board file 2022-04-21 15:01:08 +02:00
spi-orion.c
spi-pci1xxxx.c spi: microchip: pci1xxxx: Add suspend and resume support for PCI1XXXX SPI driver 2022-11-29 16:59:11 +00:00
spi-pic32-sqi.c
spi-pic32.c spi: pic32: Convert to use GPIO descriptors 2022-01-31 15:17:30 +00:00
spi-pl022.c spi: pl022: Only use DT-specified DMA channels 2023-01-03 13:42:54 +00:00
spi-ppc4xx.c
spi-pxa2xx-dma.c
spi-pxa2xx-pci.c spi: pxa2xx-pci: Constify struct pxa_spi_info variables 2022-02-28 12:10:27 +00:00
spi-pxa2xx.c spi: pxa2xx: Move OF and ACPI ID tables closer to their user 2022-10-24 13:30:18 +01:00
spi-pxa2xx.h
spi-qcom-qspi.c
spi-qup.c spi: qup: support using GPIO as chip select line 2022-10-17 12:46:59 +01:00
spi-rb4xx.c
spi-realtek-rtl.c
spi-rockchip-sfc.c spi: rockchip-sfc: fix platform_get_irq.cocci warning 2022-03-10 12:17:56 +00:00
spi-rockchip.c spi: rockchip: Unmask IRQ at the final to avoid preemption 2022-06-20 11:35:43 +01:00
spi-rpc-if.c spi: rpc-if: Fix RPM imbalance in probe error path 2022-04-04 08:38:59 +01:00
spi-rspi.c spi: spi-rspi: Fix PIO fallback on RZ platforms 2022-07-21 17:21:07 +01:00
spi-s3c24xx-regs.h
spi-s3c24xx.c spi: s3c24xx: Switch to use devm_spi_alloc_master() 2022-09-23 18:21:50 +01:00
spi-s3c64xx.c spi: s3c64xx: Fix large transfers with DMA 2022-09-28 12:54:07 +01:00
spi-sc18is602.c spi: sc18is602: Convert to i2c's .probe_new() 2022-11-23 17:26:25 +00:00
spi-sh-hspi.c
spi-sh-msiof.c spi: sh-msiof: add generic Gen4 binding 2022-08-29 12:41:36 +01:00
spi-sh-sci.c
spi-sh.c spi: sh: Switch to using core message queue 2022-06-27 13:24:35 +01:00
spi-sifive.c spi: sifive: add PM callbacks to support suspend/resume 2022-06-10 13:32:24 +01:00
spi-slave-mt27xx.c
spi-slave-system-control.c spi: make remove callback a void function 2022-02-09 13:00:45 +00:00
spi-slave-time.c spi: make remove callback a void function 2022-02-09 13:00:45 +00:00
spi-sn-f-ospi.c spi: Add Socionext F_OSPI SPI flash controller driver 2022-11-24 11:05:07 +00:00
spi-sprd-adi.c
spi-sprd.c spi: spi-sprd: using pm_runtime_resume_and_get instead of pm_runtime_get_sync 2022-04-25 14:00:57 +01:00
spi-st-ssc4.c spi: st-ssc4: Covert to use GPIO descriptors 2022-02-01 16:08:45 +00:00
spi-stm32-qspi.c spi: stm32-qspi: Refactor dual flash mode enable check in ->setup() 2022-08-31 12:13:11 +01:00
spi-stm32.c spi: stm32: fix stm32_spi_prepare_mbr() that halves spi clk for every run 2022-11-03 13:25:40 +00:00
spi-sun4i.c spi: sun4i: fix typos in comments 2022-03-15 12:03:58 +00:00
spi-sun6i.c
spi-sunplus-sp7021.c spi: remove spin_lock_irq and variable in the irq procress 2022-04-19 13:13:42 +01:00
spi-synquacer.c spi: synquacer: Add missing clk_disable_unprepare() 2022-06-27 23:26:53 +01:00
spi-tegra20-sflash.c spi: spi-tegra20-sflash: using pm_runtime_resume_and_get instead of pm_runtime_get_sync 2022-04-25 14:01:03 +01:00
spi-tegra20-slink.c spi: tegra20-slink: fix UAF in tegra_slink_remove() 2022-07-13 13:49:03 +01:00
spi-tegra114.c spi: spi-tegra114: using pm_runtime_resume_and_get instead of pm_runtime_get_sync 2022-04-19 13:13:44 +01:00
spi-tegra210-quad.c spi: tegra210-quad: Fix duplicate resource error 2022-11-17 10:53:04 +00:00
spi-test.h
spi-ti-qspi.c spi: spi-ti-qspi: Support per-transfer and per-slave speed_hz settings 2022-06-06 12:41:36 +01:00
spi-tle62x0.c spi: make remove callback a void function 2022-02-09 13:00:45 +00:00
spi-topcliff-pch.c spi: topcliff-pch: Use core message validation 2022-06-20 12:43:36 +01:00
spi-uniphier.c spi: uniphier: fix reference count leak in uniphier_spi_probe() 2022-01-26 15:52:05 +00:00
spi-wpcm-fiu.c spi: wpcm-fiu: Add direct map support 2022-11-25 13:30:16 +00:00
spi-xcomm.c spi: xcomm: Convert to i2c's .probe_new() 2022-11-23 17:26:27 +00:00
spi-xilinx.c spi: xilinx: Switch to use devm_spi_alloc_master() 2022-09-23 18:21:49 +01:00
spi-xlp.c
spi-xtensa-xtfpga.c spi: xtensa-xtfpga: Switch to use devm_spi_alloc_master() 2022-09-22 14:39:50 +01:00
spi-zynq-qspi.c spi: spi-zynq-qspi: Fix a NULL pointer dereference in zynq_qspi_exec_mem_op() 2022-02-08 13:37:50 +00:00
spi-zynqmp-gqspi.c spi: spi-zynqmp-gqspi: Add tap delay support for GQSPI controller on Versal platform 2022-10-19 14:34:40 +01:00
spi.c spi: spi-mem: Allow controller supporting mem_ops without exec_op 2023-02-10 21:36:43 +00:00
spidev.c spi: spidev: Fix double unlock in spidev_sync() 2023-02-06 14:51:33 +00:00