Message ID | 1711682887-15676-1-git-send-email-shengjiu.wang@nxp.com (mailing list archive) |
---|---|
State | Handled Elsewhere |
Headers | show |
Series | [RESEND] dmaengine: imx-sdma: support dual fifo for DEV_TO_DEV | expand |
On Fri, Mar 29, 2024 at 11:28:07AM +0800, Shengjiu Wang wrote: > SSI and SPDIF are dual fifo interface, when support ASRC P2P > with SSI and SPDIF, the src fifo or dst fifo number can be > two. > > The p2p watermark level bit 13 and 14 are designed for > these use case. This patch is to complete this function > in driver. > > Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com> > Signed-off-by: Joy Zou <joy.zou@nxp.com> > Acked-by: Iuliana Prodan <iuliana.prodan@nxp.com> This already in my sdma improvement patch list. https://lore.kernel.org/imx/20240318-sdma_upstream-v3-0-da37ddd44d49@nxp.com/T/#m59e4e03a527103de7bf1a7fe86e8fbc570454970 This have more nice commit message. Can I take one into my patch series to avoid conflict. Frank > --- > drivers/dma/imx-sdma.c | 18 +++++++++++++++++- > 1 file changed, 17 insertions(+), 1 deletion(-) > > diff --git a/drivers/dma/imx-sdma.c b/drivers/dma/imx-sdma.c > index 9b42f5e96b1e..079e6e8f4f59 100644 > --- a/drivers/dma/imx-sdma.c > +++ b/drivers/dma/imx-sdma.c > @@ -137,7 +137,11 @@ > * 0: Source on AIPS > * 12 Destination Bit(DP) 1: Destination on SPBA > * 0: Destination on AIPS > - * 13-15 --------- MUST BE 0 > + * 13 Source FIFO 1: Source is dual FIFO > + * 0: Source is single FIFO > + * 14 Destination FIFO 1: Destination is dual FIFO > + * 0: Destination is single FIFO > + * 15 --------- MUST BE 0 > * 16-23 Higher WML HWML > * 24-27 N Total number of samples after > * which Pad adding/Swallowing > @@ -168,6 +172,8 @@ > #define SDMA_WATERMARK_LEVEL_SPDIF BIT(10) > #define SDMA_WATERMARK_LEVEL_SP BIT(11) > #define SDMA_WATERMARK_LEVEL_DP BIT(12) > +#define SDMA_WATERMARK_LEVEL_SD BIT(13) > +#define SDMA_WATERMARK_LEVEL_DD BIT(14) > #define SDMA_WATERMARK_LEVEL_HWML (0xFF << 16) > #define SDMA_WATERMARK_LEVEL_LWE BIT(28) > #define SDMA_WATERMARK_LEVEL_HWE BIT(29) > @@ -1255,6 +1261,16 @@ static void sdma_set_watermarklevel_for_p2p(struct sdma_channel *sdmac) > sdmac->watermark_level |= SDMA_WATERMARK_LEVEL_DP; > > sdmac->watermark_level |= SDMA_WATERMARK_LEVEL_CONT; > + > + /* > + * Limitation: The p2p script support dual fifos in maximum, > + * So when fifo number is larger than 1, force enable dual > + * fifos. > + */ > + if (sdmac->n_fifos_src > 1) > + sdmac->watermark_level |= SDMA_WATERMARK_LEVEL_SD; > + if (sdmac->n_fifos_dst > 1) > + sdmac->watermark_level |= SDMA_WATERMARK_LEVEL_DD; > } > > static void sdma_set_watermarklevel_for_sais(struct sdma_channel *sdmac) > -- > 2.34.1 >
On Fri, Mar 29, 2024 at 12:18 PM Frank Li <Frank.li@nxp.com> wrote: > > On Fri, Mar 29, 2024 at 11:28:07AM +0800, Shengjiu Wang wrote: > > SSI and SPDIF are dual fifo interface, when support ASRC P2P > > with SSI and SPDIF, the src fifo or dst fifo number can be > > two. > > > > The p2p watermark level bit 13 and 14 are designed for > > these use case. This patch is to complete this function > > in driver. > > > > Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com> > > Signed-off-by: Joy Zou <joy.zou@nxp.com> > > Acked-by: Iuliana Prodan <iuliana.prodan@nxp.com> > > This already in my sdma improvement patch list. > > https://lore.kernel.org/imx/20240318-sdma_upstream-v3-0-da37ddd44d49@nxp.com/T/#m59e4e03a527103de7bf1a7fe86e8fbc570454970 > > This have more nice commit message. Can I take one into my patch series to > avoid conflict. Yes, please. best regards wang shengjiu > > Frank > > > --- > > drivers/dma/imx-sdma.c | 18 +++++++++++++++++- > > 1 file changed, 17 insertions(+), 1 deletion(-) > > > > diff --git a/drivers/dma/imx-sdma.c b/drivers/dma/imx-sdma.c > > index 9b42f5e96b1e..079e6e8f4f59 100644 > > --- a/drivers/dma/imx-sdma.c > > +++ b/drivers/dma/imx-sdma.c > > @@ -137,7 +137,11 @@ > > * 0: Source on AIPS > > * 12 Destination Bit(DP) 1: Destination on SPBA > > * 0: Destination on AIPS > > - * 13-15 --------- MUST BE 0 > > + * 13 Source FIFO 1: Source is dual FIFO > > + * 0: Source is single FIFO > > + * 14 Destination FIFO 1: Destination is dual FIFO > > + * 0: Destination is single FIFO > > + * 15 --------- MUST BE 0 > > * 16-23 Higher WML HWML > > * 24-27 N Total number of samples after > > * which Pad adding/Swallowing > > @@ -168,6 +172,8 @@ > > #define SDMA_WATERMARK_LEVEL_SPDIF BIT(10) > > #define SDMA_WATERMARK_LEVEL_SP BIT(11) > > #define SDMA_WATERMARK_LEVEL_DP BIT(12) > > +#define SDMA_WATERMARK_LEVEL_SD BIT(13) > > +#define SDMA_WATERMARK_LEVEL_DD BIT(14) > > #define SDMA_WATERMARK_LEVEL_HWML (0xFF << 16) > > #define SDMA_WATERMARK_LEVEL_LWE BIT(28) > > #define SDMA_WATERMARK_LEVEL_HWE BIT(29) > > @@ -1255,6 +1261,16 @@ static void sdma_set_watermarklevel_for_p2p(struct sdma_channel *sdmac) > > sdmac->watermark_level |= SDMA_WATERMARK_LEVEL_DP; > > > > sdmac->watermark_level |= SDMA_WATERMARK_LEVEL_CONT; > > + > > + /* > > + * Limitation: The p2p script support dual fifos in maximum, > > + * So when fifo number is larger than 1, force enable dual > > + * fifos. > > + */ > > + if (sdmac->n_fifos_src > 1) > > + sdmac->watermark_level |= SDMA_WATERMARK_LEVEL_SD; > > + if (sdmac->n_fifos_dst > 1) > > + sdmac->watermark_level |= SDMA_WATERMARK_LEVEL_DD; > > } > > > > static void sdma_set_watermarklevel_for_sais(struct sdma_channel *sdmac) > > -- > > 2.34.1 > >
diff --git a/drivers/dma/imx-sdma.c b/drivers/dma/imx-sdma.c index 9b42f5e96b1e..079e6e8f4f59 100644 --- a/drivers/dma/imx-sdma.c +++ b/drivers/dma/imx-sdma.c @@ -137,7 +137,11 @@ * 0: Source on AIPS * 12 Destination Bit(DP) 1: Destination on SPBA * 0: Destination on AIPS - * 13-15 --------- MUST BE 0 + * 13 Source FIFO 1: Source is dual FIFO + * 0: Source is single FIFO + * 14 Destination FIFO 1: Destination is dual FIFO + * 0: Destination is single FIFO + * 15 --------- MUST BE 0 * 16-23 Higher WML HWML * 24-27 N Total number of samples after * which Pad adding/Swallowing @@ -168,6 +172,8 @@ #define SDMA_WATERMARK_LEVEL_SPDIF BIT(10) #define SDMA_WATERMARK_LEVEL_SP BIT(11) #define SDMA_WATERMARK_LEVEL_DP BIT(12) +#define SDMA_WATERMARK_LEVEL_SD BIT(13) +#define SDMA_WATERMARK_LEVEL_DD BIT(14) #define SDMA_WATERMARK_LEVEL_HWML (0xFF << 16) #define SDMA_WATERMARK_LEVEL_LWE BIT(28) #define SDMA_WATERMARK_LEVEL_HWE BIT(29) @@ -1255,6 +1261,16 @@ static void sdma_set_watermarklevel_for_p2p(struct sdma_channel *sdmac) sdmac->watermark_level |= SDMA_WATERMARK_LEVEL_DP; sdmac->watermark_level |= SDMA_WATERMARK_LEVEL_CONT; + + /* + * Limitation: The p2p script support dual fifos in maximum, + * So when fifo number is larger than 1, force enable dual + * fifos. + */ + if (sdmac->n_fifos_src > 1) + sdmac->watermark_level |= SDMA_WATERMARK_LEVEL_SD; + if (sdmac->n_fifos_dst > 1) + sdmac->watermark_level |= SDMA_WATERMARK_LEVEL_DD; } static void sdma_set_watermarklevel_for_sais(struct sdma_channel *sdmac)