[U-Boot] [PATCH] [sensor]: Make the LM75 MULTI_BUS compatible.

Heiko Schocher hs at denx.de
Mon Sep 29 09:54:31 CEST 2008


also fix CodingStyle issues for the LM75

Signed-off-by: Heiko Schocher <hs at denx.de>
---
 drivers/hwmon/lm75.c |  228 +++++++++++++++++++++++---------------------------
 1 files changed, 105 insertions(+), 123 deletions(-)

diff --git a/drivers/hwmon/lm75.c b/drivers/hwmon/lm75.c
index 67a18f6..b95601d 100644
--- a/drivers/hwmon/lm75.c
+++ b/drivers/hwmon/lm75.c
@@ -50,159 +50,141 @@

 int dtt_read(int sensor, int reg)
 {
-    int dlen;
-    uchar data[2];
+	int dlen;
+	uchar data[2];

 #ifdef CONFIG_DTT_AD7414
-    /*
-     * On AD7414 the first value upon bootup is not read correctly.
-     * This is most likely because of the 800ms update time of the
-     * temp register in normal update mode. To get current values
-     * each time we issue the "dtt" command including upon powerup
-     * we switch into one-short mode.
-     *
-     * Issue one-shot mode command
-     */
-    dtt_write(sensor, DTT_CONFIG, 0x64);
+	/*
+	 * On AD7414 the first value upon bootup is not read correctly.
+	 * This is most likely because of the 800ms update time of the
+	 * temp register in normal update mode. To get current values
+	 * each time we issue the "dtt" command including upon powerup
+	 * we switch into one-short mode.
+	 *
+	 * Issue one-shot mode command
+	 */
+	dtt_write(sensor, DTT_CONFIG, 0x64);
 #endif

-    /*
-     * Validate 'reg' param
-     */
-    if((reg < 0) || (reg > 3))
-	return -1;
-
-    /*
-     * Calculate sensor address and register.
-     */
-    sensor = DTT_I2C_DEV_CODE + (sensor & 0x07); /* calculate address of lm75 */
-
-    /*
-     * Prepare to handle 2 byte result.
-     */
-    if ((reg == DTT_READ_TEMP) ||
-	(reg == DTT_TEMP_HYST) ||
-	(reg == DTT_TEMP_SET))
-	dlen = 2;
-    else
-	dlen = 1;
-
-    /*
-     * Now try to read the register.
-     */
-    if (i2c_read(sensor, reg, 1, data, dlen) != 0)
-	return -1;
-
-    /*
-     * Handle 2 byte result.
-     */
-    if (dlen == 2)
-	return ((int)((short)data[1] + (((short)data[0]) << 8)));
-
-
-    return (int)data[0];
+	/* Validate 'reg' param */
+	if((reg < 0) || (reg > 3))
+		return -1;
+
+	/* Calculate sensor address and register. */
+	sensor = DTT_I2C_DEV_CODE + (sensor & 0x07);
+
+	/* Prepare to handle 2 byte result. */
+	if ((reg == DTT_READ_TEMP) ||
+		(reg == DTT_TEMP_HYST) ||
+		(reg == DTT_TEMP_SET))
+			dlen = 2;
+	else
+		dlen = 1;
+
+	/* Now try to read the register. */
+	if (i2c_read(sensor, reg, 1, data, dlen) != 0)
+		return -1;
+
+	/* Handle 2 byte result. */
+	if (dlen == 2)
+		return ((int)((short)data[1] + (((short)data[0]) << 8)));
+
+	return (int)data[0];
 } /* dtt_read() */


 int dtt_write(int sensor, int reg, int val)
 {
-    int dlen;
-    uchar data[2];
-
-    /*
-     * Validate 'reg' param
-     */
-    if ((reg < 0) || (reg > 3))
-	return 1;
-
-    /*
-     * Calculate sensor address and register.
-     */
-    sensor = DTT_I2C_DEV_CODE + (sensor & 0x07); /* calculate address of lm75 */
-
-    /*
-     * Handle 2 byte values.
-     */
-    if ((reg == DTT_READ_TEMP) ||
-	(reg == DTT_TEMP_HYST) ||
-	(reg == DTT_TEMP_SET)) {
-	dlen = 2;
-	data[0] = (char)((val >> 8) & 0xff);	/* MSB first */
-	data[1] = (char)(val & 0xff);
-    } else {
-	dlen = 1;
-	data[0] = (char)(val & 0xff);
-    }
-
-    /*
-     * Write value to register.
-     */
-    if (i2c_write(sensor, reg, 1, data, dlen) != 0)
-	return 1;
-
-    return 0;
+	int dlen;
+	uchar data[2];
+
+	/* Validate 'reg' param */
+	if ((reg < 0) || (reg > 3))
+		return 1;
+
+	/* Calculate sensor address and register. */
+	sensor = DTT_I2C_DEV_CODE + (sensor & 0x07);
+
+	/* Handle 2 byte values. */
+	if ((reg == DTT_READ_TEMP) ||
+		(reg == DTT_TEMP_HYST) ||
+		(reg == DTT_TEMP_SET)) {
+			dlen = 2;
+		data[0] = (char)((val >> 8) & 0xff);	/* MSB first */
+		data[1] = (char)(val & 0xff);
+	} else {
+		dlen = 1;
+		data[0] = (char)(val & 0xff);
+	}
+
+	/* Write value to register. */
+	if (i2c_write(sensor, reg, 1, data, dlen) != 0)
+		return 1;
+
+	return 0;
 } /* dtt_write() */


 static int _dtt_init(int sensor)
 {
-    int val;
-
-    /*
-     * Setup TSET ( trip point ) register
-     */
-    val = ((CFG_DTT_MAX_TEMP * 2) << 7) & 0xff80; /* trip */
-    if (dtt_write(sensor, DTT_TEMP_SET, val) != 0)
-	return 1;
-
-    /*
-     * Setup THYST ( untrip point ) register - Hysteresis
-     */
-    val = (((CFG_DTT_MAX_TEMP - CFG_DTT_HYSTERESIS) * 2) << 7) & 0xff80;
-    if (dtt_write(sensor, DTT_TEMP_HYST, val) != 0)
-	return 1;
-
-    /*
-     * Setup configuraton register
-     */
+	int val;
+
+	/* Setup TSET ( trip point ) register */
+	val = ((CFG_DTT_MAX_TEMP * 2) << 7) & 0xff80; /* trip */
+	if (dtt_write(sensor, DTT_TEMP_SET, val) != 0)
+		return 1;
+
+	/* Setup THYST ( untrip point ) register - Hysteresis */
+	val = (((CFG_DTT_MAX_TEMP - CFG_DTT_HYSTERESIS) * 2) << 7) & 0xff80;
+	if (dtt_write(sensor, DTT_TEMP_HYST, val) != 0)
+		return 1;
+
+	/* Setup configuraton register */
 #ifdef CONFIG_DTT_AD7414
-    /* config = alert active low and disabled */
-    val = 0x60;
+	/* config = alert active low and disabled */
+	val = 0x60;
 #else
-    /* config = 6 sample integration, int mode, active low, and enable */
-    val = 0x18;
+	/* config = 6 sample integration, int mode, active low, and enable */
+	val = 0x18;
 #endif
-    if (dtt_write(sensor, DTT_CONFIG, val) != 0)
-	return 1;
+	if (dtt_write(sensor, DTT_CONFIG, val) != 0)
+		return 1;

-    return 0;
+	return 0;
 } /* _dtt_init() */


 int dtt_init (void)
 {
-    int i;
-    unsigned char sensors[] = CONFIG_DTT_SENSORS;
-    const char *const header = "DTT:   ";
+	int i;
+	unsigned char sensors[] = CONFIG_DTT_SENSORS;
+	const char *const header = "DTT:   ";
+	int old_bus;
+
+	/* switch to correct I2C bus */
+	old_bus = I2C_GET_BUS();
+	I2C_SET_BUS(CFG_DTT_BUS_NUM);

-    for (i = 0; i < sizeof(sensors); i++) {
+	for (i = 0; i < sizeof(sensors); i++) {
 	if (_dtt_init(sensors[i]) != 0)
-	    printf("%s%d FAILED INIT\n", header, i+1);
+		printf("%s%d FAILED INIT\n", header, i+1);
 	else
-	    printf("%s%d is %i C\n", header, i+1,
-		   dtt_get_temp(sensors[i]));
-    }
+		printf("%s%d is %i C\n", header, i+1,
+		dtt_get_temp(sensors[i]));
+	}
+	/* switch back to original I2C bus */
+	I2C_SET_BUS(old_bus);

-    return (0);
+	return (0);
 } /* dtt_init() */

 int dtt_get_temp(int sensor)
 {
-    int const ret = dtt_read(sensor, DTT_READ_TEMP);
+	int const ret = dtt_read(sensor, DTT_READ_TEMP);

-    if (ret < 0) {
-	printf("DTT temperature read failed.\n");
-	return 0;
-    }
-    return (int)((int16_t) ret / 256);
+	if (ret < 0) {
+		printf("DTT temperature read failed.\n");
+		return 0;
+	}
+	return (int)((int16_t) ret / 256);
 } /* dtt_get_temp() */
-- 
1.5.6.1

-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany


More information about the U-Boot mailing list