linux/drivers/spi
Serge Semin 7e31cea7d1
spi: dw: Use relaxed IO-methods to access FIFOs
In accordance with [1] the relaxed methods are guaranteed to be ordered
with respect to other accesses from the same CPU thread to the same
peripheral.  This is what we need during the data read/write from/to the
controller FIFOs being executed within a single IRQ handler or a kernel
task.

Such optimization shall significantly speed the data reader and writer up.
For instance, the relaxed IO-accessors utilization on Baikal-T1 lets the
driver to support the SPI memory operations with bus frequency three-fold
faster than if normal IO-accessors would be used.

[1] "LINUX KERNEL MEMORY BARRIERS", Documentation/memory-barriers.txt,
    Section "KERNEL I/O BARRIER EFFECTS"

Signed-off-by: Serge Semin <Sergey.Semin@baikalelectronics.ru>
Link: https://lore.kernel.org/r/20200920112914.26501-8-Sergey.Semin@baikalelectronics.ru
Signed-off-by: Mark Brown <broonie@kernel.org>
2020-09-29 17:22:24 +01:00
..
atmel-quadspi.c spi: atmel-quadspi: Use optimezed memcpy_fromio()/memcpy_toio() 2020-07-17 00:55:24 +01:00
internals.h
Kconfig spi: qup: Allow for compile-testing on !ARM 2020-09-07 19:04:23 +01:00
Makefile Merge series "mtd: spi-nor: Move cadence-qaudspi to spi-mem framework" from Vignesh Raghavendra <vigneshr@ti.com>: 2020-06-19 14:26:55 +01:00
spi-altera.c spi: altera: fix module autoload 2020-06-24 16:37:47 +01:00
spi-amd.c spi: spi-amd: Do not define 'struct acpi_device_id' when !CONFIG_ACPI 2020-07-17 16:38:56 +01:00
spi-ar934x.c spi: add driver for ar934x spi controller 2020-02-11 11:37:30 +00:00
spi-armada-3700.c spi: a3700: Remove a useless memset 2020-08-18 17:52:37 +01:00
spi-at91-usart.c spi: spi-at91-usart: Remove unused OF table 'struct of_device_id' 2020-07-17 16:38:54 +01:00
spi-ath79.c
spi-atmel.c spi: atmel: Simplify with dev_err_probe() 2020-09-08 18:19:24 +01:00
spi-au1550.c
spi-axi-spi-engine.c spi: spi-axi-spi-engine: Access register after clock initialization 2020-04-09 18:46:53 +01:00
spi-bcm63xx-hsspi.c spi: bcm63xx-hsspi: add reset support 2020-06-17 14:29:58 +01:00
spi-bcm63xx.c spi: bcm63xx-spi: add reset support 2020-06-17 14:29:58 +01:00
spi-bcm2835.c spi: bcm2835: Make polling_limit_us static 2020-09-14 15:50:15 +01:00
spi-bcm2835aux.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
spi-bcm-qspi.c spi: bcm-qspi: Clean up 7425, 7429, and 7435 settings 2020-09-14 15:50:08 +01:00
spi-bcm-qspi.h
spi-bitbang-txrx.h
spi-bitbang.c spi: spi-bitbang: Demote obvious misuse of kerneldoc to standard comment blocks 2020-07-17 16:38:45 +01:00
spi-brcmstb-qspi.c
spi-butterfly.c
spi-cadence-quadspi.c spi: cadence-quadspi: Simplify with dev_err_probe() 2020-09-08 18:19:26 +01:00
spi-cadence.c spi: spi-cadence: add support for chip select high 2020-07-22 01:55:51 +01:00
spi-cavium-octeon.c
spi-cavium-thunderx.c spi: spi-cavium-thunderx: flag controller as half duplex 2020-06-16 00:38:39 +01:00
spi-cavium.c
spi-cavium.h
spi-clps711x.c
spi-coldfire-qspi.c spi: coldfire-qspi: Use clk_prepare_enable and clk_disable_unprepare 2020-07-17 00:55:26 +01:00
spi-davinci.c Remove uninitialized_var() macro for v5.9-rc1 2020-08-04 13:49:43 -07:00
spi-dln2.c
spi-dw-core.c spi: dw: Disable all IRQs when controller is unused 2020-09-29 17:22:23 +01:00
spi-dw-dma.c spi: dw-dma: Fix Tx DMA channel working too fast 2020-07-21 23:43:24 +01:00
spi-dw-mmio.c spi: dw: Add Microchip Sparx5 support 2020-09-08 16:15:37 +01:00
spi-dw-pci.c spi: dw-pci: free previously allocated IRQs if desc->setup() fails 2020-09-17 19:56:04 +01:00
spi-dw.h spi: dw: Use relaxed IO-methods to access FIFOs 2020-09-29 17:22:24 +01:00
spi-efm32.c spi: efm32: Convert to use GPIO descriptors 2020-03-27 15:52:23 +00:00
spi-ep93xx.c spi: spi-ep93xx: Fix API slippage 2020-07-17 16:38:47 +01:00
spi-falcon.c
spi-fsi.c spi: fsi: Check mux status before transfers 2020-09-17 19:31:43 +01:00
spi-fsl-cpm.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
spi-fsl-cpm.h
spi-fsl-dspi.c spi: spi-fsl-dspi: use XSPI mode instead of DMA for DPAA2 SoCs 2020-09-14 15:50:14 +01:00
spi-fsl-espi.c spi: spi-fsl-espi: Remove use of %p 2020-08-25 22:46:50 +01:00
spi-fsl-lib.c
spi-fsl-lib.h
spi-fsl-lpspi.c spi: lpspi: Remove CONFIG_PM_SLEEP ifdefery 2020-08-18 17:52:36 +01:00
spi-fsl-qspi.c spi: Fix SPI NOR and SPI NAND acronyms 2020-07-17 00:55:25 +01:00
spi-fsl-spi.c spi: fsl: add missing __iomem annotation 2020-07-01 23:21:26 +01:00
spi-fsl-spi.h
spi-geni-qcom.c spi: spi-geni-qcom: Don't wait to start 1st transfer if transmitting 2020-09-14 15:50:16 +01:00
spi-gpio.c
spi-hisi-sfc-v3xx.c spi: hisi-sfc-v3xx: fix spelling mistake "occured" -> "occurred" 2020-09-28 20:33:56 +01:00
spi-img-spfi.c spi: img-spfi: Convert to use GPIO descriptors 2020-07-01 23:21:29 +01:00
spi-imx.c spi: spi-imx: spi_imx_transfer(): add support for effective_speed_hz 2020-09-23 19:59:32 +01:00
spi-iproc-qspi.c
spi-jcore.c
spi-lantiq-ssc.c spi: lantiq: remove redundant irqsave and irqrestore in hardIRQ 2020-09-17 19:56:02 +01:00
spi-lm70llp.c
spi-loopback-test.c spi: spi-loopback-test: Fix formatting issues in function header blocks 2020-07-17 16:38:44 +01:00
spi-lp8841-rtc.c
spi-mem.c spi: spi-mem: allow specifying a command's extension 2020-07-14 17:29:38 +01:00
spi-meson-spicc.c spi: spi-meson-spicc: Remove set but never used variable 'data' from meson_spicc_reset_fifo() 2020-07-17 16:38:48 +01:00
spi-meson-spifc.c spi: spi-meson-spifc: Fix misdocumenting of 'dev' in 'struct meson_spifc' 2020-07-17 16:38:48 +01:00
spi-mpc52xx-psc.c
spi-mpc52xx.c
spi-mpc512x-psc.c
spi-mt65xx.c spi: mediatek: add spi support for mt8192 IC 2020-07-22 01:56:00 +01:00
spi-mt7621.c
spi-mtk-nor.c spi: spi-mtk-nor: fix timeout calculation overflow 2020-09-25 21:40:20 +01:00
spi-mux.c spi: spi-mux: Simplify with dev_err_probe() 2020-09-08 18:19:27 +01:00
spi-mxic.c spi: spi-mem: allow specifying a command's extension 2020-07-14 17:29:38 +01:00
spi-mxs.c spi: mxs: Drop GPIO includes 2020-03-17 13:20:16 +00:00
spi-npcm-fiu.c spi: npcm-fiu: simplify the return expression of npcm_fiu_probe() 2020-09-22 01:04:19 +01:00
spi-npcm-pspi.c spi: npcm-pspi: Convert to use GPIO descriptors 2020-07-01 23:21:28 +01:00
spi-nxp-fspi.c spi: spi-nxp-fspi: Add ACPI support 2020-09-17 19:56:03 +01:00
spi-oc-tiny.c SPI SUBSYSTEM: Replace HTTP links with HTTPS ones 2020-07-09 22:41:11 +01:00
spi-omap2-mcspi.c spi: omap2-mcspi: Improve performance waiting for CHSTAT 2020-09-22 01:04:20 +01:00
spi-omap-100k.c spi: omap-100k: Drop include 2020-07-14 17:38:46 +01:00
spi-omap-uwire.c spi: omap-uwire: Use clk_prepare_enable and clk_disable_unprepare 2020-07-15 15:58:33 +01:00
spi-orion.c spi: Fix SPI NOR and SPI NAND acronyms 2020-07-17 00:55:25 +01:00
spi-pic32-sqi.c
spi-pic32.c
spi-pl022.c spi: spi-pl022: Provide missing struct attribute/function param docs 2020-07-17 16:38:50 +01:00
spi-ppc4xx.c spi: ppc4xx: Convert to use GPIO descriptors 2020-07-22 01:55:52 +01:00
spi-pxa2xx-dma.c
spi-pxa2xx-pci.c
spi-pxa2xx.c spi: spi-pxa2xx: Do not define 'struct acpi_device_id' when !CONFIG_ACPI 2020-07-17 16:38:55 +01:00
spi-pxa2xx.h
spi-qcom-qspi.c spi: spi-qcom-qspi: replace spin_lock_irqsave by spin_lock in hard IRQ 2020-09-14 15:50:10 +01:00
spi-qup.c spi: qup: remove redundant assignment to variable ret 2020-09-14 15:50:04 +01:00
spi-rb4xx.c spi: rb4xx: update driver to be device tree aware 2020-05-22 14:13:17 +01:00
spi-rockchip.c spi: rockchip: Fix error in SPI slave pio read 2020-07-28 17:29:31 +01:00
spi-rpc-if.c spi: add Renesas RPC-IF driver 2020-06-16 00:38:38 +01:00
spi-rspi.c spi: rspi: Fill in controller speed limits 2020-08-20 22:38:17 +01:00
spi-s3c24xx-fiq.h
spi-s3c24xx-fiq.S
spi-s3c24xx.c spi: s3c24xx: correct kerneldoc comment 2020-08-18 17:52:39 +01:00
spi-s3c64xx.c spi: spi-s3c64xx: Add missing entries for structs 's3c64xx_spi_dma_data' and 's3c64xx_spi_dma_data' 2020-07-17 16:38:49 +01:00
spi-sc18is602.c spi: sc18is602: Fix a typo in MODULE_DESCRIPTION 2020-04-14 12:39:37 +01:00
spi-sh-hspi.c
spi-sh-msiof.c spi: spi-sh-msiof: Fix checkpatch error Complex macros should use () 2020-04-14 18:36:34 +01:00
spi-sh-sci.c
spi-sh.c
spi-sifive.c
spi-sirf.c
spi-slave-mt27xx.c
spi-slave-system-control.c
spi-slave-time.c
spi-sprd-adi.c spi: sprd: Simplify with dev_err_probe() 2020-09-14 15:50:17 +01:00
spi-sprd.c spi: sprd: Simplify with dev_err_probe() 2020-09-14 15:50:17 +01:00
spi-st-ssc4.c
spi-stm32-qspi.c spi: stm32-qspi: Fix error path in case of -EPROBE_DEFER 2020-06-17 13:26:41 +01:00
spi-stm32.c spi: stm32: Simplify with dev_err_probe() 2020-09-08 18:19:29 +01:00
spi-sun4i.c spi: sun4i: update max transfer size reported 2020-07-27 14:55:21 +01:00
spi-sun6i.c spi: spi-sun6i: sun6i_spi_transfer_one(): enable RF_RDY interrupt only if needed 2020-07-07 10:41:41 +01:00
spi-synquacer.c spi: synquacer: Simplify with dev_err_probe() 2020-09-08 18:19:29 +01:00
spi-tegra20-sflash.c spi: tegra20-sflash: Fix runtime PM imbalance on error 2020-05-28 14:01:16 +01:00
spi-tegra20-slink.c spi: tegra20: Simplify with dev_err_probe() 2020-09-08 18:19:31 +01:00
spi-tegra114.c spi: tegra114: Simplify with dev_err_probe() 2020-09-08 18:19:30 +01:00
spi-test.h
spi-ti-qspi.c SPI SUBSYSTEM: Replace HTTP links with HTTPS ones 2020-07-09 22:41:11 +01:00
spi-tle62x0.c
spi-topcliff-pch.c spi/topcliff-pch: drop double zeroing 2020-09-21 17:56:38 +01:00
spi-txx9.c
spi-uniphier.c spi: uniphier: Use devm_platform_get_and_ioremap_resource() to simplify code 2020-05-11 18:17:52 +01:00
spi-xcomm.c
spi-xilinx.c spi: xilinx: Fix info message during probe 2020-09-17 19:56:01 +01:00
spi-xlp.c
spi-xtensa-xtfpga.c
spi-zynq-qspi.c spi: spi-zynq-qspi: Add description for 2 missing attributes/parameters 2020-07-17 16:38:51 +01:00
spi-zynqmp-gqspi.c spi: spi-zynqmp-gqspi: Fix incorrect indentation 2020-09-24 12:59:29 +01:00
spi.c spi: Fixes for v5.9 2020-08-18 14:27:12 -07:00
spidev.c spi: spidev: Remove redundant initialization of variable status 2020-09-09 16:27:46 +01:00