GL520SM Sensor Chip driver fix

From: Adam 'dredzik' Kuczynski
Date: Sun Feb 20 2005 - 10:07:57 EST


Hi,
I've been recently trying to get my lmsensors working under
2.6.9, and i've found this:

http://seclists.org/lists/linux-kernel/2005/Feb/2856.html
http://lkml.org/lkml/2005/2/11/90

kernel patch for gl520 chip, but after applying it kernel refused to
compile. So I've fixed it using gl518sm module source code and I want to
share the results of my work with you. I hope that it will be useful.

I've tested this on my machine and it works fine.

Bye

PS: I hope i'm writting to good list.

--
.$ .,_ .$ [ Adam 'dredzik' Kuczynski ]
gP""Y:$ g. ,gP ,P" _,P gP""Y:$ [ http://dredzik.ekg2.org/ ]
Y. ,Y: `$,P Y$ Y. ,Y: [ mailto: dredzik@xxxxxxxx ]
`"" `b.`Y' `"-- `"" `b. [ JID: dredzik@xxxxxxxxxx ]
--- linux-2.6.9/drivers/i2c/chips/gl520sm.c.orig 2005-02-20 15:20:38.000000000 +0100
+++ linux-2.6.9/drivers/i2c/chips/gl520sm.c 2005-02-20 15:41:25.000000000 +0100
@@ -37,6 +37,9 @@
static unsigned short normal_i2c[] = { 0x2c, 0x2d, I2C_CLIENT_END };
static unsigned int normal_isa[] = { I2C_CLIENT_ISA_END };

+static unsigned short normal_i2c_range[] = { I2C_CLIENT_END };
+static unsigned int normal_isa_range[] = { I2C_CLIENT_ISA_END };
+
/* Insmod parameters */
SENSORS_INSMOD_1(gl520sm);

@@ -500,13 +503,25 @@

static int gl520_attach_adapter(struct i2c_adapter *adapter)
{
- if (!(adapter->clRD_DATA))
- goto exit;
+ if (!(adapter->class & I2C_CLASS_HWMON))
+ return 0;
+ return i2c_detect(adapter, &addr_data, gl520_detect);
+}

+static int gl520_detect(struct i2c_adapter *adapter, int address, int kind)
+{
+ struct i2c_client *new_client;
+ struct gl520_data *data;
+ int err = 0;
+
+ if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE_DATA |
+ I2C_FUNC_SMBUS_WORD_DATA))
+ goto exit;
+
/* OK. For now, we presume we have a valid client. We now create the
client structure, even though we cannot fill it completely yet.
But it allows us to access gl520_{read,write}_value. */
-
+
if (!(data = kmalloc(sizeof(struct gl520_data), GFP_KERNEL))) {
err = -ENOMEM;
goto exit;

Attachment: signature.asc
Description: Digital signature