All of lore.kernel.org
 help / color / mirror / Atom feed
From: Lars-Peter Clausen <lars-Qo5EllUWu/uELgA04lAiVw@public.gmane.org>
To: Mark Brown
	<broonie-yzvPICuk2AATkU/dhu1WVueM+bqZidxxQQ4Iyu8u01E@public.gmane.org>
Cc: uclinux-dist-devel-ZG0+EudsQA8dtHy/vicBwGD2FQJk+8+b@public.gmane.org,
	alsa-devel-K7yf7f+aM1XWsZ/bQMPhNw@public.gmane.org,
	Liam Girdwood <lrg-l0cyMroinI0@public.gmane.org>
Subject: Re: [PATCH 2/8] ASoC: Add support for virtual switch controls
Date: Fri, 11 Jan 2013 13:56:17 +0100	[thread overview]
Message-ID: <50F00BF1.6090702@metafoo.de> (raw)
In-Reply-To: <20130111124535.GZ20956-yzvPICuk2AATkU/dhu1WVueM+bqZidxxQQ4Iyu8u01E@public.gmane.org>

On 01/11/2013 01:45 PM, Mark Brown wrote:
> On Fri, Jan 11, 2013 at 01:38:55PM +0100, Lars-Peter Clausen wrote:
>> On 01/11/2013 01:19 PM, Mark Brown wrote:
> 
>>> going to affect everything else in the path).  I'd expect to see
>>> something like this implemented by having a control that has a specified
>>> value forced in the register while the control is enabled (kind of the
>>> opposite of a supply).  This is a fairly common need for older parts
>>> though it's unusual to see it on a new device.
> 
>> I think I want the opposite of what you just described. I want to be able to
>> overwrite the control setting based on the power state.
> 
> Right, just a thinko though - you see the point though.
> 
>> In ASoC I modeled this by letting DAPM take care of mute controls. E.g. the
>> mute control gets disabled if there is an active path from the DAC through
>> the mixer to one of the outputs and gets disabled otherwise. This makes sure
>> that when the DAC is powered down (when there is no active path from the DAC
>> to any of the outputs) each mute control is also enabled. The virtual
>> switches now allow disable a path from the DAC to the mixer, which in turn
>> will cause DAPM to enable the mute control. This is similar to how the
>> virtual enums already work.
> 
> Virtual enums do actually end up routing, that's not what a mute control
> usually does.  You can do the above in the manner I suggested, just have
> the register forced to a particular value when the DAC is disabled.

Well, that's what the code does. The alternative is to implement more or
less in the driver. Have custom put/get callbacks for the controls, which
write to a shadow register, only if the DAC is enabled the shadow value gets
written to the real register. And listen to the DAC powerdown/powerup
events, when it is powered down enable all hw mutes, when it is enabled
restore the shadow register value. The virtual control more or less
implements it in a generic manner so it does not have to be implemented by
each driver which needs this on its own.

- Lars

  parent reply	other threads:[~2013-01-11 12:56 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-01-10 16:06 [PATCH 1/8] regmap: Add support for 24 bit wide register addresses Lars-Peter Clausen
2013-01-10 16:06 ` [PATCH 2/8] ASoC: Add support for virtual switch controls Lars-Peter Clausen
     [not found]   ` <1357833977-3682-2-git-send-email-lars-Qo5EllUWu/uELgA04lAiVw@public.gmane.org>
2013-01-11 12:19     ` Mark Brown
2013-01-11 12:38       ` Lars-Peter Clausen
2013-01-11 12:45         ` Mark Brown
     [not found]           ` <20130111124535.GZ20956-yzvPICuk2AATkU/dhu1WVueM+bqZidxxQQ4Iyu8u01E@public.gmane.org>
2013-01-11 12:56             ` Lars-Peter Clausen [this message]
2013-01-11 13:57               ` Mark Brown
2013-01-11 15:05                 ` Lars-Peter Clausen
     [not found]                   ` <50F02A51.3010108-Qo5EllUWu/uELgA04lAiVw@public.gmane.org>
2013-01-11 15:08                     ` [alsa-devel] " Lars-Peter Clausen
2013-01-11 15:22                     ` Mark Brown
2013-01-11 16:24     ` Mark Brown
     [not found] ` <1357833977-3682-1-git-send-email-lars-Qo5EllUWu/uELgA04lAiVw@public.gmane.org>
2013-01-10 16:06   ` [PATCH 3/8] ASoC: Add ADAU1X61 and ADAU1X81 CODECs common code Lars-Peter Clausen
2013-01-10 16:06   ` [PATCH 4/8] ASoC: Add ADAU1361/ADAU1761 CODEC support Lars-Peter Clausen
2013-01-10 16:06   ` [PATCH 5/8] ASoC: Add ADAU1381/ADAU1781 " Lars-Peter Clausen
2013-01-10 16:06   ` [PATCH 6/8] ASoC: Constify ops and compr_ops fields of snd_soc_dai_link Lars-Peter Clausen
2013-01-13 22:55     ` Mark Brown
2013-01-10 16:06   ` [PATCH 7/8] ASoC: Blackfin: ADAU1X61 eval board support Lars-Peter Clausen
2013-01-10 16:06   ` [PATCH 8/8] ASoC: Blackfin: ADAU1X81 " Lars-Peter Clausen

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=50F00BF1.6090702@metafoo.de \
    --to=lars-qo5elluwu/uelga04laivw@public.gmane.org \
    --cc=alsa-devel-K7yf7f+aM1XWsZ/bQMPhNw@public.gmane.org \
    --cc=broonie-yzvPICuk2AATkU/dhu1WVueM+bqZidxxQQ4Iyu8u01E@public.gmane.org \
    --cc=lrg-l0cyMroinI0@public.gmane.org \
    --cc=uclinux-dist-devel-ZG0+EudsQA8dtHy/vicBwGD2FQJk+8+b@public.gmane.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.