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

Commit f285b8c8 authored by Axel Lin's avatar Axel Lin Committed by Mark Brown
Browse files

ASoC: pxa: Convert tosa to use snd_soc_register_card()



Use snd_soc_register_card() instead of creating a "soc-audio" platform device.

Signed-off-by: default avatarAxel Lin <axel.lin@gmail.com>
Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
parent ac1e8986
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -889,6 +889,11 @@ static struct platform_device wm9712_device = {
	.id	= -1,
};

static struct platform_device tosa_audio_device = {
	.name	= "tosa-audio",
	.id	= -1,
};

static struct platform_device *devices[] __initdata = {
	&tosascoop_device,
	&tosascoop_jc_device,
@@ -901,6 +906,7 @@ static struct platform_device *devices[] __initdata = {
	&sharpsl_rom_device,
	&wm9712_device,
	&tosa_gpio_vbus,
	&tosa_audio_device,
};

static void tosa_poweroff(void)
+30 −47
Original line number Diff line number Diff line
@@ -34,8 +34,6 @@
#include "../codecs/wm9712.h"
#include "pxa2xx-ac97.h"

static struct snd_soc_card tosa;

#define TOSA_HP        0
#define TOSA_MIC_INT   1
#define TOSA_HEADSET   2
@@ -236,70 +234,55 @@ static struct snd_soc_dai_link tosa_dai[] = {
},
};

static int tosa_probe(struct snd_soc_card *card)
{
	int ret;

	ret = gpio_request(TOSA_GPIO_L_MUTE, "Headphone Jack");
	if (ret)
		return ret;
	ret = gpio_direction_output(TOSA_GPIO_L_MUTE, 0);
	if (ret)
		gpio_free(TOSA_GPIO_L_MUTE);

	return ret;
}

static int tosa_remove(struct snd_soc_card *card)
{
	gpio_free(TOSA_GPIO_L_MUTE);
	return 0;
}

static struct snd_soc_card tosa = {
	.name = "Tosa",
	.dai_link = tosa_dai,
	.num_links = ARRAY_SIZE(tosa_dai),
	.probe = tosa_probe,
	.remove = tosa_remove,
};

static struct platform_device *tosa_snd_device;

static int __init tosa_init(void)
static int __devinit tosa_probe(struct platform_device *pdev)
{
	struct snd_soc_card *card = &tosa;
	int ret;

	if (!machine_is_tosa())
		return -ENODEV;

	tosa_snd_device = platform_device_alloc("soc-audio", -1);
	if (!tosa_snd_device) {
		ret = -ENOMEM;
		goto err_alloc;
	}

	platform_set_drvdata(tosa_snd_device, &tosa);
	ret = platform_device_add(tosa_snd_device);

	if (!ret)
		return 0;
	ret = gpio_request_one(TOSA_GPIO_L_MUTE, GPIOF_OUT_INIT_LOW,
			       "Headphone Jack");
	if (ret)
		return ret;

	platform_device_put(tosa_snd_device);
	card->dev = &pdev->dev;

err_alloc:
	ret = snd_soc_register_card(card);
	if (ret) {
		dev_err(&pdev->dev, "snd_soc_register_card() failed: %d\n",
			ret);
		gpio_free(TOSA_GPIO_L_MUTE);
	}
	return ret;
}

static void __exit tosa_exit(void)
static int __devexit tosa_remove(struct platform_device *pdev)
{
	platform_device_unregister(tosa_snd_device);
	struct snd_soc_card *card = platform_get_drvdata(pdev);

	gpio_free(TOSA_GPIO_L_MUTE);
	snd_soc_unregister_card(card);
	return 0;
}

module_init(tosa_init);
module_exit(tosa_exit);
static struct platform_driver tosa_driver = {
	.driver		= {
		.name	= "tosa-audio",
		.owner	= THIS_MODULE,
	},
	.probe		= tosa_probe,
	.remove		= __devexit_p(tosa_remove),
};

module_platform_driver(tosa_driver);

/* Module information */
MODULE_AUTHOR("Richard Purdie");
MODULE_DESCRIPTION("ALSA SoC Tosa");
MODULE_LICENSE("GPL");
MODULE_ALIAS("platform:tosa-audio");