linux/drivers/spi
Serge Semin a41b0ad07b
spi: dw: Set transfer handler before unmasking the IRQs
It turns out the IRQs most like can be unmasked before the controller is
enabled with no problematic consequences. The manual doesn't explicitly
state that, but the examples perform the controller initialization
procedure in that order. So the commit da8f58909e ("spi: dw: Unmask IRQs
after enabling the chip") hasn't been that required as I thought. But
anyway setting the IRQs up after the chip enabling still worth adding
since it has simplified the code a bit. The problem is that it has
introduced a potential bug. The transfer handler pointer is now
initialized after the IRQs are enabled. That may and eventually will cause
an invalid or uninitialized callback invocation. Fix that just by
performing the callback initialization before the IRQ unmask procedure.

Fixes: da8f58909e ("spi: dw: Unmask IRQs after enabling the chip")
Signed-off-by: Serge Semin <Sergey.Semin@baikalelectronics.ru>
Link: https://lore.kernel.org/r/20201117094054.4696-1-Sergey.Semin@baikalelectronics.ru
Signed-off-by: Mark Brown <broonie@kernel.org>
2020-11-17 17:08:39 +00:00
..
atmel-quadspi.c spi: atmel-quadspi: Use optimezed memcpy_fromio()/memcpy_toio() 2020-07-17 00:55:24 +01:00
internals.h
Kconfig ARM: SoC platform updates 2020-10-24 10:33:08 -07:00
Makefile ARM: SoC platform updates 2020-10-24 10:33:08 -07: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: ath79: use devm_platform_ioremap_resource() to simplify code 2019-09-04 17:15:29 +01:00
spi-atmel.c sound updates for 5.10 2020-10-15 11:07:44 -07:00
spi-au1550.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00
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: Fix use-after-free on unbind 2020-11-12 15:05:35 +00:00
spi-bcm2835aux.c spi: bcm2835aux: Restore err assignment in bcm2835aux_spi_probe 2020-11-13 18:22:24 +00:00
spi-bcm-qspi.c spi: bcm-qspi: Fix use-after-free on unbind 2020-11-12 15:05:37 +00:00
spi-bcm-qspi.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 459 2019-06-19 17:09:09 +02:00
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 treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 459 2019-06-19 17:09:09 +02:00
spi-butterfly.c spi: docs: convert to ReST and add it to the kABI bookset 2019-07-31 14:13:13 -06:00
spi-cadence-quadspi.c spi: cadence-quadspi: Fix error return code in cqspi_probe 2020-11-16 20:02:42 +00:00
spi-cadence.c spi: cadence: Add SPI transfer delays 2020-10-09 16:00:47 +01:00
spi-cavium-octeon.c spi: octeon: use devm_platform_ioremap_resource() to simplify code 2019-09-04 17:17:27 +01:00
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: use new spi_transfer_delay_exec helper where straightforward 2019-10-15 11:51:57 +01:00
spi-cavium.h
spi-clps711x.c spi: clps711x: use devm_platform_ioremap_resource() to simplify code 2019-09-04 17:17:36 +01:00
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 treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 372 2019-06-05 17:37:10 +02:00
spi-dw-bt1.c spi: dw: Add Baikal-T1 SPI Controller glue driver 2020-10-08 23:00:22 +01:00
spi-dw-core.c spi: dw: Set transfer handler before unmasking the IRQs 2020-11-17 17:08:39 +00:00
spi-dw-dma.c spi: dw: Add generic DW SSI status-check method 2020-10-08 23:00:18 +01:00
spi-dw-mmio.c spi: dw: Add DWC SSI capability 2020-10-08 23:00:06 +01:00
spi-dw-pci.c spi: dw: Add DWC SSI capability 2020-10-08 23:00:06 +01:00
spi-dw.h spi: dw: Introduce max mem-ops SPI bus frequency setting 2020-10-08 23:00:20 +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: spi-falcon: extend warning to delay as well 2019-10-15 11:46:57 +01:00
spi-fsi.c spi: fsi: Fix transfer returning without finalizing message 2020-11-11 12:34:29 +00:00
spi-fsl-cpm.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
spi-fsl-cpm.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
spi-fsl-dspi.c spi: fsl-dspi: fix wrong pointer in suspend/resume 2020-11-04 17:50:24 +00:00
spi-fsl-espi.c Merge remote-tracking branch 'spi/for-5.10' into spi-next 2020-10-09 16:01:22 +01:00
spi-fsl-lib.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
spi-fsl-lib.h spi: fsl: Convert to use CS GPIO descriptors 2019-08-28 14:10:41 +01:00
spi-fsl-lpspi.c spi: lpspi: Fix use-after-free on unbind 2020-11-12 18:45:56 +00: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 treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
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 Merge branch 'for-5.4' of https://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi into spi-5.5 2019-10-08 19:12:28 +01:00
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 Linux 5.10-rc1 2020-10-28 21:36:51 +00:00
spi-iproc-qspi.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 174 2019-05-30 11:26:41 -07:00
spi-jcore.c remove ioremap_nocache and devm_ioremap_nocache 2020-01-06 09:45:59 +01:00
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: docs: convert to ReST and add it to the kABI bookset 2019-07-31 14:13:13 -06:00
spi-loopback-test.c spi: spi-loopback-test: Fix out-of-bounds read 2020-09-02 19:38:24 +01:00
spi-lp8841-rtc.c spi: lp-8841: use devm_platform_ioremap_resource() to simplify code 2019-09-04 17:18:35 +01:00
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: use new spi_transfer_delay_exec helper where straightforward 2019-10-15 11:51:57 +01:00
spi-mpc52xx.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 428 2019-06-05 17:37:16 +02:00
spi-mpc512x-psc.c spi: use new spi_transfer_delay_exec helper where straightforward 2019-10-15 11:51:57 +01:00
spi-mt65xx.c spi: mediatek: add spi support for mt8192 IC 2020-07-22 01:56:00 +01:00
spi-mt7621.c spi: mt7621: use devm_platform_ioremap_resource() to simplify code 2019-09-04 17:19:34 +01:00
spi-mtk-nor.c spi: spi-mtk-nor: Add power management support 2020-10-06 15:53:47 +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-sqi: use devm_platform_ioremap_resource() to simplify code 2019-09-04 17:20:52 +01:00
spi-pic32.c spi: pic32: Retire dma_request_slave_channel_compat() 2019-11-22 19:53:41 +00:00
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 treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
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 treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
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-regs.h ARM: s3c24xx: move regs-spi.h into spi driver 2020-08-19 21:40:14 +02:00
spi-s3c24xx.c ARM: SoC platform updates 2020-10-24 10:33:08 -07:00
spi-s3c64xx.c spi: spi-s3c64xx: Turn on interrupts upon resume 2020-10-02 21:54:24 +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: use new spi_transfer_delay_exec helper where straightforward 2019-10-15 11:51:57 +01:00
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 treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
spi-sh.c spi: Remove dev_err() usage after platform_get_irq() 2019-08-02 12:15:43 +01:00
spi-sifive.c spi: sifive: disable clk when probe fails and remove 2019-11-04 13:26:11 +00:00
spi-sirf.c spi: sirf: Use dma_request_chan() instead dma_request_slave_channel() 2019-12-16 11:57:36 +00:00
spi-slave-mt27xx.c spi: mediatek: Use devm_platform_ioremap_resource() in mtk_spi_slave_probe() 2019-10-01 12:34:58 +01:00
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: st-ssc4: add missed pm_runtime_disable 2019-11-18 12:59:11 +00:00
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 Merge remote-tracking branch 'spi/for-5.10' into spi-next 2020-10-09 16:01:22 +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: spi-tegra20-sflash: remove redundant irqsave and irqrestore in hardIRQ 2020-10-01 23:45:27 +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 treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00
spi-ti-qspi.c SPI SUBSYSTEM: Replace HTTP links with HTTPS ones 2020-07-09 22:41:11 +01:00
spi-tle62x0.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
spi-topcliff-pch.c spi/topcliff-pch: drop double zeroing 2020-09-21 17:56:38 +01:00
spi-txx9.c spi: txx9: Convert to use GPIO descriptors 2019-10-30 14:14:32 +00:00
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: use new spi_transfer_delay_exec helper where straightforward 2019-10-15 11:51:57 +01:00
spi-xilinx.c spi: xilinx: Fix info message during probe 2020-09-17 19:56:01 +01:00
spi-xlp.c spi: xlp: use devm_platform_ioremap_resource() to simplify code 2019-09-04 17:23:28 +01:00
spi-xtensa-xtfpga.c spi: xtensa-xtfpga: Use devm_platform_ioremap_resource() in xtfpga_spi_probe() 2019-10-01 12:35:18 +01:00
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: Introduce device-managed SPI controller allocation 2020-11-12 15:05:34 +00:00
spidev.c spi: spidev: Remove redundant initialization of variable status 2020-09-09 16:27:46 +01:00