common: Drop linux/delay.h from common header
[oweals/u-boot.git] / board / toradex / apalis-tk1 / as3722_init.c
index 4917034e1af1ab720b05e32d30b881f1078a225b..68169f55480860b63cd9cb943897cf8ab09c0f9a 100644 (file)
@@ -1,12 +1,13 @@
+// SPDX-License-Identifier: GPL-2.0+
 /*
  * Copyright (c) 2012-2016 Toradex, Inc.
- *
- * SPDX-License-Identifier:    GPL-2.0+
  */
 
 #include <common.h>
+#include <log.h>
 #include <asm/io.h>
 #include <asm/arch-tegra/tegra_i2c.h>
+#include <linux/delay.h>
 #include "as3722_init.h"
 
 /* AS3722-PMIC-specific early init code - get CPU rails up, etc */
@@ -44,6 +45,29 @@ void pmic_enable_cpu_vdd(void)
        udelay(10 * 1000);
 #endif
 
+       /*
+        * Make sure all non-fused regulators are down.
+        * That way we're in known state after software reboot from linux
+        */
+       tegra_i2c_ll_write_addr(AS3722_I2C_ADDR, 2);
+       tegra_i2c_ll_write_data(0x0003, I2C_SEND_2_BYTES);
+       udelay(10 * 1000);
+       tegra_i2c_ll_write_addr(AS3722_I2C_ADDR, 2);
+       tegra_i2c_ll_write_data(0x0004, I2C_SEND_2_BYTES);
+       udelay(10 * 1000);
+       tegra_i2c_ll_write_addr(AS3722_I2C_ADDR, 2);
+       tegra_i2c_ll_write_data(0x001b, I2C_SEND_2_BYTES);
+       udelay(10 * 1000);
+       tegra_i2c_ll_write_addr(AS3722_I2C_ADDR, 2);
+       tegra_i2c_ll_write_data(0x0014, I2C_SEND_2_BYTES);
+       udelay(10 * 1000);
+       tegra_i2c_ll_write_addr(AS3722_I2C_ADDR, 2);
+       tegra_i2c_ll_write_data(0x001a, I2C_SEND_2_BYTES);
+       udelay(10 * 1000);
+       tegra_i2c_ll_write_addr(AS3722_I2C_ADDR, 2);
+       tegra_i2c_ll_write_data(0x0019, I2C_SEND_2_BYTES);
+       udelay(10 * 1000);
+
        debug("%s: Setting VDD_CPU to 1.0V via AS3722 reg 0/4D\n", __func__);
        /*
         * Bring up VDD_CPU via the AS3722 PMIC on the PWR I2C bus.