return 0;
 }
 
+static int wm5100_soc_volatile(struct snd_soc_codec *codec,
+                              unsigned int reg)
+{
+       return true;
+}
+
+
 static struct snd_soc_codec_driver soc_codec_dev_wm5100 = {
        .probe =        wm5100_probe,
        .remove =       wm5100_remove,
        .set_pll = wm5100_set_fll,
        .set_bias_level = wm5100_set_bias_level,
        .idle_bias_off = 1,
+       .reg_cache_size = WM5100_MAX_REGISTER,
+       .volatile_register = wm5100_soc_volatile,
 
        .seq_notifier = wm5100_seq_notifier,
        .controls = wm5100_snd_controls,
 
        return 0;
 }
 
+static int wm8962_soc_volatile(struct snd_soc_codec *codec,
+                              unsigned int reg)
+{
+       return true;
+}
+
+
 static struct snd_soc_codec_driver soc_codec_dev_wm8962 = {
        .probe =        wm8962_probe,
        .remove =       wm8962_remove,
        .set_bias_level = wm8962_set_bias_level,
        .set_pll = wm8962_set_fll,
+       .reg_cache_size = WM8962_MAX_REGISTER,
+       .volatile_register = wm8962_soc_volatile,
 };
 
 static const struct regmap_config wm8962_regmap = {
 
        return 0;
 }
 
+static int wm8994_soc_volatile(struct snd_soc_codec *codec,
+                              unsigned int reg)
+{
+       return true;
+}
+
 static struct snd_soc_codec_driver soc_codec_dev_wm8994 = {
        .probe =        wm8994_codec_probe,
        .remove =       wm8994_codec_remove,
        .suspend =      wm8994_suspend,
        .resume =       wm8994_resume,
        .set_bias_level = wm8994_set_bias_level,
+       .reg_cache_size = WM8994_MAX_REGISTER,
+       .volatile_register = wm8994_soc_volatile,
 };
 
 static int __devinit wm8994_probe(struct platform_device *pdev)
 
        return 0;
 }
 
+static int wm8996_soc_volatile_register(struct snd_soc_codec *codec,
+                                       unsigned int reg)
+{
+       return true;
+}
+
 static struct snd_soc_codec_driver soc_codec_dev_wm8996 = {
        .probe =        wm8996_probe,
        .remove =       wm8996_remove,
        .dapm_routes = wm8996_dapm_routes,
        .num_dapm_routes = ARRAY_SIZE(wm8996_dapm_routes),
        .set_pll = wm8996_set_fll,
+       .reg_cache_size = WM8996_MAX_REGISTER,
+       .volatile_register = wm8996_soc_volatile_register,
 };
 
 #define WM8996_RATES (SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000 |\