From: Patrick Lai <plai@codeaurora.org>
To: Mark Brown <broonie@opensource.wolfsonmicro.com>
Cc: alsa-devel@alsa-project.org, waiw@codeaurora.org,
pl bossart <bossart.nospam@gmail.com>,
asishb@codeaurora.org, jaywang@codeaurora.org,
Liam Girdwood <lrg@slimlogic.co.uk>
Subject: Re: soc-dsp questions
Date: Sun, 12 Jun 2011 21:55:08 -0700 [thread overview]
Message-ID: <4DF5982C.6070705@codeaurora.org> (raw)
In-Reply-To: <20110611114806.GD2738@opensource.wolfsonmicro.com>
>> Are you referring to fixup function in the machine driver? It works for
>> hardware parameter that is fixed per machine. For example, regardless
>> sample rate of front-ends that are routed to same back-end,
>> back-end sample rate is fixed to 48KHz. I am already taking advantage
>> of the hook.
>
> Yes. Since it's code it *could* do conditional things based on some
> setting if it needs to.
>
Yes, I don't see any better way unless propagating knowledge of
front-end/back-end all the way to user-space. I plan on adding
enumeration of
channel mode in machine driver which sets variable read by the fix up
function. So, CPU and CODEC drivers do not need to provide enumeration
of channel modes. However, same control would have to be added to every
machine driver.
>> Another query I have is how to handle back-end error. The audio bus
>> which is running on my machine requires close coordination between CPU
>> and CODEC. Essentially, if one side is unable to respond to incoming
>> data in time, data exchange halts. I am looking for way to reset both
>> CPU and CODEC back to fresh state. One approach I am thinking is to
>> generate XRUN error(snd_pcm_stop(SNDRV_PCM_STATE_XRUN) and have
>> application call prepare() to reset CPU and CODEC back to good state.
>> I see each back-end is registered as PCM device so it's possible that
>> application can read /dev/snd/timer to get notified. However, do I call
>> prepare() on one of FE PCM devices that are routed to the back end in
>> question? Would this approach work? Any suggestion?
>
> I'd expect that from an application point of view this will just work
> already? The application will just operate on the PCM it's operating on
> and will notice a stall in the same way it does for any other device
> then the front/back end machinery will connect everything up in the same
> way it does for every operation when (if!) the application tries to
> recover.
Yes, I suppose existing mechanism would work if the front-end PCM is not
hostless. Eventually, underrun/overrun would be detected. If front-end
PCM is hostless, host processor for my case would not even know that
Front-end is stalled even though back-end knows. I suppose
we could enhance framework to propagate XRUN error from back-end to
front-end and have front end generate XRUN signal back to user-space.
However, for multiple Front-end to same back end case, all clients of
front-end PCM get notified of XRUN error and all of them call prepare().
I can see there can be adverse effect with such behavior.
Maybe it's easier to recover under the hood without user-space knowing it.
Thanks
Patrick
--
Sent by an employee of the Qualcomm Innovation Center, Inc.
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum.
next prev parent reply other threads:[~2011-06-13 4:55 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-04-25 22:01 soc-dsp questions pl bossart
2011-04-26 9:41 ` Liam Girdwood
2011-04-26 10:18 ` Mark Brown
2011-06-10 6:58 ` Patrick Lai
2011-06-10 9:42 ` Mark Brown
2011-06-11 1:19 ` Patrick Lai
2011-06-11 11:48 ` Mark Brown
2011-06-13 4:55 ` Patrick Lai [this message]
2011-06-13 18:01 ` Liam Girdwood
2011-06-13 17:55 ` Liam Girdwood
2011-06-13 17:49 ` Liam Girdwood
-- strict thread matches above, loose matches on Subject: below --
2011-11-08 8:22 Vinod Koul
2011-11-08 20:20 ` Girdwood, Liam
2011-11-09 8:04 ` Vinod Koul
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=4DF5982C.6070705@codeaurora.org \
--to=plai@codeaurora.org \
--cc=alsa-devel@alsa-project.org \
--cc=asishb@codeaurora.org \
--cc=bossart.nospam@gmail.com \
--cc=broonie@opensource.wolfsonmicro.com \
--cc=jaywang@codeaurora.org \
--cc=lrg@slimlogic.co.uk \
--cc=waiw@codeaurora.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.