All of lore.kernel.org
 help / color / mirror / Atom feed
From: Krzysztof Kozlowski <krzk@kernel.org>
To: linux-kernel@vger.kernel.org
Cc: Arnd Bergmann <arnd@arndb.de>,
	Krzysztof Kozlowski <krzk@kernel.org>,
	Russell King <linux@armlinux.org.uk>,
	Sangbeom Kim <sbkim73@samsung.com>,
	Sylwester Nawrocki <s.nawrocki@samsung.com>,
	Liam Girdwood <lgirdwood@gmail.com>,
	Mark Brown <broonie@kernel.org>, Jaroslav Kysela <perex@perex.cz>,
	Takashi Iwai <tiwai@suse.com>,
	linux-arm-kernel@lists.infradead.org,
	alsa-devel@alsa-project.org
Subject: [PATCH v2 25/41] ASoC: samsung: neo1973: turn into platform driver
Date: Thu,  6 Aug 2020 20:20:42 +0200	[thread overview]
Message-ID: <20200806182059.2431-25-krzk@kernel.org> (raw)
In-Reply-To: <20200806181932.2253-1-krzk@kernel.org>

From: Arnd Bergmann <arnd@arndb.de>

Avoid machine specific headers by using a gpio lookup table
combined with a platform_driver for this board.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
---
 arch/arm/mach-s3c24xx/mach-gta02.c | 17 ++++++
 sound/soc/samsung/neo1973_wm8753.c | 85 +++++++++---------------------
 2 files changed, 43 insertions(+), 59 deletions(-)

diff --git a/arch/arm/mach-s3c24xx/mach-gta02.c b/arch/arm/mach-s3c24xx/mach-gta02.c
index 346a158f9960..46a80fae7056 100644
--- a/arch/arm/mach-s3c24xx/mach-gta02.c
+++ b/arch/arm/mach-s3c24xx/mach-gta02.c
@@ -15,6 +15,7 @@
 #include <linux/delay.h>
 #include <linux/timer.h>
 #include <linux/init.h>
+#include <linux/gpio/machine.h>
 #include <linux/gpio.h>
 #include <linux/gpio_keys.h>
 #include <linux/workqueue.h>
@@ -472,6 +473,20 @@ static struct platform_device gta02_buttons_device = {
 	},
 };
 
+static struct gpiod_lookup_table gta02_audio_gpio_table = {
+	.dev_id = "neo1973-audio",
+	.table = {
+		GPIO_LOOKUP("GPIOJ", 2, "amp-shut", GPIO_ACTIVE_HIGH),
+		GPIO_LOOKUP("GPIOJ", 1, "hp", GPIO_ACTIVE_HIGH),
+		{ },
+	},
+};
+
+static struct platform_device gta02_audio = {
+	.name = "neo1973-audio",
+	.id = -1,
+};
+
 static void __init gta02_map_io(void)
 {
 	s3c24xx_init_io(gta02_iodesc, ARRAY_SIZE(gta02_iodesc));
@@ -496,6 +511,7 @@ static struct platform_device *gta02_devices[] __initdata = {
 	&gta02_buttons_device,
 	&s3c_device_adc,
 	&s3c_device_ts,
+	&gta02_audio,
 };
 
 static void gta02_poweroff(void)
@@ -522,6 +538,7 @@ static void __init gta02_machine_init(void)
 
 	i2c_register_board_info(0, gta02_i2c_devs, ARRAY_SIZE(gta02_i2c_devs));
 
+	gpiod_add_lookup_table(&gta02_audio_gpio_table);
 	platform_add_devices(gta02_devices, ARRAY_SIZE(gta02_devices));
 	pm_power_off = gta02_poweroff;
 
diff --git a/sound/soc/samsung/neo1973_wm8753.c b/sound/soc/samsung/neo1973_wm8753.c
index 54317e0f68f8..9266070e0181 100644
--- a/sound/soc/samsung/neo1973_wm8753.c
+++ b/sound/soc/samsung/neo1973_wm8753.c
@@ -11,14 +11,11 @@
 
 #include <linux/module.h>
 #include <linux/platform_device.h>
-#include <linux/gpio.h>
+#include <linux/gpio/consumer.h>
 
 #include <sound/soc.h>
 
-#include <mach/gpio-samsung.h>
-#include <asm/mach-types.h>
 #include "regs-iis.h"
-
 #include "../codecs/wm8753.h"
 #include "s3c24xx-i2s.h"
 
@@ -166,6 +163,7 @@ static struct snd_soc_ops neo1973_voice_ops = {
 	.hw_free = neo1973_voice_hw_free,
 };
 
+static struct gpio_desc *gpiod_hp_in, *gpiod_amp_shut;
 static int gta02_speaker_enabled;
 
 static int lm4853_set_spk(struct snd_kcontrol *kcontrol,
@@ -173,7 +171,7 @@ static int lm4853_set_spk(struct snd_kcontrol *kcontrol,
 {
 	gta02_speaker_enabled = ucontrol->value.integer.value[0];
 
-	gpio_set_value(S3C2410_GPJ(2), !gta02_speaker_enabled);
+	gpiod_set_value(gpiod_hp_in, !gta02_speaker_enabled);
 
 	return 0;
 }
@@ -188,7 +186,7 @@ static int lm4853_get_spk(struct snd_kcontrol *kcontrol,
 static int lm4853_event(struct snd_soc_dapm_widget *w,
 			struct snd_kcontrol *k, int event)
 {
-	gpio_set_value(S3C2410_GPJ(1), SND_SOC_DAPM_EVENT_OFF(event));
+	gpiod_set_value(gpiod_amp_shut, SND_SOC_DAPM_EVENT_OFF(event));
 
 	return 0;
 }
@@ -308,13 +306,8 @@ static struct snd_soc_codec_conf neo1973_codec_conf[] = {
 	},
 };
 
-static const struct gpio neo1973_gta02_gpios[] = {
-	{ S3C2410_GPJ(2), GPIOF_OUT_INIT_HIGH, "GTA02_HP_IN" },
-	{ S3C2410_GPJ(1), GPIOF_OUT_INIT_HIGH, "GTA02_AMP_SHUT" },
-};
-
 static struct snd_soc_card neo1973 = {
-	.name = "neo1973",
+	.name = "neo1973gta02",
 	.owner = THIS_MODULE,
 	.dai_link = neo1973_dai,
 	.num_links = ARRAY_SIZE(neo1973_dai),
@@ -332,62 +325,36 @@ static struct snd_soc_card neo1973 = {
 	.fully_routed = true,
 };
 
-static struct platform_device *neo1973_snd_device;
-
-static int __init neo1973_init(void)
+static int neo1973_probe(struct platform_device *pdev)
 {
-	int ret;
-
-	if (!machine_is_neo1973_gta02())
-		return -ENODEV;
+	struct device *dev = &pdev->dev;
 
-	if (machine_is_neo1973_gta02()) {
-		neo1973.name = "neo1973gta02";
-		neo1973.num_aux_devs = 1;
-
-		ret = gpio_request_array(neo1973_gta02_gpios,
-				ARRAY_SIZE(neo1973_gta02_gpios));
-		if (ret)
-			return ret;
+	gpiod_hp_in = devm_gpiod_get(dev, "hp", GPIOD_OUT_HIGH);
+	if (IS_ERR(gpiod_hp_in)) {
+		dev_err(dev, "missing gpio %s\n", "hp");
+		return PTR_ERR(gpiod_hp_in);
 	}
-
-	neo1973_snd_device = platform_device_alloc("soc-audio", -1);
-	if (!neo1973_snd_device) {
-		ret = -ENOMEM;
-		goto err_gpio_free;
+	gpiod_amp_shut = devm_gpiod_get(dev, "amp-shut", GPIOD_OUT_HIGH);
+	if (IS_ERR(gpiod_amp_shut)) {
+		dev_err(dev, "missing gpio %s\n", "amp-shut");
+		return PTR_ERR(gpiod_amp_shut);
 	}
 
-	platform_set_drvdata(neo1973_snd_device, &neo1973);
-	ret = platform_device_add(neo1973_snd_device);
-
-	if (ret)
-		goto err_put_device;
-
-	return 0;
-
-err_put_device:
-	platform_device_put(neo1973_snd_device);
-err_gpio_free:
-	if (machine_is_neo1973_gta02()) {
-		gpio_free_array(neo1973_gta02_gpios,
-				ARRAY_SIZE(neo1973_gta02_gpios));
-	}
-	return ret;
+	neo1973.dev = dev;
+	return devm_snd_soc_register_card(dev, &neo1973);
 }
-module_init(neo1973_init);
-
-static void __exit neo1973_exit(void)
-{
-	platform_device_unregister(neo1973_snd_device);
 
-	if (machine_is_neo1973_gta02()) {
-		gpio_free_array(neo1973_gta02_gpios,
-				ARRAY_SIZE(neo1973_gta02_gpios));
-	}
-}
-module_exit(neo1973_exit);
+struct platform_driver neo1973_audio = {
+	.driver = {
+		.name = "neo1973-audio",
+		.pm = &snd_soc_pm_ops,
+	},
+	.probe = neo1973_probe,
+};
+module_platform_driver(neo1973_audio);
 
 /* Module information */
 MODULE_AUTHOR("Graeme Gregory, graeme@openmoko.org, www.openmoko.org");
 MODULE_DESCRIPTION("ALSA SoC WM8753 Neo1973 and Frerunner");
 MODULE_LICENSE("GPL");
+MODULE_ALIAS("platform:neo1973-audio");
-- 
2.17.1


WARNING: multiple messages have this Message-ID (diff)
From: Krzysztof Kozlowski <krzk@kernel.org>
To: linux-kernel@vger.kernel.org
Cc: alsa-devel@alsa-project.org, Arnd Bergmann <arnd@arndb.de>,
	Sangbeom Kim <sbkim73@samsung.com>, Takashi Iwai <tiwai@suse.com>,
	Liam Girdwood <lgirdwood@gmail.com>,
	Krzysztof Kozlowski <krzk@kernel.org>,
	Russell King <linux@armlinux.org.uk>,
	Mark Brown <broonie@kernel.org>,
	linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2 25/41] ASoC: samsung: neo1973: turn into platform driver
Date: Thu,  6 Aug 2020 20:20:42 +0200	[thread overview]
Message-ID: <20200806182059.2431-25-krzk@kernel.org> (raw)
In-Reply-To: <20200806181932.2253-1-krzk@kernel.org>

From: Arnd Bergmann <arnd@arndb.de>

Avoid machine specific headers by using a gpio lookup table
combined with a platform_driver for this board.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
---
 arch/arm/mach-s3c24xx/mach-gta02.c | 17 ++++++
 sound/soc/samsung/neo1973_wm8753.c | 85 +++++++++---------------------
 2 files changed, 43 insertions(+), 59 deletions(-)

diff --git a/arch/arm/mach-s3c24xx/mach-gta02.c b/arch/arm/mach-s3c24xx/mach-gta02.c
index 346a158f9960..46a80fae7056 100644
--- a/arch/arm/mach-s3c24xx/mach-gta02.c
+++ b/arch/arm/mach-s3c24xx/mach-gta02.c
@@ -15,6 +15,7 @@
 #include <linux/delay.h>
 #include <linux/timer.h>
 #include <linux/init.h>
+#include <linux/gpio/machine.h>
 #include <linux/gpio.h>
 #include <linux/gpio_keys.h>
 #include <linux/workqueue.h>
@@ -472,6 +473,20 @@ static struct platform_device gta02_buttons_device = {
 	},
 };
 
+static struct gpiod_lookup_table gta02_audio_gpio_table = {
+	.dev_id = "neo1973-audio",
+	.table = {
+		GPIO_LOOKUP("GPIOJ", 2, "amp-shut", GPIO_ACTIVE_HIGH),
+		GPIO_LOOKUP("GPIOJ", 1, "hp", GPIO_ACTIVE_HIGH),
+		{ },
+	},
+};
+
+static struct platform_device gta02_audio = {
+	.name = "neo1973-audio",
+	.id = -1,
+};
+
 static void __init gta02_map_io(void)
 {
 	s3c24xx_init_io(gta02_iodesc, ARRAY_SIZE(gta02_iodesc));
@@ -496,6 +511,7 @@ static struct platform_device *gta02_devices[] __initdata = {
 	&gta02_buttons_device,
 	&s3c_device_adc,
 	&s3c_device_ts,
+	&gta02_audio,
 };
 
 static void gta02_poweroff(void)
@@ -522,6 +538,7 @@ static void __init gta02_machine_init(void)
 
 	i2c_register_board_info(0, gta02_i2c_devs, ARRAY_SIZE(gta02_i2c_devs));
 
+	gpiod_add_lookup_table(&gta02_audio_gpio_table);
 	platform_add_devices(gta02_devices, ARRAY_SIZE(gta02_devices));
 	pm_power_off = gta02_poweroff;
 
diff --git a/sound/soc/samsung/neo1973_wm8753.c b/sound/soc/samsung/neo1973_wm8753.c
index 54317e0f68f8..9266070e0181 100644
--- a/sound/soc/samsung/neo1973_wm8753.c
+++ b/sound/soc/samsung/neo1973_wm8753.c
@@ -11,14 +11,11 @@
 
 #include <linux/module.h>
 #include <linux/platform_device.h>
-#include <linux/gpio.h>
+#include <linux/gpio/consumer.h>
 
 #include <sound/soc.h>
 
-#include <mach/gpio-samsung.h>
-#include <asm/mach-types.h>
 #include "regs-iis.h"
-
 #include "../codecs/wm8753.h"
 #include "s3c24xx-i2s.h"
 
@@ -166,6 +163,7 @@ static struct snd_soc_ops neo1973_voice_ops = {
 	.hw_free = neo1973_voice_hw_free,
 };
 
+static struct gpio_desc *gpiod_hp_in, *gpiod_amp_shut;
 static int gta02_speaker_enabled;
 
 static int lm4853_set_spk(struct snd_kcontrol *kcontrol,
@@ -173,7 +171,7 @@ static int lm4853_set_spk(struct snd_kcontrol *kcontrol,
 {
 	gta02_speaker_enabled = ucontrol->value.integer.value[0];
 
-	gpio_set_value(S3C2410_GPJ(2), !gta02_speaker_enabled);
+	gpiod_set_value(gpiod_hp_in, !gta02_speaker_enabled);
 
 	return 0;
 }
@@ -188,7 +186,7 @@ static int lm4853_get_spk(struct snd_kcontrol *kcontrol,
 static int lm4853_event(struct snd_soc_dapm_widget *w,
 			struct snd_kcontrol *k, int event)
 {
-	gpio_set_value(S3C2410_GPJ(1), SND_SOC_DAPM_EVENT_OFF(event));
+	gpiod_set_value(gpiod_amp_shut, SND_SOC_DAPM_EVENT_OFF(event));
 
 	return 0;
 }
@@ -308,13 +306,8 @@ static struct snd_soc_codec_conf neo1973_codec_conf[] = {
 	},
 };
 
-static const struct gpio neo1973_gta02_gpios[] = {
-	{ S3C2410_GPJ(2), GPIOF_OUT_INIT_HIGH, "GTA02_HP_IN" },
-	{ S3C2410_GPJ(1), GPIOF_OUT_INIT_HIGH, "GTA02_AMP_SHUT" },
-};
-
 static struct snd_soc_card neo1973 = {
-	.name = "neo1973",
+	.name = "neo1973gta02",
 	.owner = THIS_MODULE,
 	.dai_link = neo1973_dai,
 	.num_links = ARRAY_SIZE(neo1973_dai),
@@ -332,62 +325,36 @@ static struct snd_soc_card neo1973 = {
 	.fully_routed = true,
 };
 
-static struct platform_device *neo1973_snd_device;
-
-static int __init neo1973_init(void)
+static int neo1973_probe(struct platform_device *pdev)
 {
-	int ret;
-
-	if (!machine_is_neo1973_gta02())
-		return -ENODEV;
+	struct device *dev = &pdev->dev;
 
-	if (machine_is_neo1973_gta02()) {
-		neo1973.name = "neo1973gta02";
-		neo1973.num_aux_devs = 1;
-
-		ret = gpio_request_array(neo1973_gta02_gpios,
-				ARRAY_SIZE(neo1973_gta02_gpios));
-		if (ret)
-			return ret;
+	gpiod_hp_in = devm_gpiod_get(dev, "hp", GPIOD_OUT_HIGH);
+	if (IS_ERR(gpiod_hp_in)) {
+		dev_err(dev, "missing gpio %s\n", "hp");
+		return PTR_ERR(gpiod_hp_in);
 	}
-
-	neo1973_snd_device = platform_device_alloc("soc-audio", -1);
-	if (!neo1973_snd_device) {
-		ret = -ENOMEM;
-		goto err_gpio_free;
+	gpiod_amp_shut = devm_gpiod_get(dev, "amp-shut", GPIOD_OUT_HIGH);
+	if (IS_ERR(gpiod_amp_shut)) {
+		dev_err(dev, "missing gpio %s\n", "amp-shut");
+		return PTR_ERR(gpiod_amp_shut);
 	}
 
-	platform_set_drvdata(neo1973_snd_device, &neo1973);
-	ret = platform_device_add(neo1973_snd_device);
-
-	if (ret)
-		goto err_put_device;
-
-	return 0;
-
-err_put_device:
-	platform_device_put(neo1973_snd_device);
-err_gpio_free:
-	if (machine_is_neo1973_gta02()) {
-		gpio_free_array(neo1973_gta02_gpios,
-				ARRAY_SIZE(neo1973_gta02_gpios));
-	}
-	return ret;
+	neo1973.dev = dev;
+	return devm_snd_soc_register_card(dev, &neo1973);
 }
-module_init(neo1973_init);
-
-static void __exit neo1973_exit(void)
-{
-	platform_device_unregister(neo1973_snd_device);
 
-	if (machine_is_neo1973_gta02()) {
-		gpio_free_array(neo1973_gta02_gpios,
-				ARRAY_SIZE(neo1973_gta02_gpios));
-	}
-}
-module_exit(neo1973_exit);
+struct platform_driver neo1973_audio = {
+	.driver = {
+		.name = "neo1973-audio",
+		.pm = &snd_soc_pm_ops,
+	},
+	.probe = neo1973_probe,
+};
+module_platform_driver(neo1973_audio);
 
 /* Module information */
 MODULE_AUTHOR("Graeme Gregory, graeme@openmoko.org, www.openmoko.org");
 MODULE_DESCRIPTION("ALSA SoC WM8753 Neo1973 and Frerunner");
 MODULE_LICENSE("GPL");
+MODULE_ALIAS("platform:neo1973-audio");
-- 
2.17.1


WARNING: multiple messages have this Message-ID (diff)
From: Krzysztof Kozlowski <krzk@kernel.org>
To: linux-kernel@vger.kernel.org
Cc: alsa-devel@alsa-project.org, Arnd Bergmann <arnd@arndb.de>,
	Sangbeom Kim <sbkim73@samsung.com>, Takashi Iwai <tiwai@suse.com>,
	Liam Girdwood <lgirdwood@gmail.com>,
	Krzysztof Kozlowski <krzk@kernel.org>,
	Russell King <linux@armlinux.org.uk>,
	Mark Brown <broonie@kernel.org>,
	Sylwester Nawrocki <s.nawrocki@samsung.com>,
	Jaroslav Kysela <perex@perex.cz>,
	linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2 25/41] ASoC: samsung: neo1973: turn into platform driver
Date: Thu,  6 Aug 2020 20:20:42 +0200	[thread overview]
Message-ID: <20200806182059.2431-25-krzk@kernel.org> (raw)
In-Reply-To: <20200806181932.2253-1-krzk@kernel.org>

From: Arnd Bergmann <arnd@arndb.de>

Avoid machine specific headers by using a gpio lookup table
combined with a platform_driver for this board.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
---
 arch/arm/mach-s3c24xx/mach-gta02.c | 17 ++++++
 sound/soc/samsung/neo1973_wm8753.c | 85 +++++++++---------------------
 2 files changed, 43 insertions(+), 59 deletions(-)

diff --git a/arch/arm/mach-s3c24xx/mach-gta02.c b/arch/arm/mach-s3c24xx/mach-gta02.c
index 346a158f9960..46a80fae7056 100644
--- a/arch/arm/mach-s3c24xx/mach-gta02.c
+++ b/arch/arm/mach-s3c24xx/mach-gta02.c
@@ -15,6 +15,7 @@
 #include <linux/delay.h>
 #include <linux/timer.h>
 #include <linux/init.h>
+#include <linux/gpio/machine.h>
 #include <linux/gpio.h>
 #include <linux/gpio_keys.h>
 #include <linux/workqueue.h>
@@ -472,6 +473,20 @@ static struct platform_device gta02_buttons_device = {
 	},
 };
 
+static struct gpiod_lookup_table gta02_audio_gpio_table = {
+	.dev_id = "neo1973-audio",
+	.table = {
+		GPIO_LOOKUP("GPIOJ", 2, "amp-shut", GPIO_ACTIVE_HIGH),
+		GPIO_LOOKUP("GPIOJ", 1, "hp", GPIO_ACTIVE_HIGH),
+		{ },
+	},
+};
+
+static struct platform_device gta02_audio = {
+	.name = "neo1973-audio",
+	.id = -1,
+};
+
 static void __init gta02_map_io(void)
 {
 	s3c24xx_init_io(gta02_iodesc, ARRAY_SIZE(gta02_iodesc));
@@ -496,6 +511,7 @@ static struct platform_device *gta02_devices[] __initdata = {
 	&gta02_buttons_device,
 	&s3c_device_adc,
 	&s3c_device_ts,
+	&gta02_audio,
 };
 
 static void gta02_poweroff(void)
@@ -522,6 +538,7 @@ static void __init gta02_machine_init(void)
 
 	i2c_register_board_info(0, gta02_i2c_devs, ARRAY_SIZE(gta02_i2c_devs));
 
+	gpiod_add_lookup_table(&gta02_audio_gpio_table);
 	platform_add_devices(gta02_devices, ARRAY_SIZE(gta02_devices));
 	pm_power_off = gta02_poweroff;
 
diff --git a/sound/soc/samsung/neo1973_wm8753.c b/sound/soc/samsung/neo1973_wm8753.c
index 54317e0f68f8..9266070e0181 100644
--- a/sound/soc/samsung/neo1973_wm8753.c
+++ b/sound/soc/samsung/neo1973_wm8753.c
@@ -11,14 +11,11 @@
 
 #include <linux/module.h>
 #include <linux/platform_device.h>
-#include <linux/gpio.h>
+#include <linux/gpio/consumer.h>
 
 #include <sound/soc.h>
 
-#include <mach/gpio-samsung.h>
-#include <asm/mach-types.h>
 #include "regs-iis.h"
-
 #include "../codecs/wm8753.h"
 #include "s3c24xx-i2s.h"
 
@@ -166,6 +163,7 @@ static struct snd_soc_ops neo1973_voice_ops = {
 	.hw_free = neo1973_voice_hw_free,
 };
 
+static struct gpio_desc *gpiod_hp_in, *gpiod_amp_shut;
 static int gta02_speaker_enabled;
 
 static int lm4853_set_spk(struct snd_kcontrol *kcontrol,
@@ -173,7 +171,7 @@ static int lm4853_set_spk(struct snd_kcontrol *kcontrol,
 {
 	gta02_speaker_enabled = ucontrol->value.integer.value[0];
 
-	gpio_set_value(S3C2410_GPJ(2), !gta02_speaker_enabled);
+	gpiod_set_value(gpiod_hp_in, !gta02_speaker_enabled);
 
 	return 0;
 }
@@ -188,7 +186,7 @@ static int lm4853_get_spk(struct snd_kcontrol *kcontrol,
 static int lm4853_event(struct snd_soc_dapm_widget *w,
 			struct snd_kcontrol *k, int event)
 {
-	gpio_set_value(S3C2410_GPJ(1), SND_SOC_DAPM_EVENT_OFF(event));
+	gpiod_set_value(gpiod_amp_shut, SND_SOC_DAPM_EVENT_OFF(event));
 
 	return 0;
 }
@@ -308,13 +306,8 @@ static struct snd_soc_codec_conf neo1973_codec_conf[] = {
 	},
 };
 
-static const struct gpio neo1973_gta02_gpios[] = {
-	{ S3C2410_GPJ(2), GPIOF_OUT_INIT_HIGH, "GTA02_HP_IN" },
-	{ S3C2410_GPJ(1), GPIOF_OUT_INIT_HIGH, "GTA02_AMP_SHUT" },
-};
-
 static struct snd_soc_card neo1973 = {
-	.name = "neo1973",
+	.name = "neo1973gta02",
 	.owner = THIS_MODULE,
 	.dai_link = neo1973_dai,
 	.num_links = ARRAY_SIZE(neo1973_dai),
@@ -332,62 +325,36 @@ static struct snd_soc_card neo1973 = {
 	.fully_routed = true,
 };
 
-static struct platform_device *neo1973_snd_device;
-
-static int __init neo1973_init(void)
+static int neo1973_probe(struct platform_device *pdev)
 {
-	int ret;
-
-	if (!machine_is_neo1973_gta02())
-		return -ENODEV;
+	struct device *dev = &pdev->dev;
 
-	if (machine_is_neo1973_gta02()) {
-		neo1973.name = "neo1973gta02";
-		neo1973.num_aux_devs = 1;
-
-		ret = gpio_request_array(neo1973_gta02_gpios,
-				ARRAY_SIZE(neo1973_gta02_gpios));
-		if (ret)
-			return ret;
+	gpiod_hp_in = devm_gpiod_get(dev, "hp", GPIOD_OUT_HIGH);
+	if (IS_ERR(gpiod_hp_in)) {
+		dev_err(dev, "missing gpio %s\n", "hp");
+		return PTR_ERR(gpiod_hp_in);
 	}
-
-	neo1973_snd_device = platform_device_alloc("soc-audio", -1);
-	if (!neo1973_snd_device) {
-		ret = -ENOMEM;
-		goto err_gpio_free;
+	gpiod_amp_shut = devm_gpiod_get(dev, "amp-shut", GPIOD_OUT_HIGH);
+	if (IS_ERR(gpiod_amp_shut)) {
+		dev_err(dev, "missing gpio %s\n", "amp-shut");
+		return PTR_ERR(gpiod_amp_shut);
 	}
 
-	platform_set_drvdata(neo1973_snd_device, &neo1973);
-	ret = platform_device_add(neo1973_snd_device);
-
-	if (ret)
-		goto err_put_device;
-
-	return 0;
-
-err_put_device:
-	platform_device_put(neo1973_snd_device);
-err_gpio_free:
-	if (machine_is_neo1973_gta02()) {
-		gpio_free_array(neo1973_gta02_gpios,
-				ARRAY_SIZE(neo1973_gta02_gpios));
-	}
-	return ret;
+	neo1973.dev = dev;
+	return devm_snd_soc_register_card(dev, &neo1973);
 }
-module_init(neo1973_init);
-
-static void __exit neo1973_exit(void)
-{
-	platform_device_unregister(neo1973_snd_device);
 
-	if (machine_is_neo1973_gta02()) {
-		gpio_free_array(neo1973_gta02_gpios,
-				ARRAY_SIZE(neo1973_gta02_gpios));
-	}
-}
-module_exit(neo1973_exit);
+struct platform_driver neo1973_audio = {
+	.driver = {
+		.name = "neo1973-audio",
+		.pm = &snd_soc_pm_ops,
+	},
+	.probe = neo1973_probe,
+};
+module_platform_driver(neo1973_audio);
 
 /* Module information */
 MODULE_AUTHOR("Graeme Gregory, graeme@openmoko.org, www.openmoko.org");
 MODULE_DESCRIPTION("ALSA SoC WM8753 Neo1973 and Frerunner");
 MODULE_LICENSE("GPL");
+MODULE_ALIAS("platform:neo1973-audio");
-- 
2.17.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  parent reply	other threads:[~2020-08-06 18:36 UTC|newest]

Thread overview: 154+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-08-06 18:19 [PATCH v2 00/41] spi / fbdev / cpufreq / usb / mmc / hwmon / ARM: Prepare for multiplatform S3C Krzysztof Kozlowski
2020-08-06 18:19 ` Krzysztof Kozlowski
2020-08-06 18:20 ` [PATCH v2 01/41] ARM: s3c: Remove unneeded machine header includes Krzysztof Kozlowski
2020-08-06 18:20   ` Krzysztof Kozlowski
2020-08-19 12:15   ` Mark Brown
2020-08-19 12:15     ` Mark Brown
2020-08-19 19:02     ` Krzysztof Kozlowski
2020-08-19 19:02       ` Krzysztof Kozlowski
2020-08-19 19:17       ` Mark Brown
2020-08-19 19:17         ` Mark Brown
2020-08-20 15:39         ` Krzysztof Kozlowski
2020-08-20 15:39           ` Krzysztof Kozlowski
2020-08-06 18:20 ` [PATCH v2 02/41] mmc: s3cmci: Remove unneeded machine header include Krzysztof Kozlowski
2020-08-06 18:20   ` Krzysztof Kozlowski
2020-08-12 14:05   ` Ulf Hansson
2020-08-12 14:05     ` Ulf Hansson
2020-08-06 18:20 ` [PATCH v2 03/41] ARM: s3c24xx: fix mmc gpio lookup tables Krzysztof Kozlowski
2020-08-06 18:20   ` Krzysztof Kozlowski
2020-08-13  8:10   ` Linus Walleij
2020-08-13  8:10     ` Linus Walleij
2020-08-06 18:20 ` [PATCH v2 04/41] ARM: s3c24xx: iotiming: make functions static Krzysztof Kozlowski
2020-08-06 18:20   ` Krzysztof Kozlowski
2020-08-06 18:20 ` [PATCH v2 05/41] ARM: s3c24xx: make S3C24XX_MISCCR access indirect Krzysztof Kozlowski
2020-08-06 18:20   ` Krzysztof Kozlowski
2020-08-12  7:53   ` Stephen Boyd
2020-08-12  7:53     ` Stephen Boyd
2020-08-06 18:20 ` [PATCH v2 06/41] ARM: s3c24xx: pass pointer to clk driver via platform data Krzysztof Kozlowski
2020-08-06 18:20   ` Krzysztof Kozlowski
2020-08-12  7:55   ` Stephen Boyd
2020-08-12  7:55     ` Stephen Boyd
2020-08-06 18:20 ` [PATCH v2 07/41] ARM: s3c24xx: simplify mach/io.h Krzysztof Kozlowski
2020-08-06 18:20   ` Krzysztof Kozlowski
2020-08-06 18:20 ` [PATCH v2 08/41] usb: gadget: s3c: use platform resources Krzysztof Kozlowski
2020-08-06 18:20   ` Krzysztof Kozlowski
2020-08-07 13:57   ` Felipe Balbi
2020-08-07 13:57     ` Felipe Balbi
2020-08-06 18:20 ` [PATCH v2 09/41] usb: gadget: s3c-hsudc: remove platform header dependency Krzysztof Kozlowski
2020-08-06 18:20   ` Krzysztof Kozlowski
2020-08-07 13:59   ` Felipe Balbi
2020-08-07 13:59     ` Felipe Balbi
2020-08-07 17:42     ` Arnd Bergmann
2020-08-07 17:42       ` Arnd Bergmann
2020-08-09  8:44       ` Krzysztof Kozlowski
2020-08-09  8:44         ` Krzysztof Kozlowski
2020-08-10 12:51       ` Felipe Balbi
2020-08-10 12:51         ` Felipe Balbi
2020-08-06 18:20 ` [PATCH v2 10/41] ARM: samsung: don't build plat/pm-common for Exynos Krzysztof Kozlowski
2020-08-06 18:20   ` Krzysztof Kozlowski
2020-08-06 18:20 ` [PATCH v2 11/41] ARM: samsung: remove s3c_pm_debug_init() Krzysztof Kozlowski
2020-08-06 18:20   ` Krzysztof Kozlowski
2020-08-06 18:20 ` [PATCH v2 12/41] ARM: samsung: make pm-debug platform independent Krzysztof Kozlowski
2020-08-06 18:20   ` Krzysztof Kozlowski
2020-08-06 18:20 ` [PATCH v2 13/41] ARM: samsung: move CONFIG_DEBUG_S3C_UART to Kconfig.debug Krzysztof Kozlowski
2020-08-06 18:20   ` Krzysztof Kozlowski
2020-08-06 18:20 ` [PATCH v2 14/41] ARM: exynos: use private samsung_cpu_id copy Krzysztof Kozlowski
2020-08-06 18:20   ` Krzysztof Kozlowski
2020-08-06 18:20 ` [PATCH v2 15/41] ARM: exynos: stop selecting PLAT_SAMSUNG Krzysztof Kozlowski
2020-08-06 18:20   ` Krzysztof Kozlowski
2020-08-06 18:20 ` [PATCH v2 16/41] ARM: samsung: move pm check code to drivers/soc Krzysztof Kozlowski
2020-08-06 18:20   ` Krzysztof Kozlowski
2020-08-06 18:20 ` [PATCH v2 17/41] ARM: s5pv210: use private pm save/restore Krzysztof Kozlowski
2020-08-06 18:20   ` Krzysztof Kozlowski
2020-08-06 18:20 ` [PATCH v2 18/41] ARM: s5pv210: don't imply CONFIG_PLAT_SAMSUNG Krzysztof Kozlowski
2020-08-06 18:20   ` Krzysztof Kozlowski
2020-08-06 18:20   ` Krzysztof Kozlowski
2020-08-07 11:35   ` Mark Brown
2020-08-07 11:35     ` Mark Brown
2020-08-07 11:35     ` Mark Brown
2020-08-06 18:20 ` [PATCH v2 19/41] ARM: s3c64xx: remove mach/hardware.h Krzysztof Kozlowski
2020-08-06 18:20   ` Krzysztof Kozlowski
2020-08-06 18:20 ` [PATCH v2 20/41] ARM: s3c24xx: move regs-spi.h into spi driver Krzysztof Kozlowski
2020-08-06 18:20   ` Krzysztof Kozlowski
2020-08-07 11:34   ` Mark Brown
2020-08-07 11:34     ` Mark Brown
2020-08-06 18:20 ` [PATCH v2 21/41] ARM: s3c24xx: move irqchip driver back into platform Krzysztof Kozlowski
2020-08-06 18:20   ` Krzysztof Kozlowski
2020-08-07  8:01   ` Marc Zyngier
2020-08-07  8:01     ` Marc Zyngier
2020-08-06 18:20 ` [PATCH v2 22/41] ARM: s3c: adc: move header to linux/soc/samsung Krzysztof Kozlowski
2020-08-06 18:20   ` Krzysztof Kozlowski
2020-08-06 18:20 ` [PATCH v2 23/41] ARM: s3c24xx: move spi fiq handler into platform Krzysztof Kozlowski
2020-08-06 18:20   ` Krzysztof Kozlowski
2020-08-07 11:50   ` Mark Brown
2020-08-07 11:50     ` Mark Brown
2020-08-19 19:51   ` Krzysztof Kozlowski
2020-08-19 19:51     ` Krzysztof Kozlowski
2020-08-06 18:20 ` [PATCH v2 24/41] ASoC: samsung: h1940: turn into platform driver Krzysztof Kozlowski
2020-08-06 18:20   ` Krzysztof Kozlowski
2020-08-06 18:20   ` Krzysztof Kozlowski
2020-08-06 18:20 ` Krzysztof Kozlowski [this message]
2020-08-06 18:20   ` [PATCH v2 25/41] ASoC: samsung: neo1973: " Krzysztof Kozlowski
2020-08-06 18:20   ` Krzysztof Kozlowski
2020-08-06 18:20 ` [PATCH v2 26/41] ASoC: samsung: rx1950: " Krzysztof Kozlowski
2020-08-06 18:20   ` Krzysztof Kozlowski
2020-08-06 18:20   ` Krzysztof Kozlowski
2020-08-06 18:20 ` [PATCH v2 27/41] ASoC: samsung: s3c2412-i2s: avoid hardcoded S3C2410_PA_IIS Krzysztof Kozlowski
2020-08-06 18:20   ` Krzysztof Kozlowski
2020-08-06 18:20 ` [PATCH v2 28/41] ARM: s3c24xx: move iis pinctrl config into boards Krzysztof Kozlowski
2020-08-06 18:20   ` Krzysztof Kozlowski
2020-08-06 18:20   ` Krzysztof Kozlowski
2020-08-07 11:51   ` Mark Brown
2020-08-07 11:51     ` Mark Brown
2020-08-07 11:51     ` Mark Brown
2020-08-06 18:20 ` [PATCH v2 29/41] ARM: s3c24xx: move s3cmci pinctrl handling into board files Krzysztof Kozlowski
2020-08-06 18:20   ` Krzysztof Kozlowski
2020-08-06 18:20 ` [PATCH v2 30/41] ARM: s3c24xx: include mach/irqs.h where needed Krzysztof Kozlowski
2020-08-06 18:20   ` Krzysztof Kozlowski
2020-08-06 18:20 ` [PATCH v2 31/41] ARM: s3c24xx: spi: avoid hardcoding fiq number in driver Krzysztof Kozlowski
2020-08-06 18:20   ` Krzysztof Kozlowski
2020-08-07 11:51   ` Mark Brown
2020-08-07 11:51     ` Mark Brown
2020-08-06 18:20 ` [PATCH v2 32/41] ARM: s3c24xx: bast: avoid irq_desc array usage Krzysztof Kozlowski
2020-08-06 18:20   ` Krzysztof Kozlowski
2020-08-06 18:20 ` [PATCH v2 33/41] fbdev: s3c2410fb: remove mach header dependency Krzysztof Kozlowski
2020-08-06 18:20   ` Krzysztof Kozlowski
2020-08-06 18:20   ` Krzysztof Kozlowski
2020-08-06 18:20   ` Krzysztof Kozlowski
2020-08-06 18:20 ` [PATCH v2 34/41] cpufreq: s3c24xx: split out registers Krzysztof Kozlowski
2020-08-06 18:20   ` Krzysztof Kozlowski
2020-08-07  4:54   ` Viresh Kumar
2020-08-07  4:54     ` Viresh Kumar
2020-08-06 18:20 ` [PATCH v2 35/41] ARM: s3c: remove cpufreq header dependencies Krzysztof Kozlowski
2020-08-06 18:20   ` Krzysztof Kozlowski
2020-08-07  4:56   ` Viresh Kumar
2020-08-07  4:56     ` Viresh Kumar
2020-08-06 18:20 ` [PATCH v2 36/41] cpufreq: s3c2412: use global s3c2412_cpufreq_setrefresh Krzysztof Kozlowski
2020-08-06 18:20   ` Krzysztof Kozlowski
2020-08-07  4:57   ` Viresh Kumar
2020-08-07  4:57     ` Viresh Kumar
2020-08-06 18:20 ` [PATCH v2 37/41] cpufreq: s3c24xx: move low-level clk reg access into platform code Krzysztof Kozlowski
2020-08-06 18:20   ` Krzysztof Kozlowski
2020-08-07  4:58   ` Viresh Kumar
2020-08-07  4:58     ` Viresh Kumar
2020-08-06 18:20 ` [PATCH v2 38/41] ARM: s3c24xx: stop including mach/hardware.h from mach/io.h Krzysztof Kozlowski
2020-08-06 18:20   ` Krzysztof Kozlowski
2020-08-06 18:20 ` [PATCH v2 39/41] ARM: s3c: move into a common directory Krzysztof Kozlowski
2020-08-06 18:20 ` [PATCH v2 40/41] ARM: s3c: make headers local if possible Krzysztof Kozlowski
2020-08-06 18:20   ` Krzysztof Kozlowski
2020-08-06 18:20 ` [PATCH v2 41/41] MAINTAINERS: Add more name matches for Samsung SoC entries Krzysztof Kozlowski
2020-08-06 21:57 ` [PATCH v2 00/41] spi / fbdev / cpufreq / usb / mmc / hwmon / ARM: Prepare for multiplatform S3C Arnd Bergmann
2020-08-06 21:57   ` Arnd Bergmann
2020-08-07 11:33 ` Mark Brown
2020-08-07 11:33   ` Mark Brown
2020-08-07 11:33   ` Mark Brown
2020-08-07 11:44   ` Krzysztof Kozlowski
2020-08-07 11:44     ` Krzysztof Kozlowski
2020-08-07 11:44     ` Krzysztof Kozlowski
2020-08-20 15:59 ` Krzysztof Kozlowski
2020-08-20 15:59   ` Krzysztof Kozlowski
2020-08-20 15:59   ` Krzysztof Kozlowski
2020-08-21 13:52   ` Bartlomiej Zolnierkiewicz
2020-08-21 13:52     ` Bartlomiej Zolnierkiewicz
2020-08-21 13:52     ` Bartlomiej Zolnierkiewicz
2020-08-21 13:52     ` Bartlomiej Zolnierkiewicz

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200806182059.2431-25-krzk@kernel.org \
    --to=krzk@kernel.org \
    --cc=alsa-devel@alsa-project.org \
    --cc=arnd@arndb.de \
    --cc=broonie@kernel.org \
    --cc=lgirdwood@gmail.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@armlinux.org.uk \
    --cc=perex@perex.cz \
    --cc=s.nawrocki@samsung.com \
    --cc=sbkim73@samsung.com \
    --cc=tiwai@suse.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.