*
*/
+#include <linux/console.h>
#include <linux/init.h>
#include <linux/io.h>
#include <linux/clk.h>
#include <linux/memblock.h>
#include <asm/hardware/cache-l2x0.h>
+#include <asm/system.h>
#include <mach/iomap.h>
#include <mach/dma.h>
tegra_powergate_power_off(TEGRA_POWERGATE_3D);
}
+static bool console_flushed;
+
+static void tegra_pm_flush_console(void)
+{
+ if (console_flushed)
+ return;
+ console_flushed = true;
+
+ printk("\n");
+ pr_emerg("Restarting %s\n", linux_banner);
+ if (!try_acquire_console_sem()) {
+ release_console_sem();
+ return;
+ }
+
+ mdelay(50);
+
+ local_irq_disable();
+ if (try_acquire_console_sem())
+ pr_emerg("tegra_restart: Console was locked! Busting\n");
+ else
+ pr_emerg("tegra_restart: Console was locked!\n");
+ release_console_sem();
+}
+
+static void tegra_pm_restart(char mode, const char *cmd)
+{
+ tegra_pm_flush_console();
+ arm_machine_restart(mode, cmd);
+}
+
void __init tegra_common_init(void)
{
+ arm_pm_restart = tegra_pm_restart;
+
tegra_init_fuse();
tegra_init_clock();
tegra_clk_init_from_table(common_clk_init_table);