diff options
author | Marek Belisko <marek.belisko@open-nandra.com> | 2011-03-09 15:46:20 -0500 |
---|---|---|
committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2011-03-11 07:17:11 -0500 |
commit | a110f4ef810ee29d810876df725f41d66629733e (patch) | |
tree | e5b0d7e9689b8a79065963e39ee5c98a16a2aaf6 | |
parent | 27380fb83079bc7bd644e1115bb001dfdcec307f (diff) |
ASoC: mini2440: Fix uda134x codec problem.
ASoC audio for mini2440 platform in current kenrel doesn't work.
First problem is samsung_asoc_dma device is missing in initialization.
Next problem is with codec. Codec is initialized but never probed
because no platform_device exist for codec driver. It leads to errors
during codec binding to asoc dai. Next problem was platform data which
was passed from board to asoc main driver but not passed to codec when
called codec_soc_probe().
Following patch should fix issues. But not sure if in correct way.
Please review.
Signed-off-by: Marek Belisko <marek.belisko@open-nandra.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Cc: stable@kernel.org
-rw-r--r-- | arch/arm/mach-s3c2440/mach-mini2440.c | 7 | ||||
-rw-r--r-- | sound/soc/codecs/uda134x.c | 3 | ||||
-rw-r--r-- | sound/soc/samsung/s3c24xx_uda134x.c | 3 |
3 files changed, 11 insertions, 2 deletions
diff --git a/arch/arm/mach-s3c2440/mach-mini2440.c b/arch/arm/mach-s3c2440/mach-mini2440.c index f62bb4c793bd..7c3fb071ddd6 100644 --- a/arch/arm/mach-s3c2440/mach-mini2440.c +++ b/arch/arm/mach-s3c2440/mach-mini2440.c | |||
@@ -506,6 +506,11 @@ static struct i2c_board_info mini2440_i2c_devs[] __initdata = { | |||
506 | }, | 506 | }, |
507 | }; | 507 | }; |
508 | 508 | ||
509 | static struct platform_device uda1340_codec = { | ||
510 | .name = "uda134x-codec", | ||
511 | .id = -1, | ||
512 | }; | ||
513 | |||
509 | static struct platform_device *mini2440_devices[] __initdata = { | 514 | static struct platform_device *mini2440_devices[] __initdata = { |
510 | &s3c_device_ohci, | 515 | &s3c_device_ohci, |
511 | &s3c_device_wdt, | 516 | &s3c_device_wdt, |
@@ -521,7 +526,9 @@ static struct platform_device *mini2440_devices[] __initdata = { | |||
521 | &s3c_device_nand, | 526 | &s3c_device_nand, |
522 | &s3c_device_sdi, | 527 | &s3c_device_sdi, |
523 | &s3c_device_iis, | 528 | &s3c_device_iis, |
529 | &uda1340_codec, | ||
524 | &mini2440_audio, | 530 | &mini2440_audio, |
531 | &samsung_asoc_dma, | ||
525 | }; | 532 | }; |
526 | 533 | ||
527 | static void __init mini2440_map_io(void) | 534 | static void __init mini2440_map_io(void) |
diff --git a/sound/soc/codecs/uda134x.c b/sound/soc/codecs/uda134x.c index e76847a9438b..48ffd406a71d 100644 --- a/sound/soc/codecs/uda134x.c +++ b/sound/soc/codecs/uda134x.c | |||
@@ -486,7 +486,8 @@ static struct snd_soc_dai_driver uda134x_dai = { | |||
486 | static int uda134x_soc_probe(struct snd_soc_codec *codec) | 486 | static int uda134x_soc_probe(struct snd_soc_codec *codec) |
487 | { | 487 | { |
488 | struct uda134x_priv *uda134x; | 488 | struct uda134x_priv *uda134x; |
489 | struct uda134x_platform_data *pd = dev_get_drvdata(codec->card->dev); | 489 | struct uda134x_platform_data *pd = codec->card->dev->platform_data; |
490 | |||
490 | int ret; | 491 | int ret; |
491 | 492 | ||
492 | printk(KERN_INFO "UDA134X SoC Audio Codec\n"); | 493 | printk(KERN_INFO "UDA134X SoC Audio Codec\n"); |
diff --git a/sound/soc/samsung/s3c24xx_uda134x.c b/sound/soc/samsung/s3c24xx_uda134x.c index 3cb700751078..dc9d551f6788 100644 --- a/sound/soc/samsung/s3c24xx_uda134x.c +++ b/sound/soc/samsung/s3c24xx_uda134x.c | |||
@@ -219,7 +219,7 @@ static struct snd_soc_ops s3c24xx_uda134x_ops = { | |||
219 | static struct snd_soc_dai_link s3c24xx_uda134x_dai_link = { | 219 | static struct snd_soc_dai_link s3c24xx_uda134x_dai_link = { |
220 | .name = "UDA134X", | 220 | .name = "UDA134X", |
221 | .stream_name = "UDA134X", | 221 | .stream_name = "UDA134X", |
222 | .codec_name = "uda134x-hifi", | 222 | .codec_name = "uda134x-codec", |
223 | .codec_dai_name = "uda134x-hifi", | 223 | .codec_dai_name = "uda134x-hifi", |
224 | .cpu_dai_name = "s3c24xx-iis", | 224 | .cpu_dai_name = "s3c24xx-iis", |
225 | .ops = &s3c24xx_uda134x_ops, | 225 | .ops = &s3c24xx_uda134x_ops, |
@@ -314,6 +314,7 @@ static int s3c24xx_uda134x_probe(struct platform_device *pdev) | |||
314 | 314 | ||
315 | platform_set_drvdata(s3c24xx_uda134x_snd_device, | 315 | platform_set_drvdata(s3c24xx_uda134x_snd_device, |
316 | &snd_soc_s3c24xx_uda134x); | 316 | &snd_soc_s3c24xx_uda134x); |
317 | platform_device_add_data(s3c24xx_uda134x_snd_device, &s3c24xx_uda134x, sizeof(s3c24xx_uda134x)); | ||
317 | ret = platform_device_add(s3c24xx_uda134x_snd_device); | 318 | ret = platform_device_add(s3c24xx_uda134x_snd_device); |
318 | if (ret) { | 319 | if (ret) { |
319 | printk(KERN_ERR "S3C24XX_UDA134X SoC Audio: Unable to add\n"); | 320 | printk(KERN_ERR "S3C24XX_UDA134X SoC Audio: Unable to add\n"); |