* [PATCH 1/5] ARM: SMDK64XX: Enable AC97 device
@ 2010-02-12 10:38 Mark Brown
2010-02-12 10:38 ` [PATCH 2/5] ARM: SMDK2443: " Mark Brown
` (3 more replies)
0 siblings, 4 replies; 5+ messages in thread
From: Mark Brown @ 2010-02-12 10:38 UTC (permalink / raw)
To: linux-arm-kernel
From: Jassi Brar <jassi.brar@samsung.com>
Add AC97 controller to platform devices and initialize the AC97 gpios.
Signed-off-by: Jassi Brar <jassi.brar@samsung.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
---
arch/arm/mach-s3c6410/mach-smdk6410.c | 9 ++++++++-
1 files changed, 8 insertions(+), 1 deletions(-)
diff --git a/arch/arm/mach-s3c6410/mach-smdk6410.c b/arch/arm/mach-s3c6410/mach-smdk6410.c
index eba345f..259ebbb 100644
--- a/arch/arm/mach-s3c6410/mach-smdk6410.c
+++ b/arch/arm/mach-s3c6410/mach-smdk6410.c
@@ -55,6 +55,7 @@
#include <plat/gpio-cfg.h>
#include <plat/s3c6410.h>
+#include <plat/audio.h>
#include <plat/clock.h>
#include <plat/devs.h>
#include <plat/cpu.h>
@@ -253,7 +254,9 @@ static struct platform_device *smdk6410_devices[] __initdata = {
&smdk6410_b_pwr_5v,
#endif
&smdk6410_lcd_powerdev,
-
+#ifdef CONFIG_SND_SOC_SMDK_WM9713
+ &s3c64xx_device_ac97,
+#endif
&smdk6410_smsc911x,
};
@@ -475,6 +478,10 @@ static void __init smdk6410_machine_init(void)
i2c_register_board_info(0, i2c_devs0, ARRAY_SIZE(i2c_devs0));
i2c_register_board_info(1, i2c_devs1, ARRAY_SIZE(i2c_devs1));
+#ifdef CONFIG_SND_SOC_SMDK_WM9713
+ s3c64xx_ac97_setup_gpio(S3C64XX_AC97_GPD);
+#endif
+
platform_add_devices(smdk6410_devices, ARRAY_SIZE(smdk6410_devices));
}
--
1.6.6.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 2/5] ARM: SMDK2443: Enable AC97 device
2010-02-12 10:38 [PATCH 1/5] ARM: SMDK64XX: Enable AC97 device Mark Brown
@ 2010-02-12 10:38 ` Mark Brown
2010-02-12 10:38 ` [PATCH 3/5] ARM: S3C64XX: Add AC97 platform resources Mark Brown
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: Mark Brown @ 2010-02-12 10:38 UTC (permalink / raw)
To: linux-arm-kernel
From: Jassi Brar <jassi.brar@samsung.com>
Add AC97 controller to platform devices and initialize the AC97 gpios.
Signed-off-by: Jassi Brar <jassi.brar@samsung.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
---
arch/arm/mach-s3c2443/mach-smdk2443.c | 8 ++++++++
1 files changed, 8 insertions(+), 0 deletions(-)
diff --git a/arch/arm/mach-s3c2443/mach-smdk2443.c b/arch/arm/mach-s3c2443/mach-smdk2443.c
index d65afde..e2e362b 100644
--- a/arch/arm/mach-s3c2443/mach-smdk2443.c
+++ b/arch/arm/mach-s3c2443/mach-smdk2443.c
@@ -106,6 +106,9 @@ static struct platform_device *smdk2443_devices[] __initdata = {
&s3c_device_wdt,
&s3c_device_i2c0,
&s3c_device_hsmmc0,
+#ifdef CONFIG_SND_SOC_SMDK2443_WM9710
+ &s3c_device_ac97,
+#endif
};
static void __init smdk2443_map_io(void)
@@ -118,6 +121,11 @@ static void __init smdk2443_map_io(void)
static void __init smdk2443_machine_init(void)
{
s3c_i2c0_set_platdata(NULL);
+
+#ifdef CONFIG_SND_SOC_SMDK2443_WM9710
+ s3c24xx_ac97_setup_gpio(S3C24XX_AC97_GPE0);
+#endif
+
platform_add_devices(smdk2443_devices, ARRAY_SIZE(smdk2443_devices));
smdk_machine_init();
}
--
1.6.6.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 3/5] ARM: S3C64XX: Add AC97 platform resources
2010-02-12 10:38 [PATCH 1/5] ARM: SMDK64XX: Enable AC97 device Mark Brown
2010-02-12 10:38 ` [PATCH 2/5] ARM: SMDK2443: " Mark Brown
@ 2010-02-12 10:38 ` Mark Brown
2010-02-12 10:38 ` [PATCH 4/5] ARM: S3C2443: GPIO: Correct AC97 pin defines Mark Brown
2010-02-12 10:38 ` [PATCH 5/5] ARM: SMDK6410: Fix modular build of AC97 audio driver Mark Brown
3 siblings, 0 replies; 5+ messages in thread
From: Mark Brown @ 2010-02-12 10:38 UTC (permalink / raw)
To: linux-arm-kernel
From: Jassi Brar <jassi.brar@samsung.com>
This patch defines the platform device and the resources: IRQ, DMA and MEM,
needed by the AC97 controller driver.
Signed-off-by: Jassi Brar <jassi.brar@samsung.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
---
arch/arm/plat-s3c/include/plat/audio.h | 8 +++
arch/arm/plat-s3c/include/plat/devs.h | 3 +
arch/arm/plat-s3c64xx/dev-audio.c | 78 ++++++++++++++++++++++++++++++++
3 files changed, 89 insertions(+), 0 deletions(-)
diff --git a/arch/arm/plat-s3c/include/plat/audio.h b/arch/arm/plat-s3c/include/plat/audio.h
index f22d23b..e07c941 100644
--- a/arch/arm/plat-s3c/include/plat/audio.h
+++ b/arch/arm/plat-s3c/include/plat/audio.h
@@ -8,6 +8,14 @@
* published by the Free Software Foundation.
*/
+/* The machine init code calls s3c*_ac97_setup_gpio with
+ * one of these defines in order to select appropriate bank
+ * of GPIO for AC97 pins
+ */
+#define S3C64XX_AC97_GPD 0
+#define S3C64XX_AC97_GPE 1
+extern void s3c64xx_ac97_setup_gpio(int);
+
/**
* struct s3c_audio_pdata - common platform data for audio device drivers
* @cfg_gpio: Callback function to setup mux'ed pins in I2S/PCM/AC97 mode
diff --git a/arch/arm/plat-s3c/include/plat/devs.h b/arch/arm/plat-s3c/include/plat/devs.h
index c6f9b73..65317eb 100644
--- a/arch/arm/plat-s3c/include/plat/devs.h
+++ b/arch/arm/plat-s3c/include/plat/devs.h
@@ -35,7 +35,10 @@ extern struct platform_device s3c64xx_device_spi1;
extern struct platform_device s3c64xx_device_pcm0;
extern struct platform_device s3c64xx_device_pcm1;
+extern struct platform_device s3c64xx_device_ac97;
+
extern struct platform_device s3c_device_ts;
+
extern struct platform_device s3c_device_fb;
extern struct platform_device s3c_device_ohci;
extern struct platform_device s3c_device_lcd;
diff --git a/arch/arm/plat-s3c64xx/dev-audio.c b/arch/arm/plat-s3c64xx/dev-audio.c
index f6b7bfb..63088b7 100644
--- a/arch/arm/plat-s3c64xx/dev-audio.c
+++ b/arch/arm/plat-s3c64xx/dev-audio.c
@@ -11,6 +11,7 @@
#include <linux/kernel.h>
#include <linux/string.h>
#include <linux/platform_device.h>
+#include <linux/dma-mapping.h>
#include <mach/irqs.h>
#include <mach/map.h>
@@ -254,3 +255,80 @@ struct platform_device s3c64xx_device_pcm1 = {
},
};
EXPORT_SYMBOL(s3c64xx_device_pcm1);
+
+/* AC97 Controller platform devices */
+
+static int s3c64xx_ac97_cfg_gpd(struct platform_device *pdev)
+{
+ s3c_gpio_cfgpin(S3C64XX_GPD(0), S3C64XX_GPD0_AC97_BITCLK);
+ s3c_gpio_cfgpin(S3C64XX_GPD(1), S3C64XX_GPD1_AC97_nRESET);
+ s3c_gpio_cfgpin(S3C64XX_GPD(2), S3C64XX_GPD2_AC97_SYNC);
+ s3c_gpio_cfgpin(S3C64XX_GPD(3), S3C64XX_GPD3_AC97_SDI);
+ s3c_gpio_cfgpin(S3C64XX_GPD(4), S3C64XX_GPD4_AC97_SDO);
+
+ return 0;
+}
+
+static int s3c64xx_ac97_cfg_gpe(struct platform_device *pdev)
+{
+ s3c_gpio_cfgpin(S3C64XX_GPE(0), S3C64XX_GPE0_AC97_BITCLK);
+ s3c_gpio_cfgpin(S3C64XX_GPE(1), S3C64XX_GPE1_AC97_nRESET);
+ s3c_gpio_cfgpin(S3C64XX_GPE(2), S3C64XX_GPE2_AC97_SYNC);
+ s3c_gpio_cfgpin(S3C64XX_GPE(3), S3C64XX_GPE3_AC97_SDI);
+ s3c_gpio_cfgpin(S3C64XX_GPE(4), S3C64XX_GPE4_AC97_SDO);
+
+ return 0;
+}
+
+static struct resource s3c64xx_ac97_resource[] = {
+ [0] = {
+ .start = S3C64XX_PA_AC97,
+ .end = S3C64XX_PA_AC97 + 0x100 - 1,
+ .flags = IORESOURCE_MEM,
+ },
+ [1] = {
+ .start = DMACH_AC97_PCMOUT,
+ .end = DMACH_AC97_PCMOUT,
+ .flags = IORESOURCE_DMA,
+ },
+ [2] = {
+ .start = DMACH_AC97_PCMIN,
+ .end = DMACH_AC97_PCMIN,
+ .flags = IORESOURCE_DMA,
+ },
+ [3] = {
+ .start = DMACH_AC97_MICIN,
+ .end = DMACH_AC97_MICIN,
+ .flags = IORESOURCE_DMA,
+ },
+ [4] = {
+ .start = IRQ_AC97,
+ .end = IRQ_AC97,
+ .flags = IORESOURCE_IRQ,
+ },
+};
+
+static struct s3c_audio_pdata s3c_ac97_pdata;
+
+static u64 s3c64xx_ac97_dmamask = DMA_BIT_MASK(32);
+
+struct platform_device s3c64xx_device_ac97 = {
+ .name = "s3c-ac97",
+ .id = -1,
+ .num_resources = ARRAY_SIZE(s3c64xx_ac97_resource),
+ .resource = s3c64xx_ac97_resource,
+ .dev = {
+ .platform_data = &s3c_ac97_pdata,
+ .dma_mask = &s3c64xx_ac97_dmamask,
+ .coherent_dma_mask = DMA_BIT_MASK(32),
+ },
+};
+EXPORT_SYMBOL(s3c64xx_device_ac97);
+
+void __init s3c64xx_ac97_setup_gpio(int num)
+{
+ if (num == S3C64XX_AC97_GPD)
+ s3c_ac97_pdata.cfg_gpio = s3c64xx_ac97_cfg_gpd;
+ else
+ s3c_ac97_pdata.cfg_gpio = s3c64xx_ac97_cfg_gpe;
+}
--
1.6.6.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 4/5] ARM: S3C2443: GPIO: Correct AC97 pin defines
2010-02-12 10:38 [PATCH 1/5] ARM: SMDK64XX: Enable AC97 device Mark Brown
2010-02-12 10:38 ` [PATCH 2/5] ARM: SMDK2443: " Mark Brown
2010-02-12 10:38 ` [PATCH 3/5] ARM: S3C64XX: Add AC97 platform resources Mark Brown
@ 2010-02-12 10:38 ` Mark Brown
2010-02-12 10:38 ` [PATCH 5/5] ARM: SMDK6410: Fix modular build of AC97 audio driver Mark Brown
3 siblings, 0 replies; 5+ messages in thread
From: Mark Brown @ 2010-02-12 10:38 UTC (permalink / raw)
To: linux-arm-kernel
From: Jassi Brar <jassi.brar@samsung.com>
GPIO_E-[5,9] pin functionality was defined incorrectly.
The patch corrects and adds missing pins.
Signed-off-by: Jassi Brar <jassi.brar@samsung.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
---
arch/arm/mach-s3c2410/include/mach/regs-gpio.h | 10 +++++-----
1 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/arch/arm/mach-s3c2410/include/mach/regs-gpio.h b/arch/arm/mach-s3c2410/include/mach/regs-gpio.h
index ebc85c6..fd672f3 100644
--- a/arch/arm/mach-s3c2410/include/mach/regs-gpio.h
+++ b/arch/arm/mach-s3c2410/include/mach/regs-gpio.h
@@ -406,31 +406,31 @@
#define S3C2443_GPE5_SD1_CLK (0x02 << 10)
#define S3C2400_GPE5_EINT5 (0x02 << 10)
#define S3C2400_GPE5_TCLK1 (0x03 << 10)
+#define S3C2443_GPE5_AC_BITCLK (0x03 << 10)
#define S3C2410_GPE6_SDCMD (0x02 << 12)
#define S3C2443_GPE6_SD1_CMD (0x02 << 12)
-#define S3C2443_GPE6_AC_BITCLK (0x03 << 12)
+#define S3C2443_GPE6_AC_SDI (0x03 << 12)
#define S3C2400_GPE6_EINT6 (0x02 << 12)
#define S3C2410_GPE7_SDDAT0 (0x02 << 14)
#define S3C2443_GPE5_SD1_DAT0 (0x02 << 14)
-#define S3C2443_GPE7_AC_SDI (0x03 << 14)
+#define S3C2443_GPE7_AC_SDO (0x03 << 14)
#define S3C2400_GPE7_EINT7 (0x02 << 14)
#define S3C2410_GPE8_SDDAT1 (0x02 << 16)
#define S3C2443_GPE8_SD1_DAT1 (0x02 << 16)
-#define S3C2443_GPE8_AC_SDO (0x03 << 16)
+#define S3C2443_GPE8_AC_SYNC (0x03 << 16)
#define S3C2400_GPE8_nXDACK0 (0x02 << 16)
#define S3C2410_GPE9_SDDAT2 (0x02 << 18)
#define S3C2443_GPE9_SD1_DAT2 (0x02 << 18)
-#define S3C2443_GPE9_AC_SYNC (0x03 << 18)
+#define S3C2443_GPE9_AC_nRESET (0x03 << 18)
#define S3C2400_GPE9_nXDACK1 (0x02 << 18)
#define S3C2400_GPE9_nXBACK (0x03 << 18)
#define S3C2410_GPE10_SDDAT3 (0x02 << 20)
#define S3C2443_GPE10_SD1_DAT3 (0x02 << 20)
-#define S3C2443_GPE10_AC_nRESET (0x03 << 20)
#define S3C2400_GPE10_nXDREQ0 (0x02 << 20)
#define S3C2410_GPE11_SPIMISO0 (0x02 << 22)
--
1.6.6.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 5/5] ARM: SMDK6410: Fix modular build of AC97 audio driver
2010-02-12 10:38 [PATCH 1/5] ARM: SMDK64XX: Enable AC97 device Mark Brown
` (2 preceding siblings ...)
2010-02-12 10:38 ` [PATCH 4/5] ARM: S3C2443: GPIO: Correct AC97 pin defines Mark Brown
@ 2010-02-12 10:38 ` Mark Brown
3 siblings, 0 replies; 5+ messages in thread
From: Mark Brown @ 2010-02-12 10:38 UTC (permalink / raw)
To: linux-arm-kernel
When the AC97 audio driver is built modular a _MODULE is appended to
the symbol defined for the config option. Rather than write a lengthy
check against multiple symbols just unconditionally register the AC97
controller device - much simpler and hardly a massive resource hit.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
---
arch/arm/mach-s3c6410/mach-smdk6410.c | 4 ----
1 files changed, 0 insertions(+), 4 deletions(-)
diff --git a/arch/arm/mach-s3c6410/mach-smdk6410.c b/arch/arm/mach-s3c6410/mach-smdk6410.c
index 259ebbb..f2c70ec 100644
--- a/arch/arm/mach-s3c6410/mach-smdk6410.c
+++ b/arch/arm/mach-s3c6410/mach-smdk6410.c
@@ -254,9 +254,7 @@ static struct platform_device *smdk6410_devices[] __initdata = {
&smdk6410_b_pwr_5v,
#endif
&smdk6410_lcd_powerdev,
-#ifdef CONFIG_SND_SOC_SMDK_WM9713
&s3c64xx_device_ac97,
-#endif
&smdk6410_smsc911x,
};
@@ -478,9 +476,7 @@ static void __init smdk6410_machine_init(void)
i2c_register_board_info(0, i2c_devs0, ARRAY_SIZE(i2c_devs0));
i2c_register_board_info(1, i2c_devs1, ARRAY_SIZE(i2c_devs1));
-#ifdef CONFIG_SND_SOC_SMDK_WM9713
s3c64xx_ac97_setup_gpio(S3C64XX_AC97_GPD);
-#endif
platform_add_devices(smdk6410_devices, ARRAY_SIZE(smdk6410_devices));
}
--
1.6.6.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
end of thread, other threads:[~2010-02-12 10:38 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-02-12 10:38 [PATCH 1/5] ARM: SMDK64XX: Enable AC97 device Mark Brown
2010-02-12 10:38 ` [PATCH 2/5] ARM: SMDK2443: " Mark Brown
2010-02-12 10:38 ` [PATCH 3/5] ARM: S3C64XX: Add AC97 platform resources Mark Brown
2010-02-12 10:38 ` [PATCH 4/5] ARM: S3C2443: GPIO: Correct AC97 pin defines Mark Brown
2010-02-12 10:38 ` [PATCH 5/5] ARM: SMDK6410: Fix modular build of AC97 audio driver Mark Brown
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).