aboutsummaryrefslogtreecommitdiffstats
path: root/sound/pci/hda
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2008-12-01 05:54:35 -0500
committerTakashi Iwai <tiwai@suse.de>2008-12-01 05:54:35 -0500
commit8c2f767bf3c4a7932898e657c6b12a2234cd2eca (patch)
tree1fcaa5474bb41fe68f98d2962745c1400f2a820f /sound/pci/hda
parentc9b46f9144b8dce6c12aec08f34a908aedd28b37 (diff)
ALSA: hda - Remove unnecessary caches for power states in patch_sigmatel.c
The power-state changes in patch_sigmatel.c are accessed via *_cached() but they shouldn't be really cached. Fixed to the normal write. Also, stac92hd71xx_suspend and resume are no longer necessary as the power-state changes are handled properly in the common routine. Removed these hacks now. Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/pci/hda')
-rw-r--r--sound/pci/hda/patch_sigmatel.c62
1 files changed, 6 insertions, 56 deletions
diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c
index 068a77ae459e..14db35a61cfe 100644
--- a/sound/pci/hda/patch_sigmatel.c
+++ b/sound/pci/hda/patch_sigmatel.c
@@ -2413,7 +2413,7 @@ static int stac92xx_capture_pcm_prepare(struct hda_pcm_stream *hinfo,
2413 2413
2414 if (spec->powerdown_adcs) { 2414 if (spec->powerdown_adcs) {
2415 msleep(40); 2415 msleep(40);
2416 snd_hda_codec_write_cache(codec, nid, 0, 2416 snd_hda_codec_write(codec, nid, 0,
2417 AC_VERB_SET_POWER_STATE, AC_PWRST_D0); 2417 AC_VERB_SET_POWER_STATE, AC_PWRST_D0);
2418 } 2418 }
2419 snd_hda_codec_setup_stream(codec, nid, stream_tag, 0, format); 2419 snd_hda_codec_setup_stream(codec, nid, stream_tag, 0, format);
@@ -2429,7 +2429,7 @@ static int stac92xx_capture_pcm_cleanup(struct hda_pcm_stream *hinfo,
2429 2429
2430 snd_hda_codec_cleanup_stream(codec, nid); 2430 snd_hda_codec_cleanup_stream(codec, nid);
2431 if (spec->powerdown_adcs) 2431 if (spec->powerdown_adcs)
2432 snd_hda_codec_write_cache(codec, nid, 0, 2432 snd_hda_codec_write(codec, nid, 0,
2433 AC_VERB_SET_POWER_STATE, AC_PWRST_D3); 2433 AC_VERB_SET_POWER_STATE, AC_PWRST_D3);
2434 return 0; 2434 return 0;
2435} 2435}
@@ -3866,7 +3866,7 @@ static void stac92xx_power_down(struct hda_codec *codec)
3866 for (dac = spec->dac_list; *dac; dac++) 3866 for (dac = spec->dac_list; *dac; dac++)
3867 if (!is_in_dac_nids(spec, *dac) && 3867 if (!is_in_dac_nids(spec, *dac) &&
3868 spec->multiout.hp_nid != *dac) 3868 spec->multiout.hp_nid != *dac)
3869 snd_hda_codec_write_cache(codec, *dac, 0, 3869 snd_hda_codec_write(codec, *dac, 0,
3870 AC_VERB_SET_POWER_STATE, AC_PWRST_D3); 3870 AC_VERB_SET_POWER_STATE, AC_PWRST_D3);
3871} 3871}
3872 3872
@@ -3885,7 +3885,7 @@ static int stac92xx_init(struct hda_codec *codec)
3885 /* power down adcs initially */ 3885 /* power down adcs initially */
3886 if (spec->powerdown_adcs) 3886 if (spec->powerdown_adcs)
3887 for (i = 0; i < spec->num_adcs; i++) 3887 for (i = 0; i < spec->num_adcs; i++)
3888 snd_hda_codec_write_cache(codec, 3888 snd_hda_codec_write(codec,
3889 spec->adc_nids[i], 0, 3889 spec->adc_nids[i], 0,
3890 AC_VERB_SET_POWER_STATE, AC_PWRST_D3); 3890 AC_VERB_SET_POWER_STATE, AC_PWRST_D3);
3891 3891
@@ -4724,48 +4724,6 @@ again:
4724 return 0; 4724 return 0;
4725} 4725}
4726 4726
4727#ifdef SND_HDA_NEEDS_RESUME
4728static void stac92hd71xx_set_power_state(struct hda_codec *codec, int pwr)
4729{
4730 struct sigmatel_spec *spec = codec->spec;
4731 int i;
4732 snd_hda_codec_write_cache(codec, codec->afg, 0,
4733 AC_VERB_SET_POWER_STATE, pwr);
4734
4735 msleep(1);
4736 for (i = 0; i < spec->num_adcs; i++) {
4737 snd_hda_codec_write_cache(codec,
4738 spec->adc_nids[i], 0,
4739 AC_VERB_SET_POWER_STATE, pwr);
4740 }
4741};
4742
4743static int stac92hd71xx_resume(struct hda_codec *codec)
4744{
4745 stac92hd71xx_set_power_state(codec, AC_PWRST_D0);
4746 return stac92xx_resume(codec);
4747}
4748
4749static int stac92hd71xx_suspend(struct hda_codec *codec, pm_message_t state)
4750{
4751 stac92hd71xx_set_power_state(codec, AC_PWRST_D3);
4752 return stac92xx_suspend(codec, state);
4753};
4754
4755#endif
4756
4757static struct hda_codec_ops stac92hd71bxx_patch_ops = {
4758 .build_controls = stac92xx_build_controls,
4759 .build_pcms = stac92xx_build_pcms,
4760 .init = stac92xx_init,
4761 .free = stac92xx_free,
4762 .unsol_event = stac92xx_unsol_event,
4763#ifdef SND_HDA_NEEDS_RESUME
4764 .suspend = stac92hd71xx_suspend,
4765 .resume = stac92hd71xx_resume,
4766#endif
4767};
4768
4769static struct hda_input_mux stac92hd71bxx_dmux = { 4727static struct hda_input_mux stac92hd71bxx_dmux = {
4770 .num_items = 4, 4728 .num_items = 4,
4771 .items = { 4729 .items = {
@@ -4842,12 +4800,8 @@ again:
4842 break; 4800 break;
4843 } 4801 }
4844 if ((codec->revision_id & 0xf) == 0 || 4802 if ((codec->revision_id & 0xf) == 0 ||
4845 (codec->revision_id & 0xf) == 1) { 4803 (codec->revision_id & 0xf) == 1)
4846#ifdef SND_HDA_NEEDS_RESUME
4847 codec->patch_ops = stac92hd71bxx_patch_ops;
4848#endif
4849 spec->stream_delay = 40; /* 40 milliseconds */ 4804 spec->stream_delay = 40; /* 40 milliseconds */
4850 }
4851 4805
4852 /* no output amps */ 4806 /* no output amps */
4853 spec->num_pwrs = 0; 4807 spec->num_pwrs = 0;
@@ -4859,12 +4813,8 @@ again:
4859 stac_change_pin_config(codec, 0xf, 0x40f000f0); 4813 stac_change_pin_config(codec, 0xf, 0x40f000f0);
4860 break; 4814 break;
4861 case 0x111d7603: /* 6 Port with Analog Mixer */ 4815 case 0x111d7603: /* 6 Port with Analog Mixer */
4862 if ((codec->revision_id & 0xf) == 1) { 4816 if ((codec->revision_id & 0xf) == 1)
4863#ifdef SND_HDA_NEEDS_RESUME
4864 codec->patch_ops = stac92hd71bxx_patch_ops;
4865#endif
4866 spec->stream_delay = 40; /* 40 milliseconds */ 4817 spec->stream_delay = 40; /* 40 milliseconds */
4867 }
4868 4818
4869 /* no output amps */ 4819 /* no output amps */
4870 spec->num_pwrs = 0; 4820 spec->num_pwrs = 0;