[alsa-devel] [PATCHv2 0/4] ASoC: multi-component - Samsung S3C Platform
Hi, This is a second version of patch series adding support for multi component model on Samsung S3C Platform.
This patch series can be apply upon "ASoC: multi-component - Fix S3C compile error" in the first patch of V1 that already applied by Liam.
Changes since V1: - Support for GPIO, DMA and SFR settings pull from platform device resource. - Modify description of add WM9713 platform device on smdk board.
The following patch series contains:
[PATCHv2 1/4] ASoC: S3C64XX: Move GPIO settings to platform [PATCHv2 2/4] ASoC: S3C64XX: Move DMA settings to platform [PATCHv2 3/4] ASoC: multi-component - S3C - Get original functionality [PATCHv2 4/4] ASoC: multi-component - S3C - Add WM9713 platform device
Thanks,
Claude
Now that we have platform data provide callbacks for gpio config, remove the explicit settings from CPU driver and just call the cfg_gpio callback.
Signed-off-by: Seungwhan Youn sw.youn@samsung.com Reviewed-by: Jassi Brar jassi.brar@samsung.com --- sound/soc/s3c24xx/s3c64xx-i2s-v4.c | 21 ++++++++---------- sound/soc/s3c24xx/s3c64xx-i2s.c | 40 +++++++++++++++-------------------- 2 files changed, 26 insertions(+), 35 deletions(-)
diff --git a/sound/soc/s3c24xx/s3c64xx-i2s-v4.c b/sound/soc/s3c24xx/s3c64xx-i2s-v4.c index 72708af..93ae973 100644 --- a/sound/soc/s3c24xx/s3c64xx-i2s-v4.c +++ b/sound/soc/s3c24xx/s3c64xx-i2s-v4.c @@ -16,9 +16,7 @@ #include <sound/soc.h> #include <sound/pcm_params.h>
-#include <mach/gpio-bank-c.h> -#include <mach/gpio-bank-h.h> -#include <plat/gpio-cfg.h> +#include <plat/audio.h>
#include <mach/map.h> #include <mach/dma.h> @@ -41,15 +39,7 @@ static struct s3c_i2sv2_info s3c64xx_i2sv4;
static int s3c64xx_i2sv4_probe(struct snd_soc_dai *dai) { - /* configure GPIO for i2s port */ - s3c_gpio_cfgpin(S3C64XX_GPC(4), S3C64XX_GPC4_I2S_V40_DO0); - s3c_gpio_cfgpin(S3C64XX_GPC(5), S3C64XX_GPC5_I2S_V40_DO1); - s3c_gpio_cfgpin(S3C64XX_GPC(7), S3C64XX_GPC7_I2S_V40_DO2); - s3c_gpio_cfgpin(S3C64XX_GPH(6), S3C64XX_GPH6_I2S_V40_BCLK); - s3c_gpio_cfgpin(S3C64XX_GPH(7), S3C64XX_GPH7_I2S_V40_CDCLK); - s3c_gpio_cfgpin(S3C64XX_GPH(8), S3C64XX_GPH8_I2S_V40_LRCLK); - s3c_gpio_cfgpin(S3C64XX_GPH(9), S3C64XX_GPH9_I2S_V40_DI); - + /* do nothing */ return 0; }
@@ -117,6 +107,7 @@ EXPORT_SYMBOL_GPL(s3c64xx_i2s_v4_dai);
static __devinit int s3c64xx_i2sv4_dev_probe(struct platform_device *pdev) { + struct s3c_audio_pdata *i2s_pdata; struct s3c_i2sv2_info *i2s; int ret;
@@ -137,6 +128,12 @@ static __devinit int s3c64xx_i2sv4_dev_probe(struct platform_device *pdev) i2s->dma_playback->client = &s3c64xx_dma_client_out; i2s->dma_playback->dma_size = 4;
+ i2s_pdata = pdev->dev.platform_data; + if (i2s_pdata && i2s_pdata->cfg_gpio && i2s_pdata->cfg_gpio(pdev)) { + dev_err(&pdev->dev, "Unable to configure gpio\n"); + return -EINVAL; + } + i2s->iis_cclk = clk_get(&pdev->dev, "audio-bus"); if (IS_ERR(i2s->iis_cclk)) { dev_err(&pdev->dev, "failed to get audio-bus\n"); diff --git a/sound/soc/s3c24xx/s3c64xx-i2s.c b/sound/soc/s3c24xx/s3c64xx-i2s.c index 5017e31..ab2ae47 100644 --- a/sound/soc/s3c24xx/s3c64xx-i2s.c +++ b/sound/soc/s3c24xx/s3c64xx-i2s.c @@ -20,9 +20,6 @@
#include <sound/soc.h>
-#include <mach/gpio-bank-d.h> -#include <mach/gpio-bank-e.h> -#include <plat/gpio-cfg.h> #include <plat/audio.h>
#include <mach/map.h> @@ -47,6 +44,7 @@ static struct s3c2410_dma_client s3c64xx_dma_client_in = {
static struct s3c_dma_params s3c64xx_i2s_pcm_stereo_out[MAX_I2SV3]; static struct s3c_dma_params s3c64xx_i2s_pcm_stereo_in[MAX_I2SV3]; +static struct s3c_i2sv2_info s3c64xx_i2s[MAX_I2SV3];
static int s3c64xx_i2s_set_sysclk(struct snd_soc_dai *cpu_dai, int clk_id, unsigned int freq, int dir) @@ -102,9 +100,12 @@ static int s3c64xx_i2s_probe(struct snd_soc_dai *dai) struct s3c_i2sv2_info *i2s; int ret;
- i2s = kzalloc(sizeof(struct s3c_i2sv2_info), GFP_KERNEL); - if (i2s == NULL) - return -ENOMEM; + if (dai->id >= MAX_I2SV3) { + dev_err(dai->dev, "id %d out of range\n", dai->id); + return -EINVAL; + } + + i2s = &s3c64xx_i2s[dai->id]; snd_soc_dai_set_drvdata(dai, i2s);
i2s->dma_capture = &s3c64xx_i2s_pcm_stereo_in[dai->id]; @@ -139,23 +140,6 @@ static int s3c64xx_i2s_probe(struct snd_soc_dai *dai)
clk_enable(i2s->iis_cclk);
- /* configure GPIO for i2s port */ - switch (dai->id) { - case 0: - s3c_gpio_cfgpin(S3C64XX_GPD(0), S3C64XX_GPD0_I2S0_CLK); - s3c_gpio_cfgpin(S3C64XX_GPD(1), S3C64XX_GPD1_I2S0_CDCLK); - s3c_gpio_cfgpin(S3C64XX_GPD(2), S3C64XX_GPD2_I2S0_LRCLK); - s3c_gpio_cfgpin(S3C64XX_GPD(3), S3C64XX_GPD3_I2S0_DI); - s3c_gpio_cfgpin(S3C64XX_GPD(4), S3C64XX_GPD4_I2S0_D0); - break; - case 1: - s3c_gpio_cfgpin(S3C64XX_GPE(0), S3C64XX_GPE0_I2S1_CLK); - s3c_gpio_cfgpin(S3C64XX_GPE(1), S3C64XX_GPE1_I2S1_CDCLK); - s3c_gpio_cfgpin(S3C64XX_GPE(2), S3C64XX_GPE2_I2S1_LRCLK); - s3c_gpio_cfgpin(S3C64XX_GPE(3), S3C64XX_GPE3_I2S1_DI); - s3c_gpio_cfgpin(S3C64XX_GPE(4), S3C64XX_GPE4_I2S1_D0); - } - return 0;
err: @@ -213,12 +197,22 @@ EXPORT_SYMBOL_GPL(s3c64xx_i2s_dai);
static __devinit int s3c64xx_iis_dev_probe(struct platform_device *pdev) { + struct s3c_audio_pdata *i2s_pdata; + struct s3c_i2sv2_info *i2s;
if (pdev->id >= MAX_I2SV3) { dev_err(&pdev->dev, "id %d out of range\n", pdev->id); return -EINVAL; }
+ i2s = &s3c64xx_i2s[pdev->id]; + + i2s_pdata = pdev->dev.platform_data; + if (i2s_pdata && i2s_pdata->cfg_gpio && i2s_pdata->cfg_gpio(pdev)) { + dev_err(&pdev->dev, "Unable to configure gpio\n"); + return -EINVAL; + } + return snd_soc_register_dais(&pdev->dev, s3c64xx_i2s_dai, ARRAY_SIZE(s3c64xx_i2s_dai)); }
Remove the hardcoded values for DMA and SFR addresses. Instead enable the CPU drivers to use the values provided via platform_data
Signed-off-by: Seungwhan Youn sw.youn@samsung.com Reviewed-by: Jassi Brar jassi.brar@samsung.com --- sound/soc/s3c24xx/s3c64xx-i2s-v4.c | 32 +++++++++++++++++-- sound/soc/s3c24xx/s3c64xx-i2s.c | 60 ++++++++++++++++++++++-------------- 2 files changed, 65 insertions(+), 27 deletions(-)
diff --git a/sound/soc/s3c24xx/s3c64xx-i2s-v4.c b/sound/soc/s3c24xx/s3c64xx-i2s-v4.c index 93ae973..74cf2b2 100644 --- a/sound/soc/s3c24xx/s3c64xx-i2s-v4.c +++ b/sound/soc/s3c24xx/s3c64xx-i2s-v4.c @@ -109,6 +109,7 @@ static __devinit int s3c64xx_i2sv4_dev_probe(struct platform_device *pdev) { struct s3c_audio_pdata *i2s_pdata; struct s3c_i2sv2_info *i2s; + struct resource *res; int ret;
i2s = &s3c64xx_i2sv4; @@ -118,10 +119,33 @@ static __devinit int s3c64xx_i2sv4_dev_probe(struct platform_device *pdev) i2s->dma_capture = &s3c64xx_i2sv4_pcm_stereo_in; i2s->dma_playback = &s3c64xx_i2sv4_pcm_stereo_out;
- i2s->dma_capture->channel = DMACH_HSI_I2SV40_RX; - i2s->dma_capture->dma_addr = S3C64XX_PA_IISV4 + S3C2412_IISRXD; - i2s->dma_playback->channel = DMACH_HSI_I2SV40_TX; - i2s->dma_playback->dma_addr = S3C64XX_PA_IISV4 + S3C2412_IISTXD; + res = platform_get_resource(pdev, IORESOURCE_DMA, 0); + if (!res) { + dev_err(&pdev->dev, "Unable to get I2S-TX dma resource\n"); + return -ENXIO; + } + i2s->dma_playback->channel = res->start; + + res = platform_get_resource(pdev, IORESOURCE_DMA, 1); + if (!res) { + dev_err(&pdev->dev, "Unable to get I2S-RX dma resource\n"); + return -ENXIO; + } + i2s->dma_capture->channel = res->start; + + res = platform_get_resource(pdev, IORESOURCE_MEM, 0); + if (!res) { + dev_err(&pdev->dev, "Unable to get I2S SFR address\n"); + return -ENXIO; + } + + if (!request_mem_region(res->start, resource_size(res), + "s3c64xx-i2s-v4")) { + dev_err(&pdev->dev, "Unable to request SFR region\n"); + return -EBUSY; + } + i2s->dma_capture->dma_addr = res->start + S3C2412_IISRXD; + i2s->dma_playback->dma_addr = res->start + S3C2412_IISTXD;
i2s->dma_capture->client = &s3c64xx_dma_client_in; i2s->dma_capture->dma_size = 4; diff --git a/sound/soc/s3c24xx/s3c64xx-i2s.c b/sound/soc/s3c24xx/s3c64xx-i2s.c index ab2ae47..c63925e 100644 --- a/sound/soc/s3c24xx/s3c64xx-i2s.c +++ b/sound/soc/s3c24xx/s3c64xx-i2s.c @@ -108,29 +108,6 @@ static int s3c64xx_i2s_probe(struct snd_soc_dai *dai) i2s = &s3c64xx_i2s[dai->id]; snd_soc_dai_set_drvdata(dai, i2s);
- i2s->dma_capture = &s3c64xx_i2s_pcm_stereo_in[dai->id]; - i2s->dma_playback = &s3c64xx_i2s_pcm_stereo_out[dai->id]; - - switch (dai->id) { - case 0: - i2s->dma_capture->channel = DMACH_I2S0_IN; - i2s->dma_capture->dma_addr = S3C64XX_PA_IIS0 + S3C2412_IISRXD; - i2s->dma_playback->channel = DMACH_I2S0_OUT; - i2s->dma_playback->dma_addr = S3C64XX_PA_IIS0 + S3C2412_IISTXD; - break; - case 1: - i2s->dma_capture->channel = DMACH_I2S1_IN; - i2s->dma_capture->dma_addr = S3C64XX_PA_IIS1 + S3C2412_IISRXD; - i2s->dma_playback->channel = DMACH_I2S1_OUT; - i2s->dma_playback->dma_addr = S3C64XX_PA_IIS1 + S3C2412_IISTXD; - break; - } - - i2s->dma_capture->client = &s3c64xx_dma_client_in; - i2s->dma_capture->dma_size = 4; - i2s->dma_playback->client = &s3c64xx_dma_client_out; - i2s->dma_playback->dma_size = 4; - i2s->iis_cclk = clk_get(dai->dev, "audio-bus"); if (IS_ERR(i2s->iis_cclk)) { dev_err(dai->dev, "failed to get audio-bus\n"); @@ -199,6 +176,7 @@ static __devinit int s3c64xx_iis_dev_probe(struct platform_device *pdev) { struct s3c_audio_pdata *i2s_pdata; struct s3c_i2sv2_info *i2s; + struct resource *res;
if (pdev->id >= MAX_I2SV3) { dev_err(&pdev->dev, "id %d out of range\n", pdev->id); @@ -207,11 +185,47 @@ static __devinit int s3c64xx_iis_dev_probe(struct platform_device *pdev)
i2s = &s3c64xx_i2s[pdev->id];
+ i2s->dma_capture = &s3c64xx_i2s_pcm_stereo_in[pdev->id]; + i2s->dma_playback = &s3c64xx_i2s_pcm_stereo_out[pdev->id]; + + res = platform_get_resource(pdev, IORESOURCE_DMA, 0); + if (!res) { + dev_err(&pdev->dev, "Unable to get I2S-TX dma resource\n"); + return -ENXIO; + } + i2s->dma_playback->channel = res->start; + + res = platform_get_resource(pdev, IORESOURCE_DMA, 1); + if (!res) { + dev_err(&pdev->dev, "Unable to get I2S-RX dma resource\n"); + return -ENXIO; + } + i2s->dma_capture->channel = res->start; + + res = platform_get_resource(pdev, IORESOURCE_MEM, 0); + if (!res) { + dev_err(&pdev->dev, "Unable to get I2S SFR address\n"); + return -ENXIO; + } + + if (!request_mem_region(res->start, resource_size(res), + "s3c64xx-i2s")) { + dev_err(&pdev->dev, "Unable to request SFR region\n"); + return -EBUSY; + } + i2s_pdata = pdev->dev.platform_data; if (i2s_pdata && i2s_pdata->cfg_gpio && i2s_pdata->cfg_gpio(pdev)) { dev_err(&pdev->dev, "Unable to configure gpio\n"); return -EINVAL; } + i2s->dma_capture->dma_addr = res->start + S3C2412_IISRXD; + i2s->dma_playback->dma_addr = res->start + S3C2412_IISTXD; + + i2s->dma_capture->client = &s3c64xx_dma_client_in; + i2s->dma_capture->dma_size = 4; + i2s->dma_playback->client = &s3c64xx_dma_client_out; + i2s->dma_playback->dma_size = 4;
return snd_soc_register_dais(&pdev->dev, s3c64xx_i2s_dai, ARRAY_SIZE(s3c64xx_i2s_dai));
In Samsung SoC's I2S was improved gradually from I2Sv2 to I2Sv4. So, S3C I2S platform codes are designed to use privious features hierarchy. This patch modify that s3c64xx-i2s use common features of s3c-i2s-v2 and remove duplicated function on s3c64xx-i2s. Basically, restore the original code while keeping multicodec support specific parts.
Signed-off-by: Seungwhan Youn sw.youn@samsung.com Reviewed-by: Jassi Brar jassi.brar@samsung.com --- sound/soc/s3c24xx/s3c-i2s-v2.h | 2 + sound/soc/s3c24xx/s3c64xx-i2s-v4.c | 14 +++++++-- sound/soc/s3c24xx/s3c64xx-i2s.c | 56 +++++++++++------------------------- 3 files changed, 30 insertions(+), 42 deletions(-)
diff --git a/sound/soc/s3c24xx/s3c-i2s-v2.h b/sound/soc/s3c24xx/s3c-i2s-v2.h index c2a4bad..d458301 100644 --- a/sound/soc/s3c24xx/s3c-i2s-v2.h +++ b/sound/soc/s3c24xx/s3c-i2s-v2.h @@ -66,6 +66,8 @@ struct s3c_i2sv2_info { u32 suspend_iismod; u32 suspend_iiscon; u32 suspend_iispsr; + + unsigned long base; };
extern struct clk *s3c_i2sv2_get_clock(struct snd_soc_dai *cpu_dai); diff --git a/sound/soc/s3c24xx/s3c64xx-i2s-v4.c b/sound/soc/s3c24xx/s3c64xx-i2s-v4.c index 74cf2b2..f09d819 100644 --- a/sound/soc/s3c24xx/s3c64xx-i2s-v4.c +++ b/sound/soc/s3c24xx/s3c64xx-i2s-v4.c @@ -39,8 +39,14 @@ static struct s3c_i2sv2_info s3c64xx_i2sv4;
static int s3c64xx_i2sv4_probe(struct snd_soc_dai *dai) { - /* do nothing */ - return 0; + struct s3c_i2sv2_info *i2s = &s3c64xx_i2sv4; + int ret = 0; + + snd_soc_dai_set_drvdata(dai, i2s); + + ret = s3c_i2sv2_probe(dai, i2s, i2s->base); + + return ret; }
static int s3c_i2sv4_hw_params(struct snd_pcm_substream *substream, @@ -152,6 +158,8 @@ static __devinit int s3c64xx_i2sv4_dev_probe(struct platform_device *pdev) i2s->dma_playback->client = &s3c64xx_dma_client_out; i2s->dma_playback->dma_size = 4;
+ i2s->base = res->start; + i2s_pdata = pdev->dev.platform_data; if (i2s_pdata && i2s_pdata->cfg_gpio && i2s_pdata->cfg_gpio(pdev)) { dev_err(&pdev->dev, "Unable to configure gpio\n"); @@ -167,7 +175,7 @@ static __devinit int s3c64xx_i2sv4_dev_probe(struct platform_device *pdev)
clk_enable(i2s->iis_cclk);
- ret = snd_soc_register_dai(&pdev->dev, pdev->id, &s3c64xx_i2s_v4_dai); + ret = s3c_i2sv2_register_dai(&pdev->dev, pdev->id, &s3c64xx_i2s_v4_dai); if (ret != 0) goto err_i2sv2;
diff --git a/sound/soc/s3c24xx/s3c64xx-i2s.c b/sound/soc/s3c24xx/s3c64xx-i2s.c index c63925e..86bb639 100644 --- a/sound/soc/s3c24xx/s3c64xx-i2s.c +++ b/sound/soc/s3c24xx/s3c64xx-i2s.c @@ -46,43 +46,6 @@ static struct s3c_dma_params s3c64xx_i2s_pcm_stereo_out[MAX_I2SV3]; static struct s3c_dma_params s3c64xx_i2s_pcm_stereo_in[MAX_I2SV3]; static struct s3c_i2sv2_info s3c64xx_i2s[MAX_I2SV3];
-static int s3c64xx_i2s_set_sysclk(struct snd_soc_dai *cpu_dai, - int clk_id, unsigned int freq, int dir) -{ - struct s3c_i2sv2_info *i2s = snd_soc_dai_get_drvdata(cpu_dai); - u32 iismod = readl(i2s->regs + S3C2412_IISMOD); - - switch (clk_id) { - case S3C64XX_CLKSRC_PCLK: - iismod &= ~S3C2412_IISMOD_IMS_SYSMUX; - break; - - case S3C64XX_CLKSRC_MUX: - iismod |= S3C2412_IISMOD_IMS_SYSMUX; - break; - - case S3C64XX_CLKSRC_CDCLK: - switch (dir) { - case SND_SOC_CLOCK_IN: - iismod |= S3C64XX_IISMOD_CDCLKCON; - break; - case SND_SOC_CLOCK_OUT: - iismod &= ~S3C64XX_IISMOD_CDCLKCON; - break; - default: - return -EINVAL; - } - break; - - default: - return -EINVAL; - } - - writel(iismod, i2s->regs + S3C2412_IISMOD); - - return 0; -} - struct clk *s3c64xx_i2s_get_clock(struct snd_soc_dai *dai) { struct s3c_i2sv2_info *i2s = snd_soc_dai_get_drvdata(dai); @@ -117,8 +80,15 @@ static int s3c64xx_i2s_probe(struct snd_soc_dai *dai)
clk_enable(i2s->iis_cclk);
+ ret = s3c_i2sv2_probe(dai, i2s, i2s->base); + if (ret) + goto err_clk; + return 0;
+err_clk: + clk_disable(i2s->iis_cclk); + clk_put(i2s->iis_cclk); err: kfree(i2s); return ret; @@ -177,6 +147,7 @@ static __devinit int s3c64xx_iis_dev_probe(struct platform_device *pdev) struct s3c_audio_pdata *i2s_pdata; struct s3c_i2sv2_info *i2s; struct resource *res; + int i, ret;
if (pdev->id >= MAX_I2SV3) { dev_err(&pdev->dev, "id %d out of range\n", pdev->id); @@ -213,6 +184,7 @@ static __devinit int s3c64xx_iis_dev_probe(struct platform_device *pdev) dev_err(&pdev->dev, "Unable to request SFR region\n"); return -EBUSY; } + i2s->base = res->start;
i2s_pdata = pdev->dev.platform_data; if (i2s_pdata && i2s_pdata->cfg_gpio && i2s_pdata->cfg_gpio(pdev)) { @@ -227,8 +199,14 @@ static __devinit int s3c64xx_iis_dev_probe(struct platform_device *pdev) i2s->dma_playback->client = &s3c64xx_dma_client_out; i2s->dma_playback->dma_size = 4;
- return snd_soc_register_dais(&pdev->dev, s3c64xx_i2s_dai, - ARRAY_SIZE(s3c64xx_i2s_dai)); + for (i = 0; i < ARRAY_SIZE(s3c64xx_i2s_dai); i++) { + ret = s3c_i2sv2_register_dai(&pdev->dev, i, + &s3c64xx_i2s_dai[i]); + if (ret != 0) + return ret; + } + + return 0; }
static __devexit int s3c64xx_iis_dev_remove(struct platform_device *pdev)
On Fri, Jul 16, 2010 at 03:29:24PM +0900, Seungwhan Youn wrote:
- unsigned long base;
You can probably just read this out of the device directly in the core code, but I'm not 100% sure that's actually a win since you wind up needing to also read the device in the version-specific code so this is OK.
As a requirement of multicodec changes, we need a platform device for each CODEC. Instead of add that in machine init code, do it here so a new device is added only if we choose to use it.
Signed-off-by: Seungwhan Youn sw.youn@samsung.com Reviewed-by: Jassi Brar jassi.brar@samsung.com --- sound/soc/s3c24xx/smdk_wm9713.c | 22 +++++++++++++++++++--- 1 files changed, 19 insertions(+), 3 deletions(-)
diff --git a/sound/soc/s3c24xx/smdk_wm9713.c b/sound/soc/s3c24xx/smdk_wm9713.c index 001c2dd..f8aed14 100644 --- a/sound/soc/s3c24xx/smdk_wm9713.c +++ b/sound/soc/s3c24xx/smdk_wm9713.c @@ -60,22 +60,38 @@ static struct snd_soc_card smdk = { .num_links = 1, };
+static struct platform_device *smdk_snd_wm9713_device; static struct platform_device *smdk_snd_ac97_device;
static int __init smdk_init(void) { int ret;
- smdk_snd_ac97_device = platform_device_alloc("soc-audio", -1); - if (!smdk_snd_ac97_device) + smdk_snd_wm9713_device = platform_device_alloc("wm9713-codec", -1); + if (!smdk_snd_wm9713_device) return -ENOMEM;
+ ret = platform_device_add(smdk_snd_wm9713_device); + if (ret) + goto err; + + smdk_snd_ac97_device = platform_device_alloc("soc-audio", -1); + if (!smdk_snd_ac97_device) { + ret = -ENOMEM; + goto err; + } + platform_set_drvdata(smdk_snd_ac97_device, &smdk);
ret = platform_device_add(smdk_snd_ac97_device); - if (ret) + if (ret) { platform_device_put(smdk_snd_ac97_device); + goto err; + }
+ return 0; +err: + platform_device_put(smdk_snd_wm9713_device); return ret; }
On Fri, Jul 16, 2010 at 03:16:17PM +0900, Seungwhan Youn wrote:
This is a second version of patch series adding support for multi component model on Samsung S3C Platform.
All of these look fine, though I do have one comment I'll reply with separately.
Acked-by: Mark Brown broonie@opensource.wolfsonmicro.com
On Fri, 2010-07-16 at 15:16 +0900, Seungwhan Youn wrote:
Hi,
This is a second version of patch series adding support for multi component model on Samsung S3C Platform.
This patch series can be apply upon "ASoC: multi-component - Fix S3C compile error" in the first patch of V1 that already applied by Liam.
Changes since V1:
- Support for GPIO, DMA and SFR settings pull from platform device resource.
- Modify description of add WM9713 platform device on smdk board.
The following patch series contains:
[PATCHv2 1/4] ASoC: S3C64XX: Move GPIO settings to platform [PATCHv2 2/4] ASoC: S3C64XX: Move DMA settings to platform [PATCHv2 3/4] ASoC: multi-component - S3C - Get original functionality [PATCHv2 4/4] ASoC: multi-component - S3C - Add WM9713 platform device
Thanks
All applied.
Liam
participants (3)
-
Liam Girdwood
-
Mark Brown
-
Seungwhan Youn