diff options
Diffstat (limited to 'sound/pci/hda/patch_sigmatel.c')
-rw-r--r-- | sound/pci/hda/patch_sigmatel.c | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c index 04012237096..86cd3f67b9f 100644 --- a/sound/pci/hda/patch_sigmatel.c +++ b/sound/pci/hda/patch_sigmatel.c @@ -204,6 +204,11 @@ static hda_nid_t stac927x_mux_nids[3] = { 0x15, 0x16, 0x17 }; +#define STAC927X_NUM_DMICS 2 +static hda_nid_t stac927x_dmic_nids[STAC927X_NUM_DMICS + 1] = { + 0x13, 0x14, 0 +}; + static hda_nid_t stac9205_adc_nids[2] = { 0x12, 0x13 }; @@ -2688,7 +2693,6 @@ static int patch_stac927x(struct hda_codec *codec) spec->mux_nids = stac927x_mux_nids; spec->num_muxes = ARRAY_SIZE(stac927x_mux_nids); spec->num_adcs = ARRAY_SIZE(stac927x_adc_nids); - spec->num_dmics = 0; spec->init = d965_core_init; spec->mixer = stac927x_mixer; break; @@ -2697,7 +2701,6 @@ static int patch_stac927x(struct hda_codec *codec) spec->mux_nids = stac927x_mux_nids; spec->num_muxes = ARRAY_SIZE(stac927x_mux_nids); spec->num_adcs = ARRAY_SIZE(stac927x_adc_nids); - spec->num_dmics = 0; spec->init = d965_core_init; spec->mixer = stac927x_mixer; break; @@ -2706,11 +2709,20 @@ static int patch_stac927x(struct hda_codec *codec) spec->mux_nids = stac927x_mux_nids; spec->num_muxes = ARRAY_SIZE(stac927x_mux_nids); spec->num_adcs = ARRAY_SIZE(stac927x_adc_nids); - spec->num_dmics = 0; spec->init = stac927x_core_init; spec->mixer = stac927x_mixer; } + switch (codec->subsystem_id) { + case 0x1028020A: /* STAC 9228 */ + case 0x10280209: /* STAC 9228 */ + spec->dmic_nids = stac927x_dmic_nids; + spec->num_dmics = STAC927X_NUM_DMICS; + break; + default: + spec->num_dmics = 0; + } + spec->multiout.dac_nids = spec->dac_nids; /* GPIO0 High = Enable EAPD */ spec->gpio_mask = spec->gpio_data = 0x00000001; |