]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - arch/arm/mach-omap2/board-n800-audio.c
mach-omap2: fix sparse warnings, some style issues for OMAP2 builds
[linux-2.6-omap-h63xx.git] / arch / arm / mach-omap2 / board-n800-audio.c
index 9033de58319750ef930ccce93a4dfa9e4fdf051b..233198edbd577ca0db8c577442132fe8177d4caf 100644 (file)
 #include <asm/io.h>
 #include <asm/arch/eac.h>
 
-#include "../plat-omap/dsp/dsp_common.h"
+#include <asm/arch/dsp_common.h>
 
 #if defined(CONFIG_SPI_TSC2301_AUDIO) && defined(CONFIG_SND_OMAP24XX_EAC)
 #define AUDIO_ENABLED
 
 static struct clk *sys_clkout2;
+static struct clk *sys_clkout2_src;
 static struct clk *func96m_clk;
 static struct device *eac_device;
 static struct device *tsc2301_device;
@@ -53,11 +54,13 @@ static int eac_mux_disabled = 0;
 static int clkout2_mux_disabled = 0;
 static u32 saved_mux[2];
 
+#define MUX_EAC_IOP2V(x)               (__force void __iomem *)io_p2v(x)
+
 static void n800_enable_eac_mux(void)
 {
        if (!eac_mux_disabled)
                return;
-       __raw_writel(saved_mux[1], IO_ADDRESS(0x48000124));
+       __raw_writel(saved_mux[1], MUX_EAC_IOP2V(0x48000124));
        eac_mux_disabled = 0;
 }
 
@@ -67,8 +70,8 @@ static void n800_disable_eac_mux(void)
                WARN_ON(eac_mux_disabled);
                return;
        }
-       saved_mux[1] = __raw_readl(IO_ADDRESS(0x48000124));
-       __raw_writel(0x1f1f1f1f, IO_ADDRESS(0x48000124));
+       saved_mux[1] = __raw_readl(MUX_EAC_IOP2V(0x48000124));
+       __raw_writel(0x1f1f1f1f, MUX_EAC_IOP2V(0x48000124));
        eac_mux_disabled = 1;
 }
 
@@ -76,7 +79,7 @@ static void n800_enable_clkout2_mux(void)
 {
        if (!clkout2_mux_disabled)
                return;
-       __raw_writel(saved_mux[0], IO_ADDRESS(0x480000e8));
+       __raw_writel(saved_mux[0], MUX_EAC_IOP2V(0x480000e8));
        clkout2_mux_disabled = 0;
 }
 
@@ -88,10 +91,10 @@ static void n800_disable_clkout2_mux(void)
                WARN_ON(clkout2_mux_disabled);
                return;
        }
-       saved_mux[0] = __raw_readl(IO_ADDRESS(0x480000e8));
+       saved_mux[0] = __raw_readl(MUX_EAC_IOP2V(0x480000e8));
        l = saved_mux[0] & ~0xff;
        l |= 0x1f;
-       __raw_writel(l, IO_ADDRESS(0x480000e8));
+       __raw_writel(l, MUX_EAC_IOP2V(0x480000e8));
        clkout2_mux_disabled = 1;
 }
 
@@ -127,7 +130,7 @@ static int n800_audio_register_controls(void *pdata, struct snd_card *card)
 
 static struct eac_codec n800_eac_codec = {
        .mclk_src = EAC_MCLK_EXT_2x12288000,
-       .codec_mode = EAC_CODEC_I2S,
+       .codec_mode = EAC_CODEC_I2S_MASTER,
        .codec_conf.i2s.polarity_changed_mode = 0,
        .codec_conf.i2s.sync_delay_enable = 0,
        .default_rate = 48000,
@@ -186,9 +189,15 @@ static void n800_eac_cleanup(struct device *dev)
 
 static int n800_codec_get_clocks(struct device *dev)
 {
+       sys_clkout2_src = clk_get(dev, "sys_clkout2_src");
+       if (IS_ERR(sys_clkout2_src)) {
+               dev_err(dev, "Could not get sys_clkout2_src clock\n");
+               return -ENODEV;
+       }
        sys_clkout2 = clk_get(dev, "sys_clkout2");
        if (IS_ERR(sys_clkout2)) {
-               dev_err(dev, "Could not get sys_clkout2\n");
+               dev_err(dev, "Could not get sys_clkout2 clock\n");
+               clk_put(sys_clkout2_src);
                return -ENODEV;
        }
        /* configure 12 MHz output on SYS_CLKOUT2. Therefore we must use
@@ -197,10 +206,11 @@ static int n800_codec_get_clocks(struct device *dev)
        if (IS_ERR(func96m_clk)) {
                dev_err(dev, "Could not get func 96M clock\n");
                clk_put(sys_clkout2);
+               clk_put(sys_clkout2_src);
                return -ENODEV;
        }
 
-       clk_set_parent(sys_clkout2, func96m_clk);
+       clk_set_parent(sys_clkout2_src, func96m_clk);
        clk_set_rate(sys_clkout2, 12000000);
 
        return 0;
@@ -210,6 +220,7 @@ static void n800_codec_put_clocks(struct device *dev)
 {
        clk_put(func96m_clk);
        clk_put(sys_clkout2);
+       clk_put(sys_clkout2_src);
 }
 
 static int n800_codec_enable_clock(struct device *dev)
@@ -307,7 +318,7 @@ void __init n800_audio_init(struct tsc2301_platform_data *tc)
 
 #else
 
-void __init n800_audio_init(void)
+void __init n800_audio_init(struct tsc2301_platform_data *tc)
 {
 }