diff options
| -rw-r--r-- | common/cmd_dtt.c | 42 | ||||
| -rw-r--r-- | include/dtt.h | 1 | 
2 files changed, 34 insertions, 9 deletions
| diff --git a/common/cmd_dtt.c b/common/cmd_dtt.c index 5bba12d4d..cd94423d2 100644 --- a/common/cmd_dtt.c +++ b/common/cmd_dtt.c @@ -30,6 +30,36 @@  static unsigned long sensor_initialized; +static void _initialize_dtt(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); +		} +	} +} + +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 i; @@ -42,20 +72,14 @@ int do_dtt (cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[])  	old_bus = I2C_GET_BUS();  	I2C_SET_BUS(CONFIG_SYS_DTT_BUS_NUM); +	_initialize_dtt(); +  	/*  	 * Loop through sensors, read  	 * temperature, and output it.  	 */ -	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); -		} +	for (i = 0; i < sizeof(sensors); i++)  		printf("DTT%d: %i C\n", i + 1, dtt_get_temp(sensors[i])); -	}  	/* switch back to original I2C bus */  	I2C_SET_BUS(old_bus); diff --git a/include/dtt.h b/include/dtt.h index 9e6c08c5c..6d5534de4 100644 --- a/include/dtt.h +++ b/include/dtt.h @@ -52,6 +52,7 @@  #endif  #endif /* CONFIG_DTT_ADM1021 */ +extern void dtt_init(void);  extern int dtt_init_one(int);  extern int dtt_read(int sensor, int reg);  extern int dtt_write(int sensor, int reg, int val); |