summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Krummenacher <max.krummenacher@toradex.com>2012-11-28 19:56:55 +0100
committerMax Krummenacher <max.krummenacher@toradex.com>2012-11-28 19:56:55 +0100
commit8a9d49ab1091ac2a49d62fbf95bff4910565759d (patch)
tree26cab5ed2ef84dd53141b163b3cf7f62084598e9
parent85cca3b34a64a1023060c5cf08c304eac48d3eac (diff)
T30:
- board.c: changes required by different PMIC variant
-rw-r--r--board/toradex/common/board.c54
1 files changed, 24 insertions, 30 deletions
diff --git a/board/toradex/common/board.c b/board/toradex/common/board.c
index df5e97e6db..0336b58b08 100644
--- a/board/toradex/common/board.c
+++ b/board/toradex/common/board.c
@@ -689,47 +689,41 @@ static void board_voltage_init(void)
i2c_set_bus_num(0); /* PMU is on bus 0 */
- //switch v-ddr ram to 1.35V
- data_buffer[0] = 0x3f;
- reg = 0x25;
-
- for (i = 0; i < MAX_I2C_RETRY; ++i) {
- if (i2c_write(PMU_I2C_ADDRESS, reg, 1, data_buffer, 1))
- udelay(100);
- }
-
//switch v-core to 1.2V
data_buffer[0] = VDD_CORE_NOMINAL_T30;
- reg = PMU_CORE_VOLTAGE_START_REG;
-
- for (i = 0; i < MAX_I2C_RETRY; ++i) {
- if (i2c_write(PMU_CORE_I2C_ADDRESS, reg, 1, data_buffer, 1))
- udelay(100);
- }
- data_buffer[0] = VDD_CORE_NOMINAL_T30;
reg = PMU_CORE_VOLTAGE_DVFS_REG;
for (i = 0; i < MAX_I2C_RETRY; ++i) {
- if (i2c_write(PMU_CORE_I2C_ADDRESS, reg, 1, data_buffer, 1))
- udelay(100);
+ if (!i2c_write(PMU_CORE_I2C_ADDRESS, reg, 1, data_buffer, 1))
+ break;
+ udelay(100);
}
#ifndef CONFIG_HW_WATCHDOG
- //disable watchdog
- data_buffer[0] = 0x10; /* kick the dog once before disabling it or disabling will fail */
- reg = 0x54;
- for (i = 0; i < MAX_I2C_RETRY; ++i) {
- if (i2c_write(PMU_I2C_ADDRESS, reg, 1, data_buffer, 1))
- udelay(100);
- }
-
- data_buffer[0] = 0xf0; /* at least one of the reserved bits must be '1' or disabling will fail */
+ //disable watchdog if enabled
reg = 0x69;
for (i = 0; i < MAX_I2C_RETRY; ++i) {
- if (i2c_write(PMU_I2C_ADDRESS, reg, 1, data_buffer, 1))
+ if (!i2c_read(PMU_I2C_ADDRESS, reg, 1, data_buffer, 1))
+ break;
+ udelay(100);
+ }
+ if(data_buffer[0] & 0x7) {
+ data_buffer[0] = 0x10; /* kick the dog once before disabling it or disabling will fail */
+ reg = 0x54;
+ for (i = 0; i < MAX_I2C_RETRY; ++i) {
+ if (!i2c_write(PMU_I2C_ADDRESS, reg, 1, data_buffer, 1))
+ break;
+ udelay(100);
+ }
+ data_buffer[0] = 0xf0; /* at least one of the reserved bits must be '1' or disabling will fail */
+ reg = 0x69;
+ for (i = 0; i < MAX_I2C_RETRY; ++i) {
+ if (!i2c_write(PMU_I2C_ADDRESS, reg, 1, data_buffer, 1))
+ break;
udelay(100);
+ }
}
-#endif
-#endif
+#endif // CONFIG_HW_WATCHDOG
+#endif // CONFIG_TEGRA3
}
#ifdef CONFIG_REVISION_TAG