diff options
Diffstat (limited to 'common')
| -rw-r--r-- | common/cmd_dtt.c | 42 | 
1 files changed, 33 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); |