From: Ricardo Ribalda Delgado <[EMAIL PROTECTED]>
Signed-off-by: Ricardo Ribalda Delgado <[EMAIL PROTECTED]> --- drivers/hwmon/Makefile | 1 + drivers/hwmon/adt7460.c | 90 +++++++++++++++++++++++++++++++++++++++++++++++ include/dtt.h | 3 +- 3 files changed, 93 insertions(+), 1 deletions(-) create mode 100644 drivers/hwmon/adt7460.c diff --git a/drivers/hwmon/Makefile b/drivers/hwmon/Makefile index 065433a..e301eaa 100644 --- a/drivers/hwmon/Makefile +++ b/drivers/hwmon/Makefile @@ -37,6 +37,7 @@ COBJS-y += ds1775.o COBJS-$(CONFIG_DTT_LM73) += lm73.o COBJS-y += lm75.o COBJS-y += lm81.o +COBJS-$(CONFIG_DTT_ADT7460) += adt7460.o COBJS := $(COBJS-y) SRCS := $(COBJS:.o=.c) diff --git a/drivers/hwmon/adt7460.c b/drivers/hwmon/adt7460.c new file mode 100644 index 0000000..cf54d40 --- /dev/null +++ b/drivers/hwmon/adt7460.c @@ -0,0 +1,90 @@ +/* + (C) Copyright 2008 + Ricado Ribalda-Universidad Autonoma de Madrid, [EMAIL PROTECTED] + This work has been supported by: Q-Technology http://qtec.com/ + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +#include <common.h> + +#include <i2c.h> +#include <dtt.h> + +#define ADT7460_ADDRESS 0x2c +#define ADT7460_INVALID 128 +#define ADT7460_CONFIG 0x40 +#define ADT7460_REM1_TEMP 0x25 +#define ADT7460_LOCAL_TEMP 0x26 +#define ADT7460_REM2_TEMP 0x27 + +int dtt_read(int sensor, int reg) +{ + u8 dir=reg; + u8 data; + + if ( i2c_read(ADT7460_ADDRESS,dir,1,&data,1) ==-1 ) + return -1; + + if (data==ADT7460_INVALID) + return -1; + + return data; +} + +int dtt_write(int sensor, int reg, int val) +{ + u8 dir=reg; + u8 data=val; + + if ( i2c_write(ADT7460_ADDRESS,dir,1,&data,1) ==-1 ) + return -1; + + return 0; +} + + + +int dtt_init (void) +{ + printf("ADT7460 at I2C address 0x%2x\n",ADT7460_ADDRESS); + + if ( dtt_write(0,ADT7460_CONFIG,1) ==-1 ){ + printf("Error initialiting ADT7460\n"); + return -1; + } + + return 0; +} + +int dtt_get_temp(int sensor) +{ + int aux; + u8 table[]={ADT7460_REM1_TEMP,ADT7460_LOCAL_TEMP,ADT7460_REM2_TEMP}; + + if (sensor>2){ + printf("DTT sensor does not exist\n"); + return -1; + } + + aux=dtt_read(0,table[sensor]); + + if (aux==-1){ + printf("DTT temperature read failed\n"); + return -1; + + } + return aux; +} + diff --git a/include/dtt.h b/include/dtt.h index 4e8aaad..db448ce 100644 --- a/include/dtt.h +++ b/include/dtt.h @@ -32,7 +32,8 @@ defined(CONFIG_DTT_DS1775) || \ defined(CONFIG_DTT_LM81) || \ defined(CONFIG_DTT_ADM1021) || \ - defined(CONFIG_DTT_LM73) + defined(CONFIG_DTT_LM73)|| \ + defined(CONFIG_DTT_ADT7460) #define CONFIG_DTT /* We have a DTT */ -- 1.5.6.2 ------------------------------------------------------------------------- Sponsored by: SourceForge.net Community Choice Awards: VOTE NOW! Studies have shown that voting for your favorite open source project, along with a healthy diet, reduces your potential for chronic lameness and boredom. Vote Now at http://www.sourceforge.net/community/cca08 _______________________________________________ U-Boot-Users mailing list U-Boot-Users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/u-boot-users