Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f3d0e82f authored by Mark Brown's avatar Mark Brown
Browse files

ASoC: Update ads117x to current APIs



Probe as a platform driver (ads117x) and remove the call to
snd_soc_init_card().

Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
parent 2dcf9fb9
Loading
Loading
Loading
Loading
+36 −40
Original line number Diff line number Diff line
@@ -37,46 +37,12 @@ struct snd_soc_dai ads117x_dai = {
};
EXPORT_SYMBOL_GPL(ads117x_dai);

/*
 * initialise the ads117x driver
 */
static int ads117x_init(struct snd_soc_device *socdev)
{
	struct snd_soc_codec *codec = socdev->card->codec;
	int ret = 0;

	codec->name = "ADS117X";
	codec->owner = THIS_MODULE;
	codec->dai = &ads117x_dai;
	codec->num_dai = 1;

	/* register pcms */
	ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
	if (ret < 0) {
		printk(KERN_ERR "ads117x: failed to create pcms\n");
		return ret;
	}

	ret = snd_soc_init_card(socdev);
	if (ret < 0) {
		printk(KERN_ERR "ads117x: failed to register card\n");
		goto card_err;
	}
	return ret;

card_err:
	snd_soc_free_pcms(socdev);
	return ret;
}

static int ads117x_probe(struct platform_device *pdev)
{
	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
	struct snd_soc_codec *codec;
	int ret;

	pr_info("ads117x ADC\n");

	codec = kzalloc(sizeof(struct snd_soc_codec), GFP_KERNEL);
	if (codec == NULL)
		return -ENOMEM;
@@ -85,14 +51,22 @@ static int ads117x_probe(struct platform_device *pdev)
	mutex_init(&codec->mutex);
	INIT_LIST_HEAD(&codec->dapm_widgets);
	INIT_LIST_HEAD(&codec->dapm_paths);
	codec->name = "ADS117X";
	codec->owner = THIS_MODULE;
	codec->dai = &ads117x_dai;
	codec->num_dai = 1;

	ret = ads117x_init(socdev);
	if (ret != 0)
	/* register pcms */
	ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
	if (ret < 0) {
		printk(KERN_ERR "ads117x: failed to create pcms\n");
		kfree(codec);

		return ret;
	}

	return 0;
}

static int ads117x_remove(struct platform_device *pdev)
{
	struct snd_soc_device *socdev = platform_get_drvdata(pdev);
@@ -110,15 +84,37 @@ struct snd_soc_codec_device soc_codec_dev_ads117x = {
};
EXPORT_SYMBOL_GPL(soc_codec_dev_ads117x);

static int __init ads117x_modinit(void)
static __devinit int ads117x_platform_probe(struct platform_device *pdev)
{
	ads117x_dai.dev = &pdev->dev;
	return snd_soc_register_dai(&ads117x_dai);
}
module_init(ads117x_modinit);

static void __exit ads117x_exit(void)
static int __devexit ads117x_platform_remove(struct platform_device *pdev)
{
	snd_soc_unregister_dai(&ads117x_dai);
	return 0;
}

static struct platform_driver ads117x_codec_driver = {
	.driver = {
			.name = "ads117x",
			.owner = THIS_MODULE,
	},

	.probe = ads117x_platform_probe,
	.remove = __devexit_p(ads117x_platform_remove),
};

static int __init ads117x_init(void)
{
	return platform_driver_register(&ads117x_codec_driver);
}
module_init(ads117x_init);

static void __exit ads117x_exit(void)
{
	platform_driver_unregister(&ads117x_codec_driver);
}
module_exit(ads117x_exit);