summaryrefslogtreecommitdiff
path: root/sound/pci/hda
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2013-01-17 15:53:29 +0100
committerTakashi Iwai <tiwai@suse.de>2013-01-17 15:53:29 +0100
commit0ffd534eb164fbc87e91fc54a217247ea0cfbabc (patch)
tree5c43c98bc039f7fcdb4a74437d5378ea6540d2d0 /sound/pci/hda
parent7a71bbf310cda13a713aab0c1dcf888707a54286 (diff)
ALSA: hda - Record all detected ADCs in hda_gen_spec
Since the generic parser reduces the ADC list, copy the list of the all detected ADCs and keep it. This list can be later referred by the codec driver for finer power controls. Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/pci/hda')
-rw-r--r--sound/pci/hda/hda_generic.c5
-rw-r--r--sound/pci/hda/hda_generic.h4
2 files changed, 8 insertions, 1 deletions
diff --git a/sound/pci/hda/hda_generic.c b/sound/pci/hda/hda_generic.c
index 9c06749738b1..fc3f24113ce3 100644
--- a/sound/pci/hda/hda_generic.c
+++ b/sound/pci/hda/hda_generic.c
@@ -2368,6 +2368,11 @@ static int fill_adc_nids(struct hda_codec *codec)
break;
}
spec->num_adc_nids = nums;
+
+ /* copy the detected ADCs to all_adcs[] */
+ spec->num_all_adcs = nums;
+ memcpy(spec->all_adcs, spec->adc_nids, nums * sizeof(hda_nid_t));
+
return nums;
}
diff --git a/sound/pci/hda/hda_generic.h b/sound/pci/hda/hda_generic.h
index 43a8482ed2b3..a0486b1b4da4 100644
--- a/sound/pci/hda/hda_generic.h
+++ b/sound/pci/hda/hda_generic.h
@@ -142,9 +142,11 @@ struct hda_gen_spec {
unsigned int dyn_adc_idx[HDA_MAX_NUM_INPUTS];
hda_nid_t shared_mic_vref_pin;
- /* DAC list */
+ /* DAC/ADC lists */
int num_all_dacs;
hda_nid_t all_dacs[16];
+ int num_all_adcs;
+ hda_nid_t all_adcs[AUTO_CFG_MAX_OUTS];
/* path list */
struct snd_array paths;