X-Git-Url: http://pilppa.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=arch%2Farm%2Fmach-omap2%2Fboard-n800-audio.c;h=233198edbd577ca0db8c577442132fe8177d4caf;hb=68fb659f003c95f6a589974c62483a41b983c1ee;hp=9033de58319750ef930ccce93a4dfa9e4fdf051b;hpb=3cbcbff06f3d2e0d38b77f7c5ab8c281c907ff1b;p=linux-2.6-omap-h63xx.git diff --git a/arch/arm/mach-omap2/board-n800-audio.c b/arch/arm/mach-omap2/board-n800-audio.c index 9033de58319..233198edbd5 100644 --- a/arch/arm/mach-omap2/board-n800-audio.c +++ b/arch/arm/mach-omap2/board-n800-audio.c @@ -29,12 +29,13 @@ #include #include -#include "../plat-omap/dsp/dsp_common.h" +#include #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) { }