[PATCH 1/2] Revert "ASoC: meson: axg-tdm-interface: manage formatters in trigger"

Jerome Brunet jbrunet at baylibre.com
Thu Apr 21 09:17:02 PDT 2022


On Thu 21 Apr 2022 at 17:57, Neil Armstrong <narmstrong at baylibre.com> wrote:

> This reverts commit bf5e4887eeddb48480568466536aa08ec7f179a5 because
> the following and required commit e138233e56e9829e65b6293887063a1a3ccb2d68
> causes the following system crash when using audio:
>  BUG: sleeping function called from invalid context at kernel/locking/mutex.c:282
>
> Reported-by: Dmitry Shmidt <dimitrysh at google.com>
> Signed-off-by: Neil Armstrong <narmstrong at baylibre.com>

For both:
Acked-by: Jerome Brunet <jbrunet at baylibre.com>

The main reason for the this was to be able to configure the start order
between the DPCM Backend and Frontend. Only the trigger() callback has
that capability for now.

This HW require the BE to start before FE, otherwise channels get randomly
shifted in the output stream if there is more than 2 slots on the link,
mainly on the capture path.

This HW require mutexes to handle the TDM formatters (because it uses
the CCF API). This why I moved to non-atomic to use trigger(),
forgetting that doing so would make period_elapsed() take a mutex from
the IRQ ... :/

To properly fix this, I'll need to extend ASoC so the prepare() callback
BE/FE call order can also be configured.




More information about the linux-amlogic mailing list