This is a note to let you know that I've just added the patch titled

    ASoC: mini2440: Fix uda134x codec problem.

to the 2.6.38-stable tree which can be found at:
    
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     asoc-mini2440-fix-uda134x-codec-problem.patch
and it can be found in the queue-2.6.38 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <[email protected]> know about it.


>From a110f4ef810ee29d810876df725f41d66629733e Mon Sep 17 00:00:00 2001
From: Marek Belisko <[email protected]>
Date: Wed, 9 Mar 2011 21:46:20 +0100
Subject: ASoC: mini2440: Fix uda134x codec problem.

From: Marek Belisko <[email protected]>

commit a110f4ef810ee29d810876df725f41d66629733e upstream.

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 <[email protected]>
Acked-by: Liam Girdwood <[email protected]>
Signed-off-by: Mark Brown <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

---
 arch/arm/mach-s3c2440/mach-mini2440.c |    7 +++++++
 sound/soc/codecs/uda134x.c            |    3 ++-
 sound/soc/samsung/s3c24xx_uda134x.c   |    3 ++-
 3 files changed, 11 insertions(+), 2 deletions(-)

--- 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_i2
        },
 };
 
+static struct platform_device uda1340_codec = {
+               .name = "uda134x-codec",
+               .id = -1,
+};
+
 static struct platform_device *mini2440_devices[] __initdata = {
        &s3c_device_ohci,
        &s3c_device_wdt,
@@ -521,7 +526,9 @@ static struct platform_device *mini2440_
        &s3c_device_nand,
        &s3c_device_sdi,
        &s3c_device_iis,
+       &uda1340_codec,
        &mini2440_audio,
+       &samsung_asoc_dma,
 };
 
 static void __init mini2440_map_io(void)
--- a/sound/soc/codecs/uda134x.c
+++ b/sound/soc/codecs/uda134x.c
@@ -486,7 +486,8 @@ static struct snd_soc_dai_driver uda134x
 static int uda134x_soc_probe(struct snd_soc_codec *codec)
 {
        struct uda134x_priv *uda134x;
-       struct uda134x_platform_data *pd = dev_get_drvdata(codec->card->dev);
+       struct uda134x_platform_data *pd = codec->card->dev->platform_data;
+
        int ret;
 
        printk(KERN_INFO "UDA134X SoC Audio Codec\n");
--- a/sound/soc/samsung/s3c24xx_uda134x.c
+++ b/sound/soc/samsung/s3c24xx_uda134x.c
@@ -226,7 +226,7 @@ static struct snd_soc_ops s3c24xx_uda134
 static struct snd_soc_dai_link s3c24xx_uda134x_dai_link = {
        .name = "UDA134X",
        .stream_name = "UDA134X",
-       .codec_name = "uda134x-hifi",
+       .codec_name = "uda134x-codec",
        .codec_dai_name = "uda134x-hifi",
        .cpu_dai_name = "s3c24xx-iis",
        .ops = &s3c24xx_uda134x_ops,
@@ -321,6 +321,7 @@ static int s3c24xx_uda134x_probe(struct
 
        platform_set_drvdata(s3c24xx_uda134x_snd_device,
                             &snd_soc_s3c24xx_uda134x);
+       platform_device_add_data(s3c24xx_uda134x_snd_device, &s3c24xx_uda134x, 
sizeof(s3c24xx_uda134x));
        ret = platform_device_add(s3c24xx_uda134x_snd_device);
        if (ret) {
                printk(KERN_ERR "S3C24XX_UDA134X SoC Audio: Unable to add\n");


Patches currently in stable-queue which might be from 
[email protected] are

queue-2.6.38/asoc-mini2440-fix-uda134x-codec-problem.patch

_______________________________________________
stable mailing list
[email protected]
http://linux.kernel.org/mailman/listinfo/stable

Reply via email to