Lines Matching refs:wm8580
2 * wm8580.c -- WM8580 ALSA Soc Audio driver
39 #include "wm8580.h"
167 * wm8580 register cache
357 pr_debug("wm8580: PLL %uHz->%uHz\n", source, target);
373 printk(KERN_ERR "wm8580: Unable to scale output frequency "
415 struct wm8580_priv *wm8580 = snd_soc_codec_get_drvdata(codec);
429 state = &wm8580->a;
434 state = &wm8580->b;
827 static int wm8580_register(struct wm8580_priv *wm8580,
831 struct snd_soc_codec *codec = &wm8580->codec;
843 snd_soc_codec_set_drvdata(codec, wm8580);
850 codec->reg_cache_size = ARRAY_SIZE(wm8580->reg_cache);
851 codec->reg_cache = &wm8580->reg_cache;
861 for (i = 0; i < ARRAY_SIZE(wm8580->supplies); i++)
862 wm8580->supplies[i].supply = wm8580_supply_names[i];
864 ret = regulator_bulk_get(codec->dev, ARRAY_SIZE(wm8580->supplies),
865 wm8580->supplies);
871 ret = regulator_bulk_enable(ARRAY_SIZE(wm8580->supplies),
872 wm8580->supplies);
909 regulator_bulk_disable(ARRAY_SIZE(wm8580->supplies), wm8580->supplies);
911 regulator_bulk_free(ARRAY_SIZE(wm8580->supplies), wm8580->supplies);
913 kfree(wm8580);
917 static void wm8580_unregister(struct wm8580_priv *wm8580)
919 wm8580_set_bias_level(&wm8580->codec, SND_SOC_BIAS_OFF);
921 snd_soc_unregister_codec(&wm8580->codec);
922 regulator_bulk_disable(ARRAY_SIZE(wm8580->supplies), wm8580->supplies);
923 regulator_bulk_free(ARRAY_SIZE(wm8580->supplies), wm8580->supplies);
924 kfree(wm8580);
932 struct wm8580_priv *wm8580;
935 wm8580 = kzalloc(sizeof(struct wm8580_priv), GFP_KERNEL);
936 if (wm8580 == NULL)
939 codec = &wm8580->codec;
941 i2c_set_clientdata(i2c, wm8580);
946 return wm8580_register(wm8580, SND_SOC_I2C);
951 struct wm8580_priv *wm8580 = i2c_get_clientdata(client);
952 wm8580_unregister(wm8580);
957 { "wm8580", 0 },
964 .name = "wm8580",