From: Peter Ujfalusi <peter.ujfalusi@ti.com>
To: Lars-Peter Clausen <lars@metafoo.de>,
Mark Brown <broonie@kernel.org>,
Liam Girdwood <lgirdwood@gmail.com>
Cc: alsa-devel@alsa-project.org
Subject: Re: [PATCH 2/3] ASoC: twl4030: Use virtual DAPM mixer controls
Date: Mon, 7 Oct 2013 12:07:22 +0300 [thread overview]
Message-ID: <525279CA.50608@ti.com> (raw)
In-Reply-To: <1381059831-16074-2-git-send-email-lars@metafoo.de>
On 10/06/2013 02:43 PM, Lars-Peter Clausen wrote:
> By using the new virtual DAPM mixer controls it is possible to remove the
> twl4030 specific implementation of virtual controls.
Acked-by: Peter Ujfalusi <peter.ujflausi@ti.com>
>
> Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
> ---
> sound/soc/codecs/twl4030.c | 80 +++++++++++++++++++++-------------------------
> 1 file changed, 36 insertions(+), 44 deletions(-)
>
> diff --git a/sound/soc/codecs/twl4030.c b/sound/soc/codecs/twl4030.c
> index 1e3884d..dfc51bb 100644
> --- a/sound/soc/codecs/twl4030.c
> +++ b/sound/soc/codecs/twl4030.c
> @@ -46,13 +46,7 @@
> /* TWL4030 PMBR1 Register GPIO6 mux bits */
> #define TWL4030_GPIO6_PWM0_MUTE(value) ((value & 0x03) << 2)
>
> -/* Shadow register used by the audio driver */
> -#define TWL4030_REG_SW_SHADOW 0x4A
> -#define TWL4030_CACHEREGNUM (TWL4030_REG_SW_SHADOW + 1)
> -
> -/* TWL4030_REG_SW_SHADOW (0x4A) Fields */
> -#define TWL4030_HFL_EN 0x01
> -#define TWL4030_HFR_EN 0x02
> +#define TWL4030_CACHEREGNUM (TWL4030_REG_MISC_SET_2 + 1)
>
> /*
> * twl4030 register cache & default register settings
> @@ -132,7 +126,6 @@ static const u8 twl4030_reg[TWL4030_CACHEREGNUM] = {
> 0x00, /* REG_VIBRA_PWM_SET (0x47) */
> 0x00, /* REG_ANAMIC_GAIN (0x48) */
> 0x00, /* REG_MISC_SET_2 (0x49) */
> - 0x00, /* REG_SW_SHADOW (0x4A) - Shadow, non HW register */
> };
>
> /* codec private data */
> @@ -198,42 +191,41 @@ static int twl4030_write(struct snd_soc_codec *codec,
> int write_to_reg = 0;
>
> twl4030_write_reg_cache(codec, reg, value);
> - if (likely(reg < TWL4030_REG_SW_SHADOW)) {
> - /* Decide if the given register can be written */
> - switch (reg) {
> - case TWL4030_REG_EAR_CTL:
> - if (twl4030->earpiece_enabled)
> - write_to_reg = 1;
> - break;
> - case TWL4030_REG_PREDL_CTL:
> - if (twl4030->predrivel_enabled)
> - write_to_reg = 1;
> - break;
> - case TWL4030_REG_PREDR_CTL:
> - if (twl4030->predriver_enabled)
> - write_to_reg = 1;
> - break;
> - case TWL4030_REG_PRECKL_CTL:
> - if (twl4030->carkitl_enabled)
> - write_to_reg = 1;
> - break;
> - case TWL4030_REG_PRECKR_CTL:
> - if (twl4030->carkitr_enabled)
> - write_to_reg = 1;
> - break;
> - case TWL4030_REG_HS_GAIN_SET:
> - if (twl4030->hsl_enabled || twl4030->hsr_enabled)
> - write_to_reg = 1;
> - break;
> - default:
> - /* All other register can be written */
> + /* Decide if the given register can be written */
> + switch (reg) {
> + case TWL4030_REG_EAR_CTL:
> + if (twl4030->earpiece_enabled)
> write_to_reg = 1;
> - break;
> - }
> - if (write_to_reg)
> - return twl_i2c_write_u8(TWL4030_MODULE_AUDIO_VOICE,
> - value, reg);
> + break;
> + case TWL4030_REG_PREDL_CTL:
> + if (twl4030->predrivel_enabled)
> + write_to_reg = 1;
> + break;
> + case TWL4030_REG_PREDR_CTL:
> + if (twl4030->predriver_enabled)
> + write_to_reg = 1;
> + break;
> + case TWL4030_REG_PRECKL_CTL:
> + if (twl4030->carkitl_enabled)
> + write_to_reg = 1;
> + break;
> + case TWL4030_REG_PRECKR_CTL:
> + if (twl4030->carkitr_enabled)
> + write_to_reg = 1;
> + break;
> + case TWL4030_REG_HS_GAIN_SET:
> + if (twl4030->hsl_enabled || twl4030->hsr_enabled)
> + write_to_reg = 1;
> + break;
> + default:
> + /* All other register can be written */
> + write_to_reg = 1;
> + break;
> }
> + if (write_to_reg)
> + return twl_i2c_write_u8(TWL4030_MODULE_AUDIO_VOICE,
> + value, reg);
> +
> return 0;
> }
>
> @@ -532,7 +524,7 @@ SOC_DAPM_ENUM("Route", twl4030_handsfreel_enum);
>
> /* Handsfree Left virtual mute */
> static const struct snd_kcontrol_new twl4030_dapm_handsfreelmute_control =
> - SOC_DAPM_SINGLE("Switch", TWL4030_REG_SW_SHADOW, 0, 1, 0);
> + SOC_DAPM_SINGLE_VIRT("Switch", 1);
>
> /* Handsfree Right */
> static const char *twl4030_handsfreer_texts[] =
> @@ -548,7 +540,7 @@ SOC_DAPM_ENUM("Route", twl4030_handsfreer_enum);
>
> /* Handsfree Right virtual mute */
> static const struct snd_kcontrol_new twl4030_dapm_handsfreermute_control =
> - SOC_DAPM_SINGLE("Switch", TWL4030_REG_SW_SHADOW, 1, 1, 0);
> + SOC_DAPM_SINGLE_VIRT("Switch", 1);
>
> /* Vibra */
> /* Vibra audio path selection */
>
--
Péter
next prev parent reply other threads:[~2013-10-07 9:07 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-10-06 11:43 [PATCH 1/3] ASoC: dapm: Add support for virtual mixer controls Lars-Peter Clausen
2013-10-06 11:43 ` [PATCH 2/3] ASoC: twl4030: Use virtual DAPM " Lars-Peter Clausen
2013-10-07 9:07 ` Peter Ujfalusi [this message]
2013-10-07 9:09 ` Peter Ujfalusi
2013-10-07 10:50 ` Mark Brown
2013-10-06 11:43 ` [PATCH 3/3] ASoC: twl6040: " Lars-Peter Clausen
2013-10-07 9:07 ` Peter Ujfalusi
2013-10-07 9:11 ` Peter Ujfalusi
2013-10-07 10:49 ` Mark Brown
2013-10-07 9:10 ` [PATCH 1/3] ASoC: dapm: Add support for virtual " Peter Ujfalusi
2013-10-07 10:45 ` 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=525279CA.50608@ti.com \
--to=peter.ujfalusi@ti.com \
--cc=alsa-devel@alsa-project.org \
--cc=broonie@kernel.org \
--cc=lars@metafoo.de \
--cc=lgirdwood@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.