Loading sound/aoa/fabrics/layout.c +1 −1 Original line number Diff line number Diff line Loading @@ -1073,10 +1073,10 @@ static int aoa_fabric_layout_probe(struct soundbus_dev *sdev) sdev->pcmid = -1; list_del(&ldev->list); layouts_list_items--; kfree(ldev); outnodev: of_node_put(sound); layout_device = NULL; kfree(ldev); return -ENODEV; } Loading sound/pci/hda/hda_eld.c +19 −12 Original line number Diff line number Diff line Loading @@ -144,25 +144,17 @@ static int cea_sampling_frequencies[8] = { SNDRV_PCM_RATE_192000, /* 7: 192000Hz */ }; static unsigned char hdmi_get_eld_byte(struct hda_codec *codec, hda_nid_t nid, static unsigned int hdmi_get_eld_data(struct hda_codec *codec, hda_nid_t nid, int byte_index) { unsigned int val; val = snd_hda_codec_read(codec, nid, 0, AC_VERB_GET_HDMI_ELDD, byte_index); #ifdef BE_PARANOID printk(KERN_INFO "HDMI: ELD data byte %d: 0x%x\n", byte_index, val); #endif if ((val & AC_ELDD_ELD_VALID) == 0) { snd_printd(KERN_INFO "HDMI: invalid ELD data byte %d\n", byte_index); val = 0; } return val & AC_ELDD_ELD_DATA; return val; } #define GRAB_BITS(buf, byte, lowbit, bits) \ Loading Loading @@ -344,11 +336,26 @@ int snd_hdmi_get_eld(struct hdmi_eld *eld, if (!buf) return -ENOMEM; for (i = 0; i < size; i++) buf[i] = hdmi_get_eld_byte(codec, nid, i); for (i = 0; i < size; i++) { unsigned int val = hdmi_get_eld_data(codec, nid, i); if (!(val & AC_ELDD_ELD_VALID)) { if (!i) { snd_printd(KERN_INFO "HDMI: invalid ELD data\n"); ret = -EINVAL; goto error; } snd_printd(KERN_INFO "HDMI: invalid ELD data byte %d\n", i); val = 0; } else val &= AC_ELDD_ELD_DATA; buf[i] = val; } ret = hdmi_update_eld(eld, buf, size); error: kfree(buf); return ret; } Loading sound/pci/hda/patch_cirrus.c +5 −3 Original line number Diff line number Diff line Loading @@ -375,7 +375,7 @@ static int is_ext_mic(struct hda_codec *codec, unsigned int idx) static hda_nid_t get_adc(struct hda_codec *codec, hda_nid_t pin, unsigned int *idxp) { int i; int i, idx; hda_nid_t nid; nid = codec->start_nid; Loading @@ -384,10 +384,12 @@ static hda_nid_t get_adc(struct hda_codec *codec, hda_nid_t pin, type = get_wcaps_type(get_wcaps(codec, nid)); if (type != AC_WID_AUD_IN) continue; *idxp = snd_hda_get_conn_index(codec, nid, pin, false); if (*idxp >= 0) idx = snd_hda_get_conn_index(codec, nid, pin, false); if (idx >= 0) { *idxp = idx; return nid; } } return 0; } Loading sound/pci/hda/patch_conexant.c +10 −3 Original line number Diff line number Diff line Loading @@ -3348,6 +3348,8 @@ static hda_nid_t get_unassigned_dac(struct hda_codec *codec, hda_nid_t pin, #define MAX_AUTO_DACS 5 #define DAC_SLAVE_FLAG 0x8000 /* filled dac is a slave */ /* fill analog DAC list from the widget tree */ static int fill_cx_auto_dacs(struct hda_codec *codec, hda_nid_t *dacs) { Loading Loading @@ -3379,6 +3381,8 @@ static int fill_dacs_for_pins(struct hda_codec *codec, hda_nid_t *pins, filled[nums].pin = pins[i]; filled[nums].type = type; filled[nums].dac = get_unassigned_dac(codec, pins[i], dacs, rest); if (!filled[nums].dac && i > 0 && filled[0].dac) filled[nums].dac = filled[0].dac | DAC_SLAVE_FLAG; nums++; } return nums; Loading Loading @@ -3407,7 +3411,7 @@ static void cx_auto_parse_output(struct hda_codec *codec) /* fill multiout struct */ for (i = 0; i < nums; i++) { hda_nid_t dac = spec->dac_info[i].dac; if (!dac) if (!dac || (dac & DAC_SLAVE_FLAG)) continue; switch (spec->dac_info[i].type) { case AUTO_PIN_LINE_OUT: Loading Loading @@ -4035,6 +4039,8 @@ static void cx_auto_init_output(struct hda_codec *codec) nid = spec->dac_info[i].dac; if (!nid) nid = spec->multiout.dac_nids[0]; else if (nid & DAC_SLAVE_FLAG) nid &= ~DAC_SLAVE_FLAG; select_connection(codec, spec->dac_info[i].pin, nid); } if (spec->auto_mute) { Loading Loading @@ -4191,7 +4197,8 @@ static int cx_auto_build_output_controls(struct hda_codec *codec) for (i = 0; i < spec->dac_info_filled; i++) { const char *label; int idx, type; if (!spec->dac_info[i].dac) hda_nid_t dac = spec->dac_info[i].dac; if (!dac || (dac & DAC_SLAVE_FLAG)) continue; type = spec->dac_info[i].type; if (type == AUTO_PIN_LINE_OUT) Loading @@ -4211,7 +4218,7 @@ static int cx_auto_build_output_controls(struct hda_codec *codec) idx = num_spk++; break; } err = try_add_pb_volume(codec, spec->dac_info[i].dac, err = try_add_pb_volume(codec, dac, spec->dac_info[i].pin, label, idx); if (err < 0) Loading sound/pci/hda/patch_realtek.c +19 −11 Original line number Diff line number Diff line Loading @@ -578,11 +578,11 @@ static void alc_hp_automute(struct hda_codec *codec) { struct alc_spec *spec = codec->spec; if (!spec->automute) return; spec->jack_present = detect_jacks(codec, ARRAY_SIZE(spec->autocfg.hp_pins), spec->autocfg.hp_pins); if (!spec->automute) return; call_update_speakers(codec); } Loading @@ -591,11 +591,11 @@ static void alc_line_automute(struct hda_codec *codec) { struct alc_spec *spec = codec->spec; if (!spec->automute || !spec->detect_line) return; spec->line_jack_present = detect_jacks(codec, ARRAY_SIZE(spec->autocfg.line_out_pins), spec->autocfg.line_out_pins); if (!spec->automute || !spec->detect_line) return; call_update_speakers(codec); } Loading Loading @@ -1797,6 +1797,7 @@ static const char * const alc_slave_vols[] = { "Speaker Playback Volume", "Mono Playback Volume", "Line-Out Playback Volume", "PCM Playback Volume", NULL, }; Loading @@ -1811,6 +1812,7 @@ static const char * const alc_slave_sws[] = { "Mono Playback Switch", "IEC958 Playback Switch", "Line-Out Playback Switch", "PCM Playback Switch", NULL, }; Loading Loading @@ -3221,16 +3223,22 @@ static void alc_auto_init_multi_out(struct hda_codec *codec) static void alc_auto_init_extra_out(struct hda_codec *codec) { struct alc_spec *spec = codec->spec; hda_nid_t pin; hda_nid_t pin, dac; pin = spec->autocfg.hp_pins[0]; if (pin) alc_auto_set_output_and_unmute(codec, pin, PIN_HP, spec->multiout.hp_nid); if (pin) { dac = spec->multiout.hp_nid; if (!dac) dac = spec->multiout.dac_nids[0]; alc_auto_set_output_and_unmute(codec, pin, PIN_HP, dac); } pin = spec->autocfg.speaker_pins[0]; if (pin) alc_auto_set_output_and_unmute(codec, pin, PIN_OUT, spec->multiout.extra_out_nid[0]); if (pin) { dac = spec->multiout.extra_out_nid[0]; if (!dac) dac = spec->multiout.dac_nids[0]; alc_auto_set_output_and_unmute(codec, pin, PIN_OUT, dac); } } /* Loading Loading
sound/aoa/fabrics/layout.c +1 −1 Original line number Diff line number Diff line Loading @@ -1073,10 +1073,10 @@ static int aoa_fabric_layout_probe(struct soundbus_dev *sdev) sdev->pcmid = -1; list_del(&ldev->list); layouts_list_items--; kfree(ldev); outnodev: of_node_put(sound); layout_device = NULL; kfree(ldev); return -ENODEV; } Loading
sound/pci/hda/hda_eld.c +19 −12 Original line number Diff line number Diff line Loading @@ -144,25 +144,17 @@ static int cea_sampling_frequencies[8] = { SNDRV_PCM_RATE_192000, /* 7: 192000Hz */ }; static unsigned char hdmi_get_eld_byte(struct hda_codec *codec, hda_nid_t nid, static unsigned int hdmi_get_eld_data(struct hda_codec *codec, hda_nid_t nid, int byte_index) { unsigned int val; val = snd_hda_codec_read(codec, nid, 0, AC_VERB_GET_HDMI_ELDD, byte_index); #ifdef BE_PARANOID printk(KERN_INFO "HDMI: ELD data byte %d: 0x%x\n", byte_index, val); #endif if ((val & AC_ELDD_ELD_VALID) == 0) { snd_printd(KERN_INFO "HDMI: invalid ELD data byte %d\n", byte_index); val = 0; } return val & AC_ELDD_ELD_DATA; return val; } #define GRAB_BITS(buf, byte, lowbit, bits) \ Loading Loading @@ -344,11 +336,26 @@ int snd_hdmi_get_eld(struct hdmi_eld *eld, if (!buf) return -ENOMEM; for (i = 0; i < size; i++) buf[i] = hdmi_get_eld_byte(codec, nid, i); for (i = 0; i < size; i++) { unsigned int val = hdmi_get_eld_data(codec, nid, i); if (!(val & AC_ELDD_ELD_VALID)) { if (!i) { snd_printd(KERN_INFO "HDMI: invalid ELD data\n"); ret = -EINVAL; goto error; } snd_printd(KERN_INFO "HDMI: invalid ELD data byte %d\n", i); val = 0; } else val &= AC_ELDD_ELD_DATA; buf[i] = val; } ret = hdmi_update_eld(eld, buf, size); error: kfree(buf); return ret; } Loading
sound/pci/hda/patch_cirrus.c +5 −3 Original line number Diff line number Diff line Loading @@ -375,7 +375,7 @@ static int is_ext_mic(struct hda_codec *codec, unsigned int idx) static hda_nid_t get_adc(struct hda_codec *codec, hda_nid_t pin, unsigned int *idxp) { int i; int i, idx; hda_nid_t nid; nid = codec->start_nid; Loading @@ -384,10 +384,12 @@ static hda_nid_t get_adc(struct hda_codec *codec, hda_nid_t pin, type = get_wcaps_type(get_wcaps(codec, nid)); if (type != AC_WID_AUD_IN) continue; *idxp = snd_hda_get_conn_index(codec, nid, pin, false); if (*idxp >= 0) idx = snd_hda_get_conn_index(codec, nid, pin, false); if (idx >= 0) { *idxp = idx; return nid; } } return 0; } Loading
sound/pci/hda/patch_conexant.c +10 −3 Original line number Diff line number Diff line Loading @@ -3348,6 +3348,8 @@ static hda_nid_t get_unassigned_dac(struct hda_codec *codec, hda_nid_t pin, #define MAX_AUTO_DACS 5 #define DAC_SLAVE_FLAG 0x8000 /* filled dac is a slave */ /* fill analog DAC list from the widget tree */ static int fill_cx_auto_dacs(struct hda_codec *codec, hda_nid_t *dacs) { Loading Loading @@ -3379,6 +3381,8 @@ static int fill_dacs_for_pins(struct hda_codec *codec, hda_nid_t *pins, filled[nums].pin = pins[i]; filled[nums].type = type; filled[nums].dac = get_unassigned_dac(codec, pins[i], dacs, rest); if (!filled[nums].dac && i > 0 && filled[0].dac) filled[nums].dac = filled[0].dac | DAC_SLAVE_FLAG; nums++; } return nums; Loading Loading @@ -3407,7 +3411,7 @@ static void cx_auto_parse_output(struct hda_codec *codec) /* fill multiout struct */ for (i = 0; i < nums; i++) { hda_nid_t dac = spec->dac_info[i].dac; if (!dac) if (!dac || (dac & DAC_SLAVE_FLAG)) continue; switch (spec->dac_info[i].type) { case AUTO_PIN_LINE_OUT: Loading Loading @@ -4035,6 +4039,8 @@ static void cx_auto_init_output(struct hda_codec *codec) nid = spec->dac_info[i].dac; if (!nid) nid = spec->multiout.dac_nids[0]; else if (nid & DAC_SLAVE_FLAG) nid &= ~DAC_SLAVE_FLAG; select_connection(codec, spec->dac_info[i].pin, nid); } if (spec->auto_mute) { Loading Loading @@ -4191,7 +4197,8 @@ static int cx_auto_build_output_controls(struct hda_codec *codec) for (i = 0; i < spec->dac_info_filled; i++) { const char *label; int idx, type; if (!spec->dac_info[i].dac) hda_nid_t dac = spec->dac_info[i].dac; if (!dac || (dac & DAC_SLAVE_FLAG)) continue; type = spec->dac_info[i].type; if (type == AUTO_PIN_LINE_OUT) Loading @@ -4211,7 +4218,7 @@ static int cx_auto_build_output_controls(struct hda_codec *codec) idx = num_spk++; break; } err = try_add_pb_volume(codec, spec->dac_info[i].dac, err = try_add_pb_volume(codec, dac, spec->dac_info[i].pin, label, idx); if (err < 0) Loading
sound/pci/hda/patch_realtek.c +19 −11 Original line number Diff line number Diff line Loading @@ -578,11 +578,11 @@ static void alc_hp_automute(struct hda_codec *codec) { struct alc_spec *spec = codec->spec; if (!spec->automute) return; spec->jack_present = detect_jacks(codec, ARRAY_SIZE(spec->autocfg.hp_pins), spec->autocfg.hp_pins); if (!spec->automute) return; call_update_speakers(codec); } Loading @@ -591,11 +591,11 @@ static void alc_line_automute(struct hda_codec *codec) { struct alc_spec *spec = codec->spec; if (!spec->automute || !spec->detect_line) return; spec->line_jack_present = detect_jacks(codec, ARRAY_SIZE(spec->autocfg.line_out_pins), spec->autocfg.line_out_pins); if (!spec->automute || !spec->detect_line) return; call_update_speakers(codec); } Loading Loading @@ -1797,6 +1797,7 @@ static const char * const alc_slave_vols[] = { "Speaker Playback Volume", "Mono Playback Volume", "Line-Out Playback Volume", "PCM Playback Volume", NULL, }; Loading @@ -1811,6 +1812,7 @@ static const char * const alc_slave_sws[] = { "Mono Playback Switch", "IEC958 Playback Switch", "Line-Out Playback Switch", "PCM Playback Switch", NULL, }; Loading Loading @@ -3221,16 +3223,22 @@ static void alc_auto_init_multi_out(struct hda_codec *codec) static void alc_auto_init_extra_out(struct hda_codec *codec) { struct alc_spec *spec = codec->spec; hda_nid_t pin; hda_nid_t pin, dac; pin = spec->autocfg.hp_pins[0]; if (pin) alc_auto_set_output_and_unmute(codec, pin, PIN_HP, spec->multiout.hp_nid); if (pin) { dac = spec->multiout.hp_nid; if (!dac) dac = spec->multiout.dac_nids[0]; alc_auto_set_output_and_unmute(codec, pin, PIN_HP, dac); } pin = spec->autocfg.speaker_pins[0]; if (pin) alc_auto_set_output_and_unmute(codec, pin, PIN_OUT, spec->multiout.extra_out_nid[0]); if (pin) { dac = spec->multiout.extra_out_nid[0]; if (!dac) dac = spec->multiout.dac_nids[0]; alc_auto_set_output_and_unmute(codec, pin, PIN_OUT, dac); } } /* Loading