{
        struct snd_soc_device *socdev = platform_get_drvdata(pdev);
        struct snd_soc_codec *codec = socdev->codec;
+       u16 reg;
+
+       /* Disable everything except touchpanel - that will be handled
+        * by the touch driver and left disabled if touch is not in
+        * use. */
+       reg = ac97_read(codec, AC97_EXTENDED_MID);
+       ac97_write(codec, AC97_EXTENDED_MID, reg | 0x7fff);
+       ac97_write(codec, AC97_EXTENDED_MSTATUS, 0xffff);
+       ac97_write(codec, AC97_POWERDOWN, 0x6f00);
+       ac97_write(codec, AC97_POWERDOWN, 0xffff);
 
-       wm9713_dapm_event(codec, SNDRV_CTL_POWER_D3cold);
        return 0;
 }