tegra: Turn off power detect in board init
authorWei Ni <wni@nvidia.com>
Mon, 2 Apr 2012 13:18:58 +0000 (13:18 +0000)
committerAlbert ARIBAUD <albert.u.boot@aribaud.net>
Tue, 15 May 2012 06:31:38 +0000 (08:31 +0200)
Tegra core power rail has leakage voltage around 0.2V while system in
suspend mode. The source of the leakage should be coming from PMC power
detect logic for IO rails power detection.
That can be disabled by writing a '0' to PWR_DET_LATCH followed by writing '0'
to PWR_DET (APBDEV_PMC_PWR_DET_0).

Signed-off-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Tom Warren <twarren@nvidia.com>
board/nvidia/common/board.c

index b82e61a692b8cdd0917b9cabca0c90d5c58343c4..1d6b002702b6aad2da4fd2130230a454db5133cb 100644 (file)
@@ -61,6 +61,21 @@ void __pin_mux_usb(void)
 
 void pin_mux_usb(void) __attribute__((weak, alias("__pin_mux_usb")));
 
+/*
+ * Routine: power_det_init
+ * Description: turn off power detects
+ */
+static void power_det_init(void)
+{
+#if defined(CONFIG_TEGRA2)
+       struct pmc_ctlr *const pmc = (struct pmc_ctlr *)TEGRA2_PMC_BASE;
+
+       /* turn off power detects */
+       writel(0, &pmc->pmc_pwr_det_latch);
+       writel(0, &pmc->pmc_pwr_det);
+#endif
+}
+
 /*
  * Routine: board_init
  * Description: Early hardware init.
@@ -79,6 +94,9 @@ int board_init(void)
 #endif
        /* boot param addr */
        gd->bd->bi_boot_params = (NV_PA_SDRAM_BASE + 0x100);
+
+       power_det_init();
+
 #ifdef CONFIG_TEGRA_I2C
 #ifndef CONFIG_SYS_I2C_INIT_BOARD
 #error "You must define CONFIG_SYS_I2C_INIT_BOARD to use i2c on Nvidia boards"