Skip to contentSkip to conversation

Add driver for National Semiconductor LM73 temperature sensor

PATCH New Larry Johnson 2 participants 2 messages Nov 2, 2007

lore
Share & tools
lore
#0 lore raw

PATCH 1/4 Add driver for National Semiconductor LM73 temperature sensor

This driver is based on the driver for the LM75.

---

 dtt/Makefile  |    2 +-
 dtt/lm73.c    |  186 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 include/dtt.h |   12 ++++-
 3 files changed, 198 insertions(+), 2 deletions(-)
dtt/Makefile +1 -1
index c6a670a..04abbaf 100644
@@ -30,7 +30,7 @@ include $(TOPDIR)/config.mk
 
 LIB	= $(obj)libdtt.a
 
-COBJS	= lm75.o ds1621.o adm1021.o lm81.o ds1775.o
+COBJS	= lm75.o ds1621.o adm1021.o lm81.o ds1775.o lm73.o
 
 SRCS	:= $(COBJS:.o=.c)
 OBJS	:= $(addprefix $(obj),$(COBJS))
dtt/lm73.c new file +186 -0

186 lines not on this page · raw message

include/dtt.h +11 -1
index 2e8c690..4e8aaad 100644
@@ -31,7 +31,8 @@
     defined(CONFIG_DTT_DS1621) || \
     defined(CONFIG_DTT_DS1775) || \
     defined(CONFIG_DTT_LM81) || \
-    defined(CONFIG_DTT_ADM1021)
+    defined(CONFIG_DTT_ADM1021) || \
+    defined(CONFIG_DTT_LM73)
 
 #define CONFIG_DTT				/* We have a DTT */
 
@@ -119,4 +120,13 @@ extern int dtt_get_temp(int sensor);
 #define DTT_ADM1021_DEVID	0x41
 #endif
 
+#if defined(CONFIG_DTT_LM73)
+#define DTT_READ_TEMP		0x0
+#define DTT_CONFIG		0x1
+#define DTT_TEMP_HIGH		0x2
+#define DTT_TEMP_LOW		0x3
+#define DTT_CONTROL		0x4
+#define DTT_ID			0x7
+#endif
+
 #endif /* _DTT_H_ */
#1 lore raw

PATCH 1/4 Add driver for National Semiconductor LM73 temperature sensor

Hi Larry,

Quoted 101 lines · Larry Johnson

This driver is based on the driver for the LM75.

---

 dtt/Makefile  |    2 +-
 dtt/lm73.c    |  186
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++ include/dtt.h |  
12 ++++-
 3 files changed, 198 insertions(+), 2 deletions(-)
dtt/Makefile +1 -1
index c6a670a..04abbaf 100644
@@ -30,7 +30,7 @@ include $(TOPDIR)/config.mk
 
 LIB	= $(obj)libdtt.a
 
-COBJS	= lm75.o ds1621.o adm1021.o lm81.o ds1775.o
+COBJS	= lm75.o ds1621.o adm1021.o lm81.o ds1775.o lm73.o
 
 SRCS	:= $(COBJS:.o=.c)
 OBJS	:= $(addprefix $(obj),$(COBJS))
dtt/lm73.c new file +38 -0
new file mode 100644
index 0000000..1e0bffa
@@ -0,0 +1,186 @@
+/*
+ * (C) Copyright 2007
+ * Larry Johnson, lrj at acm.org
+ *
+ * based on dtt/lm75.c which is ...
+ *
+ * (C) Copyright 2001
+ * Bill Hunter,  Wave 7 Optics, williamhunter at mediaone.net
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * 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, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+/*
+ * National Semiconductor LM73 Temperature Sensor
+ */
+
+#include <common.h>
+
+#ifdef CONFIG_DTT_LM73
+#if !defined(CFG_EEPROM_PAGE_WRITE_ENABLE) || \
+	(CFG_EEPROM_PAGE_WRITE_BITS < 1)
+# error "CFG_EEPROM_PAGE_WRITE_ENABLE must be defined and

CFG_EEPROM_PAGE_WRITE_BITS must be greater than 1 to use CONFIG_DTT_LM73"

dtt/lm73.c new file +32 -0
+#endif
+
+#include <i2c.h>
+#include <dtt.h>
+
+/*
+ * Device code
+ */
+#define DTT_I2C_DEV_CODE 0x48	/* National Semi's LM73 device */
+
+int dtt_read(int sensor, int reg)
+{
+	int dlen;
+	uchar data[2];
+
+	/*
+	 * Validate 'reg' param and get register size.
+	 */
+	switch (reg) {
+	case DTT_CONFIG:
+	case DTT_CONTROL:
+		dlen = 1;
+		break;
+	case DTT_READ_TEMP:
+	case DTT_TEMP_HIGH:
+	case DTT_TEMP_LOW:
+	case DTT_ID:
+		dlen = 2;
+		break;
+	default:
+		return -1;
+	}

dtt/lm73.c line 80

Quoted 10 lines
dtt/lm73.c new file +10 -0
+	/*
+	 * Calculate sensor address and register.
+	 */
+	sensor = DTT_I2C_DEV_CODE + (sensor & 0x07);	/* calculate LM73 addr */
+	/*
+	 * Now try to read the register.
+	 */
+	if (i2c_read(sensor, reg, 1, data, dlen) != 0) {
+		return -1;
+	}

No braces for single line statements please. This is a problem with all your patches. Please recheck them and fix this.

Otherwise looks good. Thanks.

Best regards,
Stefan

=====================================================================
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-0 Fax: +49-8142-66989-80 Email: office at denx.de
=====================================================================