[alsa-devel] Contents of Alsa-devel digest...
Junhwa Rhee
junhwa.rhee at gmail.com
Fri Jun 18 06:59:35 CEST 2010
On Jun 18, 2010, at 11:38 AM, alsa-devel-request at alsa-project.org wrote:
> Send Alsa-devel mailing list submissions to
> alsa-devel at alsa-project.org
>
> To subscribe or unsubscribe via the World Wide Web, visit
> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
> or, via email, send a message with subject or body 'help' to
> alsa-devel-request at alsa-project.org
>
> You can reach the person managing the list at
> alsa-devel-owner at alsa-project.org
>
> When replying, please edit your Subject line so it is more specific
> than "Re: Contents of Alsa-devel digest..."
>
>
> Today's Topics:
>
> 1. Re: [PATCH 2/5] ALSA: usb-audio: unify UAC macros and struct
> names (Daniel Mack)
> 2. Re: Timing Info (Clemens Ladisch)
> 3. Re: [PATCH] ASoC: pandora: fix CLKX polarity (Mark Brown)
> 4. [PATCH] ALSA: hda - add ideapad model for Conexant 5051 codec
> (Herton Ronaldo Krzesinski)
> 5. Re: [PATCH] ALSA: hda - add ideapad model for Conexant 5051
> codec (Takashi Iwai)
> 6. Re: snd_mixer_selem_get_playback_volume return value outside
> allowed range (Raymond Yau)
> 7. Re: [PATCH] eukrea-tlv320: add support for our i.MX25 board
> (Mark Brown)
> 8. SOC_DOUBLE_R_SX_TLV (was Update on TLV320AIC3204 Driver)
> (Stuart Longland)
>
>
> ----------------------------------------------------------------------
>
> Message: 1
> Date: Thu, 17 Jun 2010 17:26:26 +0200
> From: Daniel Mack <daniel at caiaq.de>
> Subject: Re: [alsa-devel] [PATCH 2/5] ALSA: usb-audio: unify UAC
> macros and struct names
> To: Alex Lee <alexlee188 at gmail.com>
> Cc: Takashi Iwai <tiwai at suse.de>, "alsa-devel at alsa-project.org"
> <alsa-devel at alsa-project.org>, "clemens at ladisch.de"
> <clemens at ladisch.de>
> Message-ID: <20100617152626.GL17833 at buzzloop.caiaq.de>
> Content-Type: text/plain; charset=us-ascii
>
> (hint, hint: don't top-post :))
>
> On Thu, Jun 17, 2010 at 08:21:22AM -0700, Alex Lee wrote:
>> It will not help existing codes, I agree. But it may make writing new UAC2
>> specific code easier?
>
> Not as long as most of the code stays hybrid for both versions. If there
> were versions of these enum values for both UAC1 and UAC2, you would
> need to choose one of them in the parser codes. Which one you go for
> doesn't actually make any difference as they're both the same, but the
> code would read as if it was specific to any version.
>
> I'd say this would add more to the confusion, and not ease any.
>
>
> Daniel
>
>
>
> ------------------------------
>
> Message: 2
> Date: Thu, 17 Jun 2010 17:36:59 +0200
> From: Clemens Ladisch <clemens at ladisch.de>
> Subject: Re: [alsa-devel] Timing Info
> To: Paul Dugas <paul at dugasenterprises.com>
> Cc: alsa-devel at alsa-project.org
> Message-ID: <4C1A411B.2060301 at ladisch.de>
> Content-Type: text/plain; charset=us-ascii
>
> Paul Dugas wrote:
>> On Sun, Jun 13, 2010 at 10:10 AM, Clemens Ladisch <clemens at ladisch.de> wrote:
>>> Set SND_PCM_TSTAMP_ENABLE to generate a timestamp whenever the hardware
>>> position is updated. Call snd_pcm_status to read the position and the
>>> corresponding timestamp.
>>
>> I've re-read this a number of times and have been fiddling with code
>> that dumps the status at various points but I'm still not grasping the
>> concept here. Can comeone point me to an explanation of the delay,
>> avail, and avail_max values?
>
> The avail value tells you how many frames are available, i.e., can be
> written, in the output buffer. The largest value that this had since
> the last snd_pcm_status call is avail_max.
>
> The delay value is the time that will elapse before the next frame that
> you write into the buffer will actually be output by the hardware. This
> is not only the time until the hardware reads this frame out of the
> buffer (which could be computed from avail) but also any processing
> after that.
>
>
> HTH
> Clemens
>
>
> ------------------------------
>
> Message: 3
> Date: Thu, 17 Jun 2010 16:50:01 +0100
> From: Mark Brown <broonie at opensource.wolfsonmicro.com>
> Subject: Re: [alsa-devel] [PATCH] ASoC: pandora: fix CLKX polarity
> To: Grazvydas Ignotas <notasas at gmail.com>, alsa-devel at alsa-project.org
> Cc: lrg at slimlogic.co.uk
> Message-ID: <u6g5khs6pbrq63fngu2ncjvv.1276789801383 at email.android.com>
> Content-Type: text/plain; charset=utf-8
>
> Acked-by: Mark Brown <broonie at opensource.wolfsonmicro.com>
>
> Probably best to add a CC to stable too. Sorry about the rubbish formatting, on my phone and it can't do any better.
>
> Grazvydas Ignotas <notasas at gmail.com> wrote:
>
>> After mass production started it was found that several boards exhibit
>> noise problems during sound playback. After some investigation it was
>> determined that CLKX polarity is set incorrectly, and even if most boards
>> can tolerate the wrong setting, there are some that don't.
>>
>> Fix polarity setup in the board file. As the clock settings for input and
>> output now match, merge in and out functions and structures to simplify
>> code.
>>
>> Signed-off-by: Grazvydas Ignotas <notasas at gmail.com>
>> ---
>> sound/soc/omap/omap3pandora.c | 36 ++++++++----------------------------
>> 1 files changed, 8 insertions(+), 28 deletions(-)
>>
>> diff --git a/sound/soc/omap/omap3pandora.c b/sound/soc/omap/omap3pandora.c
>> index 87ce842..9eecac1 100644
>> --- a/sound/soc/omap/omap3pandora.c
>> +++ b/sound/soc/omap/omap3pandora.c
>> @@ -43,12 +43,14 @@
>>
>> static struct regulator *omap3pandora_dac_reg;
>>
>> -static int omap3pandora_cmn_hw_params(struct snd_pcm_substream *substream,
>> - struct snd_pcm_hw_params *params, unsigned int fmt)
>> +static int omap3pandora_hw_params(struct snd_pcm_substream *substream,
>> + struct snd_pcm_hw_params *params)
>> {
>> struct snd_soc_pcm_runtime *rtd = substream->private_data;
>> struct snd_soc_dai *codec_dai = rtd->dai->codec_dai;
>> struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
>> + int fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF |
>> + SND_SOC_DAIFMT_CBS_CFS;
>> int ret;
>>
>> /* Set codec DAI configuration */
>> @@ -91,24 +93,6 @@ static int omap3pandora_cmn_hw_params(struct snd_pcm_substream *substream,
>> return 0;
>> }
>>
>> -static int omap3pandora_out_hw_params(struct snd_pcm_substream *substream,
>> - struct snd_pcm_hw_params *params)
>> -{
>> - return omap3pandora_cmn_hw_params(substream, params,
>> - SND_SOC_DAIFMT_I2S |
>> - SND_SOC_DAIFMT_IB_NF |
>> - SND_SOC_DAIFMT_CBS_CFS);
>> -}
>> -
>> -static int omap3pandora_in_hw_params(struct snd_pcm_substream *substream,
>> - struct snd_pcm_hw_params *params)
>> -{
>> - return omap3pandora_cmn_hw_params(substream, params,
>> - SND_SOC_DAIFMT_I2S |
>> - SND_SOC_DAIFMT_NB_NF |
>> - SND_SOC_DAIFMT_CBS_CFS);
>> -}
>> -
>> static int omap3pandora_dac_event(struct snd_soc_dapm_widget *w,
>> struct snd_kcontrol *k, int event)
>> {
>> @@ -231,12 +215,8 @@ static int omap3pandora_in_init(struct snd_soc_codec *codec)
>> return snd_soc_dapm_sync(codec);
>> }
>>
>> -static struct snd_soc_ops omap3pandora_out_ops = {
>> - .hw_params = omap3pandora_out_hw_params,
>> -};
>> -
>> -static struct snd_soc_ops omap3pandora_in_ops = {
>> - .hw_params = omap3pandora_in_hw_params,
>> +static struct snd_soc_ops omap3pandora_ops = {
>> + .hw_params = omap3pandora_hw_params,
>> };
>>
>> /* Digital audio interface glue - connects codec <--> CPU */
>> @@ -246,14 +226,14 @@ static struct snd_soc_dai_link omap3pandora_dai[] = {
>> .stream_name = "HiFi Out",
>> .cpu_dai = &omap_mcbsp_dai[0],
>> .codec_dai = &twl4030_dai[TWL4030_DAI_HIFI],
>> - .ops = &omap3pandora_out_ops,
>> + .ops = &omap3pandora_ops,
>> .init = omap3pandora_out_init,
>> }, {
>> .name = "TWL4030",
>> .stream_name = "Line/Mic In",
>> .cpu_dai = &omap_mcbsp_dai[1],
>> .codec_dai = &twl4030_dai[TWL4030_DAI_HIFI],
>> - .ops = &omap3pandora_in_ops,
>> + .ops = &omap3pandora_ops,
>> .init = omap3pandora_in_init,
>> }
>> };
>> --
>> 1.6.3.3
>>
>
> ------------------------------
>
> Message: 4
> Date: Thu, 17 Jun 2010 14:15:06 -0300
> From: Herton Ronaldo Krzesinski <herton at mandriva.com.br>
> Subject: [alsa-devel] [PATCH] ALSA: hda - add ideapad model for
> Conexant 5051 codec
> To: alsa-devel at alsa-project.org
> Cc: Takashi Iwai <tiwai at suse.de>
> Message-ID: <201006171415.07101.herton at mandriva.com.br>
> Content-Type: Text/Plain; charset="us-ascii"
>
> Lenovo IdeaPad Y430 has an additional subwoofer connected at pin 0x1b,
> which isn't muted when headphone is plugged in. This adds additional
> support to the extra subwoofer via new ideapad model.
>
> Signed-off-by: Herton Ronaldo Krzesinski <herton at mandriva.com.br>
> ---
> Documentation/sound/alsa/HD-Audio-Models.txt | 1 +
> sound/pci/hda/patch_conexant.c | 20 ++++++++++++++++++++
> 2 files changed, 21 insertions(+), 0 deletions(-)
>
> diff --git a/Documentation/sound/alsa/HD-Audio-Models.txt
> b/Documentation/sound/alsa/HD-Audio-Models.txt
> index 1d38b0d..84e81ad 100644
> --- a/Documentation/sound/alsa/HD-Audio-Models.txt
> +++ b/Documentation/sound/alsa/HD-Audio-Models.txt
> @@ -282,6 +282,7 @@ Conexant 5051
> hp HP Spartan laptop
> hp-dv6736 HP dv6736
> hp-f700 HP Compaq Presario F700
> + ideapad Lenovo IdeaPad laptop
> lenovo-x200 Lenovo X200 laptop
> toshiba Toshiba Satellite M300
>
> diff --git a/sound/pci/hda/patch_conexant.c b/sound/pci/hda/patch_conexant.c
> index 2bf2cb5..54f7419 100644
> --- a/sound/pci/hda/patch_conexant.c
> +++ b/sound/pci/hda/patch_conexant.c
> @@ -1632,6 +1632,11 @@ static void cxt5051_update_speaker(struct hda_codec
> *codec)
> pinctl = (!spec->hp_present && spec->cur_eapd) ? PIN_OUT : 0;
> snd_hda_codec_write(codec, 0x1a, 0, AC_VERB_SET_PIN_WIDGET_CONTROL,
> pinctl);
> + /* on ideapad there is an aditional speaker (subwoofer) to mute */
> + if (spec->ideapad)
> + snd_hda_codec_write(codec, 0x1b, 0,
> + AC_VERB_SET_PIN_WIDGET_CONTROL,
> + pinctl);
> }
>
> /* turn on/off EAPD (+ mute HP) as a master switch */
> @@ -1888,6 +1893,13 @@ static void cxt5051_init_mic_port(struct hda_codec
> *codec, hda_nid_t nid,
> #endif
> }
>
> +static struct hda_verb cxt5051_ideapad_init_verbs[] = {
> + /* Subwoofer */
> + {0x1b, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT},
> + {0x1b, AC_VERB_SET_CONNECT_SEL, 0x00},
> + { } /* end */
> +};
> +
> /* initialize jack-sensing, too */
> static int cxt5051_init(struct hda_codec *codec)
> {
> @@ -1917,6 +1929,7 @@ enum {
> CXT5051_LENOVO_X200, /* Lenovo X200 laptop, also used for Advanced Mini
> Dock 250410 */
> CXT5051_F700, /* HP Compaq Presario F700 */
> CXT5051_TOSHIBA, /* Toshiba M300 & co */
> + CXT5051_IDEAPAD, /* Lenovo IdeaPad Y430 */
> CXT5051_MODELS
> };
>
> @@ -1927,6 +1940,7 @@ static const char *cxt5051_models[CXT5051_MODELS] = {
> [CXT5051_LENOVO_X200] = "lenovo-x200",
> [CXT5051_F700] = "hp-700",
> [CXT5051_TOSHIBA] = "toshiba",
> + [CXT5051_IDEAPAD] = "ideapad",
> };
>
> static struct snd_pci_quirk cxt5051_cfg_tbl[] = {
> @@ -1938,6 +1952,7 @@ static struct snd_pci_quirk cxt5051_cfg_tbl[] = {
> CXT5051_LAPTOP),
> SND_PCI_QUIRK(0x14f1, 0x5051, "HP Spartan 1.1", CXT5051_HP),
> SND_PCI_QUIRK(0x17aa, 0x20f2, "Lenovo X200", CXT5051_LENOVO_X200),
> + SND_PCI_QUIRK(0x17aa, 0x3a0d, "Lenovo IdeaPad", CXT5051_IDEAPAD),
> {}
> };
>
> @@ -1999,6 +2014,11 @@ static int patch_cxt5051(struct hda_codec *codec)
> spec->mixers[0] = cxt5051_toshiba_mixers;
> spec->auto_mic = AUTO_MIC_PORTB;
> break;
> + case CXT5051_IDEAPAD:
> + spec->init_verbs[spec->num_init_verbs++] =
> + cxt5051_ideapad_init_verbs;
> + spec->ideapad = 1;
> + break;
> }
>
> return 0;
> --
> 1.7.1
>
>
>
> ------------------------------
>
> Message: 5
> Date: Thu, 17 Jun 2010 20:39:20 +0200
> From: Takashi Iwai <tiwai at suse.de>
> Subject: Re: [alsa-devel] [PATCH] ALSA: hda - add ideapad model for
> Conexant 5051 codec
> To: Herton Ronaldo Krzesinski <herton at mandriva.com.br>
> Cc: alsa-devel at alsa-project.org
> Message-ID: <s5hk4pxld0n.wl%tiwai at suse.de>
> Content-Type: text/plain; charset=US-ASCII
>
> At Thu, 17 Jun 2010 14:15:06 -0300,
> Herton Ronaldo Krzesinski wrote:
>>
>> Lenovo IdeaPad Y430 has an additional subwoofer connected at pin 0x1b,
>> which isn't muted when headphone is plugged in. This adds additional
>> support to the extra subwoofer via new ideapad model.
>>
>> Signed-off-by: Herton Ronaldo Krzesinski <herton at mandriva.com.br>
>
> Thanks, applied now.
>
>
> Takashi
>
>> ---
>> Documentation/sound/alsa/HD-Audio-Models.txt | 1 +
>> sound/pci/hda/patch_conexant.c | 20 ++++++++++++++++++++
>> 2 files changed, 21 insertions(+), 0 deletions(-)
>>
>> diff --git a/Documentation/sound/alsa/HD-Audio-Models.txt
>> b/Documentation/sound/alsa/HD-Audio-Models.txt
>> index 1d38b0d..84e81ad 100644
>> --- a/Documentation/sound/alsa/HD-Audio-Models.txt
>> +++ b/Documentation/sound/alsa/HD-Audio-Models.txt
>> @@ -282,6 +282,7 @@ Conexant 5051
>> hp HP Spartan laptop
>> hp-dv6736 HP dv6736
>> hp-f700 HP Compaq Presario F700
>> + ideapad Lenovo IdeaPad laptop
>> lenovo-x200 Lenovo X200 laptop
>> toshiba Toshiba Satellite M300
>>
>> diff --git a/sound/pci/hda/patch_conexant.c b/sound/pci/hda/patch_conexant.c
>> index 2bf2cb5..54f7419 100644
>> --- a/sound/pci/hda/patch_conexant.c
>> +++ b/sound/pci/hda/patch_conexant.c
>> @@ -1632,6 +1632,11 @@ static void cxt5051_update_speaker(struct hda_codec
>> *codec)
>> pinctl = (!spec->hp_present && spec->cur_eapd) ? PIN_OUT : 0;
>> snd_hda_codec_write(codec, 0x1a, 0, AC_VERB_SET_PIN_WIDGET_CONTROL,
>> pinctl);
>> + /* on ideapad there is an aditional speaker (subwoofer) to mute */
>> + if (spec->ideapad)
>> + snd_hda_codec_write(codec, 0x1b, 0,
>> + AC_VERB_SET_PIN_WIDGET_CONTROL,
>> + pinctl);
>> }
>>
>> /* turn on/off EAPD (+ mute HP) as a master switch */
>> @@ -1888,6 +1893,13 @@ static void cxt5051_init_mic_port(struct hda_codec
>> *codec, hda_nid_t nid,
>> #endif
>> }
>>
>> +static struct hda_verb cxt5051_ideapad_init_verbs[] = {
>> + /* Subwoofer */
>> + {0x1b, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT},
>> + {0x1b, AC_VERB_SET_CONNECT_SEL, 0x00},
>> + { } /* end */
>> +};
>> +
>> /* initialize jack-sensing, too */
>> static int cxt5051_init(struct hda_codec *codec)
>> {
>> @@ -1917,6 +1929,7 @@ enum {
>> CXT5051_LENOVO_X200, /* Lenovo X200 laptop, also used for Advanced Mini
>> Dock 250410 */
>> CXT5051_F700, /* HP Compaq Presario F700 */
>> CXT5051_TOSHIBA, /* Toshiba M300 & co */
>> + CXT5051_IDEAPAD, /* Lenovo IdeaPad Y430 */
>> CXT5051_MODELS
>> };
>>
>> @@ -1927,6 +1940,7 @@ static const char *cxt5051_models[CXT5051_MODELS] = {
>> [CXT5051_LENOVO_X200] = "lenovo-x200",
>> [CXT5051_F700] = "hp-700",
>> [CXT5051_TOSHIBA] = "toshiba",
>> + [CXT5051_IDEAPAD] = "ideapad",
>> };
>>
>> static struct snd_pci_quirk cxt5051_cfg_tbl[] = {
>> @@ -1938,6 +1952,7 @@ static struct snd_pci_quirk cxt5051_cfg_tbl[] = {
>> CXT5051_LAPTOP),
>> SND_PCI_QUIRK(0x14f1, 0x5051, "HP Spartan 1.1", CXT5051_HP),
>> SND_PCI_QUIRK(0x17aa, 0x20f2, "Lenovo X200", CXT5051_LENOVO_X200),
>> + SND_PCI_QUIRK(0x17aa, 0x3a0d, "Lenovo IdeaPad", CXT5051_IDEAPAD),
>> {}
>> };
>>
>> @@ -1999,6 +2014,11 @@ static int patch_cxt5051(struct hda_codec *codec)
>> spec->mixers[0] = cxt5051_toshiba_mixers;
>> spec->auto_mic = AUTO_MIC_PORTB;
>> break;
>> + case CXT5051_IDEAPAD:
>> + spec->init_verbs[spec->num_init_verbs++] =
>> + cxt5051_ideapad_init_verbs;
>> + spec->ideapad = 1;
>> + break;
>> }
>>
>> return 0;
>> --
>> 1.7.1
>>
>
>
> ------------------------------
>
> Message: 6
> Date: Fri, 18 Jun 2010 07:39:07 +0800
> From: Raymond Yau <superquad.vortex2 at gmail.com>
> Subject: Re: [alsa-devel] snd_mixer_selem_get_playback_volume return
> value outside allowed range
> To: ALSA Development Mailing List <alsa-devel at alsa-project.org>
> Message-ID:
> <AANLkTin7y2JzkaCYb4p69uDfWOo4cTa85in0Q3l7RwbD at mail.gmail.com>
> Content-Type: text/plain; charset=ISO-8859-1
>
> 2010/6/17 Clemens Ladisch <clemens at ladisch.de>
>
>> Raymond Yau wrote:
>>> Should snd_mixer_selem_get_playback_volume() perform range check ?
>>
>> No, it's the responsibility of the control implementation to return
>> valid values (and to check that values that are being set are valid).
>>
>>
>> Regards,
>> Clemens
>>
>
> If it is the responsibility of the driver/external plugin to keep the value
> inside the allowed range
>
> your patch actually help those buggy driver/external plugin hide the bug
> only
>
>
> ------------------------------
>
> Message: 7
> Date: Fri, 18 Jun 2010 01:56:37 +0100
> From: Mark Brown <broonie at opensource.wolfsonmicro.com>
> Subject: Re: [alsa-devel] [PATCH] eukrea-tlv320: add support for our
> i.MX25 board
> To: Eric B?nard <eric at eukrea.com>
> Cc: alsa-devel at alsa-project.org, s.hauer at pengutronix.de,
> lrg at slimlogic.co.uk
> Message-ID: <20100618005637.GA3333 at opensource.wolfsonmicro.com>
> Content-Type: text/plain; charset=iso-8859-1
>
> On Thu, Jun 17, 2010 at 03:44:01PM +0200, Eric B?nard wrote:
>> * tdm slot has to be configured to get sound working on i.MX25
>>
>> Signed-off-by: Eric B?nard <eric at eukrea.com>
>
> Applied but I had to hand apply the Kconfig update, please check that it
> applied correctly.
>
>
> ------------------------------
>
> Message: 8
> Date: Fri, 18 Jun 2010 12:38:10 +1000
> From: Stuart Longland <redhatter at gentoo.org>
> Subject: [alsa-devel] SOC_DOUBLE_R_SX_TLV (was Update on TLV320AIC3204
> Driver)
> To: Mark Brown <broonie at opensource.wolfsonmicro.com>
> Cc: Takashi Iwai <tiwai at suse.de>, alsa-devel at alsa-project.org, Eric
> B??nard <eric at eukrea.com>, Liam Girdwood <lrg at slimlogic.co.uk>
> Message-ID: <20100618023810.GS7759 at www.longlandclan.yi.org>
> Content-Type: text/plain; charset=us-ascii
>
> On Tue, Jun 15, 2010 at 03:11:10PM +1000, Stuart Longland wrote:
>> When a read is performed, this structure points to this function as the
>> means for reading the register (defined in sound/soc-core.c):
>>
>> /**
>> * snd_soc_get_volsw_2r_sx - double with tlv and variable data size
>> * mixer get callback
>> * @kcontrol: mixer control
>> * @uinfo: control element information
>> *
>> * Returns 0 for success.
>> */
>> int snd_soc_get_volsw_2r_sx(struct snd_kcontrol *kcontrol,
>> struct snd_ctl_elem_value *ucontrol)
>> {
>> struct soc_mixer_control *mc =
>> (struct soc_mixer_control *)kcontrol->private_value;
>> struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
>> unsigned int mask = (1<<mc->shift)-1;
>> int min = mc->min;
>> int val = snd_soc_read(codec, mc->reg) & mask;
>> int valr = snd_soc_read(codec, mc->rreg) & mask;
>>
>> ucontrol->value.integer.value[0] = ((val & 0xff)-min);
>> ucontrol->value.integer.value[1] = ((valr & 0xff)-min);
>> return 0;
>> }
>> EXPORT_SYMBOL_GPL(snd_soc_get_volsw_2r_sx);
>
> I've figured it out now... and there'll be a patch to fix it.
>
> The mute <--> gain interaction was pure coincidence as it turns out.
> There's no interaction between the two, just that when I toggle the
> mute, the gain gets re-read, and hence it *appeared* to interact.
>
> Notice the value calculated for the channel is:
>
> output = ( regval & 0xff ) - minimum
>
> In my case, my minimum is -6. Suppose I set my driver gain to -1dB, in
> hexadecimal, 0x3f. Since no sign extension is done, (regval & 0xff) =
> 63. Adding 6 to this (double negation) you get 69... which is greater
> than the maximum gain of 29. Hence the scale shoots up to maximum.
>
> The fix, is to change the above so that they mask the result; thus
> wrapping around the zero point like so:
>
> output = ( ( regval & 0xff ) - minimum ) & mask
>
> This fixes the problem that I observe, and shouldn't break the other
> user of the control. A patch to fix this issue is coming.
> --
> Stuart Longland (aka Redhatter, VK4MSL) .'''.
> Gentoo Linux/MIPS Cobalt and Docs Developer '.'` :
> . . . . . . . . . . . . . . . . . . . . . . .'.'
> http://dev.gentoo.org/~redhatter :.'
>
> I haven't lost my mind...
> ...it's backed up on a tape somewhere.
>
>
> ------------------------------
>
> _______________________________________________
> Alsa-devel mailing list
> Alsa-devel at alsa-project.org
> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
>
>
> End of Alsa-devel Digest, Vol 40, Issue 80
> ******************************************
More information about the Alsa-devel
mailing list