- 28 11月, 2018 2 次提交
-
-
由 Lukas Wunner 提交于
If submission of a DMA TX transfer succeeds but submission of the corresponding RX transfer does not, the BCM2835 SPI driver terminates the TX transfer but neglects to reset the dma_pending flag to false. Thus, if the next transfer uses interrupt mode (because it is shorter than BCM2835_SPI_DMA_MIN_LENGTH) and runs into a timeout, dmaengine_terminate_all() will be called both for TX (once more) and for RX (which was never started in the first place). Fix it. Signed-off-by: NLukas Wunner <lukas@wunner.de> Fixes: 3ecd37ed ("spi: bcm2835: enable dma modes for transfers meeting certain conditions") Cc: stable@vger.kernel.org # v4.2+ Cc: Mathias Duckeck <m.duckeck@kunbus.de> Cc: Frank Pavlic <f.pavlic@kunbus.de> Cc: Martin Sperl <kernel@martin.sperl.org> Cc: Noralf Trønnes <noralf@tronnes.org> Signed-off-by: NMark Brown <broonie@kernel.org>
-
由 Lukas Wunner 提交于
The IRQ handler bcm2835_spi_interrupt() first reads as much as possible from the RX FIFO, then writes as much as possible to the TX FIFO. Afterwards it decides whether the transfer is finished by checking if the TX FIFO is empty. If very few bytes were written to the TX FIFO, they may already have been transmitted by the time the FIFO's emptiness is checked. As a result, the transfer will be declared finished and the chip will be reset without reading the corresponding received bytes from the RX FIFO. The odds of this happening increase with a high clock frequency (such that the TX FIFO drains quickly) and either passing "threadirqs" on the command line or enabling CONFIG_PREEMPT_RT_BASE (such that the IRQ handler may be preempted between filling the TX FIFO and checking its emptiness). Fix by instead checking whether rx_len has reached zero, which means that the transfer has been received in full. This is also more efficient as it avoids one bus read access per interrupt. Note that bcm2835_spi_transfer_one_poll() likewise uses rx_len to determine whether the transfer has finished. Signed-off-by: NLukas Wunner <lukas@wunner.de> Fixes: e34ff011 ("spi: bcm2835: move to the transfer_one driver model") Cc: stable@vger.kernel.org # v4.1+ Cc: Mathias Duckeck <m.duckeck@kunbus.de> Cc: Frank Pavlic <f.pavlic@kunbus.de> Cc: Martin Sperl <kernel@martin.sperl.org> Cc: Noralf Trønnes <noralf@tronnes.org> Signed-off-by: NMark Brown <broonie@kernel.org>
-
- 16 11月, 2018 1 次提交
-
-
由 Tony Lindgren 提交于
I've been wondering still about omap2-mcspi related suspend and resume flakeyness and looks like we're missing calls to spi_master_suspend() and spi_master_resume(). Adding those and using pm_runtime_force_suspend() and pm_runtime_force_resume() makes things work for suspend and resume and allows us to stop using noirq suspend and resume. And while at it, let's use SET_SYSTEM_SLEEP_PM_OPS to simplify things further. Signed-off-by: NTony Lindgren <tony@atomide.com> Signed-off-by: NMark Brown <broonie@kernel.org>
-
- 31 10月, 2018 1 次提交
-
-
由 Leilk Liu 提交于
when xfer_len is greater than 64 bytes and use fifo mode to transfer, the actual length from the third time is mata->xfer_len but not len in mtk_spi_interrupt(). Signed-off-by: NLeilk Liu <leilk.liu@mediatek.com> Signed-off-by: NMark Brown <broonie@kernel.org>
-
- 24 10月, 2018 1 次提交
-
-
由 Keiji Hayashibara 提交于
This commit fixes incorrect property because it was different from the actual. The parameters of '#address-cells' and '#size-cells' were removed, and 'interrupts', 'pinctrl-names' and 'pinctrl-0' were added. Fixes: 4dcd5c27 ("spi: add DT bindings for UniPhier SPI controller") Signed-off-by: NKeiji Hayashibara <hayashibara.keiji@socionext.com> Signed-off-by: NMark Brown <broonie@kernel.org>
-
- 21 10月, 2018 2 次提交
-
-
由 A.s. Dong 提交于
Add imx8qxp compatible string Signed-off-by: NDong Aisheng <aisheng.dong@nxp.com> Reviewed-by: NRob Herring <robh@kernel.org> Signed-off-by: NMark Brown <broonie@kernel.org>
-
由 Florian Fainelli 提交于
ARM-based 63xx DSL platforms have the spi-bcm63xx-hsspi controller present, allow using this driver there as well. Signed-off-by: NFlorian Fainelli <f.fainelli@gmail.com> Signed-off-by: NMark Brown <broonie@kernel.org>
-
- 19 10月, 2018 5 次提交
-
-
由 Vignesh R 提交于
Add support to use McSPI controller as SPI slave. In slave mode, DMA TX completion does not mean entire data has been shifted out as data might still be stuck in FIFO waiting for master to clock the bus. Therefore, add an IRQ handler for slave mode to know when entire data in FIFO has been shifted out. Signed-off-by: NVignesh R <vigneshr@ti.com> Signed-off-by: NMark Brown <broonie@kernel.org>
-
由 Vignesh R 提交于
McSPI has 32 byte FIFO in Transmit-Receive mode. Current code tries to configuration FIFO watermark level for DMA trigger to be GCD of transfer length and max FIFO size which would mean trigger level may be set to 32 for transmit-receive mode if length is aligned. This does not work in case of SPI slave mode where FIFO always needs to have data ready whenever master starts the clock. With DMA trigger size of 32 there will be a small window during slave TX where DMA is still putting data into FIFO but master would have started clock for next byte, resulting in shifting out of stale data. Similarly, on Slave RX side there may be RX FIFO overflow Fix this by setting FIFO watermark for DMA trigger to word length. This means DMA is triggered as soon as FIFO has space for word length bytes and DMA would make sure FIFO is almost always full therefore improving FIFO occupancy in both master and slave mode. Signed-off-by: NVignesh R <vigneshr@ti.com> Signed-off-by: NMark Brown <broonie@kernel.org>
-
由 Vignesh R 提交于
Use standard readl_poll_timeout() macro for polling on status bits. Signed-off-by: NVignesh R <vigneshr@ti.com> Signed-off-by: NMark Brown <broonie@kernel.org>
-
由 Ludovic Barre 提交于
The qspi controller is a specialized communication interface targeting single, dual or quad SPI Flash memories (NOR/NAND). It can operate in any of the following modes: -indirect mode: all the operations are performed using the quadspi registers -read memory-mapped mode: the external Flash memory is mapped to the microcontroller address space and is seen by the system as if it was an internal memory tested on: -NOR: mx66l51235l -NAND: MT29F2G01ABAGD Signed-off-by: NLudovic Barre <ludovic.barre@st.com> Signed-off-by: NMark Brown <broonie@kernel.org>
-
由 Ludovic Barre 提交于
This patch adds the documentation of device tree bindings for the STM32 QSPI controller. It is a specialized communication interface targeting single, dual or quad SPI Flash memories (NOR/NAND). Signed-off-by: NLudovic Barre <ludovic.barre@st.com> Reviewed-by: NRob Herring <robh@kernel.org> Signed-off-by: NMark Brown <broonie@kernel.org>
-
- 18 10月, 2018 1 次提交
-
-
由 Sergei Shtylyov 提交于
Document the R-Car V3{M|H} (R8A779{7|8}0) SoCs in the Renesas MSIOF bindings. Signed-off-by: NSergei Shtylyov <sergei.shtylyov@cogentembedded.com> Reviewed-by: NSimon Horman <horms+renesas@verge.net.au> Signed-off-by: NMark Brown <broonie@kernel.org>
-
- 17 10月, 2018 1 次提交
-
-
由 Christoph Hellwig 提交于
The DMA API does its own zone decisions based on the coherent_dma_mask. Signed-off-by: NChristoph Hellwig <hch@lst.de> Signed-off-by: NMark Brown <broonie@kernel.org>
-
- 13 10月, 2018 5 次提交
-
-
由 Robin Gong 提交于
Use PIO mode instead if size is smaller than fifo size, since dma may be less efficient. Signed-off-by: NRobin Gong <yibin.gong@nxp.com> Signed-off-by: NMark Brown <broonie@kernel.org>
-
由 Robin Gong 提交于
Correct wml as the last rx sg length instead of the whole transfer length. Otherwise, mtd_stresstest will be failed as below: insmod mtd_stresstest.ko dev=0 ================================================= mtd_stresstest: MTD device: 0 mtd_stresstest: not NAND flash, assume page size is 512 bytes. mtd_stresstest: MTD device size 4194304, eraseblock size 65536, page size 512, count of eraseblocks 64, pa0 mtd_stresstest: doing operations mtd_stresstest: 0 operations done mtd_test: mtd_read from 1ff532, size 880 mtd_test: mtd_read from 20c267, size 64998 spi_master spi0: I/O Error in DMA RX m25p80 spi0.0: SPI transfer failed: -110 spi_master spi0: failed to transfer one message from queue mtd_test: error: read failed at 0x20c267 mtd_stresstest: error -110 occurred ================================================= insmod: ERROR: could not insert module mtd_stresstest.ko: Connection timed out Signed-off-by: NRobin Gong <yibin.gong@nxp.com> Signed-off-by: NMark Brown <broonie@kernel.org>
-
由 Robin Gong 提交于
Current dynamic burst length is based on the whole transfer length, that's ok if there is only one sg, but is not right in case multi sgs in one transfer,because the tail data should be based on the last sg length instead of the whole transfer length. Move wml setting for DMA to the later place, thus, the next patch could get the right last sg length for wml setting. This patch is a preparation one, no any function change involved. Signed-off-by: NRobin Gong <yibin.gong@nxp.com> Signed-off-by: NMark Brown <broonie@kernel.org>
-
由 Lubomir Rintel 提交于
This spares drivers from #ifdef-ing on CONFIG_PCI if the driver can be optionally built on machines without PCI bus. Consistent with acpi_driver_match_device() and similar. Acked-by: NBjorn Helgaas <bhelgaas@google.com> Signed-off-by: NLubomir Rintel <lkundrak@v3.sk> Signed-off-by: NMark Brown <broonie@kernel.org>
-
由 Phil Elwell 提交于
The SPI configuration state includes an SPI_NO_CS flag that disables all CS line manipulation, for applications that want to manage their own chip selects. However, this flag is ignored by the GPIO CS code in the SPI framework. Correct this omission with a trivial patch. Signed-off-by: NPhil Elwell <phil@raspberrypi.org> Signed-off-by: NMark Brown <broonie@kernel.org>
-
- 11 10月, 2018 16 次提交
-
-
由 Lubomir Rintel 提交于
This is the SPI controller found on Marvel MMP2 and perhaps more platforms. Reviewed-by: NRob Herring <robh@kernel.org> Signed-off-by: NLubomir Rintel <lkundrak@v3.sk> Signed-off-by: NMark Brown <broonie@kernel.org>
-
由 Lubomir Rintel 提交于
The MMP2 platform, that uses device tree, has this controller. Let's add devicetree alongside platform & PCI. Signed-off-by: NLubomir Rintel <lkundrak@v3.sk> Signed-off-by: NMark Brown <broonie@kernel.org>
-
由 Lubomir Rintel 提交于
That seems to be the correct type. Signed-off-by: NLubomir Rintel <lkundrak@v3.sk> Signed-off-by: NMark Brown <broonie@kernel.org>
-
由 Girish Mahadevan 提交于
This driver supports GENI based SPI Controller in the Qualcomm SOCs. The Qualcomm Generic Interface (GENI) is a programmable module supporting a wide range of serial interfaces including SPI. This driver supports SPI operations using FIFO mode of transfer. Signed-off-by: NGirish Mahadevan <girishm@codeaurora.org> Signed-off-by: NDilip Kota <dkota@codeaurora.org> Signed-off-by: NAlok Chauhan <alokc@codeaurora.org> Reviewed-by: NDouglas Anderson <dianders@chromium.org> Tested-by: NDouglas Anderson <dianders@chromium.org> Reviewed-by: NStephen Boyd <swboyd@chromium.org> Signed-off-by: NMark Brown <broonie@kernel.org>
-
由 Dilip Kota 提交于
Move GENI SE SPI controller device-tree bindings from devicetree/bindings/soc/qcom/qcom,geni-se.txt to devicetree/bindings/spi/qcom,spi-geni-qcom.txt. Signed-off-by: NDilip Kota <dkota@codeaurora.org> Reviewed-by: NDouglas Anderson <dianders@chromium.org> Reviewed-by: NStephen Boyd <swboyd@chromium.org> Reviewed-by: NRob Herring <robh@kernel.org> Signed-off-by: NAlok Chauhan <alokc@codeaurora.org> Signed-off-by: NMark Brown <broonie@kernel.org>
-
由 Dilip Kota 提交于
SPI controller driver should maintain the maximum frequency of the controller instead of relying on device tree bindings. Because maximum frequency is specific property of SPI controller. Signed-off-by: NDilip Kota <dkota@codeaurora.org> Reviewed-by: NDouglas Anderson <dianders@chromium.org> Reviewed-by: NStephen Boyd <swboyd@chromium.org> Reviewed-by: NRob Herring <robh@kernel.org> Signed-off-by: NAlok Chauhan <alokc@codeaurora.org> Signed-off-by: NMark Brown <broonie@kernel.org>
-
由 Emil Renner Berthing 提交于
Let the dma/non-dma code paths handle the spi enable flag themselves. This removes some logic to determine if the flag should be turned on before or after dma and also don't leave the spi enabled if the dma path fails. Signed-off-by: NEmil Renner Berthing <kernel@esmil.dk> Signed-off-by: NMark Brown <broonie@kernel.org>
-
由 Emil Renner Berthing 提交于
The dma direction for the tx and rx dma channels never change, so just use the constants directly rather than storing them in device data. Signed-off-by: NEmil Renner Berthing <kernel@esmil.dk> Signed-off-by: NMark Brown <broonie@kernel.org>
-
由 Emil Renner Berthing 提交于
The driver data has a u32 field use_dma which is only ever used as a boolean, so change its type to reflect that. Signed-off-by: NEmil Renner Berthing <kernel@esmil.dk> Signed-off-by: NMark Brown <broonie@kernel.org>
-
由 Emil Renner Berthing 提交于
We no longer need the dma_caps since the dma driver already clamps the burst length to the hardware limit, so don't request and store dma_caps in device data. Signed-off-by: NEmil Renner Berthing <kernel@esmil.dk> Signed-off-by: NMark Brown <broonie@kernel.org>
-
由 Huibin Hong 提交于
Signal tx dma when spi fifo is less than half full, and limit tx bursts to half the fifo length. Clamp rx burst length to 1 to avoid alignment issues. Signed-off-by: NHuibin Hong <huibin.hong@rock-chips.com> Signed-off-by: NEmil Renner Berthing <kernel@esmil.dk> Signed-off-by: NMark Brown <broonie@kernel.org>
-
由 Girish Mahadevan 提交于
New driver for Qualcomm QuadSPI(QSPI) controller that is used to communicate with slaves such as flash memory devices. The QSPI controller can operate in 2 or 4 wire mode but only supports SPI Mode 0. The controller can also operate in Single or Dual data rate modes. Signed-off-by: NGirish Mahadevan <girishm@codeaurora.org> Signed-off-by: NRyan Case <ryandcase@chromium.org> Reviewed-by: NDouglas Anderson <dianders@chromium.org> Reviewed-by: NStephen Boyd <swboyd@chromium.org> Signed-off-by: NMark Brown <broonie@kernel.org>
-
由 Girish Mahadevan 提交于
Bindings for Qualcomm Quad SPI used on SoCs such as sdm845. Signed-off-by: NGirish Mahadevan <girishm@codeaurora.org> Signed-off-by: NRyan Case <ryandcase@chromium.org> Reviewed-by: NDouglas Anderson <dianders@chromium.org> Reviewed-by: NRob Herring <robh@kernel.org> Reviewed-by: NStephen Boyd <swboyd@chromium.org> Signed-off-by: NMark Brown <broonie@kernel.org>
-
由 Talel Shenhar 提交于
Add support for a new devicetree compatible string called 'amazon,alpine-apb-ssi', which is necessary for the Amazon Alpine spi controller. 'amazon,alpine-dw-apb-ssi' is used in the dw spi driver if specified in the devicetree. Otherwise, fall back to driver default behavior, i.e. original dw IP hw driver behavior. Signed-off-by: NTalel Shenhar <talel@amazon.com> Signed-off-by: NDavid Woodhouse <dwmw@amazon.co.uk> Signed-off-by: NMark Brown <broonie@kernel.org>
-
由 Talel Shenhar 提交于
This compatible adds the ability for dw spi controller driver to work with the dw spi controller found on Alpine chips. The dw spi controller has an auto-deselect of Chip-Select, in case there is no data inside the Tx FIFO. While working on platforms with Alpine chips, auto-deselect mode causes an issue for some spi devices that can't handle the Chip-Select deselect in the middle of a transaction. It is a normal behavior for a Tx FIFO to be empty in the middle of a transaction, due to busy cpu. In the Alpine chip family an option to change the default behavior was added to the original dw spi controller to prevent this issue of de-asserting Chip-Select once TX FIFO is empty. The change was to allow SW manual control of the Chip-Select. With this change, as long as the Slave Enable Register is asserted, the Chip-Select will be asserted. As a result, it is necessary to deselect the Slave Select Register once the transaction is done. This feature is enabled via a new device compatible string called 'amazon,alpine-dw-apb-ssi'. Once the driver identifies the new compatible string, it enables the hw fixup logic, by writing to a dedicated register found in the IP reserved area and will start manual deselecting the Slave Select Register when the transfer ends. Signed-off-by: NTalel Shenhar <talel@amazon.com> Signed-off-by: NDavid Woodhouse <dwmw@amazon.co.uk> Signed-off-by: NMark Brown <broonie@kernel.org>
-
由 Mark Brown 提交于
Merge tag 'qcom-geni-immutable-for-mark-brown' of git://git.kernel.org/pub/scm/linux/kernel/git/agross/linux into spi-4.20 Immutable branch for QCOM Geni patches
-
- 10 10月, 2018 4 次提交
-
-
由 Trent Piepho 提交于
spidev will make a big fuss if a device tree node binds a device by using "spidev" as the node's compatible property. However, the logic for this isn't looking for "spidev" in the compatible, but rather checking that the device is NOT compatible with spidev's list of devices. This causes a false positive if a device not named "rohm,dh2228fv", etc. binds to spidev, even if a means other than putting "spidev" in the device tree was used. E.g., the sysfs driver_override attribute. Signed-off-by: NTrent Piepho <tpiepho@impinj.com> Reviewed-by: NJan Kundrát <jan.kundrat@cesnet.cz> Tested-by: NJan Kundrát <jan.kundrat@cesnet.cz> Reviewed-by: NGeert Uytterhoeven <geert+renesas@glider.be> Signed-off-by: NMark Brown <broonie@kernel.org>
-
由 Trent Piepho 提交于
This attribute works the same was as the identically named attribute for PCI, AMBA, and platform devices. For reference, see: commit 3cf38571 ("ARM: 8256/1: driver coamba: add device binding path 'driver_override'") commit 3d713e0e ("driver core: platform: add device binding path 'driver_override'") commit 782a985d ("PCI: Introduce new device binding path using pci_dev.driver_override") If the name of a driver is written to this attribute, then the device will bind to the named driver and only the named driver. The device will bind to the driver even if the driver does not list the device in its id table. This behavior is different than the driver's bind attribute, which only allows binding to devices that are listed as supported by the driver. It can be used to bind a generic driver, like spidev, to a device. Signed-off-by: NTrent Piepho <tpiepho@impinj.com> Reviewed-by: NJan Kundrát <jan.kundrat@cesnet.cz> Tested-by: NJan Kundrát <jan.kundrat@cesnet.cz> Reviewed-by: NGeert Uytterhoeven <geert+renesas@glider.be> Signed-off-by: NMark Brown <broonie@kernel.org>
-
由 Axel Lin 提交于
Improve readability a bit. Signed-off-by: NAxel Lin <axel.lin@ingics.com> Signed-off-by: NMark Brown <broonie@kernel.org>
-
由 Hieu Tran Dang 提交于
Certain devices don't work well when a transmit FIFO underrun or receive FIFO overrun occurs. Example is the SAF400x radio chip when running at high speed which leads to garbage being sent to/received from the chip. In which case, it should stall waiting for further data to be available before proceeding. This patch unset the NOSTALL bit in CFGR1 by default to prevent this issue. Signed-off-by: NHieu Tran Dang <dangtranhieu2012@gmail.com> Signed-off-by: NMark Brown <broonie@kernel.org>
-
- 09 10月, 2018 1 次提交
-
-
由 Nathan Chancellor 提交于
Clang warns when one enumerated type is implicitly converted to another. drivers/spi/spi-ep93xx.c:342:62: warning: implicit conversion from enumeration type 'enum dma_transfer_direction' to different enumeration type 'enum dma_data_direction' [-Wenum-conversion] nents = dma_map_sg(chan->device->dev, sgt->sgl, sgt->nents, dir); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~ ./include/linux/dma-mapping.h:428:58: note: expanded from macro 'dma_map_sg' #define dma_map_sg(d, s, n, r) dma_map_sg_attrs(d, s, n, r, 0) ~~~~~~~~~~~~~~~~ ^ drivers/spi/spi-ep93xx.c:348:57: warning: implicit conversion from enumeration type 'enum dma_transfer_direction' to different enumeration type 'enum dma_data_direction' [-Wenum-conversion] dma_unmap_sg(chan->device->dev, sgt->sgl, sgt->nents, dir); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~ ./include/linux/dma-mapping.h:429:62: note: expanded from macro 'dma_unmap_sg' #define dma_unmap_sg(d, s, n, r) dma_unmap_sg_attrs(d, s, n, r, 0) ~~~~~~~~~~~~~~~~~~ ^ drivers/spi/spi-ep93xx.c:377:56: warning: implicit conversion from enumeration type 'enum dma_transfer_direction' to different enumeration type 'enum dma_data_direction' [-Wenum-conversion] dma_unmap_sg(chan->device->dev, sgt->sgl, sgt->nents, dir); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~ ./include/linux/dma-mapping.h:429:62: note: expanded from macro 'dma_unmap_sg' #define dma_unmap_sg(d, s, n, r) dma_unmap_sg_attrs(d, s, n, r, 0) ~~~~~~~~~~~~~~~~~~ ^ 3 warnings generated. dma_{,un}map_sg expect an enum of type dma_data_direction but this driver uses dma_transfer_direction for everything. Convert the driver to use dma_data_direction for these two functions. There are two places that strictly require an enum of type dma_transfer_direction: the direction member in struct dma_slave_config and the direction parameter in dmaengine_prep_slave_sg. To avoid using an explicit cast, add a simple function, ep93xx_dma_data_to_trans_dir, to safely map between the two types because they are not 1 to 1 in meaning. Signed-off-by: NNathan Chancellor <natechancellor@gmail.com> Reviewed-by: NNick Desaulniers <ndesaulniers@google.com> Reviewed-by: NMika Westerberg <mika.westerberg@linux.intel.com> Signed-off-by: NMark Brown <broonie@kernel.org>
-