On Mon, 12 Feb 2018 18:29:53 +0100,
Chris Wilson wrote:
>
> This reverts commit 3b5b899ca67db07a4c4825911072221f99e157e2.
>
> Fixes: 3b5b899ca67d ("ALSA: hda: Make use of core codec functions to sync
> power state")
> Cc: Abhijeet Kumar <[email protected]>
> Cc: Takashi Iwai <[email protected]>
Did the patch break anything?
I don't understand it without any real context...
thanks,
Takashi
> ---
> sound/pci/hda/hda_codec.c | 28 +++++++++++++++++++++++++++-
> sound/pci/hda/hda_local.h | 6 +-----
> 2 files changed, 28 insertions(+), 6 deletions(-)
>
> diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c
> index 5bc3a7468e17..e018ecbf78a8 100644
> --- a/sound/pci/hda/hda_codec.c
> +++ b/sound/pci/hda/hda_codec.c
> @@ -2702,6 +2702,32 @@ void snd_hda_codec_set_power_to_all(struct hda_codec
> *codec, hda_nid_t fg,
> }
> EXPORT_SYMBOL_GPL(snd_hda_codec_set_power_to_all);
>
> +/*
> + * wait until the state is reached, returns the current state
> + */
> +static unsigned int hda_sync_power_state(struct hda_codec *codec,
> + hda_nid_t fg,
> + unsigned int power_state)
> +{
> + unsigned long end_time = jiffies + msecs_to_jiffies(500);
> + unsigned int state, actual_state;
> +
> + for (;;) {
> + state = snd_hda_codec_read(codec, fg, 0,
> + AC_VERB_GET_POWER_STATE, 0);
> + if (state & AC_PWRST_ERROR)
> + break;
> + actual_state = (state >> 4) & 0x0f;
> + if (actual_state == power_state)
> + break;
> + if (time_after_eq(jiffies, end_time))
> + break;
> + /* wait until the codec reachs to the target state */
> + msleep(1);
> + }
> + return state;
> +}
> +
> /**
> * snd_hda_codec_eapd_power_filter - A power filter callback for EAPD
> * @codec: the HDA codec
> @@ -2764,7 +2790,7 @@ static unsigned int hda_set_power_state(struct
> hda_codec *codec,
> state);
> snd_hda_codec_set_power_to_all(codec, fg, power_state);
> }
> - state = snd_hda_sync_power_state(codec, fg, power_state);
> + state = hda_sync_power_state(codec, fg, power_state);
> if (!(state & AC_PWRST_ERROR))
> break;
> }
> diff --git a/sound/pci/hda/hda_local.h b/sound/pci/hda/hda_local.h
> index 321e78baa63c..5b5c324c99b9 100644
> --- a/sound/pci/hda/hda_local.h
> +++ b/sound/pci/hda/hda_local.h
> @@ -622,11 +622,7 @@ snd_hda_check_power_state(struct hda_codec *codec,
> hda_nid_t nid,
> {
> return snd_hdac_check_power_state(&codec->core, nid, target_state);
> }
> -static inline bool snd_hda_sync_power_state(struct hda_codec *codec,
> - hda_nid_t nid, unsigned int target_state)
> -{
> - return snd_hdac_sync_power_state(&codec->core, nid, target_state);
> -}
> +
> unsigned int snd_hda_codec_eapd_power_filter(struct hda_codec *codec,
> hda_nid_t nid,
> unsigned int power_state);
> --
> 2.16.1
>
_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx