Merge git://git.kernel.org/pub/scm/linux/kernel/git/nico/orion into fixes
[pandora-kernel.git] / arch / arm / mach-tegra / common.c
index 7c91e2b..d5e3f89 100644 (file)
 #include <asm/hardware/cache-l2x0.h>
 
 #include <mach/iomap.h>
-#include <mach/dma.h>
+#include <mach/system.h>
 
 #include "board.h"
 #include "clock.h"
 #include "fuse.h"
 
+void (*arch_reset)(char mode, const char *cmd) = tegra_assert_system_reset;
+
+void tegra_assert_system_reset(char mode, const char *cmd)
+{
+       void __iomem *reset = IO_ADDRESS(TEGRA_CLK_RESET_BASE + 0x04);
+       u32 reg;
+
+       /* use *_related to avoid spinlock since caches are off */
+       reg = readl_relaxed(reset);
+       reg |= 0x04;
+       writel_relaxed(reg, reset);
+}
+
 static __initdata struct tegra_clk_init_table common_clk_init_table[] = {
        /* name         parent          rate            enabled */
        { "clk_m",      NULL,           0,              true },
@@ -42,6 +55,9 @@ static __initdata struct tegra_clk_init_table common_clk_init_table[] = {
        { "sclk",       "pll_p_out4",   108000000,      true },
        { "hclk",       "sclk",         108000000,      true },
        { "pclk",       "hclk",         54000000,       true },
+       { "csite",      NULL,           0,              true },
+       { "emc",        NULL,           0,              true },
+       { "cpu",        NULL,           0,              true },
        { NULL,         NULL,           0,              0},
 };
 
@@ -50,21 +66,18 @@ void __init tegra_init_cache(void)
 #ifdef CONFIG_CACHE_L2X0
        void __iomem *p = IO_ADDRESS(TEGRA_ARM_PERIF_BASE) + 0x3000;
 
-       writel(0x331, p + L2X0_TAG_LATENCY_CTRL);
-       writel(0x441, p + L2X0_DATA_LATENCY_CTRL);
+       writel_relaxed(0x331, p + L2X0_TAG_LATENCY_CTRL);
+       writel_relaxed(0x441, p + L2X0_DATA_LATENCY_CTRL);
 
        l2x0_init(p, 0x6C080001, 0x8200c3fe);
 #endif
 
 }
 
-void __init tegra_common_init(void)
+void __init tegra_init_early(void)
 {
        tegra_init_fuse();
        tegra_init_clock();
        tegra_clk_init_from_table(common_clk_init_table);
        tegra_init_cache();
-#ifdef CONFIG_TEGRA_SYSTEM_DMA
-       tegra_dma_init();
-#endif
 }