Loading sound/pci/hda/hda_codec.c +21 −14 Original line number Diff line number Diff line Loading @@ -2727,7 +2727,7 @@ int snd_hda_codec_reset(struct hda_codec *codec) return 0; } typedef int (*map_slave_func_t)(void *, struct snd_kcontrol *); typedef int (*map_slave_func_t)(struct hda_codec *, void *, struct snd_kcontrol *); /* apply the function to all matching slave ctls in the mixer list */ static int map_slaves(struct hda_codec *codec, const char * const *slaves, Loading @@ -2751,7 +2751,7 @@ static int map_slaves(struct hda_codec *codec, const char * const *slaves, name = tmpname; } if (!strcmp(sctl->id.name, name)) { err = func(data, sctl); err = func(codec, data, sctl); if (err) return err; break; Loading @@ -2761,13 +2761,15 @@ static int map_slaves(struct hda_codec *codec, const char * const *slaves, return 0; } static int check_slave_present(void *data, struct snd_kcontrol *sctl) static int check_slave_present(struct hda_codec *codec, void *data, struct snd_kcontrol *sctl) { return 1; } /* guess the value corresponding to 0dB */ static int get_kctl_0dB_offset(struct snd_kcontrol *kctl, int *step_to_check) static int get_kctl_0dB_offset(struct hda_codec *codec, struct snd_kcontrol *kctl, int *step_to_check) { int _tlv[4]; const int *tlv = NULL; Loading @@ -2788,7 +2790,7 @@ static int get_kctl_0dB_offset(struct snd_kcontrol *kctl, int *step_to_check) if (!step) return -1; if (*step_to_check && *step_to_check != step) { snd_printk(KERN_ERR "hda_codec: Mismatching dB step for vmaster slave (%d!=%d)\n", codec_err(codec, "Mismatching dB step for vmaster slave (%d!=%d)\n", - *step_to_check, step); return -1; } Loading @@ -2813,16 +2815,18 @@ static int put_kctl_with_value(struct snd_kcontrol *kctl, int val) } /* initialize the slave volume with 0dB */ static int init_slave_0dB(void *data, struct snd_kcontrol *slave) static int init_slave_0dB(struct hda_codec *codec, void *data, struct snd_kcontrol *slave) { int offset = get_kctl_0dB_offset(slave, data); int offset = get_kctl_0dB_offset(codec, slave, data); if (offset > 0) put_kctl_with_value(slave, offset); return 0; } /* unmute the slave */ static int init_slave_unmute(void *data, struct snd_kcontrol *slave) static int init_slave_unmute(struct hda_codec *codec, void *data, struct snd_kcontrol *slave) { return put_kctl_with_value(slave, 1); } Loading Loading @@ -4280,6 +4284,7 @@ static struct hda_rate_tbl rate_bits[] = { /** * snd_hda_calc_stream_format - calculate format bitset * @codec: HD-audio codec * @rate: the sample rate * @channels: the number of channels * @format: the PCM format (SNDRV_PCM_FORMAT_XXX) Loading @@ -4289,7 +4294,8 @@ static struct hda_rate_tbl rate_bits[] = { * * Return zero if invalid. */ unsigned int snd_hda_calc_stream_format(unsigned int rate, unsigned int snd_hda_calc_stream_format(struct hda_codec *codec, unsigned int rate, unsigned int channels, unsigned int format, unsigned int maxbps, Loading @@ -4304,12 +4310,12 @@ unsigned int snd_hda_calc_stream_format(unsigned int rate, break; } if (!rate_bits[i].hz) { snd_printdd("invalid rate %d\n", rate); codec_dbg(codec, "invalid rate %d\n", rate); return 0; } if (channels == 0 || channels > 8) { snd_printdd("invalid channels %d\n", channels); codec_dbg(codec, "invalid channels %d\n", channels); return 0; } val |= channels - 1; Loading @@ -4332,7 +4338,7 @@ unsigned int snd_hda_calc_stream_format(unsigned int rate, val |= AC_FMT_BITS_20; break; default: snd_printdd("invalid format width %d\n", codec_dbg(codec, "invalid format width %d\n", snd_pcm_format_width(format)); return 0; } Loading Loading @@ -5670,12 +5676,13 @@ EXPORT_SYMBOL_GPL(_snd_hda_set_pin_ctl); * suffix is appended to the label. This label index number is stored * to type_idx when non-NULL pointer is given. */ int snd_hda_add_imux_item(struct hda_input_mux *imux, const char *label, int snd_hda_add_imux_item(struct hda_codec *codec, struct hda_input_mux *imux, const char *label, int index, int *type_idx) { int i, label_idx = 0; if (imux->num_items >= HDA_MAX_NUM_INPUTS) { snd_printd(KERN_ERR "hda_codec: Too many imux items!\n"); codec_err(codec, "hda_codec: Too many imux items!\n"); return -EINVAL; } for (i = 0; i < imux->num_items; i++) { Loading sound/pci/hda/hda_codec.h +2 −1 Original line number Diff line number Diff line Loading @@ -538,7 +538,8 @@ void __snd_hda_codec_cleanup_stream(struct hda_codec *codec, hda_nid_t nid, int do_now); #define snd_hda_codec_cleanup_stream(codec, nid) \ __snd_hda_codec_cleanup_stream(codec, nid, 0) unsigned int snd_hda_calc_stream_format(unsigned int rate, unsigned int snd_hda_calc_stream_format(struct hda_codec *codec, unsigned int rate, unsigned int channels, unsigned int format, unsigned int maxbps, Loading sound/pci/hda/hda_controller.c +2 −1 Original line number Diff line number Diff line Loading @@ -481,7 +481,8 @@ static int azx_pcm_prepare(struct snd_pcm_substream *substream) } azx_stream_reset(chip, azx_dev); format_val = snd_hda_calc_stream_format(runtime->rate, format_val = snd_hda_calc_stream_format(apcm->codec, runtime->rate, runtime->channels, runtime->format, hinfo->maxbps, Loading sound/pci/hda/hda_generic.c +1 −1 Original line number Diff line number Diff line Loading @@ -3054,7 +3054,7 @@ static int parse_capture_source(struct hda_codec *codec, hda_nid_t pin, if (spec->hp_mic_pin == pin) spec->hp_mic_mux_idx = imux->num_items; spec->imux_pins[imux->num_items] = pin; snd_hda_add_imux_item(imux, label, cfg_idx, NULL); snd_hda_add_imux_item(codec, imux, label, cfg_idx, NULL); imux_added = true; if (spec->dyn_adc_switch) spec->dyn_adc_idx[imux_idx] = c; Loading sound/pci/hda/hda_local.h +2 −1 Original line number Diff line number Diff line Loading @@ -268,7 +268,8 @@ int snd_hda_input_mux_put(struct hda_codec *codec, const struct hda_input_mux *imux, struct snd_ctl_elem_value *ucontrol, hda_nid_t nid, unsigned int *cur_val); int snd_hda_add_imux_item(struct hda_input_mux *imux, const char *label, int snd_hda_add_imux_item(struct hda_codec *codec, struct hda_input_mux *imux, const char *label, int index, int *type_index_ret); /* Loading Loading
sound/pci/hda/hda_codec.c +21 −14 Original line number Diff line number Diff line Loading @@ -2727,7 +2727,7 @@ int snd_hda_codec_reset(struct hda_codec *codec) return 0; } typedef int (*map_slave_func_t)(void *, struct snd_kcontrol *); typedef int (*map_slave_func_t)(struct hda_codec *, void *, struct snd_kcontrol *); /* apply the function to all matching slave ctls in the mixer list */ static int map_slaves(struct hda_codec *codec, const char * const *slaves, Loading @@ -2751,7 +2751,7 @@ static int map_slaves(struct hda_codec *codec, const char * const *slaves, name = tmpname; } if (!strcmp(sctl->id.name, name)) { err = func(data, sctl); err = func(codec, data, sctl); if (err) return err; break; Loading @@ -2761,13 +2761,15 @@ static int map_slaves(struct hda_codec *codec, const char * const *slaves, return 0; } static int check_slave_present(void *data, struct snd_kcontrol *sctl) static int check_slave_present(struct hda_codec *codec, void *data, struct snd_kcontrol *sctl) { return 1; } /* guess the value corresponding to 0dB */ static int get_kctl_0dB_offset(struct snd_kcontrol *kctl, int *step_to_check) static int get_kctl_0dB_offset(struct hda_codec *codec, struct snd_kcontrol *kctl, int *step_to_check) { int _tlv[4]; const int *tlv = NULL; Loading @@ -2788,7 +2790,7 @@ static int get_kctl_0dB_offset(struct snd_kcontrol *kctl, int *step_to_check) if (!step) return -1; if (*step_to_check && *step_to_check != step) { snd_printk(KERN_ERR "hda_codec: Mismatching dB step for vmaster slave (%d!=%d)\n", codec_err(codec, "Mismatching dB step for vmaster slave (%d!=%d)\n", - *step_to_check, step); return -1; } Loading @@ -2813,16 +2815,18 @@ static int put_kctl_with_value(struct snd_kcontrol *kctl, int val) } /* initialize the slave volume with 0dB */ static int init_slave_0dB(void *data, struct snd_kcontrol *slave) static int init_slave_0dB(struct hda_codec *codec, void *data, struct snd_kcontrol *slave) { int offset = get_kctl_0dB_offset(slave, data); int offset = get_kctl_0dB_offset(codec, slave, data); if (offset > 0) put_kctl_with_value(slave, offset); return 0; } /* unmute the slave */ static int init_slave_unmute(void *data, struct snd_kcontrol *slave) static int init_slave_unmute(struct hda_codec *codec, void *data, struct snd_kcontrol *slave) { return put_kctl_with_value(slave, 1); } Loading Loading @@ -4280,6 +4284,7 @@ static struct hda_rate_tbl rate_bits[] = { /** * snd_hda_calc_stream_format - calculate format bitset * @codec: HD-audio codec * @rate: the sample rate * @channels: the number of channels * @format: the PCM format (SNDRV_PCM_FORMAT_XXX) Loading @@ -4289,7 +4294,8 @@ static struct hda_rate_tbl rate_bits[] = { * * Return zero if invalid. */ unsigned int snd_hda_calc_stream_format(unsigned int rate, unsigned int snd_hda_calc_stream_format(struct hda_codec *codec, unsigned int rate, unsigned int channels, unsigned int format, unsigned int maxbps, Loading @@ -4304,12 +4310,12 @@ unsigned int snd_hda_calc_stream_format(unsigned int rate, break; } if (!rate_bits[i].hz) { snd_printdd("invalid rate %d\n", rate); codec_dbg(codec, "invalid rate %d\n", rate); return 0; } if (channels == 0 || channels > 8) { snd_printdd("invalid channels %d\n", channels); codec_dbg(codec, "invalid channels %d\n", channels); return 0; } val |= channels - 1; Loading @@ -4332,7 +4338,7 @@ unsigned int snd_hda_calc_stream_format(unsigned int rate, val |= AC_FMT_BITS_20; break; default: snd_printdd("invalid format width %d\n", codec_dbg(codec, "invalid format width %d\n", snd_pcm_format_width(format)); return 0; } Loading Loading @@ -5670,12 +5676,13 @@ EXPORT_SYMBOL_GPL(_snd_hda_set_pin_ctl); * suffix is appended to the label. This label index number is stored * to type_idx when non-NULL pointer is given. */ int snd_hda_add_imux_item(struct hda_input_mux *imux, const char *label, int snd_hda_add_imux_item(struct hda_codec *codec, struct hda_input_mux *imux, const char *label, int index, int *type_idx) { int i, label_idx = 0; if (imux->num_items >= HDA_MAX_NUM_INPUTS) { snd_printd(KERN_ERR "hda_codec: Too many imux items!\n"); codec_err(codec, "hda_codec: Too many imux items!\n"); return -EINVAL; } for (i = 0; i < imux->num_items; i++) { Loading
sound/pci/hda/hda_codec.h +2 −1 Original line number Diff line number Diff line Loading @@ -538,7 +538,8 @@ void __snd_hda_codec_cleanup_stream(struct hda_codec *codec, hda_nid_t nid, int do_now); #define snd_hda_codec_cleanup_stream(codec, nid) \ __snd_hda_codec_cleanup_stream(codec, nid, 0) unsigned int snd_hda_calc_stream_format(unsigned int rate, unsigned int snd_hda_calc_stream_format(struct hda_codec *codec, unsigned int rate, unsigned int channels, unsigned int format, unsigned int maxbps, Loading
sound/pci/hda/hda_controller.c +2 −1 Original line number Diff line number Diff line Loading @@ -481,7 +481,8 @@ static int azx_pcm_prepare(struct snd_pcm_substream *substream) } azx_stream_reset(chip, azx_dev); format_val = snd_hda_calc_stream_format(runtime->rate, format_val = snd_hda_calc_stream_format(apcm->codec, runtime->rate, runtime->channels, runtime->format, hinfo->maxbps, Loading
sound/pci/hda/hda_generic.c +1 −1 Original line number Diff line number Diff line Loading @@ -3054,7 +3054,7 @@ static int parse_capture_source(struct hda_codec *codec, hda_nid_t pin, if (spec->hp_mic_pin == pin) spec->hp_mic_mux_idx = imux->num_items; spec->imux_pins[imux->num_items] = pin; snd_hda_add_imux_item(imux, label, cfg_idx, NULL); snd_hda_add_imux_item(codec, imux, label, cfg_idx, NULL); imux_added = true; if (spec->dyn_adc_switch) spec->dyn_adc_idx[imux_idx] = c; Loading
sound/pci/hda/hda_local.h +2 −1 Original line number Diff line number Diff line Loading @@ -268,7 +268,8 @@ int snd_hda_input_mux_put(struct hda_codec *codec, const struct hda_input_mux *imux, struct snd_ctl_elem_value *ucontrol, hda_nid_t nid, unsigned int *cur_val); int snd_hda_add_imux_item(struct hda_input_mux *imux, const char *label, int snd_hda_add_imux_item(struct hda_codec *codec, struct hda_input_mux *imux, const char *label, int index, int *type_index_ret); /* Loading