Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit dc870f38 authored by Takashi Iwai's avatar Takashi Iwai
Browse files

ALSA: hda - Combine snd_hda_codec_flush_*_cache() to a single function



Since both snd_hda_codec_flush_amp_cache() and
snd_hda_codec_flush_cmd_cache() are called usually at the same time,
we can simply combine them to a single function,
snd_hda_codec_flush_cache().

Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent a836dbf6
Loading
Loading
Loading
Loading
+11 −0
Original line number Original line Diff line number Diff line
@@ -3637,6 +3637,17 @@ void snd_hda_sequence_write_cache(struct hda_codec *codec,
}
}
EXPORT_SYMBOL_HDA(snd_hda_sequence_write_cache);
EXPORT_SYMBOL_HDA(snd_hda_sequence_write_cache);


/**
 * snd_hda_codec_flush_cache - Execute all pending (cached) amps / verbs
 * @codec: HD-audio codec
 */
void snd_hda_codec_flush_cache(struct hda_codec *codec)
{
	snd_hda_codec_resume_amp(codec);
	snd_hda_codec_resume_cache(codec);
}
EXPORT_SYMBOL_HDA(snd_hda_codec_flush_cache);

void snd_hda_codec_set_power_to_all(struct hda_codec *codec, hda_nid_t fg,
void snd_hda_codec_set_power_to_all(struct hda_codec *codec, hda_nid_t fg,
				    unsigned int power_state,
				    unsigned int power_state,
				    bool eapd_workaround)
				    bool eapd_workaround)
+2 −4
Original line number Original line Diff line number Diff line
@@ -974,10 +974,8 @@ void snd_hda_sequence_write_cache(struct hda_codec *codec,
int snd_hda_codec_update_cache(struct hda_codec *codec, hda_nid_t nid,
int snd_hda_codec_update_cache(struct hda_codec *codec, hda_nid_t nid,
			      int direct, unsigned int verb, unsigned int parm);
			      int direct, unsigned int verb, unsigned int parm);
void snd_hda_codec_resume_cache(struct hda_codec *codec);
void snd_hda_codec_resume_cache(struct hda_codec *codec);

/* both for cmd & amp caches */
/* it's alias but a bit clearer meaning */
void snd_hda_codec_flush_cache(struct hda_codec *codec);
#define snd_hda_codec_flush_cmd_cache(codec) \
	snd_hda_codec_resume_cache(codec)


/* the struct for codec->pin_configs */
/* the struct for codec->pin_configs */
struct hda_pincfg {
struct hda_pincfg {
+2 −4
Original line number Original line Diff line number Diff line
@@ -2839,8 +2839,7 @@ static int cap_put_caller(struct snd_kcontrol *kcontrol,
 error:
 error:
	codec->cached_write = 0;
	codec->cached_write = 0;
	mutex_unlock(&codec->control_mutex);
	mutex_unlock(&codec->control_mutex);
	snd_hda_codec_flush_amp_cache(codec); /* flush the updates */
	snd_hda_codec_flush_cache(codec); /* flush the updates */
	snd_hda_codec_flush_cmd_cache(codec);
	if (err >= 0 && spec->cap_sync_hook)
	if (err >= 0 && spec->cap_sync_hook)
		spec->cap_sync_hook(codec, ucontrol);
		spec->cap_sync_hook(codec, ucontrol);
	return err;
	return err;
@@ -4773,8 +4772,7 @@ int snd_hda_gen_init(struct hda_codec *codec)
	/* call init functions of standard auto-mute helpers */
	/* call init functions of standard auto-mute helpers */
	update_automute_all(codec);
	update_automute_all(codec);


	snd_hda_codec_flush_amp_cache(codec);
	snd_hda_codec_flush_cache(codec);
	snd_hda_codec_flush_cmd_cache(codec);


	if (spec->vmaster_mute.sw_kctl && spec->vmaster_mute.hook)
	if (spec->vmaster_mute.sw_kctl && spec->vmaster_mute.hook)
		snd_hda_sync_vmaster_hook(&spec->vmaster_mute);
		snd_hda_sync_vmaster_hook(&spec->vmaster_mute);
+0 −4
Original line number Original line Diff line number Diff line
@@ -139,10 +139,6 @@ int snd_hda_codec_amp_init_stereo(struct hda_codec *codec, hda_nid_t nid,
				  int dir, int idx, int mask, int val);
				  int dir, int idx, int mask, int val);
void snd_hda_codec_resume_amp(struct hda_codec *codec);
void snd_hda_codec_resume_amp(struct hda_codec *codec);


/* it's alias but a bit clearer meaning */
#define snd_hda_codec_flush_amp_cache(codec) \
	snd_hda_codec_resume_amp(codec)

void snd_hda_set_vmaster_tlv(struct hda_codec *codec, hda_nid_t nid, int dir,
void snd_hda_set_vmaster_tlv(struct hda_codec *codec, hda_nid_t nid, int dir,
			     unsigned int *tlv);
			     unsigned int *tlv);
struct snd_kcontrol *snd_hda_find_mixer_ctl(struct hda_codec *codec,
struct snd_kcontrol *snd_hda_find_mixer_ctl(struct hda_codec *codec,
+1 −1
Original line number Original line Diff line number Diff line
@@ -621,7 +621,7 @@ static void alc_inv_dmic_sync_adc(struct hda_codec *codec, int adc_idx)
		(dir == HDA_OUTPUT ? AC_AMP_SET_OUTPUT : AC_AMP_SET_INPUT);
		(dir == HDA_OUTPUT ? AC_AMP_SET_OUTPUT : AC_AMP_SET_INPUT);


	/* flush all cached amps at first */
	/* flush all cached amps at first */
	snd_hda_codec_flush_amp_cache(codec);
	snd_hda_codec_flush_cache(codec);


	/* we care only right channel */
	/* we care only right channel */
	val = snd_hda_codec_amp_read(codec, nid, 1, dir, 0);
	val = snd_hda_codec_amp_read(codec, nid, 1, dir, 0);