* [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.