diff options
| author | Dirk Eibach <eibach@gdsys.de> | 2011-10-13 23:23:12 +0000 | 
|---|---|---|
| committer | Wolfgang Denk <wd@denx.de> | 2011-10-22 01:22:21 +0200 | 
| commit | b88e7b3cc022241d6582733b0c389d3d1887335f (patch) | |
| tree | 26161e98fbdc88418f4ba092a2bb2ce11d86a64d /common/cmd_dtt.c | |
| parent | b3f44c21ea1a842eda757282d79e7c27efbf1f62 (diff) | |
| download | olio-uboot-2014.01-b88e7b3cc022241d6582733b0c389d3d1887335f.tar.xz olio-uboot-2014.01-b88e7b3cc022241d6582733b0c389d3d1887335f.zip | |
hwmon: Provide dtt_init()
Our boards rely on dtt for initialization of fan hardware.
dtt_init() was implemented to be called form board specific code.
Signed-off-by: Dirk Eibach <eibach@gdsys.de>
Acked-by: Heiko Schocher <hs@denx.de>
Tested-by: Heiko Schocher <hs@denx.de>
Diffstat (limited to 'common/cmd_dtt.c')
| -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); |