Add generic TMU support alongwith i2c sensors in dtt command to enable temperature reading in cases where TMU is present instead of i2c sensors.
Signed-off-by: Akshay Saraswat <aksha...@samsung.com> --- Changes since v6: - Integrated old code into one function to support both tmu and i2c-dtt. common/cmd_dtt.c | 72 +++++++++++++++++++++++++++++++----------------------- 1 file changed, 42 insertions(+), 30 deletions(-) diff --git a/common/cmd_dtt.c b/common/cmd_dtt.c index cd94423..c7d4ea4 100644 --- a/common/cmd_dtt.c +++ b/common/cmd_dtt.c @@ -27,52 +27,51 @@ #include <dtt.h> #include <i2c.h> +#include <tmu.h> -static unsigned long sensor_initialized; +#if ~defined CONFIG_SYS_DTT_BUS_NUM +#define CONFIG_DTT_SENSORS 0 +#endif -static void _initialize_dtt(void) +int dtt_tmu(void) { - int i; - unsigned char sensors[] = CONFIG_DTT_SENSORS; - - for (i = 0; i < sizeof(sensors); i++) { - if ((sensor_initialized & (1 << i)) == 0) { - if (dtt_init_one(sensors[i]) != 0) { - printf("DTT%d: Failed init!\n", i); - continue; - } - sensor_initialized |= (1 << i); - } + int cur_temp; + + /* Sense and return latest thermal info */ + if (tmu_monitor(&cur_temp) == TMU_STATUS_INIT) { + puts("TMU is in unknown state, temperature is invalid\n"); + return -1; + } else { + printf("Current temperature: %u degrees Celsius\n", cur_temp); + return 0; } } -void dtt_init(void) -{ - int old_bus; - - /* switch to correct I2C bus */ - old_bus = I2C_GET_BUS(); - I2C_SET_BUS(CONFIG_SYS_DTT_BUS_NUM); - - _initialize_dtt(); - - /* switch back to original I2C bus */ - I2C_SET_BUS(old_bus); -} - -int do_dtt (cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[]) +int dtt_init(void) { +#if CONFIG_DTT_SENSORS int i; - unsigned char sensors[] = CONFIG_DTT_SENSORS; int old_bus; + unsigned long sensor_initialized; + unsigned char sensors[] = CONFIG_DTT_SENSORS; /* Force a compilation error, if there are more then 32 sensors */ BUILD_BUG_ON(sizeof(sensors) > 32); + /* switch to correct I2C bus */ old_bus = I2C_GET_BUS(); I2C_SET_BUS(CONFIG_SYS_DTT_BUS_NUM); - _initialize_dtt(); + /* Initialize dtt sensors */ + for (i = 0; i < sizeof(sensors); i++) { + if ((sensor_initialized & (1 << i)) == 0) { + if (dtt_init_one(sensors[i]) != 0) { + printf("DTT%d: Failed init!\n", i); + continue; + } + sensor_initialized |= (1 << i); + } + } /* * Loop through sensors, read @@ -83,8 +82,21 @@ int do_dtt (cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[]) /* switch back to original I2C bus */ I2C_SET_BUS(old_bus); +#endif return 0; +} + +int do_dtt(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[]) +{ + int err = 0; + +#if defined CONFIG_TMU_CMD_DTT + err |= dtt_tmu(); +#endif + err |= dtt_init(); + + return err; } /* do_dtt() */ /***************************************************/ -- 1.7.9.5 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot