[alsa-devel] [PATCHv4 16/18] ASoC: SMDK_WM8580: Enable for SMDKC100
Kukjin Kim
kgene.kim at samsung.com
Mon Nov 22 08:13:09 CET 2010
Jassi Brar wrote:
>
> From: Jassi Brar <jassi.brar at samsung.com>
>
> Enable the ASoC Machine driver to run on SMDKC100 as well.
>
> Signed-off-by: Jassi Brar <jassi.brar at samsung.com>
Acked-by: Kukjin Kim <kgene.kim at samsung.com>
Thanks.
Best regards,
Kgene.
--
Kukjin Kim <kgene.kim at samsung.com>, Senior Engineer,
SW Solution Development Team, Samsung Electronics Co., Ltd.
> ---
> arch/arm/mach-s5pc100/mach-smdkc100.c | 2 +
> sound/soc/s3c24xx/Kconfig | 2 +-
> sound/soc/s3c24xx/smdk_wm8580.c | 73
+++++++++++++++++++++++--------
> -
> 3 files changed, 55 insertions(+), 22 deletions(-)
>
> diff --git a/arch/arm/mach-s5pc100/mach-smdkc100.c b/arch/arm/mach-
> s5pc100/mach-smdkc100.c
> index 18b405d..dd192a2 100644
> --- a/arch/arm/mach-s5pc100/mach-smdkc100.c
> +++ b/arch/arm/mach-s5pc100/mach-smdkc100.c
> @@ -96,6 +96,7 @@ static struct s3c2410_uartcfg smdkc100_uartcfgs[]
> __initdata = {
>
> /* I2C0 */
> static struct i2c_board_info i2c_devs0[] __initdata = {
> + {I2C_BOARD_INFO("wm8580", 0x1b),},
> };
>
> /* I2C1 */
> @@ -190,6 +191,7 @@ static struct platform_device *smdkc100_devices[]
> __initdata = {
> &s3c_device_ts,
> &s3c_device_wdt,
> &smdkc100_lcd_powerdev,
> + &samsung_asoc_dma,
> &s5pc100_device_iis0,
> &samsung_device_keypad,
> &s5pc100_device_ac97,
> diff --git a/sound/soc/s3c24xx/Kconfig b/sound/soc/s3c24xx/Kconfig
> index 396f678..4989fad 100644
> --- a/sound/soc/s3c24xx/Kconfig
> +++ b/sound/soc/s3c24xx/Kconfig
> @@ -62,7 +62,7 @@ config SND_S3C24XX_SOC_JIVE_WM8750
>
> config SND_SOC_SMDK_WM8580
> tristate "SoC I2S Audio support for WM8580 on SMDK"
> - depends on SND_S3C24XX_SOC && MACH_SMDK6410
> + depends on SND_S3C24XX_SOC && (MACH_SMDK6410 || MACH_SMDKC100)
> select SND_SOC_WM8580
> select SND_SAMSUNG_I2S
> help
> diff --git a/sound/soc/s3c24xx/smdk_wm8580.c
> b/sound/soc/s3c24xx/smdk_wm8580.c
> index 4176252..9061268 100644
> --- a/sound/soc/s3c24xx/smdk_wm8580.c
> +++ b/sound/soc/s3c24xx/smdk_wm8580.c
> @@ -18,6 +18,8 @@
> #include <sound/soc.h>
> #include <sound/soc-dapm.h>
>
> +#include <asm/mach-types.h>
> +
> #include "../codecs/wm8580.h"
> #include "dma.h"
> #include "i2s.h"
> @@ -201,33 +203,49 @@ static int smdk_wm8580_init_paifrx(struct
> snd_soc_pcm_runtime *rtd)
> return 0;
> }
>
> +enum {
> + PRI_PLAYBACK = 0,
> + PRI_CAPTURE,
> + SEC_PLAYBACK,
> +};
> +
> static struct snd_soc_dai_link smdk_dai[] = {
> -{ /* Primary Playback i/f */
> - .name = "WM8580 PAIF RX",
> - .stream_name = "Playback",
> - .cpu_dai_name = "samsung-i2s.2",
> - .codec_dai_name = "wm8580-hifi-playback",
> - .platform_name = "samsung-audio",
> - .codec_name = "wm8580-codec.0-001b",
> - .init = smdk_wm8580_init_paifrx,
> - .ops = &smdk_ops,
> -},
> -{ /* Primary Capture i/f */
> - .name = "WM8580 PAIF TX",
> - .stream_name = "Capture",
> - .cpu_dai_name = "samsung-i2s.2",
> - .codec_dai_name = "wm8580-hifi-capture",
> - .platform_name = "samsung-audio",
> - .codec_name = "wm8580-codec.0-001b",
> - .init = smdk_wm8580_init_paiftx,
> - .ops = &smdk_ops,
> -},
> + [PRI_PLAYBACK] = { /* Primary Playback i/f */
> + .name = "WM8580 PAIF RX",
> + .stream_name = "Playback",
> + .cpu_dai_name = "samsung-i2s.2",
> + .codec_dai_name = "wm8580-hifi-playback",
> + .platform_name = "samsung-audio",
> + .codec_name = "wm8580-codec.0-001b",
> + .init = smdk_wm8580_init_paifrx,
> + .ops = &smdk_ops,
> + },
> + [PRI_CAPTURE] = { /* Primary Capture i/f */
> + .name = "WM8580 PAIF TX",
> + .stream_name = "Capture",
> + .cpu_dai_name = "samsung-i2s.2",
> + .codec_dai_name = "wm8580-hifi-capture",
> + .platform_name = "samsung-audio",
> + .codec_name = "wm8580-codec.0-001b",
> + .init = smdk_wm8580_init_paiftx,
> + .ops = &smdk_ops,
> + },
> + [SEC_PLAYBACK] = { /* Sec_Fifo Playback i/f */
> + .name = "Sec_FIFO TX",
> + .stream_name = "Playback",
> + .cpu_dai_name = "samsung-i2s.x",
> + .codec_dai_name = "wm8580-hifi-playback",
> + .platform_name = "samsung-audio",
> + .codec_name = "wm8580-codec.0-001b",
> + .init = smdk_wm8580_init_paifrx,
> + .ops = &smdk_ops,
> + },
> };
>
> static struct snd_soc_card smdk = {
> .name = "SMDK-I2S",
> .dai_link = smdk_dai,
> - .num_links = ARRAY_SIZE(smdk_dai),
> + .num_links = 2,
> };
>
> static struct platform_device *smdk_snd_device;
> @@ -235,6 +253,19 @@ static struct platform_device *smdk_snd_device;
> static int __init smdk_audio_init(void)
> {
> int ret;
> + char *str;
> +
> + if (machine_is_smdkc100()) {
> + smdk.num_links = 3;
> + /* S5PC100 has I2S0 as v5 */
> + str = (char *)smdk_dai[PRI_PLAYBACK].cpu_dai_name;
> + str[strlen(str) - 1] = '0';
> + str = (char *)smdk_dai[PRI_CAPTURE].cpu_dai_name;
> + str[strlen(str) - 1] = '0';
> + /* Secondary is at offset SAMSUNG_I2S_SECOFF from Primary */
> + str = (char *)smdk_dai[SEC_PLAYBACK].cpu_dai_name;
> + str[strlen(str) - 1] = '0' + SAMSUNG_I2S_SECOFF;
> + }
>
> smdk_snd_device = platform_device_alloc("soc-audio", -1);
> if (!smdk_snd_device)
> --
> 1.6.2.5
More information about the Alsa-devel
mailing list