diff options
author | Max Krummenacher <max.krummenacher@toradex.com> | 2012-11-28 19:56:55 +0100 |
---|---|---|
committer | Max Krummenacher <max.krummenacher@toradex.com> | 2012-11-28 19:56:55 +0100 |
commit | 8a9d49ab1091ac2a49d62fbf95bff4910565759d (patch) | |
tree | 26cab5ed2ef84dd53141b163b3cf7f62084598e9 /board/toradex | |
parent | 85cca3b34a64a1023060c5cf08c304eac48d3eac (diff) |
T30:
- board.c: changes required by different PMIC variant
Diffstat (limited to 'board/toradex')
-rw-r--r-- | board/toradex/common/board.c | 54 |
1 files changed, 24 insertions, 30 deletions
diff --git a/board/toradex/common/board.c b/board/toradex/common/board.c index df5e97e6dba..0336b58b080 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 |