[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <1jwnfixuwc.fsf@starbuckisacylon.baylibre.com>
Date: Thu, 21 Apr 2022 18:17:02 +0200
From: Jerome Brunet <jbrunet@...libre.com>
To: Neil Armstrong <narmstrong@...libre.com>, broonie@...nel.org
Cc: alsa-devel@...a-project.org, linux-arm-kernel@...ts.infradead.org,
linux-amlogic@...ts.infradead.org, linux-kernel@...r.kernel.org,
Dmitry Shmidt <dimitrysh@...gle.com>
Subject: Re: [PATCH 1/2] Revert "ASoC: meson: axg-tdm-interface: manage
formatters in trigger"
On Thu 21 Apr 2022 at 17:57, Neil Armstrong <narmstrong@...libre.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@...gle.com>
> Signed-off-by: Neil Armstrong <narmstrong@...libre.com>
For both:
Acked-by: Jerome Brunet <jbrunet@...libre.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.
Powered by blists - more mailing lists