On Thu 09 May 2024 at 05:50, Kuninori Morimoto kuninori.morimoto.gx@renesas.com wrote:
Hi Jerome
I need your help
I have tested this series on an Amlogic device (vim3l) This brings warnings for cases which are perfectly fine.
For example, one of the DPCM backends is the TDM interface. This interface is capable of both playback and capture. It can be associated with any i2s/TDM codec.
The codec may do playback and capture too, but it may also do a single direction. Then usual example is the hdmi codec which does playback only.
In this case I get: axg-sound-card sound: CPU capture is available but Codec capture is not (be.dai-link-6) Please update Codec driver
I don't think this is right.
Hmm..., I'm confusing Does it mean you want to use "playback only" on it ? If so, did you get below warning too ? "both playback/capture are available, but not using playback_only flag (%s)\n",
I've checked. No such trace, no.
If not, can you please fill below ?
Card dpcm_playback = (0 or 1) dpcm_capture = (0 or 1) playback_only = (0 or 1) capture_only = (0 or 1) BE.CPU playback = (available, not available) capture = (available, not available) BE.Codec playback = (available, not available) capture = (available, not available) Expect playback = (available, not available) capture = (available, not available)
I'm not too sure I undestand this. I'll try to illustrate the case raising the warning as precisely as possible bellow
I need feedback from you, it is still not clear for me.
Sorry. There are some national holidays in France. I'm not spending much time near the keyboard ATM
But I noticed that we want to update below. I'm happy if it can solve your issue.
- if (has_playback && !has_playback_both)
- if (has_playback && !has_playback_both && !dai_link->capture_only) dev_warn(rtd->card->dev, ...)
- if (has_capture && !has_capture_both)
- if (has_capture && !has_capture_both && !dai_link->playback_only) dev_warn(rtd->card->dev, ...)
Honestly I'm a bit lost in all these flag :/
Some for BE error reported here is the full picture
PCM =====|===== V -------- |CPU FE| This CPU (FIFO) does Playback only. -------- | Because of the CPU, link a playback only one V ---------- |Codec FE| Using Dummy here ---------- | V ~~~~~~~~~~ |Routing | ~~~~~~~~~~ ^ | V -------- |CPU BE| This is the TDM interface. Capable of both Playback and -------- Capture. Through routing it can be connected to Playback ^ and/or Capture FE CPUs. | | V ------------- |BE Codec(s)| Possibly N codecs, supporting both direction, or a ------------- Single one, or one direction each. In this particular case | it is Playback only C2C. | ---- V ------------------ From Here, it is specific to HDMI ------------- ~~~~~~~~~~~~~ |C2C Routing| SoC has routing has mux between the different TDM ~~~~~~~~~~~~~ interfaces and the HDMI controller | | V --------- |C2C CPU| This is a playback only CPU for HDMI --------- | V ----------- |HDMI Codec| The usual HDMI codec, playback only -----------
Better picture are available in the SoC doc. There is publicly available datasheet here [1]
Audio paths are displayed in Section 9, page 807, Figure 9-1. A TDM interface in this figure is combination of a TDMOUT and a TDMIN (axg-tdm-formatter.c). The axg-tdm-interface.c joins them because they use the same pads and clocks.
[1]: https://dl.khadas.com/products/vim3l/datasheet/s905d3_datasheet_0.2_wesion.p...
Thank you for your help !!
Best regards
Renesas Electronics Ph.D. Kuninori Morimoto