@@ -0,0 +1,451 @@
+From 3ceb5a7870cb236981b7c3b5c5b9665dcb1ebe27 Mon Sep 17 00:00:00 2001
+From: Jean Delvare <khali@linux-fr.org>
+Date: Thu, 26 Apr 2012 10:10:22 +0000
+Subject: [PATCH] i2c-dev: Move SMBus helper functions to include/i2c/smbus.h
+
+git-svn-id: http://lm-sensors.org/svn/i2c-tools/trunk@6048 7894878c-1315-0410-8ee3-d5d059ff63e0
+---
+ eepromer/24cXX.c | 3 +
+ eepromer/24cXX.h | 2 +-
+ eepromer/eeprom.c | 2 +
+ eepromer/eepromer.c | 2 +
+ include/Module.mk | 6 +-
+ include/linux/i2c-dev.h | 257 ------------------------------------------------
+ py-smbus/Module.mk | 2 +-
+ py-smbus/smbusmodule.c | 3 +
+ tools/Module.mk | 12 +--
+ tools/i2cbusses.c | 4 +-
+ tools/i2cdetect.c | 5 +-
+ tools/i2cdump.c | 5 +-
+ tools/i2cget.c | 5 +-
+ tools/i2cset.c | 5 +-
+ 15 files changed, 41 insertions(+), 273 deletions(-)
+
+diff --git a/include/Module.mk b/include/Module.mk
+index fda7cfb..4a9713c 100644
+--- a/include/Module.mk
++++ b/include/Module.mk
+@@ -9,14 +9,14 @@
+
+ INCLUDE_DIR := include
+
+-INCLUDE_TARGETS := linux/i2c-dev.h
++INCLUDE_TARGETS := i2c/smbus.h
+
+ #
+ # Commands
+ #
+
+ install-include: $(addprefix $(INCLUDE_DIR)/,$(INCLUDE_TARGETS))
+- $(INSTALL_DIR) $(DESTDIR)$(incdir)/linux
++ $(INSTALL_DIR) $(DESTDIR)$(incdir)/i2c
+ for file in $(INCLUDE_TARGETS) ; do \
+ $(INSTALL_DATA) $(INCLUDE_DIR)/$$file $(DESTDIR)$(incdir)/$$file ; done
+
+diff --git a/include/linux/i2c-dev.h b/include/linux/i2c-dev.h
+index 23f7c2c..64166c6 100644
+--- a/include/linux/i2c-dev.h
++++ b/include/linux/i2c-dev.h
+@@ -24,91 +24,9 @@
+ #define _LINUX_I2C_DEV_H
+
+ #include <linux/types.h>
+-#include <sys/ioctl.h>
+ #include <stddef.h>
+
+
+-/* -- i2c.h -- */
+-
+-
+-/*
+- * I2C Message - used for pure i2c transaction, also from /dev interface
+- */
+-struct i2c_msg {
+- __u16 addr; /* slave address */
+- unsigned short flags;
+-#define I2C_M_TEN 0x10 /* we have a ten bit chip address */
+-#define I2C_M_RD 0x01
+-#define I2C_M_NOSTART 0x4000
+-#define I2C_M_REV_DIR_ADDR 0x2000
+-#define I2C_M_IGNORE_NAK 0x1000
+-#define I2C_M_NO_RD_ACK 0x0800
+- short len; /* msg length */
+- char *buf; /* pointer to msg data */
+-};
+-
+-/* To determine what functionality is present */
+-
+-#define I2C_FUNC_I2C 0x00000001
+-#define I2C_FUNC_10BIT_ADDR 0x00000002
+-#define I2C_FUNC_PROTOCOL_MANGLING 0x00000004 /* I2C_M_{REV_DIR_ADDR,NOSTART,..} */
+-#define I2C_FUNC_SMBUS_PEC 0x00000008
+-#define I2C_FUNC_SMBUS_BLOCK_PROC_CALL 0x00008000 /* SMBus 2.0 */
+-#define I2C_FUNC_SMBUS_QUICK 0x00010000
+-#define I2C_FUNC_SMBUS_READ_BYTE 0x00020000
+-#define I2C_FUNC_SMBUS_WRITE_BYTE 0x00040000
+-#define I2C_FUNC_SMBUS_READ_BYTE_DATA 0x00080000
+-#define I2C_FUNC_SMBUS_WRITE_BYTE_DATA 0x00100000
+-#define I2C_FUNC_SMBUS_READ_WORD_DATA 0x00200000
+-#define I2C_FUNC_SMBUS_WRITE_WORD_DATA 0x00400000
+-#define I2C_FUNC_SMBUS_PROC_CALL 0x00800000
+-#define I2C_FUNC_SMBUS_READ_BLOCK_DATA 0x01000000
+-#define I2C_FUNC_SMBUS_WRITE_BLOCK_DATA 0x02000000
+-#define I2C_FUNC_SMBUS_READ_I2C_BLOCK 0x04000000 /* I2C-like block xfer */
+-#define I2C_FUNC_SMBUS_WRITE_I2C_BLOCK 0x08000000 /* w/ 1-byte reg. addr. */
+-
+-#define I2C_FUNC_SMBUS_BYTE (I2C_FUNC_SMBUS_READ_BYTE | \
+- I2C_FUNC_SMBUS_WRITE_BYTE)
+-#define I2C_FUNC_SMBUS_BYTE_DATA (I2C_FUNC_SMBUS_READ_BYTE_DATA | \
+- I2C_FUNC_SMBUS_WRITE_BYTE_DATA)
+-#define I2C_FUNC_SMBUS_WORD_DATA (I2C_FUNC_SMBUS_READ_WORD_DATA | \
+- I2C_FUNC_SMBUS_WRITE_WORD_DATA)
+-#define I2C_FUNC_SMBUS_BLOCK_DATA (I2C_FUNC_SMBUS_READ_BLOCK_DATA | \
+- I2C_FUNC_SMBUS_WRITE_BLOCK_DATA)
+-#define I2C_FUNC_SMBUS_I2C_BLOCK (I2C_FUNC_SMBUS_READ_I2C_BLOCK | \
+- I2C_FUNC_SMBUS_WRITE_I2C_BLOCK)
+-
+-/* Old name, for compatibility */
+-#define I2C_FUNC_SMBUS_HWPEC_CALC I2C_FUNC_SMBUS_PEC
+-
+-/*
+- * Data for SMBus Messages
+- */
+-#define I2C_SMBUS_BLOCK_MAX 32 /* As specified in SMBus standard */
+-#define I2C_SMBUS_I2C_BLOCK_MAX 32 /* Not specified but we use same structure */
+-union i2c_smbus_data {
+- __u8 byte;
+- __u16 word;
+- __u8 block[I2C_SMBUS_BLOCK_MAX + 2]; /* block[0] is used for length */
+- /* and one more for PEC */
+-};
+-
+-/* smbus_access read or write markers */
+-#define I2C_SMBUS_READ 1
+-#define I2C_SMBUS_WRITE 0
+-
+-/* SMBus transaction types (size parameter in the above functions)
+- Note: these no longer correspond to the (arbitrary) PIIX4 internal codes! */
+-#define I2C_SMBUS_QUICK 0
+-#define I2C_SMBUS_BYTE 1
+-#define I2C_SMBUS_BYTE_DATA 2
+-#define I2C_SMBUS_WORD_DATA 3
+-#define I2C_SMBUS_PROC_CALL 4
+-#define I2C_SMBUS_BLOCK_DATA 5
+-#define I2C_SMBUS_I2C_BLOCK_BROKEN 6
+-#define I2C_SMBUS_BLOCK_PROC_CALL 7 /* SMBus 2.0 */
+-#define I2C_SMBUS_I2C_BLOCK_DATA 8
+-
+
+ /* /dev/i2c-X ioctl commands. The ioctl's parameter is always an
+ * unsigned long, except for:
+@@ -153,178 +71,4 @@ struct i2c_rdwr_ioctl_data {
+ #define I2C_RDRW_IOCTL_MAX_MSGS 42
+
+
+-static inline __s32 i2c_smbus_access(int file, char read_write, __u8 command,
+- int size, union i2c_smbus_data *data)
+-{
+- struct i2c_smbus_ioctl_data args;
+-
+- args.read_write = read_write;
+- args.command = command;
+- args.size = size;
+- args.data = data;
+- return ioctl(file,I2C_SMBUS,&args);
+-}
+-
+-
+-static inline __s32 i2c_smbus_write_quick(int file, __u8 value)
+-{
+- return i2c_smbus_access(file,value,0,I2C_SMBUS_QUICK,NULL);
+-}
+-
+-static inline __s32 i2c_smbus_read_byte(int file)
+-{
+- union i2c_smbus_data data;
+- if (i2c_smbus_access(file,I2C_SMBUS_READ,0,I2C_SMBUS_BYTE,&data))
+- return -1;
+- else
+- return 0x0FF & data.byte;
+-}
+-
+-static inline __s32 i2c_smbus_write_byte(int file, __u8 value)
+-{
+- return i2c_smbus_access(file,I2C_SMBUS_WRITE,value,
+- I2C_SMBUS_BYTE,NULL);
+-}
+-
+-static inline __s32 i2c_smbus_read_byte_data(int file, __u8 command)
+-{
+- union i2c_smbus_data data;
+- if (i2c_smbus_access(file,I2C_SMBUS_READ,command,
+- I2C_SMBUS_BYTE_DATA,&data))
+- return -1;
+- else
+- return 0x0FF & data.byte;
+-}
+-
+-static inline __s32 i2c_smbus_write_byte_data(int file, __u8 command,
+- __u8 value)
+-{
+- union i2c_smbus_data data;
+- data.byte = value;
+- return i2c_smbus_access(file,I2C_SMBUS_WRITE,command,
+- I2C_SMBUS_BYTE_DATA, &data);
+-}
+-
+-static inline __s32 i2c_smbus_read_word_data(int file, __u8 command)
+-{
+- union i2c_smbus_data data;
|