linux-stable/drivers/spi
Joy Chakraborty 95a3b64443 spi: dw: Round of n_bytes to power of 2
[ Upstream commit 9f34baf67e ]

n_bytes variable in the driver represents the number of bytes per word
that needs to be sent/copied to fifo. Bits/word can be between 8 and 32
bits from the client but in memory they are a power of 2, same is mentioned
in spi.h header:
"
 * @bits_per_word: Data transfers involve one or more words; word sizes
 *      like eight or 12 bits are common.  In-memory wordsizes are
 *      powers of two bytes (e.g. 20 bit samples use 32 bits).
 *      This may be changed by the device's driver, or left at the
 *      default (0) indicating protocol words are eight bit bytes.
 *      The spi_transfer.bits_per_word can override this for each transfer.
"

Hence, round of n_bytes to a power of 2 to avoid values like 3 which
would generate unalligned/odd accesses to memory/fifo.

* tested on Baikal-T1 based system with DW SPI-looped back interface
transferring a chunk of data with DFS:8,12,16.

Fixes: a51acc2400 ("spi: dw: Add support for 32-bits max xfer size")
Suggested-by: Andy Shevchenko <andriy.shevchenko@intel.com
Signed-off-by: Joy Chakraborty <joychakr@google.com
Reviewed-by: Serge Semin <fancer.lancer@gmail.com
Tested-by: Serge Semin <fancer.lancer@gmail.com
Link: https://lore.kernel.org/r/20230512104746.1797865-4-joychakr@google.com
Signed-off-by: Mark Brown <broonie@kernel.org
Signed-off-by: Sasha Levin <sashal@kernel.org>
2023-07-11 19:39:27 +02:00
..
Kconfig spi: Updates for v6.3 2023-02-22 10:53:37 -08:00
Makefile spi: Updates for v6.3 2023-02-22 10:53:37 -08:00
atmel-quadspi.c spi: atmel-quadspi: Free resources even if runtime resume failed in .remove() 2023-05-11 23:17:24 +09:00
internals.h
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-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-bcm63xx-hsspi.c spi: bcm63xx-hsspi: fix error code in probe 2023-02-15 22:29:51 +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-bcmbca-hsspi.c spi: bcmbca-hsspi: Fix error code in probe() function 2023-02-15 22:29:50 +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: Add missing check for dma_set_mask 2023-06-21 16:02:13 +02: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: Round of n_bytes to power of 2 2023-07-11 19:39:27 +02: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: Use 16 bit mode for large transfers with even size 2023-05-17 14:02:08 +02:00
spi-fsl-cpm.h
spi-fsl-dspi.c spi: fsl-dspi: avoid SCK glitches with continuous transfers 2023-06-21 16:02:13 +02:00
spi-fsl-espi.c
spi-fsl-lib.c
spi-fsl-lib.h
spi-fsl-lpspi.c spi: lpspi: disable lpspi module irq in DMA mode 2023-06-28 11:14:20 +02: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-cpm: Use 16 bit mode for large transfers with even size 2023-05-17 14:02:08 +02:00
spi-fsl-spi.h
spi-geni-qcom.c spi: spi-geni-qcom: Correct CS_TOGGLE bit in SPI_TRANS_CFG 2023-07-11 19:39:26 +02: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: spi-imx: fix MX51_ECSPI_* macros when cs > 3 2023-05-24 17:30:09 +01: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-pci: Add support for Meteor Lake-S SPI serial flash 2023-05-24 17:30:08 +01: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 Merge remote-tracking branch 'spi/for-6.3' into spi-next 2023-02-17 22:05:55 +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: mpc5xxx-psc: Remove unused platform_data 2023-05-11 23:17:25 +09:00
spi-mpc52xx.c spi: mpc52xx: Replace NO_IRQ by 0 2022-10-10 13:01:20 +01:00
spi-mpc512x-psc.c spi: mpc5xxx-psc: Remove unused platform_data 2023-05-11 23:17:25 +09:00
spi-mt65xx.c spi: mt65xx: make sure operations completed before unloading 2023-06-14 11:16:43 +02: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-omap-uwire.c ARM: omap1: remove dead code 2023-01-12 10:53:11 +01:00
spi-omap2-mcspi.c spi: omap2-mcspi: Fix probe so driver works again 2022-09-21 10:28:20 +01:00
spi-orion.c
spi-pci1xxxx.c spi: mchp-pci1xxxx: Fix improper implementation of disabling chip select lines 2023-05-11 23:17:25 +09:00
spi-pic32-sqi.c
spi-pic32.c
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: Request DMA before enabling clocks 2023-06-14 11:16:43 +02:00
spi-rb4xx.c
spi-realtek-rtl.c
spi-rockchip-sfc.c spi: spi-rockchip: Fix missing unwind goto in rockchip_sfc_probe() 2023-04-19 13:42:59 +01: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 memory: renesas-rpc-if: Remove Runtime PM wrappers 2023-01-23 11:48:00 +01:00
spi-rspi.c spi: spi-rspi: Fix PIO fallback on RZ platforms 2022-07-21 17:21:07 +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: f_ospi: Add missing spi_mem_default_supports_op() helper 2023-05-11 23:17:24 +09: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-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: Fix timeout handling in synquacer_spi_transfer_one() 2023-02-15 16:07:53 +00: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 iterator outside loop 2023-02-28 13:59:58 +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-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: add force_irq for QSPI mode 2023-02-14 18:04:59 +00: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-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 Devicetree fixes for v6.2, part 3: 2023-04-13 15:21:56 -07:00
spidev.c spi: spidev: Fix double unlock in spidev_sync() 2023-02-06 14:51:33 +00:00