[alsa-devel] [PATCH] ALSA: hda - power setting error check

Wang Xingchao wangxingchao2011 at gmail.com
Thu Jun 7 12:27:06 CEST 2012


2012/6/7 Takashi Iwai <tiwai at suse.de>:
> At Thu,  7 Jun 2012 16:52:51 +0800,
> Wang Xingchao wrote:
>>
>> codec may reject power state transition requests(reporting PS-ERROR set),
>> in that case we re-issue a power state setting and check error bit again.
>>
>> Signed-off-by: Wang Xingchao <xingchao.wang at intel.com>
>> ---
>>  sound/pci/hda/hda_codec.c |   11 +++++++++++
>>  1 file changed, 11 insertions(+)
>>
>> diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c
>> index d0ca370..bb64eba 100644
>> --- a/sound/pci/hda/hda_codec.c
>> +++ b/sound/pci/hda/hda_codec.c
>> @@ -3526,6 +3526,7 @@ static bool snd_hda_codec_get_supported_ps(struct hda_codec *codec, hda_nid_t fg
>>  static void hda_set_power_state(struct hda_codec *codec, hda_nid_t fg,
>>                               unsigned int power_state)
>>  {
>> +     int state, count = 0;
>>       if (codec->patch_ops.set_power_state) {
>>               codec->patch_ops.set_power_state(codec, fg, power_state);
>>               return;
>> @@ -3537,9 +3538,19 @@ static void hda_set_power_state(struct hda_codec *codec, hda_nid_t fg,
>>               bool epss = snd_hda_codec_get_supported_ps(codec, fg, AC_PWRST_EPSS);
>>               msleep(epss? 10:100);
>>       }
>> +again:
>>       snd_hda_codec_read(codec, fg, 0, AC_VERB_SET_POWER_STATE,
>>                           power_state);
>>       snd_hda_codec_set_power_to_all(codec, fg, power_state, true);
>> +     state = snd_hda_codec_read(codec, fg, 0,
>> +                                AC_VERB_GET_POWER_STATE, 0);
>> +     if (state & AC_PWRST_ERROR) {
>> +             /* repeat power states setting at most 10 times*/
>> +             if (count++ > 10)
>> +                     snd_printk(KERN_WARNING "Power states transition reject!\n");
>> +             else
>> +                     goto again;
>> +     }
>
> For such a short block, better to use a proper loop instead of goto,
> IMO.
>

Thanks for review, i'd update the patch and send it out again.

thanks
--xingchao


More information about the Alsa-devel mailing list