* [PATCH 0/3] ...and three more fixes for the new generic parser
@ 2013-01-16 14:58 David Henningsson
2013-01-16 14:58 ` [PATCH 1/3] ALSA: hda - do not add non-existing Mic boost controls David Henningsson
` (3 more replies)
0 siblings, 4 replies; 5+ messages in thread
From: David Henningsson @ 2013-01-16 14:58 UTC (permalink / raw)
To: tiwai, alsa-devel; +Cc: David Henningsson
These regressions were found when running the test tool over even more
alsa-infos.
Btw, would you mind updating the hda-migrate branch too? It's useful
to have your latest fixes from the hda-gen-parser branch when I'm running
pre-release QA testing.
David Henningsson (3):
ALSA: hda - do not add non-existing Mic boost controls
ALSA: hda - force different capture controls if amp caps differ
ALSA: hda - Make sure fill_all_dac_nids is called for digital only
codecs
sound/pci/hda/hda_generic.c | 31 ++++++++++++++++++++++++++-----
1 file changed, 26 insertions(+), 5 deletions(-)
--
1.7.9.5
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 1/3] ALSA: hda - do not add non-existing Mic boost controls
2013-01-16 14:58 [PATCH 0/3] ...and three more fixes for the new generic parser David Henningsson
@ 2013-01-16 14:58 ` David Henningsson
2013-01-16 14:58 ` [PATCH 2/3] ALSA: hda - force different capture controls if amp caps differ David Henningsson
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: David Henningsson @ 2013-01-16 14:58 UTC (permalink / raw)
To: tiwai, alsa-devel; +Cc: David Henningsson
If the input node does not have any volume capable input amp,
don't add such a control.
Signed-off-by: David Henningsson <david.henningsson@canonical.com>
---
sound/pci/hda/hda_generic.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/sound/pci/hda/hda_generic.c b/sound/pci/hda/hda_generic.c
index 3ef38da..72325a9 100644
--- a/sound/pci/hda/hda_generic.c
+++ b/sound/pci/hda/hda_generic.c
@@ -2820,6 +2820,9 @@ static int parse_mic_boost(struct hda_codec *codec)
struct nid_path *path;
unsigned int val;
+ if (!nid_has_volume(codec, nid, HDA_INPUT))
+ continue;
+
label = hda_get_autocfg_input_label(codec, cfg, i);
if (prev_label && !strcmp(label, prev_label))
type_idx++;
--
1.7.9.5
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 2/3] ALSA: hda - force different capture controls if amp caps differ
2013-01-16 14:58 [PATCH 0/3] ...and three more fixes for the new generic parser David Henningsson
2013-01-16 14:58 ` [PATCH 1/3] ALSA: hda - do not add non-existing Mic boost controls David Henningsson
@ 2013-01-16 14:58 ` David Henningsson
2013-01-16 14:58 ` [PATCH 3/3] ALSA: hda - Make sure fill_all_dac_nids is called for digital only codecs David Henningsson
2013-01-16 15:26 ` [PATCH 0/3] ...and three more fixes for the new generic parser Takashi Iwai
3 siblings, 0 replies; 5+ messages in thread
From: David Henningsson @ 2013-01-16 14:58 UTC (permalink / raw)
To: tiwai, alsa-devel; +Cc: David Henningsson
Otherwise setting the capture volume for amps will be weird and
inconsistent (it will try to set values outside the range of the
second amp based on capabilities of the first amp).
Signed-off-by: David Henningsson <david.henningsson@canonical.com>
---
sound/pci/hda/hda_generic.c | 24 +++++++++++++++++++++---
1 file changed, 21 insertions(+), 3 deletions(-)
diff --git a/sound/pci/hda/hda_generic.c b/sound/pci/hda/hda_generic.c
index 72325a9..a05cbab 100644
--- a/sound/pci/hda/hda_generic.c
+++ b/sound/pci/hda/hda_generic.c
@@ -484,6 +484,15 @@ static bool check_amp_caps(struct hda_codec *codec, hda_nid_t nid,
return false;
}
+static bool same_amp_caps(struct hda_codec *codec, hda_nid_t nid1,
+ hda_nid_t nid2, int dir)
+{
+ if (!(get_wcaps(codec, nid1) & (1 << (dir + 1))))
+ return !(get_wcaps(codec, nid2) & (1 << (dir + 1)));
+ return (query_amp_caps(codec, nid1, dir) ==
+ query_amp_caps(codec, nid2, dir));
+}
+
#define nid_has_mute(codec, nid, dir) \
check_amp_caps(codec, nid, dir, AC_AMPCAP_MUTE)
#define nid_has_volume(codec, nid, dir) \
@@ -2762,6 +2771,7 @@ static int create_capture_mixers(struct hda_codec *codec)
for (n = 0; n < nums; n++) {
bool multi = false;
+ bool multi_cap_vol = spec->multi_cap_vol;
bool inv_dmic = false;
int vol, sw;
@@ -2774,12 +2784,20 @@ static int create_capture_mixers(struct hda_codec *codec)
parse_capvol_in_path(codec, path);
if (!vol)
vol = path->ctls[NID_PATH_VOL_CTL];
- else if (vol != path->ctls[NID_PATH_VOL_CTL])
+ else if (vol != path->ctls[NID_PATH_VOL_CTL]) {
multi = true;
+ if (!same_amp_caps(codec, vol,
+ path->ctls[NID_PATH_VOL_CTL], HDA_INPUT))
+ multi_cap_vol = true;
+ }
if (!sw)
sw = path->ctls[NID_PATH_MUTE_CTL];
- else if (sw != path->ctls[NID_PATH_MUTE_CTL])
+ else if (sw != path->ctls[NID_PATH_MUTE_CTL]) {
multi = true;
+ if (!same_amp_caps(codec, sw,
+ path->ctls[NID_PATH_MUTE_CTL], HDA_INPUT))
+ multi_cap_vol = true;
+ }
if (is_inv_dmic_pin(codec, spec->imux_pins[i]))
inv_dmic = true;
}
@@ -2787,7 +2805,7 @@ static int create_capture_mixers(struct hda_codec *codec)
if (!multi)
err = create_single_cap_vol_ctl(codec, n, vol, sw,
inv_dmic);
- else if (!spec->multi_cap_vol)
+ else if (!multi_cap_vol)
err = create_bind_cap_vol_ctl(codec, n, vol, sw);
else
err = create_multi_cap_vol_ctl(codec);
--
1.7.9.5
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 3/3] ALSA: hda - Make sure fill_all_dac_nids is called for digital only codecs
2013-01-16 14:58 [PATCH 0/3] ...and three more fixes for the new generic parser David Henningsson
2013-01-16 14:58 ` [PATCH 1/3] ALSA: hda - do not add non-existing Mic boost controls David Henningsson
2013-01-16 14:58 ` [PATCH 2/3] ALSA: hda - force different capture controls if amp caps differ David Henningsson
@ 2013-01-16 14:58 ` David Henningsson
2013-01-16 15:26 ` [PATCH 0/3] ...and three more fixes for the new generic parser Takashi Iwai
3 siblings, 0 replies; 5+ messages in thread
From: David Henningsson @ 2013-01-16 14:58 UTC (permalink / raw)
To: tiwai, alsa-devel; +Cc: David Henningsson
Otherwise no PCM will be built for codecs without analog I/O.
Signed-off-by: David Henningsson <david.henningsson@canonical.com>
---
sound/pci/hda/hda_generic.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/sound/pci/hda/hda_generic.c b/sound/pci/hda/hda_generic.c
index a05cbab..e671c77 100644
--- a/sound/pci/hda/hda_generic.c
+++ b/sound/pci/hda/hda_generic.c
@@ -1510,8 +1510,6 @@ static int parse_output_paths(struct hda_codec *codec)
bool best_wired = true, best_mio = true;
bool hp_spk_swapped = false;
- fill_all_dac_nids(codec);
-
best_cfg = kmalloc(sizeof(*best_cfg), GFP_KERNEL);
if (!best_cfg)
return -ENOMEM;
@@ -3422,6 +3420,8 @@ int snd_hda_gen_parse_auto_config(struct hda_codec *codec,
cfg = &spec->autocfg;
}
+ fill_all_dac_nids(codec);
+
if (!cfg->line_outs) {
if (cfg->dig_outs || cfg->dig_in_pin) {
spec->multiout.max_channels = 2;
--
1.7.9.5
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH 0/3] ...and three more fixes for the new generic parser
2013-01-16 14:58 [PATCH 0/3] ...and three more fixes for the new generic parser David Henningsson
` (2 preceding siblings ...)
2013-01-16 14:58 ` [PATCH 3/3] ALSA: hda - Make sure fill_all_dac_nids is called for digital only codecs David Henningsson
@ 2013-01-16 15:26 ` Takashi Iwai
3 siblings, 0 replies; 5+ messages in thread
From: Takashi Iwai @ 2013-01-16 15:26 UTC (permalink / raw)
To: David Henningsson; +Cc: alsa-devel
At Wed, 16 Jan 2013 15:58:42 +0100,
David Henningsson wrote:
>
> These regressions were found when running the test tool over even more
> alsa-infos.
Thanks, applied now.
> Btw, would you mind updating the hda-migrate branch too? It's useful
> to have your latest fixes from the hda-gen-parser branch when I'm running
> pre-release QA testing.
OK, done.
Takashi
> David Henningsson (3):
> ALSA: hda - do not add non-existing Mic boost controls
> ALSA: hda - force different capture controls if amp caps differ
> ALSA: hda - Make sure fill_all_dac_nids is called for digital only
> codecs
>
> sound/pci/hda/hda_generic.c | 31 ++++++++++++++++++++++++++-----
> 1 file changed, 26 insertions(+), 5 deletions(-)
>
> --
> 1.7.9.5
>
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2013-01-16 15:26 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-01-16 14:58 [PATCH 0/3] ...and three more fixes for the new generic parser David Henningsson
2013-01-16 14:58 ` [PATCH 1/3] ALSA: hda - do not add non-existing Mic boost controls David Henningsson
2013-01-16 14:58 ` [PATCH 2/3] ALSA: hda - force different capture controls if amp caps differ David Henningsson
2013-01-16 14:58 ` [PATCH 3/3] ALSA: hda - Make sure fill_all_dac_nids is called for digital only codecs David Henningsson
2013-01-16 15:26 ` [PATCH 0/3] ...and three more fixes for the new generic parser Takashi Iwai
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).