mbox series

[v9,0/9] Enable designware PCI EP EDMA locally

Message ID 20220422143643.727871-1-Frank.Li@nxp.com (mailing list archive)
Headers show
Series Enable designware PCI EP EDMA locally | expand

Message

Frank Li April 22, 2022, 2:36 p.m. UTC
Default Designware EDMA just probe remotely at host side.
This patch allow EDMA driver can probe at EP side.

1. Clean up patch
   dmaengine: dw-edma: Detach the private data and chip info structures
   dmaengine: dw-edma: Remove unused field irq in struct dw_edma_chip
   dmaengine: dw-edma: Change rg_region to reg_base in struct
   dmaengine: dw-edma: rename wr(rd)_ch_cnt to ll_wr(rd)_cnt in struct

2. Enhance EDMA driver to allow prode eDMA at EP side
   dmaengine: dw-edma: Add support for chip specific flags
   dmaengine: dw-edma: Add DW_EDMA_CHIP_32BIT_DBI for chip specific flags

3. Bugs fix at EDMA driver when probe eDMA at EP side
   dmaengine: dw-edma: Fix programming the source & dest addresses for ep
   dmaengine: dw-edma: Don't rely on the deprecated "direction" member

4. change pci-epf-test to use EDMA driver to transfer data.
   PCI: endpoint: Add embedded DMA controller test

5. Using imx8dxl to do test, but some EP functions still have not
upstream yet. So below patch show how probe eDMA driver at EP
controller driver.
https://lore.kernel.org/linux-pci/20220309120149.GB134091@thinkpad/T/#m979eb506c73ab3cfca2e7a43635ecdaec18d8097

Frank Li (7):
  dmaengine: dw-edma: Remove unused field irq in struct dw_edma_chip
  dmaengine: dw-edma: Detach the private data and chip info structures
  dmaengine: dw-edma: Change rg_region to reg_base in struct
    dw_edma_chip
  dmaengine: dw-edma: Rename wr(rd)_ch_cnt to ll_wr(rd)_cnt in struct
    dw_edma_chip
  dmaengine: dw-edma: Add support for chip specific flags
  dmaengine: dw-edma: Add DW_EDMA_CHIP_32BIT_DBI for chip specific flags
  PCI: endpoint: Add embedded DMA controller test

Serge Semin (2):
  dmaengine: dw-edma: Drop dma_slave_config.direction field usage
  dmaengine: dw-edma: Fix eDMA Rd/Wr-channels and DMA-direction
    semantics

 drivers/dma/dw-edma/dw-edma-core.c            | 139 +++++++++++-------
 drivers/dma/dw-edma/dw-edma-core.h            |  31 +---
 drivers/dma/dw-edma/dw-edma-pcie.c            |  83 +++++------
 drivers/dma/dw-edma/dw-edma-v0-core.c         |  54 ++++---
 drivers/dma/dw-edma/dw-edma-v0-core.h         |   4 +-
 drivers/dma/dw-edma/dw-edma-v0-debugfs.c      |  10 +-
 drivers/pci/endpoint/functions/pci-epf-test.c | 108 ++++++++++++--
 include/linux/dma/edma.h                      |  59 +++++++-
 8 files changed, 312 insertions(+), 176 deletions(-)

Comments

Serge Semin April 22, 2022, 5:53 p.m. UTC | #1
Hello folks,

My review is finally over. Aside with that I've tested the series on
Baikal-T1 SoC, which has DW PCIe Host controller v4.60 and DW eDMA
embedded. A test was performed on kernel v5.18-rc3 by a simple driver
copying random data from system memory to SM768 framebuffer and
vise-versa. So @Frank feel free to add my tag to the entire series:

Tested-by: Serge Semin <fancer.lancer@gmail.com>

@Lorenzo, @Rob, @Vinod, my patchset:
Link: https://lore.kernel.org/linux-pci/20220324014836.19149-1-Sergey.Semin@baikalelectronics.ru
is based on this one. In its turn my series depends on the other
patchsets:
[PATCH v2 0/4] clk: Baikal-T1 DDR/PCIe resets and some xGMAC fixes
Link: [https://lore.kernel.org/linux-pci/20220330144320.27039-1-Sergey.Semin@baikalelectronics.ru
[PATCH 00/12] PCI: dwc: Various fixes and cleanups
Link: https://lore.kernel.org/linux-pci/20220324012524.16784-1-Sergey.Semin@baikalelectronics.ru
[PATCH 00/16] PCI: dwc: Add dma-ranges/YAML-schema/Baikal-T1 support
https://lore.kernel.org/linux-pci/20220324013734.18234-1-Sergey.Semin@baikalelectronics.ru
which are currently on review. (BTW @Rob I am waiting for your
responses there to go on with v2 re-spin.) I am very much eager to get
my patches ready before the next merge windows. But in order to
preserve the consistency of the corresponding repo with my patchsets
it needs to have the @Frank' patches. Seeing aside with @Frank's
series my changes depends on the changes in the clk and pci
subsystems, could you please consider choosing a single repository for
merging all my and @Frank patches in. Since the changes mostly concern
the DW PCIe controller I suggest to use the 'pci/dwc' branch of the
'kernel/git/lpieralisi/pci.git' repository. What do you think?
@Lorenzo?

-Sergey

On Fri, Apr 22, 2022 at 09:36:34AM -0500, Frank Li wrote:
> Default Designware EDMA just probe remotely at host side.
> This patch allow EDMA driver can probe at EP side.
> 
> 1. Clean up patch
>    dmaengine: dw-edma: Detach the private data and chip info structures
>    dmaengine: dw-edma: Remove unused field irq in struct dw_edma_chip
>    dmaengine: dw-edma: Change rg_region to reg_base in struct
>    dmaengine: dw-edma: rename wr(rd)_ch_cnt to ll_wr(rd)_cnt in struct
> 
> 2. Enhance EDMA driver to allow prode eDMA at EP side
>    dmaengine: dw-edma: Add support for chip specific flags
>    dmaengine: dw-edma: Add DW_EDMA_CHIP_32BIT_DBI for chip specific flags
> 
> 3. Bugs fix at EDMA driver when probe eDMA at EP side
>    dmaengine: dw-edma: Fix programming the source & dest addresses for ep
>    dmaengine: dw-edma: Don't rely on the deprecated "direction" member
> 
> 4. change pci-epf-test to use EDMA driver to transfer data.
>    PCI: endpoint: Add embedded DMA controller test
> 
> 5. Using imx8dxl to do test, but some EP functions still have not
> upstream yet. So below patch show how probe eDMA driver at EP
> controller driver.
> https://lore.kernel.org/linux-pci/20220309120149.GB134091@thinkpad/T/#m979eb506c73ab3cfca2e7a43635ecdaec18d8097
> 
> Frank Li (7):
>   dmaengine: dw-edma: Remove unused field irq in struct dw_edma_chip
>   dmaengine: dw-edma: Detach the private data and chip info structures
>   dmaengine: dw-edma: Change rg_region to reg_base in struct
>     dw_edma_chip
>   dmaengine: dw-edma: Rename wr(rd)_ch_cnt to ll_wr(rd)_cnt in struct
>     dw_edma_chip
>   dmaengine: dw-edma: Add support for chip specific flags
>   dmaengine: dw-edma: Add DW_EDMA_CHIP_32BIT_DBI for chip specific flags
>   PCI: endpoint: Add embedded DMA controller test
> 
> Serge Semin (2):
>   dmaengine: dw-edma: Drop dma_slave_config.direction field usage
>   dmaengine: dw-edma: Fix eDMA Rd/Wr-channels and DMA-direction
>     semantics
> 
>  drivers/dma/dw-edma/dw-edma-core.c            | 139 +++++++++++-------
>  drivers/dma/dw-edma/dw-edma-core.h            |  31 +---
>  drivers/dma/dw-edma/dw-edma-pcie.c            |  83 +++++------
>  drivers/dma/dw-edma/dw-edma-v0-core.c         |  54 ++++---
>  drivers/dma/dw-edma/dw-edma-v0-core.h         |   4 +-
>  drivers/dma/dw-edma/dw-edma-v0-debugfs.c      |  10 +-
>  drivers/pci/endpoint/functions/pci-epf-test.c | 108 ++++++++++++--
>  include/linux/dma/edma.h                      |  59 +++++++-
>  8 files changed, 312 insertions(+), 176 deletions(-)
> 
> -- 
> 2.35.1
>
Zhi Li April 22, 2022, 5:57 p.m. UTC | #2
On Fri, Apr 22, 2022 at 12:53 PM Serge Semin <fancer.lancer@gmail.com> wrote:
>
> Hello folks,
>
> My review is finally over. Aside with that I've tested the series on
> Baikal-T1 SoC, which has DW PCIe Host controller v4.60 and DW eDMA
> embedded. A test was performed on kernel v5.18-rc3 by a simple driver
> copying random data from system memory to SM768 framebuffer and
> vise-versa. So @Frank feel free to add my tag to the entire series:
>
> Tested-by: Serge Semin <fancer.lancer@gmail.com>

Thanks. I think the maintainer can add this when they pick up the patches.
I will add it if patches need to be respin.

best regards
Frank Li

>
> @Lorenzo, @Rob, @Vinod, my patchset:
> Link: https://lore.kernel.org/linux-pci/20220324014836.19149-1-Sergey.Semin@baikalelectronics.ru
> is based on this one. In its turn my series depends on the other
> patchsets:
> [PATCH v2 0/4] clk: Baikal-T1 DDR/PCIe resets and some xGMAC fixes
> Link: [https://lore.kernel.org/linux-pci/20220330144320.27039-1-Sergey.Semin@baikalelectronics.ru
> [PATCH 00/12] PCI: dwc: Various fixes and cleanups
> Link: https://lore.kernel.org/linux-pci/20220324012524.16784-1-Sergey.Semin@baikalelectronics.ru
> [PATCH 00/16] PCI: dwc: Add dma-ranges/YAML-schema/Baikal-T1 support
> https://lore.kernel.org/linux-pci/20220324013734.18234-1-Sergey.Semin@baikalelectronics.ru
> which are currently on review. (BTW @Rob I am waiting for your
> responses there to go on with v2 re-spin.) I am very much eager to get
> my patches ready before the next merge windows. But in order to
> preserve the consistency of the corresponding repo with my patchsets
> it needs to have the @Frank' patches. Seeing aside with @Frank's
> series my changes depends on the changes in the clk and pci
> subsystems, could you please consider choosing a single repository for
> merging all my and @Frank patches in. Since the changes mostly concern
> the DW PCIe controller I suggest to use the 'pci/dwc' branch of the
> 'kernel/git/lpieralisi/pci.git' repository. What do you think?
> @Lorenzo?
>
> -Sergey
>
> On Fri, Apr 22, 2022 at 09:36:34AM -0500, Frank Li wrote:
> > Default Designware EDMA just probe remotely at host side.
> > This patch allow EDMA driver can probe at EP side.
> >
> > 1. Clean up patch
> >    dmaengine: dw-edma: Detach the private data and chip info structures
> >    dmaengine: dw-edma: Remove unused field irq in struct dw_edma_chip
> >    dmaengine: dw-edma: Change rg_region to reg_base in struct
> >    dmaengine: dw-edma: rename wr(rd)_ch_cnt to ll_wr(rd)_cnt in struct
> >
> > 2. Enhance EDMA driver to allow prode eDMA at EP side
> >    dmaengine: dw-edma: Add support for chip specific flags
> >    dmaengine: dw-edma: Add DW_EDMA_CHIP_32BIT_DBI for chip specific flags
> >
> > 3. Bugs fix at EDMA driver when probe eDMA at EP side
> >    dmaengine: dw-edma: Fix programming the source & dest addresses for ep
> >    dmaengine: dw-edma: Don't rely on the deprecated "direction" member
> >
> > 4. change pci-epf-test to use EDMA driver to transfer data.
> >    PCI: endpoint: Add embedded DMA controller test
> >
> > 5. Using imx8dxl to do test, but some EP functions still have not
> > upstream yet. So below patch show how probe eDMA driver at EP
> > controller driver.
> > https://lore.kernel.org/linux-pci/20220309120149.GB134091@thinkpad/T/#m979eb506c73ab3cfca2e7a43635ecdaec18d8097
> >
> > Frank Li (7):
> >   dmaengine: dw-edma: Remove unused field irq in struct dw_edma_chip
> >   dmaengine: dw-edma: Detach the private data and chip info structures
> >   dmaengine: dw-edma: Change rg_region to reg_base in struct
> >     dw_edma_chip
> >   dmaengine: dw-edma: Rename wr(rd)_ch_cnt to ll_wr(rd)_cnt in struct
> >     dw_edma_chip
> >   dmaengine: dw-edma: Add support for chip specific flags
> >   dmaengine: dw-edma: Add DW_EDMA_CHIP_32BIT_DBI for chip specific flags
> >   PCI: endpoint: Add embedded DMA controller test
> >
> > Serge Semin (2):
> >   dmaengine: dw-edma: Drop dma_slave_config.direction field usage
> >   dmaengine: dw-edma: Fix eDMA Rd/Wr-channels and DMA-direction
> >     semantics
> >
> >  drivers/dma/dw-edma/dw-edma-core.c            | 139 +++++++++++-------
> >  drivers/dma/dw-edma/dw-edma-core.h            |  31 +---
> >  drivers/dma/dw-edma/dw-edma-pcie.c            |  83 +++++------
> >  drivers/dma/dw-edma/dw-edma-v0-core.c         |  54 ++++---
> >  drivers/dma/dw-edma/dw-edma-v0-core.h         |   4 +-
> >  drivers/dma/dw-edma/dw-edma-v0-debugfs.c      |  10 +-
> >  drivers/pci/endpoint/functions/pci-epf-test.c | 108 ++++++++++++--
> >  include/linux/dma/edma.h                      |  59 +++++++-
> >  8 files changed, 312 insertions(+), 176 deletions(-)
> >
> > --
> > 2.35.1
> >
Serge Semin April 22, 2022, 6:13 p.m. UTC | #3
On Fri, Apr 22, 2022 at 12:57:32PM -0500, Zhi Li wrote:
> On Fri, Apr 22, 2022 at 12:53 PM Serge Semin <fancer.lancer@gmail.com> wrote:
> >
> > Hello folks,
> >
> > My review is finally over. Aside with that I've tested the series on
> > Baikal-T1 SoC, which has DW PCIe Host controller v4.60 and DW eDMA
> > embedded. A test was performed on kernel v5.18-rc3 by a simple driver
> > copying random data from system memory to SM768 framebuffer and
> > vise-versa. So @Frank feel free to add my tag to the entire series:
> >
> > Tested-by: Serge Semin <fancer.lancer@gmail.com>
> 

> Thanks. I think the maintainer can add this when they pick up the patches.
> I will add it if patches need to be respin.

Right, 'b4 am -t' does the trick.

-Sergey

> 
> best regards
> Frank Li
> 
> >
> > @Lorenzo, @Rob, @Vinod, my patchset:
> > Link: https://lore.kernel.org/linux-pci/20220324014836.19149-1-Sergey.Semin@baikalelectronics.ru
> > is based on this one. In its turn my series depends on the other
> > patchsets:
> > [PATCH v2 0/4] clk: Baikal-T1 DDR/PCIe resets and some xGMAC fixes
> > Link: [https://lore.kernel.org/linux-pci/20220330144320.27039-1-Sergey.Semin@baikalelectronics.ru
> > [PATCH 00/12] PCI: dwc: Various fixes and cleanups
> > Link: https://lore.kernel.org/linux-pci/20220324012524.16784-1-Sergey.Semin@baikalelectronics.ru
> > [PATCH 00/16] PCI: dwc: Add dma-ranges/YAML-schema/Baikal-T1 support
> > https://lore.kernel.org/linux-pci/20220324013734.18234-1-Sergey.Semin@baikalelectronics.ru
> > which are currently on review. (BTW @Rob I am waiting for your
> > responses there to go on with v2 re-spin.) I am very much eager to get
> > my patches ready before the next merge windows. But in order to
> > preserve the consistency of the corresponding repo with my patchsets
> > it needs to have the @Frank' patches. Seeing aside with @Frank's
> > series my changes depends on the changes in the clk and pci
> > subsystems, could you please consider choosing a single repository for
> > merging all my and @Frank patches in. Since the changes mostly concern
> > the DW PCIe controller I suggest to use the 'pci/dwc' branch of the
> > 'kernel/git/lpieralisi/pci.git' repository. What do you think?
> > @Lorenzo?
> >
> > -Sergey
> >
> > On Fri, Apr 22, 2022 at 09:36:34AM -0500, Frank Li wrote:
> > > Default Designware EDMA just probe remotely at host side.
> > > This patch allow EDMA driver can probe at EP side.
> > >
> > > 1. Clean up patch
> > >    dmaengine: dw-edma: Detach the private data and chip info structures
> > >    dmaengine: dw-edma: Remove unused field irq in struct dw_edma_chip
> > >    dmaengine: dw-edma: Change rg_region to reg_base in struct
> > >    dmaengine: dw-edma: rename wr(rd)_ch_cnt to ll_wr(rd)_cnt in struct
> > >
> > > 2. Enhance EDMA driver to allow prode eDMA at EP side
> > >    dmaengine: dw-edma: Add support for chip specific flags
> > >    dmaengine: dw-edma: Add DW_EDMA_CHIP_32BIT_DBI for chip specific flags
> > >
> > > 3. Bugs fix at EDMA driver when probe eDMA at EP side
> > >    dmaengine: dw-edma: Fix programming the source & dest addresses for ep
> > >    dmaengine: dw-edma: Don't rely on the deprecated "direction" member
> > >
> > > 4. change pci-epf-test to use EDMA driver to transfer data.
> > >    PCI: endpoint: Add embedded DMA controller test
> > >
> > > 5. Using imx8dxl to do test, but some EP functions still have not
> > > upstream yet. So below patch show how probe eDMA driver at EP
> > > controller driver.
> > > https://lore.kernel.org/linux-pci/20220309120149.GB134091@thinkpad/T/#m979eb506c73ab3cfca2e7a43635ecdaec18d8097
> > >
> > > Frank Li (7):
> > >   dmaengine: dw-edma: Remove unused field irq in struct dw_edma_chip
> > >   dmaengine: dw-edma: Detach the private data and chip info structures
> > >   dmaengine: dw-edma: Change rg_region to reg_base in struct
> > >     dw_edma_chip
> > >   dmaengine: dw-edma: Rename wr(rd)_ch_cnt to ll_wr(rd)_cnt in struct
> > >     dw_edma_chip
> > >   dmaengine: dw-edma: Add support for chip specific flags
> > >   dmaengine: dw-edma: Add DW_EDMA_CHIP_32BIT_DBI for chip specific flags
> > >   PCI: endpoint: Add embedded DMA controller test
> > >
> > > Serge Semin (2):
> > >   dmaengine: dw-edma: Drop dma_slave_config.direction field usage
> > >   dmaengine: dw-edma: Fix eDMA Rd/Wr-channels and DMA-direction
> > >     semantics
> > >
> > >  drivers/dma/dw-edma/dw-edma-core.c            | 139 +++++++++++-------
> > >  drivers/dma/dw-edma/dw-edma-core.h            |  31 +---
> > >  drivers/dma/dw-edma/dw-edma-pcie.c            |  83 +++++------
> > >  drivers/dma/dw-edma/dw-edma-v0-core.c         |  54 ++++---
> > >  drivers/dma/dw-edma/dw-edma-v0-core.h         |   4 +-
> > >  drivers/dma/dw-edma/dw-edma-v0-debugfs.c      |  10 +-
> > >  drivers/pci/endpoint/functions/pci-epf-test.c | 108 ++++++++++++--
> > >  include/linux/dma/edma.h                      |  59 +++++++-
> > >  8 files changed, 312 insertions(+), 176 deletions(-)
> > >
> > > --
> > > 2.35.1
> > >