From patchwork Fri May 8 13:29:25 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Serge Semin X-Patchwork-Id: 11536593 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 7285614C0 for ; Fri, 8 May 2020 13:30:00 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 5E8E82495E for ; Fri, 8 May 2020 13:30:00 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727092AbgEHNaA (ORCPT ); Fri, 8 May 2020 09:30:00 -0400 Received: from mail.baikalelectronics.com ([87.245.175.226]:42646 "EHLO mail.baikalelectronics.ru" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726736AbgEHN37 (ORCPT ); Fri, 8 May 2020 09:29:59 -0400 Received: from localhost (unknown [127.0.0.1]) by mail.baikalelectronics.ru (Postfix) with ESMTP id 6F18F80307C1; Fri, 8 May 2020 13:29:55 +0000 (UTC) X-Virus-Scanned: amavisd-new at baikalelectronics.ru Received: from mail.baikalelectronics.ru ([127.0.0.1]) by localhost (mail.baikalelectronics.ru [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Irx0MX0McIdz; Fri, 8 May 2020 16:29:54 +0300 (MSK) From: Serge Semin To: Mark Brown CC: Serge Semin , Serge Semin , Georgy Vlasov , Ramil Zaripov , Alexey Malahov , Maxim Kaurkin , Pavel Parkhomenko , Ekaterina Skachko , Vadim Vlasov , Alexey Kolotnikov , Thomas Bogendoerfer , Paul Burton , Ralf Baechle , Arnd Bergmann , Allison Randal , Andy Shevchenko , Gareth Williams , Rob Herring , , , , Subject: [PATCH 00/17] spi: dw: Add generic DW DMA controller support Date: Fri, 8 May 2020 16:29:25 +0300 Message-ID: <20200508132943.9826-1-Sergey.Semin@baikalelectronics.ru> MIME-Version: 1.0 X-ClientProxiedBy: MAIL.baikal.int (192.168.51.25) To mail (192.168.51.25) Sender: linux-spi-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-spi@vger.kernel.org Baikal-T1 SoC provides DW DMA controller to perform low-speed peripherals Mem-to-Dev and Dev-to-Mem transaction. This is also applicable to the DW APB SSI devices embedded into the SoC. Currently this type DMA device is supported by the DW APB SPI driver only as a middle layer code for Intel MID PCI devices. Seeing the same code can be used for normal platform DW DMAC device we introduced a set of patches to fix it within this patchset. First of all traditionally we replaced the legacy plain text-based dt-binding file with yaml-based one. Then we unpinned the Intel MID specific code from the generic DMA one and placed it into the spi-dw-pci.c driver, which was a better place for it anyway. Then we introduced a set of naming cleanups since the code was going to be used for generic DW DMAC device and DMAC usage alterations to handle the controller functionality in a generic way by the DW APB SSI MMIO driver as well. See the individual patches commit messages for details. In addition we fixed a problem in the native chip-select method, which despite of multiple attempts to be fixed doesn't correctly perceive the SPI_CS_HIGH flag and the enable-argument. Finally as a cherry on a cake we replaced the manually written DebugFS registers read method with a ready-to-use for the same purpose regset32 DebugFS interface usage. This patchset is rebased and tested on the mainline Linux kernel 5.7-rc4: 0e698dfa2822 ("Linux 5.7-rc4") tag: v5.7-rc4 Co-developed-by: Georgy Vlasov Signed-off-by: Georgy Vlasov Co-developed-by: Ramil Zaripov Signed-off-by: Ramil Zaripov Signed-off-by: Serge Semin Cc: Alexey Malahov Cc: Maxim Kaurkin Cc: Pavel Parkhomenko Cc: Ekaterina Skachko Cc: Vadim Vlasov Cc: Alexey Kolotnikov Cc: Thomas Bogendoerfer Cc: Paul Burton Cc: Ralf Baechle Cc: Arnd Bergmann Cc: Allison Randal Cc: Andy Shevchenko Cc: Gareth Williams Cc: Rob Herring Cc: linux-mips@vger.kernel.org Cc: linux-spi@vger.kernel.org Cc: devicetree@vger.kernel.org Cc: linux-kernel@vger.kernel.org Serge Semin (17): dt-bindings: spi: Convert DW SPI binding to DT schema dt-bindings: spi: dw: Add DMA properties bindings spi: dw: Split up the generic DMA code and Intel MID driver spi: dw: Cleanup generic DW DMA code namings spi: dw: Discard static DW DMA slave structures spi: dw: Add DW SPI DMA/PCI/MMIO dependency on DW SPI core spi: dw: Add Tx/Rx finish wait methods to DMA spi: dw: Clear DMAC register when done or stopped spi: dw: Enable interrupts in accordance with DMA xfer mode spi: dw: Parameterize the DMA Rx/Tx burst length spi: dw: Fix native CS being unset spi: dw: Fix dma_slave_config used partly uninitialized spi: dw: Initialize paddr in DW SPI MMIO private data spi: dw: Add DMA support to the DW SPI MMIO driver spi: dw: Use DMA max burst to set the request thresholds spi: dw: Fix Rx-only DMA transfers spi: dw: Use regset32 DebugFS method to create a registers file .../bindings/spi/snps,dw-apb-ssi.txt | 41 --- .../bindings/spi/snps,dw-apb-ssi.yaml | 123 +++++++++ .../devicetree/bindings/spi/spi-dw.txt | 24 -- drivers/spi/Kconfig | 16 +- drivers/spi/Makefile | 4 +- drivers/spi/{spi-dw-mid.c => spi-dw-dma.c} | 237 ++++++++++++------ drivers/spi/spi-dw-mmio.c | 15 +- drivers/spi/spi-dw-pci.c | 38 ++- drivers/spi/spi-dw.c | 89 +++---- drivers/spi/spi-dw.h | 27 +- 10 files changed, 402 insertions(+), 212 deletions(-) delete mode 100644 Documentation/devicetree/bindings/spi/snps,dw-apb-ssi.txt create mode 100644 Documentation/devicetree/bindings/spi/snps,dw-apb-ssi.yaml delete mode 100644 Documentation/devicetree/bindings/spi/spi-dw.txt rename drivers/spi/{spi-dw-mid.c => spi-dw-dma.c} (53%) Acked-by: Linus Walleij