All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mark Brown <broonie@opensource.wolfsonmicro.com>
To: Patrick Lai <plai@codeaurora.org>
Cc: alsa-devel@vger.kernel.org, linux-arm-msm@vger.kernel.org,
	lrg@slimlogic.co.uk
Subject: Re: [QUERY] Download calibration data to co-processor
Date: Tue, 25 Jan 2011 13:36:43 +0000	[thread overview]
Message-ID: <20110125133643.GD31453@opensource.wolfsonmicro.com> (raw)
In-Reply-To: <4D3E6A0D.40308@codeaurora.org>

On Mon, Jan 24, 2011 at 10:13:33PM -0800, Patrick Lai wrote:

> co-processor under ALSA framework. I would like to know if there is
> already a precedent which handles this use case. I considered
> request_firmware() approach but there are few drawbacks to this
> approach.  The audio calibration data size can be substantial
> as number of audio use cases grows. It also requires co-processor

What we're doing for this currently is passing the configuration data in
platform data or via request_firmware()  (mostly using the latter for
larger data).  At the minute we're loading everything at startup rather
than on demand, with the drivers presenting an enum with the available
use cases if there's more than one.

> perform extensive parsing of data. Furthermore, host processor and
> co-processor need to establish common use case definitions so
> co-processor know what chunk of calibration data to apply in certain
> scenario such as device switch.

I don't understand the issue with either parsing cost or with listing
use cases - I'd expect that for multiple use cases the host processor
and (if required) the coprocessor would parse the set of use cases out
of the data (for many systems the coprocessor won't know anything about
use cases and they'll be managed by the host reprogramming coefficients
to switch), and I'd expect that either the format will be defined to
something readily usable or the host can do the required processing.
Could you elaborate on the issues here, it's possible I'm missing
something about the sort of data you're looking at?

> If there is no precedent, my idea is to apply calibration data
> through sysfs. After introduction of ASoC multi-component
> architecture, PCM stream created from dailink is registered as
> device. So, there is syfs entry for each dailink. If ALSA ASoC can
> provide API for drivers(platform/CPU) to register additional
> attributes to the PCM device, this approach gives user-space
> application the ability to push down new calibration as audio
> situation changes. I believe it's a viable solution to my problem
> and perhaps can be useful to other systems as well.

I'm not enthused about sysfs for this as it means applications end up
needing custom infrastructure for individual cards, or UCM needs to end
up integrating that anyway, so we'd have some issues at the application
level when writing generic code for multiple systems - we'd need support
for enumerating and understanding the available settings.  In terms of
actually loading the data it doesn't really offer anything that
request_firmware() doesn't except for a push interface and it's not got
the existing userspace infrastructure that request_firmware() does.

Thinking off the top of my head I think we're reasonably covered from
the point of view of actually injecting data already but we currently
don't have a way to add additional data at runtime (eg, when doing a
calibration run).  If we added a way for applications to say "I'd like
to add some new coefficients to this feature" then that would address
that aspect of things, I think?

  reply	other threads:[~2011-01-25 13:36 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-01-25  6:13 [QUERY] Download calibration data to co-processor Patrick Lai
2011-01-25 13:36 ` Mark Brown [this message]
2011-01-26  7:58   ` Patrick Lai
2011-01-26 13:10     ` Mark Brown
2011-01-26 13:10     ` Mark Brown
2011-01-26  7:58   ` Patrick Lai
2011-01-25 13:36 ` Mark Brown
2011-01-25  6:13 Patrick Lai

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=20110125133643.GD31453@opensource.wolfsonmicro.com \
    --to=broonie@opensource.wolfsonmicro.com \
    --cc=alsa-devel@vger.kernel.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=lrg@slimlogic.co.uk \
    --cc=plai@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.