Commit b0f39c25 authored by Jassi Brar's avatar Jassi Brar Committed by Mark Brown

ASoC: SMDK_WM8580: Enable for SMDKC100

Enable the ASoC Machine driver to run on SMDKC100 as well.
Signed-off-by: default avatarJassi Brar <jassi.brar@samsung.com>
Acked-by: default avatarKukjin Kim <kgene.kim@samsung.com>
Acked-by: default avatarLiam Girdwood <lrg@slimlogic.co.uk>
Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
parent d98ce6cf
...@@ -96,6 +96,7 @@ static struct s3c2410_uartcfg smdkc100_uartcfgs[] __initdata = { ...@@ -96,6 +96,7 @@ static struct s3c2410_uartcfg smdkc100_uartcfgs[] __initdata = {
/* I2C0 */ /* I2C0 */
static struct i2c_board_info i2c_devs0[] __initdata = { static struct i2c_board_info i2c_devs0[] __initdata = {
{I2C_BOARD_INFO("wm8580", 0x1b),},
}; };
/* I2C1 */ /* I2C1 */
...@@ -190,6 +191,7 @@ static struct platform_device *smdkc100_devices[] __initdata = { ...@@ -190,6 +191,7 @@ static struct platform_device *smdkc100_devices[] __initdata = {
&s3c_device_ts, &s3c_device_ts,
&s3c_device_wdt, &s3c_device_wdt,
&smdkc100_lcd_powerdev, &smdkc100_lcd_powerdev,
&samsung_asoc_dma,
&s5pc100_device_iis0, &s5pc100_device_iis0,
&samsung_device_keypad, &samsung_device_keypad,
&s5pc100_device_ac97, &s5pc100_device_ac97,
......
...@@ -62,7 +62,7 @@ config SND_S3C24XX_SOC_JIVE_WM8750 ...@@ -62,7 +62,7 @@ config SND_S3C24XX_SOC_JIVE_WM8750
config SND_SOC_SMDK_WM8580 config SND_SOC_SMDK_WM8580
tristate "SoC I2S Audio support for WM8580 on SMDK" 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_SOC_WM8580
select SND_SAMSUNG_I2S select SND_SAMSUNG_I2S
help help
......
...@@ -17,6 +17,8 @@ ...@@ -17,6 +17,8 @@
#include <sound/pcm_params.h> #include <sound/pcm_params.h>
#include <sound/soc.h> #include <sound/soc.h>
#include <asm/mach-types.h>
#include "../codecs/wm8580.h" #include "../codecs/wm8580.h"
#include "dma.h" #include "dma.h"
#include "i2s.h" #include "i2s.h"
...@@ -200,8 +202,14 @@ static int smdk_wm8580_init_paifrx(struct snd_soc_pcm_runtime *rtd) ...@@ -200,8 +202,14 @@ static int smdk_wm8580_init_paifrx(struct snd_soc_pcm_runtime *rtd)
return 0; return 0;
} }
enum {
PRI_PLAYBACK = 0,
PRI_CAPTURE,
SEC_PLAYBACK,
};
static struct snd_soc_dai_link smdk_dai[] = { static struct snd_soc_dai_link smdk_dai[] = {
{ /* Primary Playback i/f */ [PRI_PLAYBACK] = { /* Primary Playback i/f */
.name = "WM8580 PAIF RX", .name = "WM8580 PAIF RX",
.stream_name = "Playback", .stream_name = "Playback",
.cpu_dai_name = "samsung-i2s.2", .cpu_dai_name = "samsung-i2s.2",
...@@ -210,8 +218,8 @@ static struct snd_soc_dai_link smdk_dai[] = { ...@@ -210,8 +218,8 @@ static struct snd_soc_dai_link smdk_dai[] = {
.codec_name = "wm8580-codec.0-001b", .codec_name = "wm8580-codec.0-001b",
.init = smdk_wm8580_init_paifrx, .init = smdk_wm8580_init_paifrx,
.ops = &smdk_ops, .ops = &smdk_ops,
}, },
{ /* Primary Capture i/f */ [PRI_CAPTURE] = { /* Primary Capture i/f */
.name = "WM8580 PAIF TX", .name = "WM8580 PAIF TX",
.stream_name = "Capture", .stream_name = "Capture",
.cpu_dai_name = "samsung-i2s.2", .cpu_dai_name = "samsung-i2s.2",
...@@ -220,13 +228,23 @@ static struct snd_soc_dai_link smdk_dai[] = { ...@@ -220,13 +228,23 @@ static struct snd_soc_dai_link smdk_dai[] = {
.codec_name = "wm8580-codec.0-001b", .codec_name = "wm8580-codec.0-001b",
.init = smdk_wm8580_init_paiftx, .init = smdk_wm8580_init_paiftx,
.ops = &smdk_ops, .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 = { static struct snd_soc_card smdk = {
.name = "SMDK-I2S", .name = "SMDK-I2S",
.dai_link = smdk_dai, .dai_link = smdk_dai,
.num_links = ARRAY_SIZE(smdk_dai), .num_links = 2,
}; };
static struct platform_device *smdk_snd_device; static struct platform_device *smdk_snd_device;
...@@ -234,6 +252,19 @@ static struct platform_device *smdk_snd_device; ...@@ -234,6 +252,19 @@ static struct platform_device *smdk_snd_device;
static int __init smdk_audio_init(void) static int __init smdk_audio_init(void)
{ {
int ret; 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); smdk_snd_device = platform_device_alloc("soc-audio", -1);
if (!smdk_snd_device) if (!smdk_snd_device)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment