ARM: S3C24XX: Add platform device for AC97 controller
authorMark Brown <broonie@opensource.wolfsonmicro.com>
Wed, 5 Aug 2009 17:29:57 +0000 (18:29 +0100)
committerBen Dooks <ben-linux@fluff.org>
Fri, 14 Aug 2009 00:13:29 +0000 (01:13 +0100)
Move the definition of the "generic" IRQ in the process.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
arch/arm/mach-s3c2410/include/mach/irqs.h
arch/arm/plat-s3c/include/plat/devs.h
arch/arm/plat-s3c24xx/devs.c
sound/soc/s3c24xx/s3c24xx-ac97.h

index 2a2384f..6c12c63 100644 (file)
 #define IRQ_S3CUART_TX3                IRQ_S3C2443_TX3
 #define IRQ_S3CUART_ERR3       IRQ_S3C2443_ERR3
 
+#ifdef CONFIG_CPU_S3C2440
+#define IRQ_S3C244x_AC97 IRQ_S3C2440_AC97
+#else
+#define IRQ_S3C244x_AC97 IRQ_S3C2443_AC97
+#endif
+
 /* Our FIQs are routable from IRQ_EINT0 to IRQ_ADCPARENT */
 #define FIQ_START              IRQ_EINT0
 
index 2e17082..2e65994 100644 (file)
@@ -56,5 +56,6 @@ extern struct platform_device s3c_device_usb_hsotg;
 #ifdef CONFIG_CPU_S3C2440
 
 extern struct platform_device s3c_device_camif;
+extern struct platform_device s3c_device_ac97;
 
 #endif
index 4eb378c..4553ad6 100644 (file)
@@ -26,6 +26,8 @@
 #include <asm/mach/irq.h>
 #include <mach/fb.h>
 #include <mach/hardware.h>
+#include <mach/dma.h>
+#include <mach/irqs.h>
 #include <asm/irq.h>
 
 #include <plat/regs-serial.h>
@@ -473,4 +475,52 @@ struct platform_device s3c_device_camif = {
 
 EXPORT_SYMBOL(s3c_device_camif);
 
+/* AC97 */
+
+static struct resource s3c_ac97_resource[] = {
+       [0] = {
+               .start = S3C2440_PA_AC97,
+               .end   = S3C2440_PA_AC97 + S3C2440_SZ_AC97 -1,
+               .flags = IORESOURCE_MEM,
+       },
+       [1] = {
+               .start = IRQ_S3C244x_AC97,
+               .end   = IRQ_S3C244x_AC97,
+               .flags = IORESOURCE_IRQ,
+       },
+       [2] = {
+               .name  = "PCM out",
+               .start = DMACH_PCM_OUT,
+               .end   = DMACH_PCM_OUT,
+               .flags = IORESOURCE_DMA,
+       },
+       [3] = {
+               .name  = "PCM in",
+               .start = DMACH_PCM_IN,
+               .end   = DMACH_PCM_IN,
+               .flags = IORESOURCE_DMA,
+       },
+       [4] = {
+               .name  = "Mic in",
+               .start = DMACH_MIC_IN,
+               .end   = DMACH_MIC_IN,
+               .flags = IORESOURCE_DMA,
+       },
+};
+
+static u64 s3c_device_ac97_dmamask = 0xffffffffUL;
+
+struct platform_device s3c_device_ac97 = {
+       .name             = "s3c-ac97",
+       .id               = -1,
+       .num_resources    = ARRAY_SIZE(s3c_ac97_resource),
+       .resource         = s3c_ac97_resource,
+       .dev              = {
+               .dma_mask = &s3c_device_ac97_dmamask,
+               .coherent_dma_mask = 0xffffffffUL
+       }
+};
+
+EXPORT_SYMBOL(s3c_device_ac97);
+
 #endif // CONFIG_CPU_S32440
index a96dcad..e96f941 100644 (file)
 #define AC_CMD_ADDR(x) (x << 16)
 #define AC_CMD_DATA(x) (x & 0xffff)
 
-#ifdef CONFIG_CPU_S3C2440
-#define IRQ_S3C244x_AC97 IRQ_S3C2440_AC97
-#else
-#define IRQ_S3C244x_AC97 IRQ_S3C2443_AC97
-#endif
-
 extern struct snd_soc_dai s3c2443_ac97_dai[];
 
 #endif /*S3C24XXAC97_H_*/