At Wed, 09 Jan 2008 11:41:00 -0500, Matthew Ranostay wrote:
@@ -714,6 +728,8 @@ static struct snd_kcontrol_new stac92hd7
HDA_CODEC_MUTE("Analog Loopback 1", 0x17, 0x3, HDA_INPUT), HDA_CODEC_MUTE("Analog Loopback 2", 0x17, 0x4, HDA_INPUT),
- HDA_CODEC_MUTE_MONO("Mono Switch", 0x14, 0x1, 0, HDA_INPUT), { } /* end */
};
@@ -728,6 +744,8 @@ static struct snd_kcontrol_new stac92hd7 HDA_CODEC_VOLUME_IDX("Capture Volume", 0x1, 0x1d, 0x0, HDA_OUTPUT), HDA_CODEC_MUTE_IDX("Capture Switch", 0x1, 0x1d, 0x0, HDA_OUTPUT), HDA_CODEC_VOLUME_IDX("Capture Mux Volume", 0x1, 0x1b, 0x0, HDA_OUTPUT),
- HDA_CODEC_MUTE_MONO("Mono Switch", 0x14, 0x1, 0, HDA_INPUT), { } /* end */
};
These have been already applied to HG tree. Please update your repo (maybe better from hg.alsa-project.org).
@@ -2651,11 +2669,26 @@ static void enable_pin_detect(struct hda static void enable_pin_detect(struct hda_codec *codec, hda_nid_t nid, unsigned int event) {
- int pinctl = snd_hda_codec_read(codec, nid, 0,
AC_VERB_GET_PIN_WIDGET_CONTROL, 0);
- if (pinctl & AC_PINCTL_IN_EN)
return;
Hm, what about the multi-directional pins (such as line-in/surround shared pin)? Maybe it's not for 92HDxxx codecs, but...
@@ -2696,6 +2729,14 @@ static int stac92xx_init(struct hda_code for (i = 0; i < spec->num_dmics; i++) stac92xx_auto_set_pinctl(codec, spec->dmic_nids[i], AC_PINCTL_IN_EN);
- if (spec->num_pwrs > 0) {
This if is unnecessary.
@@ -3076,6 +3144,9 @@ again: spec->gpio_mask = spec->gpio_data = 0x000001; stac92xx_enable_gpio_mask(codec);
- spec->num_pwrs = 8;
Better to use ARRAY_SIZE().
spec->pwr_nids = stac92hd73xx_pwr_nids;
err = stac92xx_parse_auto_config(codec, 0x22, 0x24);
if (!err) {
@@ -3157,6 +3228,9 @@ again: spec->num_adcs = ARRAY_SIZE(stac92hd71bxx_adc_nids); spec->num_dmics = STAC92HD71BXX_NUM_DMICS; spec->num_dmuxes = ARRAY_SIZE(stac92hd71bxx_dmux_nids);
- spec->num_pwrs = 3;
Ditto.
Thanks,
Takashi