Title: [6490] trunk/drivers/i2c/busses/i2c-bfin-twi.c: Related to [#5146] Develop Linux driver for ADXL345/346 Three-Axis
Revision
6490
Author
hennerich
Date
2009-05-27 04:24:10 -0500 (Wed, 27 May 2009)

Log Message

Related to [#5146] Develop Linux driver for ADXL345/346 Three-Axis
Digital Accelerometers

Implement I2C_FUNC_SMBUS_I2C_BLOCK functionality.
This will allow to use 

I2C Block Read:  i2c_smbus_read_i2c_block_data()

S Addr Wr [A] Comm [A] 
           S Addr Rd [A] [Data] A [Data] A ... A [Data] NA P


I2C Block Read (2 Comm bytes)

S Addr Wr [A] Comm1 [A] Comm2 [A] 
           S Addr Rd [A] [Data] A [Data] A ... A [Data] NA P 

Modified Paths

Diff

Modified: trunk/drivers/i2c/busses/i2c-bfin-twi.c (6489 => 6490)


--- trunk/drivers/i2c/busses/i2c-bfin-twi.c	2009-05-27 09:22:20 UTC (rev 6489)
+++ trunk/drivers/i2c/busses/i2c-bfin-twi.c	2009-05-27 09:24:10 UTC (rev 6490)
@@ -449,6 +449,16 @@
 		}
 		iface->transPtr = data->block;
 		break;
+	case I2C_SMBUS_I2C_BLOCK_DATA:
+		if (read_write == I2C_SMBUS_READ) {
+			iface->readNum = data->block[0];
+			iface->cur_mode = TWI_I2C_MODE_COMBINED;
+		} else {
+			iface->writeNum = data->block[0];
+			iface->cur_mode = TWI_I2C_MODE_STANDARDSUB;
+		}
+		iface->transPtr = data->block;
+		break;
 	default:
 		return -1;
 	}
@@ -572,7 +582,7 @@
 	return I2C_FUNC_SMBUS_QUICK | I2C_FUNC_SMBUS_BYTE |
 	       I2C_FUNC_SMBUS_BYTE_DATA | I2C_FUNC_SMBUS_WORD_DATA |
 	       I2C_FUNC_SMBUS_BLOCK_DATA | I2C_FUNC_SMBUS_PROC_CALL |
-	       I2C_FUNC_I2C;
+	       I2C_FUNC_I2C | I2C_FUNC_SMBUS_I2C_BLOCK;
 }
 
 static struct i2c_algorithm bfin_twi_algorithm = {
_______________________________________________
Linux-kernel-commits mailing list
[email protected]
https://blackfin.uclinux.org/mailman/listinfo/linux-kernel-commits

Reply via email to