All of lore.kernel.org
 help / color / mirror / Atom feed
From: Vinod Koul <vinod.koul@intel.com>
To: Nenghua Cao <nhcao@marvell.com>
Cc: alsa-devel@alsa-project.org, Takashi Iwai <tiwai@suse.de>,
	Liam Girdwood <lgirdwood@gmail.com>,
	Henry zhao <xzhao10@marvell.com>, Mark Brown <broonie@kernel.org>,
	Yacine Belkadi <yacine.belkadi.1@gmail.com>,
	cxie4@marvell.com
Subject: Re: [PATCH] ASOC:DAPM: update DPCM runtime when mixer/mux changes
Date: Sun, 15 Dec 2013 19:26:31 +0530	[thread overview]
Message-ID: <20131215135630.GS29580@intel.com> (raw)
In-Reply-To: <1386936829-9627-2-git-send-email-nhcao@marvell.com>

On Fri, Dec 13, 2013 at 08:13:49PM +0800, Nenghua Cao wrote:
> From: Nenghua Cao <nhcao@marvell.com>
> 
>     DPCM can dynamically alter the FE to BE PCM links at runtime based
> on mixer/mux setting updates. Add soc_dpcm_runtime_update() calling in
> get/put function for mixer/mux to support this feature.
> 
> Signed-off-by: Nenghua Cao <nhcao@marvell.com>
> ---
>  sound/soc/soc-dapm.c |   28 ++++++++++++++++++++++++----
>  1 files changed, 24 insertions(+), 4 deletions(-)
> 
> diff --git a/sound/soc/soc-dapm.c b/sound/soc/soc-dapm.c
> index dcade13..67e63ab 100644
> --- a/sound/soc/soc-dapm.c
> +++ b/sound/soc/soc-dapm.c
> @@ -2868,6 +2868,7 @@ int snd_soc_dapm_put_volsw(struct snd_kcontrol *kcontrol,
>  	unsigned int val;
>  	int connect, change;
>  	struct snd_soc_dapm_update update;
> +	int ret = 0;
>  
>  	if (snd_soc_volsw_is_stereo(mc))
>  		dev_warn(codec->dapm.dev,
> @@ -2901,12 +2902,16 @@ int snd_soc_dapm_put_volsw(struct snd_kcontrol *kcontrol,
>  			card->update = &update;
>  		}
>  
> -		soc_dapm_mixer_update_power(card, kcontrol, connect);
> +		ret = soc_dapm_mixer_update_power(card, kcontrol, connect);
>  
>  		card->update = NULL;
>  	}
>  
>  	mutex_unlock(&card->dapm_mutex);
> +
> +	if (ret > 0)
> +		soc_dpcm_runtime_update(card);
This version looks much better! Btw would it make sense to have flag in card
for dynmaic support and call soc_dpcm_runtime_update() for only these cards?

--
~Vinod
> +
>  	return change;
>  }
>  EXPORT_SYMBOL_GPL(snd_soc_dapm_put_volsw);
> @@ -2955,6 +2960,7 @@ int snd_soc_dapm_put_enum_double(struct snd_kcontrol *kcontrol,
>  	unsigned int val, mux, change;
>  	unsigned int mask;
>  	struct snd_soc_dapm_update update;
> +	int ret = 0;
>  
>  	if (ucontrol->value.enumerated.item[0] > e->max - 1)
>  		return -EINVAL;
> @@ -2978,12 +2984,16 @@ int snd_soc_dapm_put_enum_double(struct snd_kcontrol *kcontrol,
>  		update.val = val;
>  		card->update = &update;
>  
> -		soc_dapm_mux_update_power(card, kcontrol, mux, e);
> +		ret = soc_dapm_mux_update_power(card, kcontrol, mux, e);
>  
>  		card->update = NULL;
>  	}
>  
>  	mutex_unlock(&card->dapm_mutex);
> +
> +	if (ret > 0)
> +		soc_dpcm_runtime_update(card);
> +
>  	return change;
>  }
>  EXPORT_SYMBOL_GPL(snd_soc_dapm_put_enum_double);
> @@ -3019,6 +3029,7 @@ int snd_soc_dapm_put_enum_virt(struct snd_kcontrol *kcontrol,
>  	struct soc_enum *e =
>  		(struct soc_enum *)kcontrol->private_value;
>  	int change;
> +	int ret = 0;
>  
>  	if (ucontrol->value.enumerated.item[0] >= e->max)
>  		return -EINVAL;
> @@ -3028,9 +3039,13 @@ int snd_soc_dapm_put_enum_virt(struct snd_kcontrol *kcontrol,
>  	value = ucontrol->value.enumerated.item[0];
>  	change = dapm_kcontrol_set_value(kcontrol, value);
>  	if (change)
> -		soc_dapm_mux_update_power(card, kcontrol, value, e);
> +		ret = soc_dapm_mux_update_power(card, kcontrol, value, e);
>  
>  	mutex_unlock(&card->dapm_mutex);
> +
> +	if (ret > 0)
> +		soc_dpcm_runtime_update(card);
> +
>  	return change;
>  }
>  EXPORT_SYMBOL_GPL(snd_soc_dapm_put_enum_virt);
> @@ -3097,6 +3112,7 @@ int snd_soc_dapm_put_value_enum_double(struct snd_kcontrol *kcontrol,
>  	unsigned int val, mux, change;
>  	unsigned int mask;
>  	struct snd_soc_dapm_update update;
> +	int ret = 0;
>  
>  	if (ucontrol->value.enumerated.item[0] > e->max - 1)
>  		return -EINVAL;
> @@ -3120,12 +3136,16 @@ int snd_soc_dapm_put_value_enum_double(struct snd_kcontrol *kcontrol,
>  		update.val = val;
>  		card->update = &update;
>  
> -		soc_dapm_mux_update_power(card, kcontrol, mux, e);
> +		ret = soc_dapm_mux_update_power(card, kcontrol, mux, e);
>  
>  		card->update = NULL;
>  	}
>  
>  	mutex_unlock(&card->dapm_mutex);
> +
> +	if (ret > 0)
> +		soc_dpcm_runtime_update(card);
> +
>  	return change;
>  }
>  EXPORT_SYMBOL_GPL(snd_soc_dapm_put_value_enum_double);
> -- 
> 1.7.0.4
> 
> _______________________________________________
> Alsa-devel mailing list
> Alsa-devel@alsa-project.org
> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel

-- 

  reply	other threads:[~2013-12-15 14:55 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-12-13 12:13 [PATCH V2] ASOC:DAPM: update DPCM runtime when mixer/mux changes Nenghua Cao
2013-12-13 12:13 ` [PATCH] " Nenghua Cao
2013-12-15 13:56   ` Vinod Koul [this message]
2013-12-16  2:43     ` Nenghua Cao
2013-12-16 20:14   ` Mark Brown
2013-12-16 20:13 ` [PATCH V2] " Mark Brown
2013-12-17  2:59   ` Nenghua Cao
  -- strict thread matches above, loose matches on Subject: below --
2013-12-16  8:03 [PATCH]ASOC:DAPM: " anish singh
2013-12-16  9:06 ` 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=20131215135630.GS29580@intel.com \
    --to=vinod.koul@intel.com \
    --cc=alsa-devel@alsa-project.org \
    --cc=broonie@kernel.org \
    --cc=cxie4@marvell.com \
    --cc=lgirdwood@gmail.com \
    --cc=nhcao@marvell.com \
    --cc=tiwai@suse.de \
    --cc=xzhao10@marvell.com \
    --cc=yacine.belkadi.1@gmail.com \
    /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.