At Tue, 16 Sep 2008 10:39:37 -0400, Matthew Ranostay wrote: > > Corrected bounds-checking in stac92xx_auto_create_mux_input_ctls() and added a spec->spdif_labels > pointer for custom SPDIF mux labels for non-standard codec connections. > > Signed-off-by: Matthew Ranostay <mranostay@xxxxxxxxxxxxxxxxx> Applied now. Thanks. Takashi > --- > > diff --git a/pci/hda/patch_sigmatel.c b/pci/hda/patch_sigmatel.c > index f00334f..dc7393f 100644 > --- a/pci/hda/patch_sigmatel.c > +++ b/pci/hda/patch_sigmatel.c > @@ -175,6 +175,7 @@ struct sigmatel_spec { > unsigned int num_dmuxes; > hda_nid_t *smux_nids; > unsigned int num_smuxes; > + const char **spdif_labels; > > hda_nid_t dig_in_nid; > hda_nid_t mono_nid; > @@ -383,6 +384,11 @@ static hda_nid_t stac927x_dmic_nids[STAC927X_NUM_DMICS + 1] = { > 0x13, 0x14, 0 > }; > > +static const char *stac927x_spdif_labels[5] = { > + "Digital Playback", "ADAT", "Analog Mux 1", > + "Analog Mux 2", "Analog Mux 3" > +}; > + > static hda_nid_t stac9205_adc_nids[2] = { > 0x12, 0x13 > }; > @@ -2893,26 +2899,29 @@ static int stac92xx_auto_create_mux_input_ctls(struct hda_codec *codec) > }; > > static const char *stac92xx_spdif_labels[3] = { > - "Digital Playback", "Analog Mux 1", "Analog Mux 2" > + "Digital Playback", "Analog Mux 1", "Analog Mux 2", > }; > > static int stac92xx_auto_create_spdif_mux_ctls(struct hda_codec *codec) > { > struct sigmatel_spec *spec = codec->spec; > struct hda_input_mux *spdif_mux = &spec->private_smux; > + const char **labels = spec->spdif_labels; > int i, num_cons; > - hda_nid_t con_lst[ARRAY_SIZE(stac92xx_spdif_labels)]; > + hda_nid_t con_lst[HDA_MAX_NUM_INPUTS]; > > num_cons = snd_hda_get_connections(codec, > spec->smux_nids[0], > con_lst, > HDA_MAX_NUM_INPUTS); > - if (!num_cons || num_cons > ARRAY_SIZE(stac92xx_spdif_labels)) > + if (!num_cons) > return -EINVAL; > > + if (!labels) > + labels = stac92xx_spdif_labels; > + > for (i = 0; i < num_cons; i++) { > - spdif_mux->items[spdif_mux->num_items].label = > - stac92xx_spdif_labels[i]; > + spdif_mux->items[spdif_mux->num_items].label = labels[i]; > spdif_mux->items[spdif_mux->num_items].index = i; > spdif_mux->num_items++; > } > @@ -4376,6 +4385,7 @@ static int patch_stac927x(struct hda_codec *codec) > spec->num_muxes = ARRAY_SIZE(stac927x_mux_nids); > spec->smux_nids = stac927x_smux_nids; > spec->num_smuxes = ARRAY_SIZE(stac927x_smux_nids); > + spec->spdif_labels = stac927x_spdif_labels; > spec->dac_list = stac927x_dac_nids; > spec->multiout.dac_nids = spec->dac_nids; > > _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel