From 657a9c7e0368bb32f62b0950106dd936a9217491 Mon Sep 17 00:00:00 2001 From: "Mark D. Studebaker" Date: Thu, 15 Aug 2002 03:15:20 +0000 Subject: [PATCH] fix enable/disable. Patch from ticket #932. git-svn-id: http://lm-sensors.org/svn/lm-sensors/trunk@1493 7894878c-1315-0410-8ee3-d5d059ff63e0 --- kernel/chips/ds1621.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/kernel/chips/ds1621.c b/kernel/chips/ds1621.c index 346e3615..6452d07a 100644 --- a/kernel/chips/ds1621.c +++ b/kernel/chips/ds1621.c @@ -356,6 +356,9 @@ int ds1621_read_value(struct i2c_client *client, u8 reg) the usual practice. */ int ds1621_write_value(struct i2c_client *client, u8 reg, u16 value) { + if ( (reg == DS1621_COM_START) || (reg == DS1621_COM_STOP) ) + return i2c_smbus_write_byte(client, reg); + else if ((reg == DS1621_REG_CONF) || (reg == DS1621_REG_TEMP_COUNTER) || (reg == DS1621_REG_TEMP_SLOPE)) return i2c_smbus_write_byte_data(client, reg, value); @@ -410,7 +413,7 @@ void ds1621_update_client(struct i2c_client *client) data->temp_int = ITEMP_FROM_REG(data->temp); /* restart the conversion */ if (data->enable) - ds1621_read_value(client, DS1621_COM_START); + ds1621_write_value(client, DS1621_COM_START, 0); } /* reset alarms if neccessary */ @@ -504,14 +507,14 @@ void ds1621_enable(struct i2c_client *client, int operation, int ctl_name, } else if (operation == SENSORS_PROC_REAL_WRITE) { if (*nrels_mag >= 1) { if (results[0]) { - ds1621_read_value(client, DS1621_COM_START); + ds1621_write_value(client, DS1621_COM_START, 0); data->enable=1; } else { - ds1621_read_value(client, DS1621_COM_STOP); + ds1621_write_value(client, DS1621_COM_STOP, 0); data->enable=0; } } else { - ds1621_read_value(client, DS1621_COM_START); + ds1621_write_value(client, DS1621_COM_START, 0); data->enable=1; } }