[PATCH v3 0/5] ASoC: fsl_asrc/fsl_easrc: expose per-pair/context DAIs and fix DMA race
[email protected] Tue, 4 Aug 2026 18:02:13 +0800
| Newsgroups | gmane.linux.ports.ppc.embedded |
|---|---|
| Message-ID | <20260804100218.49587-1-shengjiu.wang__13654.8253170744$1785837388$gmane$org@oss.nxp.com> |
From: Shengjiu Wang <[email protected]> This series extends the i.MX ASRC and EASRC drivers to expose one DAI per hardware conversion pair/context, allowing multiple independent conversion paths to be active simultaneously. Patches 1-2 update the DT bindings to add a ports container so each conversion path can be wired independently in the audio graph. The old single port property is kept but marked deprecated. Patch 3 moves dma_params into struct fsl_asrc_pair so each pair owns its own copy, and registers it with the cpu DAI using per-direction setters in fsl_asrc_dma_startup(). This removes the per-DAI probe callbacks from fsl_asrc.c and fsl_easrc.c, which are no longer needed. Patches 4-5 expose the individual DAIs: fsl_asrc registers three DAIs (asrc-0/1/2) and fsl_easrc registers four (easrc-0/1/2/3). The first DAI in each driver retains the original generic stream names for backward compatibility with existing machine drivers. Changes since v2: - add ports example to original example case in yaml file as port is deprecated - remove the label in example. Changes since v1: - Patch 3 is new: moves dma_params into struct fsl_asrc_pair (one per pair) - Per-direction snd_soc_dai_dma_data_set_playback/capture used instead of snd_soc_dai_init_dma_data to avoid clearing the other direction - dma_params_tx/rx removed from struct fsl_asrc; single dma_params per pair suffices because each pair is unidirectional - per-DAI probe callbacks removed (startup now sets dma_data) - Cover letter and commit messages updated to reflect the above - DAI names changed: paira/pairb/pairc -> asrc-0/asrc-1/asrc-2, ctxa/ctxb/ctxc/ctxd -> easrc-0/easrc-1/easrc-2/easrc-3; use index-based naming consistent with port@N in the DT binding - Stream names changed: ASRCB/ASRCC/ASRCD -> ASRC1/ASRC2/ASRC3; align with the index-based DAI names above - Binding port descriptions updated: pair A/B/C -> conversion path 0/1/2; hardware-agnostic wording to match port@N numbering Shengjiu Wang (5): ASoC: dt-bindings: fsl,imx-asrc: update port binding to support multiple paths ASoC: dt-bindings: fsl,easrc: add ports binding for multiple conversion paths ASoC: fsl_asrc/fsl_easrc: move DMA params into pair/context struct ASoC: fsl_asrc: expose individual DAIs per conversion path ASoC: fsl_easrc: expose individual DAIs per conversion path .../devicetree/bindings/sound/fsl,easrc.yaml | 45 +++++++ .../bindings/sound/fsl,imx-asrc.yaml | 45 ++++++- sound/soc/fsl/fsl_asrc.c | 100 +++++++++----- sound/soc/fsl/fsl_asrc_common.h | 7 +- sound/soc/fsl/fsl_asrc_dma.c | 14 ++ sound/soc/fsl/fsl_easrc.c | 123 +++++++++++++----- 6 files changed, 263 insertions(+), 71 deletions(-) -- 2.34.1