| Submitter | Akshay Saraswat |
|---|---|
| Date | Jan. 28, 2013, 11:26 a.m. |
| Message ID | <1359372405-17518-7-git-send-email-akshay.s@samsung.com> |
| Download | mbox | patch |
| Permalink | /patch/216166/ |
| State | Superseded |
| Delegated to: | Minkyu Kang |
| Headers | show |
Comments
Hi Akshay, On Mon, Jan 28, 2013 at 3:26 AM, Akshay Saraswat <akshay.s@samsung.com> wrote: > 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 <akshay.s@samsung.com> This looks fine to me except for a minor issue - please see below. > --- > 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; This should remain a static variable since otherwise it will not be kept around, and also will be uninitialized. Also please make sure you MAKEALL a board that uses this code. > + 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 > Regards, Simon
Patch
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() */ /***************************************************/
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 <akshay.s@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(-)