Merge git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6
[pandora-kernel.git] / arch / arm / mach-kirkwood / common.c
index 9dd67c7..1c82d42 100644 (file)
@@ -25,6 +25,7 @@
 #include <asm/mach/time.h>
 #include <mach/kirkwood.h>
 #include <mach/bridge-regs.h>
+#include <plat/audio.h>
 #include <plat/cache-feroceon-l2.h>
 #include <plat/ehci-orion.h>
 #include <plat/mvsdio.h>
@@ -871,6 +872,42 @@ struct sys_timer kirkwood_timer = {
        .init = kirkwood_timer_init,
 };
 
+/*****************************************************************************
+ * Audio
+ ****************************************************************************/
+static struct resource kirkwood_i2s_resources[] = {
+       [0] = {
+               .start  = AUDIO_PHYS_BASE,
+               .end    = AUDIO_PHYS_BASE + SZ_16K - 1,
+               .flags  = IORESOURCE_MEM,
+       },
+       [1] = {
+               .start  = IRQ_KIRKWOOD_I2S,
+               .end    = IRQ_KIRKWOOD_I2S,
+               .flags  = IORESOURCE_IRQ,
+       },
+};
+
+static struct kirkwood_asoc_platform_data kirkwood_i2s_data = {
+       .dram        = &kirkwood_mbus_dram_info,
+       .burst       = 128,
+};
+
+static struct platform_device kirkwood_i2s_device = {
+       .name           = "kirkwood-i2s",
+       .id             = -1,
+       .num_resources  = ARRAY_SIZE(kirkwood_i2s_resources),
+       .resource       = kirkwood_i2s_resources,
+       .dev            = {
+               .platform_data  = &kirkwood_i2s_data,
+       },
+};
+
+void __init kirkwood_audio_init(void)
+{
+       kirkwood_clk_ctrl |= CGC_AUDIO;
+       platform_device_register(&kirkwood_i2s_device);
+}
 
 /*****************************************************************************
  * General
@@ -939,6 +976,7 @@ void __init kirkwood_init(void)
        kirkwood_spi_plat_data.tclk = kirkwood_tclk;
        kirkwood_uart0_data[0].uartclk = kirkwood_tclk;
        kirkwood_uart1_data[0].uartclk = kirkwood_tclk;
+       kirkwood_i2s_data.tclk = kirkwood_tclk;
 
        /*
         * Disable propagation of mbus errors to the CPU local bus,