aboutsummaryrefslogtreecommitdiffstats
path: root/sound/soc/codecs/adau1781.c
diff options
context:
space:
mode:
Diffstat (limited to 'sound/soc/codecs/adau1781.c')
-rw-r--r--sound/soc/codecs/adau1781.c33
1 files changed, 15 insertions, 18 deletions
diff --git a/sound/soc/codecs/adau1781.c b/sound/soc/codecs/adau1781.c
index e9fc00fb13dd..35581f43fa6d 100644
--- a/sound/soc/codecs/adau1781.c
+++ b/sound/soc/codecs/adau1781.c
@@ -174,7 +174,7 @@ static const struct snd_kcontrol_new adau1781_mono_mixer_controls[] = {
174static int adau1781_dejitter_fixup(struct snd_soc_dapm_widget *w, 174static int adau1781_dejitter_fixup(struct snd_soc_dapm_widget *w,
175 struct snd_kcontrol *kcontrol, int event) 175 struct snd_kcontrol *kcontrol, int event)
176{ 176{
177 struct snd_soc_codec *codec = w->codec; 177 struct snd_soc_codec *codec = snd_soc_dapm_to_codec(w->dapm);
178 struct adau *adau = snd_soc_codec_get_drvdata(codec); 178 struct adau *adau = snd_soc_codec_get_drvdata(codec);
179 179
180 /* After any power changes have been made the dejitter circuit 180 /* After any power changes have been made the dejitter circuit
@@ -385,7 +385,6 @@ static int adau1781_codec_probe(struct snd_soc_codec *codec)
385{ 385{
386 struct adau1781_platform_data *pdata = dev_get_platdata(codec->dev); 386 struct adau1781_platform_data *pdata = dev_get_platdata(codec->dev);
387 struct adau *adau = snd_soc_codec_get_drvdata(codec); 387 struct adau *adau = snd_soc_codec_get_drvdata(codec);
388 const char *firmware;
389 int ret; 388 int ret;
390 389
391 ret = adau17x1_add_widgets(codec); 390 ret = adau17x1_add_widgets(codec);
@@ -422,25 +421,10 @@ static int adau1781_codec_probe(struct snd_soc_codec *codec)
422 return ret; 421 return ret;
423 } 422 }
424 423
425 switch (adau->type) {
426 case ADAU1381:
427 firmware = ADAU1381_FIRMWARE;
428 break;
429 case ADAU1781:
430 firmware = ADAU1781_FIRMWARE;
431 break;
432 default:
433 return -EINVAL;
434 }
435
436 ret = adau17x1_add_routes(codec); 424 ret = adau17x1_add_routes(codec);
437 if (ret < 0) 425 if (ret < 0)
438 return ret; 426 return ret;
439 427
440 ret = adau17x1_load_firmware(adau, codec->dev, firmware);
441 if (ret)
442 dev_warn(codec->dev, "Failed to load firmware\n");
443
444 return 0; 428 return 0;
445} 429}
446 430
@@ -488,6 +472,7 @@ const struct regmap_config adau1781_regmap_config = {
488 .num_reg_defaults = ARRAY_SIZE(adau1781_reg_defaults), 472 .num_reg_defaults = ARRAY_SIZE(adau1781_reg_defaults),
489 .readable_reg = adau1781_readable_register, 473 .readable_reg = adau1781_readable_register,
490 .volatile_reg = adau17x1_volatile_register, 474 .volatile_reg = adau17x1_volatile_register,
475 .precious_reg = adau17x1_precious_register,
491 .cache_type = REGCACHE_RBTREE, 476 .cache_type = REGCACHE_RBTREE,
492}; 477};
493EXPORT_SYMBOL_GPL(adau1781_regmap_config); 478EXPORT_SYMBOL_GPL(adau1781_regmap_config);
@@ -495,9 +480,21 @@ EXPORT_SYMBOL_GPL(adau1781_regmap_config);
495int adau1781_probe(struct device *dev, struct regmap *regmap, 480int adau1781_probe(struct device *dev, struct regmap *regmap,
496 enum adau17x1_type type, void (*switch_mode)(struct device *dev)) 481 enum adau17x1_type type, void (*switch_mode)(struct device *dev))
497{ 482{
483 const char *firmware_name;
498 int ret; 484 int ret;
499 485
500 ret = adau17x1_probe(dev, regmap, type, switch_mode); 486 switch (type) {
487 case ADAU1381:
488 firmware_name = ADAU1381_FIRMWARE;
489 break;
490 case ADAU1781:
491 firmware_name = ADAU1781_FIRMWARE;
492 break;
493 default:
494 return -EINVAL;
495 }
496
497 ret = adau17x1_probe(dev, regmap, type, switch_mode, firmware_name);
501 if (ret) 498 if (ret)
502 return ret; 499 return ret;
503 500