All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] General fix for Palm27x aSoC driver
@ 2009-04-12 16:58 Marek Vasut
  2009-04-12 17:06 ` Mark Brown
  0 siblings, 1 reply; 20+ messages in thread
From: Marek Vasut @ 2009-04-12 16:58 UTC (permalink / raw)
  To: linux-arm-kernel, broonie, alsa-devel; +Cc: Eric Miao, Russell King - ARM Linux

[-- Attachment #1: Type: text/plain, Size: 314 bytes --]

Hi,

Firstly, this patch makes the palm27x asoc driver a little more sane. Also,
since all affected devices use GPIO95 as AC97_nRESET, this patch sets that
properly. Affected are PalmT5, TX and LifeDrive.

Please consider applying, it's against Russells tree. If Eric wants to merge 
it, I can remake it.

Thanks.

[-- Attachment #2: 0001-General-fix-for-Palm27x-aSoC-driver.patch --]
[-- Type: text/x-diff, Size: 10146 bytes --]

From 0b12db7ca6b45bd3fd74a89c58a754a30dd84960 Mon Sep 17 00:00:00 2001
From: Marek Vasut <marek.vasut@gmail.com>
Date: Sun, 12 Apr 2009 18:50:01 +0200
Subject: [PATCH] General fix for Palm27x aSoC driver

Firstly, this patch makes the palm27x asoc driver a little more sane. Also,
since all affected devices use GPIO95 as AC97_nRESET, this patch sets that
properly. Affected are PalmT5, TX and LifeDrive.

Signed-off-by: Marek Vasut <marek.vasut@gmail.com>
---
 arch/arm/mach-pxa/include/mach/palmasoc.h |    7 +---
 arch/arm/mach-pxa/palmld.c                |   43 ++++++++++++++++++++++++--
 arch/arm/mach-pxa/palmt5.c                |   43 ++++++++++++++++++++++++--
 arch/arm/mach-pxa/palmtx.c                |   48 ++++++++++++++++++++++++++++-
 sound/soc/pxa/palm27x.c                   |   27 ++++++++++++++--
 5 files changed, 151 insertions(+), 17 deletions(-)

diff --git a/arch/arm/mach-pxa/include/mach/palmasoc.h b/arch/arm/mach-pxa/include/mach/palmasoc.h
index 6c4b1f7..58afb30 100644
--- a/arch/arm/mach-pxa/include/mach/palmasoc.h
+++ b/arch/arm/mach-pxa/include/mach/palmasoc.h
@@ -1,13 +1,8 @@
 #ifndef _INCLUDE_PALMASOC_H_
 #define _INCLUDE_PALMASOC_H_
+
 struct palm27x_asoc_info {
 	int	jack_gpio;
 };
 
-#ifdef CONFIG_SND_PXA2XX_SOC_PALM27X
-void __init palm27x_asoc_set_pdata(struct palm27x_asoc_info *data);
-#else
-static inline void palm27x_asoc_set_pdata(struct palm27x_asoc_info *data) {}
-#endif
-
 #endif
diff --git a/arch/arm/mach-pxa/palmld.c b/arch/arm/mach-pxa/palmld.c
index 8587477..a34840a 100644
--- a/arch/arm/mach-pxa/palmld.c
+++ b/arch/arm/mach-pxa/palmld.c
@@ -38,6 +38,8 @@
 #include <mach/pxa27x_keypad.h>
 #include <mach/palmasoc.h>
 
+#include <sound/pxa2xx-lib.h>
+
 #include "generic.h"
 #include "devices.h"
 
@@ -476,10 +478,43 @@ static struct wm97xx_batt_info wm97xx_batt_pdata = {
 /******************************************************************************
  * aSoC audio
  ******************************************************************************/
-static struct palm27x_asoc_info palm27x_asoc_pdata = {
+static struct palm27x_asoc_info palmld_asoc_pdata = {
 	.jack_gpio	= GPIO_NR_PALMLD_EARPHONE_DETECT,
 };
 
+static struct pxa2xx_ac97_platform_data palmld_ac97_pdata = {
+	.reset_gpio	= 95,
+};
+
+static struct platform_device palmld_pxa2xx_pcm = {
+	.name = "pxa2xx-pcm",
+	.id   = -1,
+};
+
+static struct platform_device palmld_pxa2xx_ac97 = {
+	.name = "pxa2xx-ac97",
+	.id   = -1,
+	.dev  = {
+		.platform_data = &palmld_ac97_pdata,
+	},
+};
+
+static struct platform_device palmld_wm9712_codec = {
+	.name = "wm9712-codec",
+	.id   = -1,
+	.dev  = {
+		.parent		= &palmld_pxa2xx_ac97.dev,
+	},
+};
+
+static struct platform_device palmld_asoc = {
+	.name = "palm27x-asoc",
+	.id   = -1,
+	.dev  = {
+		.platform_data = &palmld_asoc_pdata,
+	},
+};
+
 /******************************************************************************
  * Framebuffer
  ******************************************************************************/
@@ -516,6 +551,10 @@ static struct platform_device *devices[] __initdata = {
 	&palmld_backlight,
 	&palmld_leds,
 	&power_supply,
+	&palmld_pxa2xx_pcm,
+	&palmld_pxa2xx_ac97,
+	&palmld_wm9712_codec,
+	&palmld_asoc,
 };
 
 static struct map_desc palmld_io_desc[] __initdata = {
@@ -545,11 +584,9 @@ static void __init palmld_init(void)
 
 	set_pxa_fb_info(&palmld_lcd_screen);
 	pxa_set_mci_info(&palmld_mci_platform_data);
-	pxa_set_ac97_info(NULL);
 	pxa_set_ficp_info(&palmld_ficp_platform_data);
 	pxa_set_keypad_info(&palmld_keypad_platform_data);
 	wm97xx_bat_set_pdata(&wm97xx_batt_pdata);
-	palm27x_asoc_set_pdata(&palm27x_asoc_pdata);
 
 	platform_add_devices(devices, ARRAY_SIZE(devices));
 }
diff --git a/arch/arm/mach-pxa/palmt5.c b/arch/arm/mach-pxa/palmt5.c
index 9f591cf..74e590b 100644
--- a/arch/arm/mach-pxa/palmt5.c
+++ b/arch/arm/mach-pxa/palmt5.c
@@ -41,6 +41,8 @@
 #include <mach/udc.h>
 #include <mach/palmasoc.h>
 
+#include <sound/pxa2xx-lib.h>
+
 #include "generic.h"
 #include "devices.h"
 
@@ -420,10 +422,43 @@ static struct wm97xx_batt_info wm97xx_batt_pdata = {
 /******************************************************************************
  * aSoC audio
  ******************************************************************************/
-static struct palm27x_asoc_info palm27x_asoc_pdata = {
+static struct palm27x_asoc_info palmt5_asoc_pdata = {
 	.jack_gpio	= GPIO_NR_PALMT5_EARPHONE_DETECT,
 };
 
+static struct pxa2xx_ac97_platform_data palmt5_ac97_pdata = {
+	.reset_gpio	= 95,
+};
+
+static struct platform_device palmt5_pxa2xx_pcm = {
+	.name = "pxa2xx-pcm",
+	.id   = -1,
+};
+
+static struct platform_device palmt5_pxa2xx_ac97 = {
+	.name = "pxa2xx-ac97",
+	.id   = -1,
+	.dev  = {
+		.platform_data = &palmt5_ac97_pdata,
+	},
+};
+
+static struct platform_device palmt5_wm9712_codec = {
+	.name = "wm9712-codec",
+	.id   = -1,
+	.dev  = {
+		.parent		= &palmt5_pxa2xx_ac97.dev,
+	},
+};
+
+static struct platform_device palmt5_asoc = {
+	.name = "palm27x-asoc",
+	.id   = -1,
+	.dev  = {
+		.platform_data = &palmt5_asoc_pdata,
+	},
+};
+
 /******************************************************************************
  * Framebuffer
  ******************************************************************************/
@@ -459,6 +494,10 @@ static struct platform_device *devices[] __initdata = {
 #endif
 	&palmt5_backlight,
 	&power_supply,
+	&palmt5_pxa2xx_pcm,
+	&palmt5_pxa2xx_ac97,
+	&palmt5_wm9712_codec,
+	&palmt5_asoc,
 };
 
 /* setup udc GPIOs initial state */
@@ -478,11 +517,9 @@ static void __init palmt5_init(void)
 	pxa_set_mci_info(&palmt5_mci_platform_data);
 	palmt5_udc_init();
 	pxa_set_udc_info(&palmt5_udc_info);
-	pxa_set_ac97_info(NULL);
 	pxa_set_ficp_info(&palmt5_ficp_platform_data);
 	pxa_set_keypad_info(&palmt5_keypad_platform_data);
 	wm97xx_bat_set_pdata(&wm97xx_batt_pdata);
-	palm27x_asoc_set_pdata(&palm27x_asoc_pdata);
 	platform_add_devices(devices, ARRAY_SIZE(devices));
 }
 
diff --git a/arch/arm/mach-pxa/palmtx.c b/arch/arm/mach-pxa/palmtx.c
index 540cd69..fb651d1 100644
--- a/arch/arm/mach-pxa/palmtx.c
+++ b/arch/arm/mach-pxa/palmtx.c
@@ -40,6 +40,9 @@
 #include <mach/irda.h>
 #include <mach/pxa27x_keypad.h>
 #include <mach/udc.h>
+#include <mach/palmasoc.h>
+
+#include <sound/pxa2xx-lib.h>
 
 #include "generic.h"
 #include "devices.h"
@@ -434,6 +437,46 @@ static struct wm97xx_batt_info wm97xx_batt_pdata = {
 };
 
 /******************************************************************************
+ * aSoC audio
+ ******************************************************************************/
+static struct palm27x_asoc_info palmtx_asoc_pdata = {
+	.jack_gpio	= GPIO_NR_PALMTX_EARPHONE_DETECT,
+};
+
+static struct pxa2xx_ac97_platform_data palmtx_ac97_pdata = {
+	.reset_gpio	= 95,
+};
+
+static struct platform_device palmtx_pxa2xx_pcm = {
+	.name = "pxa2xx-pcm",
+	.id   = -1,
+};
+
+static struct platform_device palmtx_pxa2xx_ac97 = {
+	.name = "pxa2xx-ac97",
+	.id   = -1,
+	.dev  = {
+		.platform_data = &palmtx_ac97_pdata,
+	},
+};
+
+static struct platform_device palmtx_wm9712_codec = {
+	.name = "wm9712-codec",
+	.id   = -1,
+	.dev  = {
+		.parent		= &palmtx_pxa2xx_ac97.dev,
+	},
+};
+
+static struct platform_device palmtx_asoc = {
+	.name = "palm27x-asoc",
+	.id   = -1,
+	.dev  = {
+		.platform_data = &palmtx_asoc_pdata,
+	},
+};
+
+/******************************************************************************
  * Framebuffer
  ******************************************************************************/
 static struct pxafb_mode_info palmtx_lcd_modes[] = {
@@ -468,6 +511,10 @@ static struct platform_device *devices[] __initdata = {
 #endif
 	&palmtx_backlight,
 	&power_supply,
+	&palmtx_pxa2xx_pcm,
+	&palmtx_pxa2xx_ac97,
+	&palmtx_wm9712_codec,
+	&palmtx_asoc,
 };
 
 static struct map_desc palmtx_io_desc[] __initdata = {
@@ -503,7 +550,6 @@ static void __init palmtx_init(void)
 	pxa_set_mci_info(&palmtx_mci_platform_data);
 	palmtx_udc_init();
 	pxa_set_udc_info(&palmtx_udc_info);
-	pxa_set_ac97_info(NULL);
 	pxa_set_ficp_info(&palmtx_ficp_platform_data);
 	pxa_set_keypad_info(&palmtx_keypad_platform_data);
 	wm97xx_bat_set_pdata(&wm97xx_batt_pdata);
diff --git a/sound/soc/pxa/palm27x.c b/sound/soc/pxa/palm27x.c
index 48a73f6..44fcc4e 100644
--- a/sound/soc/pxa/palm27x.c
+++ b/sound/soc/pxa/palm27x.c
@@ -200,7 +200,7 @@ static struct snd_soc_device palm27x_snd_devdata = {
 
 static struct platform_device *palm27x_snd_device;
 
-static int __init palm27x_asoc_init(void)
+static int palm27x_asoc_probe(struct platform_device *pdev)
 {
 	int ret;
 
@@ -208,6 +208,10 @@ static int __init palm27x_asoc_init(void)
 		machine_is_palmld()))
 		return -ENODEV;
 
+	if (pdev->dev.platform_data)
+		palm27x_ep_gpio = ((struct palm27x_asoc_info *)
+			(pdev->dev.platform_data))->jack_gpio;
+
 	ret = gpio_request(palm27x_ep_gpio, "Headphone Jack");
 	if (ret)
 		return ret;
@@ -245,16 +249,31 @@ err_alloc:
 	return ret;
 }
 
-static void __exit palm27x_asoc_exit(void)
+static int __devexit palm27x_asoc_remove(struct platform_device *pdev)
 {
 	free_irq(gpio_to_irq(palm27x_ep_gpio), NULL);
 	gpio_free(palm27x_ep_gpio);
 	platform_device_unregister(palm27x_snd_device);
+	return 0;
 }
 
-void __init palm27x_asoc_set_pdata(struct palm27x_asoc_info *data)
+static struct platform_driver palm27x_wm9712_driver = {
+	.probe		= palm27x_asoc_probe,
+	.remove		= __devexit_p(palm27x_asoc_remove),
+	.driver		= {
+		.name		= "palm27x-asoc",
+		.owner		= THIS_MODULE,
+	},
+};
+
+static int __init palm27x_asoc_init(void)
+{
+	return platform_driver_register(&palm27x_wm9712_driver);
+}
+
+static void __exit palm27x_asoc_exit(void)
 {
-	palm27x_ep_gpio = data->jack_gpio;
+	platform_driver_unregister(&palm27x_wm9712_driver);
 }
 
 module_init(palm27x_asoc_init);
-- 
1.6.2


[-- Attachment #3: Type: text/plain, Size: 160 bytes --]

_______________________________________________
Alsa-devel mailing list
Alsa-devel@alsa-project.org
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel

^ permalink raw reply related	[flat|nested] 20+ messages in thread

* Re: [PATCH] General fix for Palm27x aSoC driver
  2009-04-12 16:58 [PATCH] General fix for Palm27x aSoC driver Marek Vasut
@ 2009-04-12 17:06 ` Mark Brown
  2009-04-12 17:20   ` Marek Vasut
  0 siblings, 1 reply; 20+ messages in thread
From: Mark Brown @ 2009-04-12 17:06 UTC (permalink / raw)
  To: Marek Vasut
  Cc: Eric Miao, alsa-devel, Russell King - ARM Linux, linux-arm-kernel

On Sun, Apr 12, 2009 at 06:58:42PM +0200, Marek Vasut wrote:

> +static struct platform_device palmld_pxa2xx_pcm = {
> +	.name = "pxa2xx-pcm",
> +	.id   = -1,
> +};

This should follow the pattern that everything else uses with the struct
platform_device in devices.c and board files triggering registration of
that.

> +static struct platform_device palmld_pxa2xx_ac97 = {
> +	.name = "pxa2xx-ac97",
> +	.id   = -1,
> +	.dev  = {
> +		.platform_data = &palmld_ac97_pdata,
> +	},
> +};

No, use pxa_set_ac97_info().

> +static struct platform_device palmld_wm9712_codec = {

No, the WM9712 is not a platform device.

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH] General fix for Palm27x aSoC driver
  2009-04-12 17:06 ` Mark Brown
@ 2009-04-12 17:20   ` Marek Vasut
  2009-04-12 17:24     ` Marek Vasut
  2009-04-12 17:58     ` Mark Brown
  0 siblings, 2 replies; 20+ messages in thread
From: Marek Vasut @ 2009-04-12 17:20 UTC (permalink / raw)
  To: Mark Brown
  Cc: Eric Miao, alsa-devel, Russell King - ARM Linux, linux-arm-kernel

On Sunday 12 of April 2009 19:06:26 Mark Brown wrote:
> On Sun, Apr 12, 2009 at 06:58:42PM +0200, Marek Vasut wrote:
> > +static struct platform_device palmld_pxa2xx_pcm = {
> > +	.name = "pxa2xx-pcm",
> > +	.id   = -1,
> > +};
>
> This should follow the pattern that everything else uses with the struct
> platform_device in devices.c and board files triggering registration of
> that.

Half of the platforms use static struct, half use struct. Probably someone 
should send a huge patch to make it consistent. I'd like to have it 
consistent at least inside the platform file.

>
> > +static struct platform_device palmld_pxa2xx_ac97 = {
> > +	.name = "pxa2xx-ac97",
> > +	.id   = -1,
> > +	.dev  = {
> > +		.platform_data = &palmld_ac97_pdata,
> > +	},
> > +};
>
> No, use pxa_set_ac97_info().

How?

>
> > +static struct platform_device palmld_wm9712_codec = {
>
> No, the WM9712 is not a platform device.

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH] General fix for Palm27x aSoC driver
  2009-04-12 17:20   ` Marek Vasut
@ 2009-04-12 17:24     ` Marek Vasut
  2009-04-12 17:30       ` Robert Jarzmik
  2009-04-12 18:00       ` Mark Brown
  2009-04-12 17:58     ` Mark Brown
  1 sibling, 2 replies; 20+ messages in thread
From: Marek Vasut @ 2009-04-12 17:24 UTC (permalink / raw)
  To: Mark Brown
  Cc: Eric Miao, alsa-devel, Russell King - ARM Linux, linux-arm-kernel

On Sunday 12 of April 2009 19:20:15 Marek Vasut wrote:
> On Sunday 12 of April 2009 19:06:26 Mark Brown wrote:
> > On Sun, Apr 12, 2009 at 06:58:42PM +0200, Marek Vasut wrote:
> > > +static struct platform_device palmld_pxa2xx_pcm = {
> > > +	.name = "pxa2xx-pcm",
> > > +	.id   = -1,
> > > +};
> >
> > This should follow the pattern that everything else uses with the struct
> > platform_device in devices.c and board files triggering registration of
> > that.
>
> Half of the platforms use static struct, half use struct. Probably someone
> should send a huge patch to make it consistent. I'd like to have it
> consistent at least inside the platform file.
>
> > > +static struct platform_device palmld_pxa2xx_ac97 = {
> > > +	.name = "pxa2xx-ac97",
> > > +	.id   = -1,
> > > +	.dev  = {
> > > +		.platform_data = &palmld_ac97_pdata,
> > > +	},
> > > +};
> >
> > No, use pxa_set_ac97_info().
>
> How?
>
> > > +static struct platform_device palmld_wm9712_codec = {
> >
> > No, the WM9712 is not a platform device.

btw mio_a701 uses it the same way ... why can I ? Why was the mio code merged 
then?

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH] General fix for Palm27x aSoC driver
  2009-04-12 17:24     ` Marek Vasut
@ 2009-04-12 17:30       ` Robert Jarzmik
  2009-04-12 18:00       ` Mark Brown
  1 sibling, 0 replies; 20+ messages in thread
From: Robert Jarzmik @ 2009-04-12 17:30 UTC (permalink / raw)
  To: Marek Vasut
  Cc: Russell King - ARM Linux, alsa-devel, Eric Miao, Mark Brown,
	linux-arm-kernel

Marek Vasut <marek.vasut@gmail.com> writes:

> btw mio_a701 uses it the same way ... why can I ? Why was the mio code merged 
> then?
The pxa_set_ac97_info() was introduced in 2008, June the 10th.
The original mio code was submitted in early 2008, in March I think. Do you see
now why ?

And that code was recently amended by Eric Miao, because it has not evolved with
the introduction of pxa_set_ac97_info() as it should had (blame me). The part of
code you're talking about is now gone.

Cheers.

--
Robert

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH] General fix for Palm27x aSoC driver
  2009-04-12 17:20   ` Marek Vasut
  2009-04-12 17:24     ` Marek Vasut
@ 2009-04-12 17:58     ` Mark Brown
  2009-04-12 18:51       ` Marek Vasut
  1 sibling, 1 reply; 20+ messages in thread
From: Mark Brown @ 2009-04-12 17:58 UTC (permalink / raw)
  To: Marek Vasut
  Cc: Eric Miao, alsa-devel, Russell King - ARM Linux, linux-arm-kernel

On Sun, Apr 12, 2009 at 07:20:15PM +0200, Marek Vasut wrote:
> On Sunday 12 of April 2009 19:06:26 Mark Brown wrote:

> > > +static struct platform_device palmld_pxa2xx_pcm = {

> > This should follow the pattern that everything else uses with the struct
> > platform_device in devices.c and board files triggering registration of
> > that.

> Half of the platforms use static struct, half use struct. Probably someone 
> should send a huge patch to make it consistent. I'd like to have it 
> consistent at least inside the platform file.

The general rule is that if it's a part of the CPU it should go in
devices.c - things that aren't doing that are mostly just waiting for
cleanup.

> > > +static struct platform_device palmld_pxa2xx_ac97 = {
> > > +	.name = "pxa2xx-ac97",
> > > +	.id   = -1,
> > > +	.dev  = {
> > > +		.platform_data = &palmld_ac97_pdata,
> > > +	},
> > > +};

> > No, use pxa_set_ac97_info().

> How?

Pass the platform data as the argument.  This will currently involve
merging the two different platform data structures that we have right
now.

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH] General fix for Palm27x aSoC driver
  2009-04-12 17:24     ` Marek Vasut
  2009-04-12 17:30       ` Robert Jarzmik
@ 2009-04-12 18:00       ` Mark Brown
  1 sibling, 0 replies; 20+ messages in thread
From: Mark Brown @ 2009-04-12 18:00 UTC (permalink / raw)
  To: Marek Vasut
  Cc: Eric Miao, alsa-devel, Russell King - ARM Linux, linux-arm-kernel

On Sun, Apr 12, 2009 at 07:24:24PM +0200, Marek Vasut wrote:
> On Sunday 12 of April 2009 19:20:15 Marek Vasut wrote:
> > On Sunday 12 of April 2009 19:06:26 Mark Brown wrote:j

> > > No, the WM9712 is not a platform device.

> btw mio_a701 uses it the same way ... why can I ? Why was the mio code merged 
> then?

mio_a701 is buggy, the device should be removed from there.  I didn't
review that code so didn't have a chance to notice that the device was
there.

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH] General fix for Palm27x aSoC driver
  2009-04-12 17:58     ` Mark Brown
@ 2009-04-12 18:51       ` Marek Vasut
  2009-04-14 17:51         ` Marek Vasut
  2009-04-14 19:50         ` Mark Brown
  0 siblings, 2 replies; 20+ messages in thread
From: Marek Vasut @ 2009-04-12 18:51 UTC (permalink / raw)
  To: Mark Brown
  Cc: Eric Miao, alsa-devel, Russell King - ARM Linux, linux-arm-kernel

[-- Attachment #1: Type: text/plain, Size: 1254 bytes --]

On Sunday 12 of April 2009 19:58:00 Mark Brown wrote:
> On Sun, Apr 12, 2009 at 07:20:15PM +0200, Marek Vasut wrote:
> > On Sunday 12 of April 2009 19:06:26 Mark Brown wrote:
> > > > +static struct platform_device palmld_pxa2xx_pcm = {
> > >
> > > This should follow the pattern that everything else uses with the
> > > struct platform_device in devices.c and board files triggering
> > > registration of that.
> >
> > Half of the platforms use static struct, half use struct. Probably
> > someone should send a huge patch to make it consistent. I'd like to have
> > it consistent at least inside the platform file.
>
> The general rule is that if it's a part of the CPU it should go in
> devices.c - things that aren't doing that are mostly just waiting for
> cleanup.
>
> > > > +static struct platform_device palmld_pxa2xx_ac97 = {
> > > > +	.name = "pxa2xx-ac97",
> > > > +	.id   = -1,
> > > > +	.dev  = {
> > > > +		.platform_data = &palmld_ac97_pdata,
> > > > +	},
> > > > +};
> > >
> > > No, use pxa_set_ac97_info().
> >
> > How?
>
> Pass the platform data as the argument.  This will currently involve
> merging the two different platform data structures that we have right
> now.

OK, I see, thanks :-) Will you be happier with this patch then ?

[-- Attachment #2: 0001-General-fix-for-Palm27x-aSoC-driver.patch --]
[-- Type: text/x-diff, Size: 8839 bytes --]

From 664a33dff40b27e53cd4b4532e80efc99f4720f0 Mon Sep 17 00:00:00 2001
From: Marek Vasut <marek.vasut@gmail.com>
Date: Sun, 12 Apr 2009 20:47:45 +0200
Subject: [PATCH] General fix for Palm27x aSoC driver

Firstly, this patch makes the palm27x asoc driver a little more sane. Also,
since all affected devices use GPIO95 as AC97_nRESET, this patch sets that
properly. Affected are PalmT5, TX and LifeDrive.

Signed-off-by: Marek Vasut <marek.vasut@gmail.com>
---
 arch/arm/mach-pxa/include/mach/palmasoc.h |    7 +------
 arch/arm/mach-pxa/palmld.c                |   20 +++++++++++++++++---
 arch/arm/mach-pxa/palmt5.c                |   20 +++++++++++++++++---
 arch/arm/mach-pxa/palmtx.c                |   25 ++++++++++++++++++++++++-
 sound/soc/pxa/palm27x.c                   |   27 +++++++++++++++++++++++----
 5 files changed, 82 insertions(+), 17 deletions(-)

diff --git a/arch/arm/mach-pxa/include/mach/palmasoc.h b/arch/arm/mach-pxa/include/mach/palmasoc.h
index 6c4b1f7..58afb30 100644
--- a/arch/arm/mach-pxa/include/mach/palmasoc.h
+++ b/arch/arm/mach-pxa/include/mach/palmasoc.h
@@ -1,13 +1,8 @@
 #ifndef _INCLUDE_PALMASOC_H_
 #define _INCLUDE_PALMASOC_H_
+
 struct palm27x_asoc_info {
 	int	jack_gpio;
 };
 
-#ifdef CONFIG_SND_PXA2XX_SOC_PALM27X
-void __init palm27x_asoc_set_pdata(struct palm27x_asoc_info *data);
-#else
-static inline void palm27x_asoc_set_pdata(struct palm27x_asoc_info *data) {}
-#endif
-
 #endif
diff --git a/arch/arm/mach-pxa/palmld.c b/arch/arm/mach-pxa/palmld.c
index 8587477..3c1b564 100644
--- a/arch/arm/mach-pxa/palmld.c
+++ b/arch/arm/mach-pxa/palmld.c
@@ -38,6 +38,8 @@
 #include <mach/pxa27x_keypad.h>
 #include <mach/palmasoc.h>
 
+#include <sound/pxa2xx-lib.h>
+
 #include "generic.h"
 #include "devices.h"
 
@@ -476,10 +478,22 @@ static struct wm97xx_batt_info wm97xx_batt_pdata = {
 /******************************************************************************
  * aSoC audio
  ******************************************************************************/
-static struct palm27x_asoc_info palm27x_asoc_pdata = {
+static struct palm27x_asoc_info palmld_asoc_pdata = {
 	.jack_gpio	= GPIO_NR_PALMLD_EARPHONE_DETECT,
 };
 
+static struct pxa2xx_ac97_platform_data palmld_ac97_pdata = {
+	.reset_gpio	= 95,
+};
+
+static struct platform_device palmld_asoc = {
+	.name = "palm27x-asoc",
+	.id   = -1,
+	.dev  = {
+		.platform_data = &palmld_asoc_pdata,
+	},
+};
+
 /******************************************************************************
  * Framebuffer
  ******************************************************************************/
@@ -516,6 +530,7 @@ static struct platform_device *devices[] __initdata = {
 	&palmld_backlight,
 	&palmld_leds,
 	&power_supply,
+	&palmld_asoc,
 };
 
 static struct map_desc palmld_io_desc[] __initdata = {
@@ -545,11 +560,10 @@ static void __init palmld_init(void)
 
 	set_pxa_fb_info(&palmld_lcd_screen);
 	pxa_set_mci_info(&palmld_mci_platform_data);
-	pxa_set_ac97_info(NULL);
+	pxa_set_ac97_info(&palmld_ac97_pdata);
 	pxa_set_ficp_info(&palmld_ficp_platform_data);
 	pxa_set_keypad_info(&palmld_keypad_platform_data);
 	wm97xx_bat_set_pdata(&wm97xx_batt_pdata);
-	palm27x_asoc_set_pdata(&palm27x_asoc_pdata);
 
 	platform_add_devices(devices, ARRAY_SIZE(devices));
 }
diff --git a/arch/arm/mach-pxa/palmt5.c b/arch/arm/mach-pxa/palmt5.c
index 9f591cf..c732d76 100644
--- a/arch/arm/mach-pxa/palmt5.c
+++ b/arch/arm/mach-pxa/palmt5.c
@@ -41,6 +41,8 @@
 #include <mach/udc.h>
 #include <mach/palmasoc.h>
 
+#include <sound/pxa2xx-lib.h>
+
 #include "generic.h"
 #include "devices.h"
 
@@ -420,10 +422,22 @@ static struct wm97xx_batt_info wm97xx_batt_pdata = {
 /******************************************************************************
  * aSoC audio
  ******************************************************************************/
-static struct palm27x_asoc_info palm27x_asoc_pdata = {
+static struct palm27x_asoc_info palmt5_asoc_pdata = {
 	.jack_gpio	= GPIO_NR_PALMT5_EARPHONE_DETECT,
 };
 
+static struct pxa2xx_ac97_platform_data palmt5_ac97_pdata = {
+	.reset_gpio	= 95,
+};
+
+static struct platform_device palmt5_asoc = {
+	.name = "palm27x-asoc",
+	.id   = -1,
+	.dev  = {
+		.platform_data = &palmt5_asoc_pdata,
+	},
+};
+
 /******************************************************************************
  * Framebuffer
  ******************************************************************************/
@@ -459,6 +473,7 @@ static struct platform_device *devices[] __initdata = {
 #endif
 	&palmt5_backlight,
 	&power_supply,
+	&palmt5_asoc,
 };
 
 /* setup udc GPIOs initial state */
@@ -477,12 +492,11 @@ static void __init palmt5_init(void)
 	set_pxa_fb_info(&palmt5_lcd_screen);
 	pxa_set_mci_info(&palmt5_mci_platform_data);
 	palmt5_udc_init();
+	pxa_set_ac97_info(&palmt5_ac97_pdata);
 	pxa_set_udc_info(&palmt5_udc_info);
-	pxa_set_ac97_info(NULL);
 	pxa_set_ficp_info(&palmt5_ficp_platform_data);
 	pxa_set_keypad_info(&palmt5_keypad_platform_data);
 	wm97xx_bat_set_pdata(&wm97xx_batt_pdata);
-	palm27x_asoc_set_pdata(&palm27x_asoc_pdata);
 	platform_add_devices(devices, ARRAY_SIZE(devices));
 }
 
diff --git a/arch/arm/mach-pxa/palmtx.c b/arch/arm/mach-pxa/palmtx.c
index 540cd69..ca6aa61 100644
--- a/arch/arm/mach-pxa/palmtx.c
+++ b/arch/arm/mach-pxa/palmtx.c
@@ -40,6 +40,9 @@
 #include <mach/irda.h>
 #include <mach/pxa27x_keypad.h>
 #include <mach/udc.h>
+#include <mach/palmasoc.h>
+
+#include <sound/pxa2xx-lib.h>
 
 #include "generic.h"
 #include "devices.h"
@@ -434,6 +437,25 @@ static struct wm97xx_batt_info wm97xx_batt_pdata = {
 };
 
 /******************************************************************************
+ * aSoC audio
+ ******************************************************************************/
+static struct palm27x_asoc_info palmtx_asoc_pdata = {
+	.jack_gpio	= GPIO_NR_PALMTX_EARPHONE_DETECT,
+};
+
+static struct pxa2xx_ac97_platform_data palmtx_ac97_pdata = {
+	.reset_gpio	= 95,
+};
+
+static struct platform_device palmtx_asoc = {
+	.name = "palm27x-asoc",
+	.id   = -1,
+	.dev  = {
+		.platform_data = &palmtx_asoc_pdata,
+	},
+};
+
+/******************************************************************************
  * Framebuffer
  ******************************************************************************/
 static struct pxafb_mode_info palmtx_lcd_modes[] = {
@@ -468,6 +490,7 @@ static struct platform_device *devices[] __initdata = {
 #endif
 	&palmtx_backlight,
 	&power_supply,
+	&palmtx_asoc,
 };
 
 static struct map_desc palmtx_io_desc[] __initdata = {
@@ -502,8 +525,8 @@ static void __init palmtx_init(void)
 	set_pxa_fb_info(&palmtx_lcd_screen);
 	pxa_set_mci_info(&palmtx_mci_platform_data);
 	palmtx_udc_init();
+	pxa_set_ac97_info(&palmtx_ac97_pdata);
 	pxa_set_udc_info(&palmtx_udc_info);
-	pxa_set_ac97_info(NULL);
 	pxa_set_ficp_info(&palmtx_ficp_platform_data);
 	pxa_set_keypad_info(&palmtx_keypad_platform_data);
 	wm97xx_bat_set_pdata(&wm97xx_batt_pdata);
diff --git a/sound/soc/pxa/palm27x.c b/sound/soc/pxa/palm27x.c
index 48a73f6..44fcc4e 100644
--- a/sound/soc/pxa/palm27x.c
+++ b/sound/soc/pxa/palm27x.c
@@ -200,7 +200,7 @@ static struct snd_soc_device palm27x_snd_devdata = {
 
 static struct platform_device *palm27x_snd_device;
 
-static int __init palm27x_asoc_init(void)
+static int palm27x_asoc_probe(struct platform_device *pdev)
 {
 	int ret;
 
@@ -208,6 +208,10 @@ static int __init palm27x_asoc_init(void)
 		machine_is_palmld()))
 		return -ENODEV;
 
+	if (pdev->dev.platform_data)
+		palm27x_ep_gpio = ((struct palm27x_asoc_info *)
+			(pdev->dev.platform_data))->jack_gpio;
+
 	ret = gpio_request(palm27x_ep_gpio, "Headphone Jack");
 	if (ret)
 		return ret;
@@ -245,16 +249,31 @@ err_alloc:
 	return ret;
 }
 
-static void __exit palm27x_asoc_exit(void)
+static int __devexit palm27x_asoc_remove(struct platform_device *pdev)
 {
 	free_irq(gpio_to_irq(palm27x_ep_gpio), NULL);
 	gpio_free(palm27x_ep_gpio);
 	platform_device_unregister(palm27x_snd_device);
+	return 0;
 }
 
-void __init palm27x_asoc_set_pdata(struct palm27x_asoc_info *data)
+static struct platform_driver palm27x_wm9712_driver = {
+	.probe		= palm27x_asoc_probe,
+	.remove		= __devexit_p(palm27x_asoc_remove),
+	.driver		= {
+		.name		= "palm27x-asoc",
+		.owner		= THIS_MODULE,
+	},
+};
+
+static int __init palm27x_asoc_init(void)
+{
+	return platform_driver_register(&palm27x_wm9712_driver);
+}
+
+static void __exit palm27x_asoc_exit(void)
 {
-	palm27x_ep_gpio = data->jack_gpio;
+	platform_driver_unregister(&palm27x_wm9712_driver);
 }
 
 module_init(palm27x_asoc_init);
-- 
1.6.2


[-- Attachment #3: Type: text/plain, Size: 160 bytes --]

_______________________________________________
Alsa-devel mailing list
Alsa-devel@alsa-project.org
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel

^ permalink raw reply related	[flat|nested] 20+ messages in thread

* Re: [PATCH] General fix for Palm27x aSoC driver
  2009-04-12 18:51       ` Marek Vasut
@ 2009-04-14 17:51         ` Marek Vasut
  2009-04-14 19:50         ` Mark Brown
  1 sibling, 0 replies; 20+ messages in thread
From: Marek Vasut @ 2009-04-14 17:51 UTC (permalink / raw)
  To: Mark Brown
  Cc: Eric Miao, alsa-devel, Russell King - ARM Linux, linux-arm-kernel

On Sunday 12 of April 2009 20:51:19 Marek Vasut wrote:
> On Sunday 12 of April 2009 19:58:00 Mark Brown wrote:
> > On Sun, Apr 12, 2009 at 07:20:15PM +0200, Marek Vasut wrote:
> > > On Sunday 12 of April 2009 19:06:26 Mark Brown wrote:
> > > > > +static struct platform_device palmld_pxa2xx_pcm = {
> > > >
> > > > This should follow the pattern that everything else uses with the
> > > > struct platform_device in devices.c and board files triggering
> > > > registration of that.
> > >
> > > Half of the platforms use static struct, half use struct. Probably
> > > someone should send a huge patch to make it consistent. I'd like to
> > > have it consistent at least inside the platform file.
> >
> > The general rule is that if it's a part of the CPU it should go in
> > devices.c - things that aren't doing that are mostly just waiting for
> > cleanup.
> >
> > > > > +static struct platform_device palmld_pxa2xx_ac97 = {
> > > > > +	.name = "pxa2xx-ac97",
> > > > > +	.id   = -1,
> > > > > +	.dev  = {
> > > > > +		.platform_data = &palmld_ac97_pdata,
> > > > > +	},
> > > > > +};
> > > >
> > > > No, use pxa_set_ac97_info().
> > >
> > > How?
> >
> > Pass the platform data as the argument.  This will currently involve
> > merging the two different platform data structures that we have right
> > now.
>
> OK, I see, thanks :-) Will you be happier with this patch then ?

So is it ok this way ? I'd be glad to fix the problem ASAP.

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH] General fix for Palm27x aSoC driver
  2009-04-12 18:51       ` Marek Vasut
  2009-04-14 17:51         ` Marek Vasut
@ 2009-04-14 19:50         ` Mark Brown
  2009-04-14 21:42           ` Marek Vasut
  1 sibling, 1 reply; 20+ messages in thread
From: Mark Brown @ 2009-04-14 19:50 UTC (permalink / raw)
  To: Marek Vasut
  Cc: Russell King - ARM Linux, alsa-devel, Eric Miao, linux-arm-kernel

On Sun, Apr 12, 2009 at 08:51:19PM +0200, Marek Vasut wrote:

> +static struct pxa2xx_ac97_platform_data palmld_ac97_pdata = {
> +	.reset_gpio	= 95,
> +};

The type of this will need changing to reflect the patch that got merged
for this but other than that minor point this approach is fine.

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH] General fix for Palm27x aSoC driver
  2009-04-14 19:50         ` Mark Brown
@ 2009-04-14 21:42           ` Marek Vasut
  2009-04-15  2:23             ` Eric Miao
  2009-04-15  8:21             ` Mark Brown
  0 siblings, 2 replies; 20+ messages in thread
From: Marek Vasut @ 2009-04-14 21:42 UTC (permalink / raw)
  To: Mark Brown
  Cc: Russell King - ARM Linux, alsa-devel, Eric Miao, linux-arm-kernel

On Tuesday 14 of April 2009 21:50:36 Mark Brown wrote:
> On Sun, Apr 12, 2009 at 08:51:19PM +0200, Marek Vasut wrote:
> > +static struct pxa2xx_ac97_platform_data palmld_ac97_pdata = {
> > +	.reset_gpio	= 95,
> > +};
>
> The type of this will need changing to reflect the patch that got merged
> for this but other than that minor point this approach is fine.

OK, shall I change it and resend (ps. to what if you dont mind telling me?) ? 
Also, do you want to push it through also tree or ARM tree ? I'm for the 
second option as it's more of a bugfix suitable for that tree.

Thanks

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH] General fix for Palm27x aSoC driver
  2009-04-14 21:42           ` Marek Vasut
@ 2009-04-15  2:23             ` Eric Miao
  2009-04-15  5:00               ` Marek Vasut
  2009-04-15  8:21             ` Mark Brown
  1 sibling, 1 reply; 20+ messages in thread
From: Eric Miao @ 2009-04-15  2:23 UTC (permalink / raw)
  To: Marek Vasut
  Cc: alsa-devel, Russell King - ARM Linux, Mark Brown, linux-arm-kernel

On Wed, Apr 15, 2009 at 5:42 AM, Marek Vasut <marek.vasut@gmail.com> wrote:
> On Tuesday 14 of April 2009 21:50:36 Mark Brown wrote:
>> On Sun, Apr 12, 2009 at 08:51:19PM +0200, Marek Vasut wrote:
>> > +static struct pxa2xx_ac97_platform_data palmld_ac97_pdata = {
>> > +   .reset_gpio     = 95,
>> > +};
>>
>> The type of this will need changing to reflect the patch that got merged
>> for this but other than that minor point this approach is fine.
>
> OK, shall I change it and resend (ps. to what if you dont mind telling me?) ?
> Also, do you want to push it through also tree or ARM tree ? I'm for the
> second option as it's more of a bugfix suitable for that tree.
>

Sorry, late on this. The changes to the platform part look OK to me,
and some minor things you may have another look:

>
> -static int __init palm27x_asoc_init(void)
> +static int palm27x_asoc_probe(struct platform_device *pdev)

__devinit

>  {
>  	int ret;
>
> @@ -208,6 +208,10 @@ static int __init palm27x_asoc_init(void)
>  		machine_is_palmld()))
>  		return -ENODEV;
>
> +	if (pdev->dev.platform_data)
> +		palm27x_ep_gpio = ((struct palm27x_asoc_info *)
> +			(pdev->dev.platform_data))->jack_gpio;
> +

This is not so readable, I'd prefer to introduce a variable for the
'struct palm27x_asoc_info *' pointer.

>  	ret = gpio_request(palm27x_ep_gpio, "Headphone Jack");
>  	if (ret)
>  		return ret;
_______________________________________________
Alsa-devel mailing list
Alsa-devel@alsa-project.org
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH] General fix for Palm27x aSoC driver
  2009-04-15  2:23             ` Eric Miao
@ 2009-04-15  5:00               ` Marek Vasut
  2009-04-15  5:11                 ` Eric Miao
  0 siblings, 1 reply; 20+ messages in thread
From: Marek Vasut @ 2009-04-15  5:00 UTC (permalink / raw)
  To: Eric Miao
  Cc: alsa-devel, Russell King - ARM Linux, Mark Brown, linux-arm-kernel

On Wednesday 15 of April 2009 04:23:49 Eric Miao wrote:
> On Wed, Apr 15, 2009 at 5:42 AM, Marek Vasut <marek.vasut@gmail.com> wrote:
> > On Tuesday 14 of April 2009 21:50:36 Mark Brown wrote:
> >> On Sun, Apr 12, 2009 at 08:51:19PM +0200, Marek Vasut wrote:
> >> > +static struct pxa2xx_ac97_platform_data palmld_ac97_pdata = {
> >> > +   .reset_gpio     = 95,
> >> > +};
> >>
> >> The type of this will need changing to reflect the patch that got merged
> >> for this but other than that minor point this approach is fine.
> >
> > OK, shall I change it and resend (ps. to what if you dont mind telling
> > me?) ? Also, do you want to push it through also tree or ARM tree ? I'm
> > for the second option as it's more of a bugfix suitable for that tree.
>
> Sorry, late on this. The changes to the platform part look OK to me,
>
> and some minor things you may have another look:
> > -static int __init palm27x_asoc_init(void)
> > +static int palm27x_asoc_probe(struct platform_device *pdev)
>
> __devinit

Thanks, true, will revise it later today and resend ...
>
> >  {
> >  	int ret;
> >
> > @@ -208,6 +208,10 @@ static int __init palm27x_asoc_init(void)
> >  		machine_is_palmld()))
> >  		return -ENODEV;
> >
> > +	if (pdev->dev.platform_data)
> > +		palm27x_ep_gpio = ((struct palm27x_asoc_info *)
> > +			(pdev->dev.platform_data))->jack_gpio;
> > +
>
> This is not so readable, I'd prefer to introduce a variable for the
> 'struct palm27x_asoc_info *' pointer.

Come on, we are not doing the kernel only for ub...u so this should be OK for 
everyone who can code in C. :-)
>
> >  	ret = gpio_request(palm27x_ep_gpio, "Headphone Jack");
> >  	if (ret)
> >  		return ret;


_______________________________________________
Alsa-devel mailing list
Alsa-devel@alsa-project.org
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH] General fix for Palm27x aSoC driver
  2009-04-15  5:00               ` Marek Vasut
@ 2009-04-15  5:11                 ` Eric Miao
  0 siblings, 0 replies; 20+ messages in thread
From: Eric Miao @ 2009-04-15  5:11 UTC (permalink / raw)
  To: Marek Vasut
  Cc: alsa-devel, Russell King - ARM Linux, Mark Brown, linux-arm-kernel

On Wed, Apr 15, 2009 at 1:00 PM, Marek Vasut <marek.vasut@gmail.com> wrote:
> On Wednesday 15 of April 2009 04:23:49 Eric Miao wrote:
>> On Wed, Apr 15, 2009 at 5:42 AM, Marek Vasut <marek.vasut@gmail.com> wrote:
>> > On Tuesday 14 of April 2009 21:50:36 Mark Brown wrote:
>> >> On Sun, Apr 12, 2009 at 08:51:19PM +0200, Marek Vasut wrote:
>> >> > +static struct pxa2xx_ac97_platform_data palmld_ac97_pdata = {
>> >> > +   .reset_gpio     = 95,
>> >> > +};
>> >>
>> >> The type of this will need changing to reflect the patch that got merged
>> >> for this but other than that minor point this approach is fine.
>> >
>> > OK, shall I change it and resend (ps. to what if you dont mind telling
>> > me?) ? Also, do you want to push it through also tree or ARM tree ? I'm
>> > for the second option as it's more of a bugfix suitable for that tree.
>>
>> Sorry, late on this. The changes to the platform part look OK to me,
>>
>> and some minor things you may have another look:
>> > -static int __init palm27x_asoc_init(void)
>> > +static int palm27x_asoc_probe(struct platform_device *pdev)
>>
>> __devinit
>
> Thanks, true, will revise it later today and resend ...
>>
>> >  {
>> >     int ret;
>> >
>> > @@ -208,6 +208,10 @@ static int __init palm27x_asoc_init(void)
>> >             machine_is_palmld()))
>> >             return -ENODEV;
>> >
>> > +   if (pdev->dev.platform_data)
>> > +           palm27x_ep_gpio = ((struct palm27x_asoc_info *)
>> > +                   (pdev->dev.platform_data))->jack_gpio;
>> > +
>>
>> This is not so readable, I'd prefer to introduce a variable for the
>> 'struct palm27x_asoc_info *' pointer.
>
> Come on, we are not doing the kernel only for ub...u so this should be OK for
> everyone who can code in C. :-)
>>

OK, I have to admit I'm sometimes a bit nitpicking. But when it comes
to the time that your platform_data introduces more members other
than jack_gpio, you may remember this thread :-)

Anyway, it's up to you. I don't want myself to be too captious.

>> >     ret = gpio_request(palm27x_ep_gpio, "Headphone Jack");
>> >     if (ret)
>> >             return ret;
>
>
>



-- 
Cheers
- eric
_______________________________________________
Alsa-devel mailing list
Alsa-devel@alsa-project.org
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH] General fix for Palm27x aSoC driver
  2009-04-14 21:42           ` Marek Vasut
  2009-04-15  2:23             ` Eric Miao
@ 2009-04-15  8:21             ` Mark Brown
  2009-04-16  2:43               ` Eric Miao
  1 sibling, 1 reply; 20+ messages in thread
From: Mark Brown @ 2009-04-15  8:21 UTC (permalink / raw)
  To: Marek Vasut
  Cc: Russell King - ARM Linux, alsa-devel, Eric Miao, linux-arm-kernel

On Tue, Apr 14, 2009 at 11:42:34PM +0200, Marek Vasut wrote:

> OK, shall I change it and resend (ps. to what if you dont mind telling me?) ? 

pxa2xx_audio_ops_t

> Also, do you want to push it through also tree or ARM tree ? I'm for the 
> second option as it's more of a bugfix suitable for that tree.

ARM.

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH] General fix for Palm27x aSoC driver
  2009-04-15  8:21             ` Mark Brown
@ 2009-04-16  2:43               ` Eric Miao
  2009-04-16  4:45                 ` Marek Vasut
  0 siblings, 1 reply; 20+ messages in thread
From: Eric Miao @ 2009-04-16  2:43 UTC (permalink / raw)
  To: Marek Vasut
  Cc: alsa-devel, Russell King - ARM Linux, Mark Brown, linux-arm-kernel

On Wed, Apr 15, 2009 at 4:21 PM, Mark Brown <broonie@sirena.org.uk> wrote:
> On Tue, Apr 14, 2009 at 11:42:34PM +0200, Marek Vasut wrote:
>
>> OK, shall I change it and resend (ps. to what if you dont mind telling me?) ?
>
> pxa2xx_audio_ops_t
>
>> Also, do you want to push it through also tree or ARM tree ? I'm for the
>> second option as it's more of a bugfix suitable for that tree.
>
> ARM.
>

Marek,

Any update?

-- 
Cheers
- eric

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH] General fix for Palm27x aSoC driver
  2009-04-16  2:43               ` Eric Miao
@ 2009-04-16  4:45                 ` Marek Vasut
  2009-04-17  9:42                   ` Marek Vasut
  0 siblings, 1 reply; 20+ messages in thread
From: Marek Vasut @ 2009-04-16  4:45 UTC (permalink / raw)
  To: Eric Miao
  Cc: alsa-devel, Russell King - ARM Linux, Mark Brown, linux-arm-kernel

On Thursday 16 of April 2009 04:43:27 Eric Miao wrote:
> On Wed, Apr 15, 2009 at 4:21 PM, Mark Brown <broonie@sirena.org.uk> wrote:
> > On Tue, Apr 14, 2009 at 11:42:34PM +0200, Marek Vasut wrote:
> >> OK, shall I change it and resend (ps. to what if you dont mind telling
> >> me?) ?
> >
> > pxa2xx_audio_ops_t
> >
> >> Also, do you want to push it through also tree or ARM tree ? I'm for the
> >> second option as it's more of a bugfix suitable for that tree.
> >
> > ARM.
>
> Marek,
>
> Any update?

Sorry, LinuxEXPO takes place here so my sleep amount is reduced to about three 
hours a day ...

I'll try asap (I hope today), sorry for the delay.

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH] General fix for Palm27x aSoC driver
  2009-04-16  4:45                 ` Marek Vasut
@ 2009-04-17  9:42                   ` Marek Vasut
  2009-04-18 17:02                     ` Marek Vasut
  0 siblings, 1 reply; 20+ messages in thread
From: Marek Vasut @ 2009-04-17  9:42 UTC (permalink / raw)
  To: Eric Miao
  Cc: alsa-devel, Russell King - ARM Linux, Mark Brown, linux-arm-kernel

[-- Attachment #1: Type: text/plain, Size: 785 bytes --]

On Thursday 16 of April 2009 06:45:17 Marek Vasut wrote:
> On Thursday 16 of April 2009 04:43:27 Eric Miao wrote:
> > On Wed, Apr 15, 2009 at 4:21 PM, Mark Brown <broonie@sirena.org.uk> wrote:
> > > On Tue, Apr 14, 2009 at 11:42:34PM +0200, Marek Vasut wrote:
> > >> OK, shall I change it and resend (ps. to what if you dont mind telling
> > >> me?) ?
> > >
> > > pxa2xx_audio_ops_t
> > >
> > >> Also, do you want to push it through also tree or ARM tree ? I'm for
> > >> the second option as it's more of a bugfix suitable for that tree.
> > >
> > > ARM.
> >
> > Marek,
> >
> > Any update?
>
> Sorry, LinuxEXPO takes place here so my sleep amount is reduced to about
> three hours a day ...
>
> I'll try asap (I hope today), sorry for the delay.

Ok, this one should be fine with you

[-- Attachment #2: 0001-General-fix-for-Palm27x-aSoC-driver.patch --]
[-- Type: text/x-diff, Size: 8428 bytes --]

From bf32cbc4b2360773f878656018940c7203ae80c7 Mon Sep 17 00:00:00 2001
From: Marek Vasut <marek.vasut@gmail.com>
Date: Fri, 17 Apr 2009 11:37:35 +0200
Subject: [PATCH] General fix for Palm27x aSoC driver

Firstly, this patch makes the palm27x asoc driver a little more sane. Also,
since all affected devices use GPIO95 as AC97_nRESET, this patch sets that
properly. Affected are PalmT5, TX and LifeDrive.

Signed-off-by: Marek Vasut <marek.vasut@gmail.com>
---
 arch/arm/mach-pxa/include/mach/palmasoc.h |    7 +------
 arch/arm/mach-pxa/palmld.c                |   18 +++++++++++++++---
 arch/arm/mach-pxa/palmt5.c                |   18 +++++++++++++++---
 arch/arm/mach-pxa/palmtx.c                |   23 ++++++++++++++++++++++-
 sound/soc/pxa/palm27x.c                   |   27 +++++++++++++++++++++++----
 5 files changed, 76 insertions(+), 17 deletions(-)

diff --git a/arch/arm/mach-pxa/include/mach/palmasoc.h b/arch/arm/mach-pxa/include/mach/palmasoc.h
index 6c4b1f7..58afb30 100644
--- a/arch/arm/mach-pxa/include/mach/palmasoc.h
+++ b/arch/arm/mach-pxa/include/mach/palmasoc.h
@@ -1,13 +1,8 @@
 #ifndef _INCLUDE_PALMASOC_H_
 #define _INCLUDE_PALMASOC_H_
+
 struct palm27x_asoc_info {
 	int	jack_gpio;
 };
 
-#ifdef CONFIG_SND_PXA2XX_SOC_PALM27X
-void __init palm27x_asoc_set_pdata(struct palm27x_asoc_info *data);
-#else
-static inline void palm27x_asoc_set_pdata(struct palm27x_asoc_info *data) {}
-#endif
-
 #endif
diff --git a/arch/arm/mach-pxa/palmld.c b/arch/arm/mach-pxa/palmld.c
index ecf5910..1cec180 100644
--- a/arch/arm/mach-pxa/palmld.c
+++ b/arch/arm/mach-pxa/palmld.c
@@ -477,10 +477,22 @@ static struct wm97xx_batt_info wm97xx_batt_pdata = {
 /******************************************************************************
  * aSoC audio
  ******************************************************************************/
-static struct palm27x_asoc_info palm27x_asoc_pdata = {
+static struct palm27x_asoc_info palmld_asoc_pdata = {
 	.jack_gpio	= GPIO_NR_PALMLD_EARPHONE_DETECT,
 };
 
+static pxa2xx_audio_ops_t palmld_ac97_pdata = {
+	.reset_gpio	= 95,
+};
+
+static struct platform_device palmld_asoc = {
+	.name = "palm27x-asoc",
+	.id   = -1,
+	.dev  = {
+		.platform_data = &palmld_asoc_pdata,
+	},
+};
+
 /******************************************************************************
  * Framebuffer
  ******************************************************************************/
@@ -544,6 +556,7 @@ static struct platform_device *devices[] __initdata = {
 	&palmld_backlight,
 	&palmld_leds,
 	&power_supply,
+	&palmld_asoc,
 };
 
 static struct map_desc palmld_io_desc[] __initdata = {
@@ -573,11 +586,10 @@ static void __init palmld_init(void)
 
 	set_pxa_fb_info(&palmld_lcd_screen);
 	pxa_set_mci_info(&palmld_mci_platform_data);
-	pxa_set_ac97_info(NULL);
+	pxa_set_ac97_info(&palmld_ac97_pdata);
 	pxa_set_ficp_info(&palmld_ficp_platform_data);
 	pxa_set_keypad_info(&palmld_keypad_platform_data);
 	wm97xx_bat_set_pdata(&wm97xx_batt_pdata);
-	palm27x_asoc_set_pdata(&palm27x_asoc_pdata);
 
 	platform_add_devices(devices, ARRAY_SIZE(devices));
 }
diff --git a/arch/arm/mach-pxa/palmt5.c b/arch/arm/mach-pxa/palmt5.c
index d7f8106..3066236 100644
--- a/arch/arm/mach-pxa/palmt5.c
+++ b/arch/arm/mach-pxa/palmt5.c
@@ -420,10 +420,22 @@ static struct wm97xx_batt_info wm97xx_batt_pdata = {
 /******************************************************************************
  * aSoC audio
  ******************************************************************************/
-static struct palm27x_asoc_info palm27x_asoc_pdata = {
+static struct palm27x_asoc_info palmt5_asoc_pdata = {
 	.jack_gpio	= GPIO_NR_PALMT5_EARPHONE_DETECT,
 };
 
+static pxa2xx_audio_ops_t palmt5_ac97_pdata = {
+	.reset_gpio	= 95,
+};
+
+static struct platform_device palmt5_asoc = {
+	.name = "palm27x-asoc",
+	.id   = -1,
+	.dev  = {
+		.platform_data = &palmt5_asoc_pdata,
+	},
+};
+
 /******************************************************************************
  * Framebuffer
  ******************************************************************************/
@@ -486,6 +498,7 @@ static struct platform_device *devices[] __initdata = {
 #endif
 	&palmt5_backlight,
 	&power_supply,
+	&palmt5_asoc,
 };
 
 /* setup udc GPIOs initial state */
@@ -504,12 +517,11 @@ static void __init palmt5_init(void)
 	set_pxa_fb_info(&palmt5_lcd_screen);
 	pxa_set_mci_info(&palmt5_mci_platform_data);
 	palmt5_udc_init();
+	pxa_set_ac97_info(&palmt5_ac97_pdata);
 	pxa_set_udc_info(&palmt5_udc_info);
-	pxa_set_ac97_info(NULL);
 	pxa_set_ficp_info(&palmt5_ficp_platform_data);
 	pxa_set_keypad_info(&palmt5_keypad_platform_data);
 	wm97xx_bat_set_pdata(&wm97xx_batt_pdata);
-	palm27x_asoc_set_pdata(&palm27x_asoc_pdata);
 	platform_add_devices(devices, ARRAY_SIZE(devices));
 }
 
diff --git a/arch/arm/mach-pxa/palmtx.c b/arch/arm/mach-pxa/palmtx.c
index 14393d0..e2d44b1 100644
--- a/arch/arm/mach-pxa/palmtx.c
+++ b/arch/arm/mach-pxa/palmtx.c
@@ -40,6 +40,7 @@
 #include <mach/irda.h>
 #include <mach/pxa27x_keypad.h>
 #include <mach/udc.h>
+#include <mach/palmasoc.h>
 
 #include "generic.h"
 #include "devices.h"
@@ -434,6 +435,25 @@ static struct wm97xx_batt_info wm97xx_batt_pdata = {
 };
 
 /******************************************************************************
+ * aSoC audio
+ ******************************************************************************/
+static struct palm27x_asoc_info palmtx_asoc_pdata = {
+	.jack_gpio	= GPIO_NR_PALMTX_EARPHONE_DETECT,
+};
+
+static pxa2xx_audio_ops_t palmtx_ac97_pdata = {
+	.reset_gpio	= 95,
+};
+
+static struct platform_device palmtx_asoc = {
+	.name = "palm27x-asoc",
+	.id   = -1,
+	.dev  = {
+		.platform_data = &palmtx_asoc_pdata,
+	},
+};
+
+/******************************************************************************
  * Framebuffer
  ******************************************************************************/
 static struct pxafb_mode_info palmtx_lcd_modes[] = {
@@ -495,6 +515,7 @@ static struct platform_device *devices[] __initdata = {
 #endif
 	&palmtx_backlight,
 	&power_supply,
+	&palmtx_asoc,
 };
 
 static struct map_desc palmtx_io_desc[] __initdata = {
@@ -529,8 +550,8 @@ static void __init palmtx_init(void)
 	set_pxa_fb_info(&palmtx_lcd_screen);
 	pxa_set_mci_info(&palmtx_mci_platform_data);
 	palmtx_udc_init();
+	pxa_set_ac97_info(&palmtx_ac97_pdata);
 	pxa_set_udc_info(&palmtx_udc_info);
-	pxa_set_ac97_info(NULL);
 	pxa_set_ficp_info(&palmtx_ficp_platform_data);
 	pxa_set_keypad_info(&palmtx_keypad_platform_data);
 	wm97xx_bat_set_pdata(&wm97xx_batt_pdata);
diff --git a/sound/soc/pxa/palm27x.c b/sound/soc/pxa/palm27x.c
index 48a73f6..44fcc4e 100644
--- a/sound/soc/pxa/palm27x.c
+++ b/sound/soc/pxa/palm27x.c
@@ -200,7 +200,7 @@ static struct snd_soc_device palm27x_snd_devdata = {
 
 static struct platform_device *palm27x_snd_device;
 
-static int __init palm27x_asoc_init(void)
+static int palm27x_asoc_probe(struct platform_device *pdev)
 {
 	int ret;
 
@@ -208,6 +208,10 @@ static int __init palm27x_asoc_init(void)
 		machine_is_palmld()))
 		return -ENODEV;
 
+	if (pdev->dev.platform_data)
+		palm27x_ep_gpio = ((struct palm27x_asoc_info *)
+			(pdev->dev.platform_data))->jack_gpio;
+
 	ret = gpio_request(palm27x_ep_gpio, "Headphone Jack");
 	if (ret)
 		return ret;
@@ -245,16 +249,31 @@ err_alloc:
 	return ret;
 }
 
-static void __exit palm27x_asoc_exit(void)
+static int __devexit palm27x_asoc_remove(struct platform_device *pdev)
 {
 	free_irq(gpio_to_irq(palm27x_ep_gpio), NULL);
 	gpio_free(palm27x_ep_gpio);
 	platform_device_unregister(palm27x_snd_device);
+	return 0;
 }
 
-void __init palm27x_asoc_set_pdata(struct palm27x_asoc_info *data)
+static struct platform_driver palm27x_wm9712_driver = {
+	.probe		= palm27x_asoc_probe,
+	.remove		= __devexit_p(palm27x_asoc_remove),
+	.driver		= {
+		.name		= "palm27x-asoc",
+		.owner		= THIS_MODULE,
+	},
+};
+
+static int __init palm27x_asoc_init(void)
+{
+	return platform_driver_register(&palm27x_wm9712_driver);
+}
+
+static void __exit palm27x_asoc_exit(void)
 {
-	palm27x_ep_gpio = data->jack_gpio;
+	platform_driver_unregister(&palm27x_wm9712_driver);
 }
 
 module_init(palm27x_asoc_init);
-- 
1.6.2


[-- Attachment #3: Type: text/plain, Size: 160 bytes --]

_______________________________________________
Alsa-devel mailing list
Alsa-devel@alsa-project.org
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel

^ permalink raw reply related	[flat|nested] 20+ messages in thread

* Re: [PATCH] General fix for Palm27x aSoC driver
  2009-04-17  9:42                   ` Marek Vasut
@ 2009-04-18 17:02                     ` Marek Vasut
  2009-04-19 13:52                       ` Eric Miao
  0 siblings, 1 reply; 20+ messages in thread
From: Marek Vasut @ 2009-04-18 17:02 UTC (permalink / raw)
  To: Eric Miao
  Cc: alsa-devel, Russell King - ARM Linux, Mark Brown, linux-arm-kernel

On Friday 17 of April 2009 11:42:08 Marek Vasut wrote:
> On Thursday 16 of April 2009 06:45:17 Marek Vasut wrote:
> > On Thursday 16 of April 2009 04:43:27 Eric Miao wrote:
> > > On Wed, Apr 15, 2009 at 4:21 PM, Mark Brown <broonie@sirena.org.uk> 
wrote:
> > > > On Tue, Apr 14, 2009 at 11:42:34PM +0200, Marek Vasut wrote:
> > > >> OK, shall I change it and resend (ps. to what if you dont mind
> > > >> telling me?) ?
> > > >
> > > > pxa2xx_audio_ops_t
> > > >
> > > >> Also, do you want to push it through also tree or ARM tree ? I'm for
> > > >> the second option as it's more of a bugfix suitable for that tree.
> > > >
> > > > ARM.
> > >
> > > Marek,
> > >
> > > Any update?
> >
> > Sorry, LinuxEXPO takes place here so my sleep amount is reduced to about
> > three hours a day ...
> >
> > I'll try asap (I hope today), sorry for the delay.
>
> Ok, this one should be fine with you

Any update from your side?

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH] General fix for Palm27x aSoC driver
  2009-04-18 17:02                     ` Marek Vasut
@ 2009-04-19 13:52                       ` Eric Miao
  0 siblings, 0 replies; 20+ messages in thread
From: Eric Miao @ 2009-04-19 13:52 UTC (permalink / raw)
  To: Marek Vasut
  Cc: alsa-devel, Russell King - ARM Linux, Mark Brown, linux-arm-kernel

>> > > Marek,
>> > >
>> > > Any update?
>> >
>> > Sorry, LinuxEXPO takes place here so my sleep amount is reduced to about
>> > three hours a day ...
>> >
>> > I'll try asap (I hope today), sorry for the delay.
>>
>> Ok, this one should be fine with you
>
> Any update from your side?
>

Applied, thanks.

^ permalink raw reply	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2009-04-19 13:52 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-04-12 16:58 [PATCH] General fix for Palm27x aSoC driver Marek Vasut
2009-04-12 17:06 ` Mark Brown
2009-04-12 17:20   ` Marek Vasut
2009-04-12 17:24     ` Marek Vasut
2009-04-12 17:30       ` Robert Jarzmik
2009-04-12 18:00       ` Mark Brown
2009-04-12 17:58     ` Mark Brown
2009-04-12 18:51       ` Marek Vasut
2009-04-14 17:51         ` Marek Vasut
2009-04-14 19:50         ` Mark Brown
2009-04-14 21:42           ` Marek Vasut
2009-04-15  2:23             ` Eric Miao
2009-04-15  5:00               ` Marek Vasut
2009-04-15  5:11                 ` Eric Miao
2009-04-15  8:21             ` Mark Brown
2009-04-16  2:43               ` Eric Miao
2009-04-16  4:45                 ` Marek Vasut
2009-04-17  9:42                   ` Marek Vasut
2009-04-18 17:02                     ` Marek Vasut
2009-04-19 13:52                       ` Eric Miao

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.