From: mpa@pengutronix.de (Markus Pargmann)
To: linux-arm-kernel@lists.infradead.org
Subject: [RFC] ASoC: pcm: Trigger all commands on error
Date: Wed, 9 Oct 2013 15:05:53 +0200 [thread overview]
Message-ID: <20131009130553.GD19005@pengutronix.de> (raw)
In-Reply-To: <20131008104457.GA21581@sirena.org.uk>
On Tue, Oct 08, 2013 at 11:44:57AM +0100, Mark Brown wrote:
> On Tue, Oct 08, 2013 at 11:48:39AM +0200, Markus Pargmann wrote:
> > On Tue, Oct 08, 2013 at 10:34:13AM +0100, Mark Brown wrote:
>
> > > I meant just unwinding the things done in the trigger call.
>
> > You mean unwinding when we detect the error? If we return the
> > error code from the trigger function, the pcm_native.c will still
> > trigger a STOP command which is executed on all components.
>
> Sure, but it's another way of getting consistency and does seem a bit
> more obvious.
It is still not consistent as we get an additional STOP after cleanly
unwinding the START:
snd_pcm_do_start()
soc_pcm_trigger() # START
codec_dai->driver->ops->trigger() # START
platform->driver->ops->trigger() # Assuming an error here
unwind:
codec_dai->driver->ops->trigger() # STOP
A failed snd_pcm_do_start() is detected, so undo_start is called:
snd_pcm_undo_start()
soc_pcm_trigger() # STOP
codec_dai->driver->ops->trigger() # STOP
platform->driver->ops->trigger() # STOP
cpu_dai->driver->ops->trigger() # STOP
Now all component trigger functions are called without a matching START
command.
>
> > > > Another possibility is to explicitly allow multiple _STOPs. Then I could
> > > > fix the driver to store the clock state. But I would prefer a generic
> > > > solution.
>
> > > You're going to have to handle this anyway to be robust - what happens
> > > if it's the clock enable that fails?
>
> > If clk_enable fails, we can return an error code in the mxs-saif trigger
> > function. Of course the error handling is missing here, but it is not
> > necessary to store the state of the clock to handle errors properly.
>
> Right, but then _STOP will be called without the clock having been
> successfully enabled so you'll have an unbalanced clk_disable().
_STOP is only called as long as the error handling is not working
properly. Otherwise STOP should not be called for a failed START.
Regards,
Markus
--
Pengutronix e.K. | |
Industrial Linux Solutions | http://www.pengutronix.de/ |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
next prev parent reply other threads:[~2013-10-09 13:05 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-10-04 10:53 [RFC] ASoC: pcm: Trigger all commands on error Markus Pargmann
2013-10-07 17:27 ` Mark Brown
2013-10-08 8:29 ` Markus Pargmann
2013-10-08 9:34 ` Mark Brown
2013-10-08 9:48 ` Markus Pargmann
2013-10-08 10:44 ` Mark Brown
2013-10-09 13:05 ` Markus Pargmann [this message]
2013-10-09 13:20 ` Mark Brown
2013-10-09 14:12 ` Markus Pargmann
2013-10-09 14:59 ` Mark Brown
2013-10-10 8:40 ` Markus Pargmann
2013-10-10 12:35 ` Mark Brown
[not found] ` <1381329076-12022-1-git-send-email-mpa@pengutronix.de>
2013-10-09 18:22 ` [alsa-devel] [RFC v2] ASoC: pcm: Store component running state Mark Brown
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20131009130553.GD19005@pengutronix.de \
--to=mpa@pengutronix.de \
--cc=linux-arm-kernel@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).