From 50573c910d91957f4f9b6e5cba980949d70f75a5 Mon Sep 17 00:00:00 2001 From: Frodo Looijaard Date: Wed, 13 Jan 1999 20:25:21 +0000 Subject: [PATCH] More i2c-dev fixes * Made some smbus.h symbols visible in non-kernel mode * Some i2c-dev.h fixes git-svn-id: http://lm-sensors.org/svn/lm-sensors/trunk@164 7894878c-1315-0410-8ee3-d5d059ff63e0 --- kernel/include/i2c-dev.h | 36 ++++++++++++++++++--------------- kernel/include/smbus.h | 43 ++++++++++++++++++++-------------------- src/i2c-dev.h | 36 ++++++++++++++++++--------------- src/smbus.h | 43 ++++++++++++++++++++-------------------- 4 files changed, 84 insertions(+), 74 deletions(-) diff --git a/kernel/include/i2c-dev.h b/kernel/include/i2c-dev.h index 0b3e3c35..cd35f7fe 100644 --- a/kernel/include/i2c-dev.h +++ b/kernel/include/i2c-dev.h @@ -29,6 +29,8 @@ #include #endif /* def LM_SENSORS */ +#include + /* Some IOCTL commands are defined in */ /* Note: 10-bit addresses are NOT supported! */ @@ -37,20 +39,19 @@ /* This is the structure as used in the I2C_SMBUS ioctl call */ struct i2c_smbus_data { char read_write; - u8 command; + __u8 command; int size; union smbus_data *data; }; #ifndef __KERNEL__ -#include +#include -extern inline s32 i2c_smbus_access(int file, char read_write, u8 command, - int size, union smbus_data *data) +extern inline __s32 i2c_smbus_access(int file, char read_write, __u8 command, + int size, union smbus_data *data) { struct i2c_smbus_data args; - int res; args.read_write = read_write; args.command = command; @@ -60,12 +61,12 @@ extern inline s32 i2c_smbus_access(int file, char read_write, u8 command, } -extern inline s32 i2c_smbus_write_quick(int file, u8 value) +extern inline __s32 i2c_smbus_write_quick(int file, __u8 value) { return i2c_smbus_access(file,value,0,SMBUS_QUICK,NULL); } -extern inline s32 i2c_smbus_read_byte(int file) +extern inline __s32 i2c_smbus_read_byte(int file) { union smbus_data data; if (i2c_smbus_access(file,SMBUS_READ,0,SMBUS_BYTE,&data)) @@ -74,12 +75,12 @@ extern inline s32 i2c_smbus_read_byte(int file) return 0x0FF & data.byte; } -extern inline s32 i2c_smbus_write_byte(int file, u8 value) +extern inline __s32 i2c_smbus_write_byte(int file, __u8 value) { return i2c_smbus_access(file,SMBUS_WRITE,value, SMBUS_BYTE,NULL); } -extern inline s32 i2c_smbus_read_byte_data(int file, u8 command) +extern inline __s32 i2c_smbus_read_byte_data(int file, __u8 command) { union smbus_data data; if (i2c_smbus_access(file,SMBUS_READ,command,SMBUS_BYTE_DATA,&data)) @@ -88,14 +89,15 @@ extern inline s32 i2c_smbus_read_byte_data(int file, u8 command) return 0x0FF & data.byte; } -extern inline s32 i2c_smbus_write_byte_data(int file, u8 command, u8 value) +extern inline __s32 i2c_smbus_write_byte_data(int file, __u8 command, + __u8 value) { union smbus_data data; data.byte = value; return i2c_smbus_access(file,SMBUS_WRITE,command,SMBUS_BYTE_DATA,&data); } -extern inline s32 i2c_smbus_read_word_data(int file, u8 command) +extern inline __s32 i2c_smbus_read_word_data(int file, __u8 command) { union smbus_data data; if (i2c_smbus_access(file,SMBUS_READ,command,SMBUS_WORD_DATA,&data)) @@ -104,14 +106,15 @@ extern inline s32 i2c_smbus_read_word_data(int file, u8 command) return 0x0FFFF & data.word; } -extern inline s32 i2c_smbus_write_word_data(int file, u8 command, u16 value) +extern inline __s32 i2c_smbus_write_word_data(int file, __u8 command, + __u16 value) { union smbus_data data; data.word = value; return i2c_smbus_access(file,SMBUS_WRITE,command,SMBUS_WORD_DATA, &data); } -extern inline s32 i2c_smbus_process_call(int file, u8 command, u16 value) +extern inline __s32 i2c_smbus_process_call(int file, __u8 command, __u16 value) { union smbus_data data; data.word = value; @@ -123,7 +126,8 @@ extern inline s32 i2c_smbus_process_call(int file, u8 command, u16 value) /* Returns the number of read bytes */ -extern inline s32 i2c_smbus_read_block_data(int file, u8 command, u8 *values) +extern inline __s32 i2c_smbus_read_block_data(int file, __u8 command, + __u8 *values) { union smbus_data data; int i; @@ -136,8 +140,8 @@ extern inline s32 i2c_smbus_read_block_data(int file, u8 command, u8 *values) } } -extern inline s32 i2c_smbus_write_block_data(int file, u8 command, u8 length, - u8 *values) +extern inline __s32 i2c_smbus_write_block_data(int file, __u8 command, + __u8 length, __u8 *values) { union smbus_data data; int i; diff --git a/kernel/include/smbus.h b/kernel/include/smbus.h index 86bbd96b..e3f7b1dc 100644 --- a/kernel/include/smbus.h +++ b/kernel/include/smbus.h @@ -21,14 +21,34 @@ #ifndef SENSORS_SMBUS_H #define SENSORS_SMBUS_H -#ifdef __KERNEL__ - /* This file must interface with Simon Vogl's i2c driver. Version 19981006 is OK, earlier versions are not; later versions will probably give problems too. */ #include +/* This union is used within smbus_access routines */ +union smbus_data { + __u8 byte; + __u16 word; + __u8 block[32]; +}; + +/* smbus_access read or write markers */ +#define SMBUS_READ 1 +#define SMBUS_WRITE 0 + +/* SMBus transaction types (size parameter in the above functions) + Note: these no longer correspond to the (arbitrary) PIIX4 internal codes! */ +#define SMBUS_QUICK 0 +#define SMBUS_BYTE 1 +#define SMBUS_BYTE_DATA 2 +#define SMBUS_WORD_DATA 3 +#define SMBUS_PROC_CALL 4 +#define SMBUS_BLOCK_DATA 5 + +#ifdef __KERNEL__ + /* SPINLOCK is defined in i2c.h. */ #ifdef SPINLOCK #include @@ -136,25 +156,6 @@ struct smbus_adapter { #define i2c_is_smbus_adapter(adapptr) \ ((adapptr)->algo->id == ALGO_SMBUS) -/* This union is used within smbus_access routines */ -union smbus_data { - u8 byte; - u16 word; - u8 block[32]; -}; - -/* smbus_access read or write markers */ -#define SMBUS_READ 1 -#define SMBUS_WRITE 0 - -/* SMBus transaction types (size parameter in the above functions) - Note: these no longer correspond to the (arbitrary) PIIX4 internal codes! */ -#define SMBUS_QUICK 0 -#define SMBUS_BYTE 1 -#define SMBUS_BYTE_DATA 2 -#define SMBUS_WORD_DATA 3 -#define SMBUS_PROC_CALL 4 -#define SMBUS_BLOCK_DATA 5 /* Declare an algorithm structure. All SMBus derived adapters should use this algorithm! */ diff --git a/src/i2c-dev.h b/src/i2c-dev.h index 0b3e3c35..cd35f7fe 100644 --- a/src/i2c-dev.h +++ b/src/i2c-dev.h @@ -29,6 +29,8 @@ #include #endif /* def LM_SENSORS */ +#include + /* Some IOCTL commands are defined in */ /* Note: 10-bit addresses are NOT supported! */ @@ -37,20 +39,19 @@ /* This is the structure as used in the I2C_SMBUS ioctl call */ struct i2c_smbus_data { char read_write; - u8 command; + __u8 command; int size; union smbus_data *data; }; #ifndef __KERNEL__ -#include +#include -extern inline s32 i2c_smbus_access(int file, char read_write, u8 command, - int size, union smbus_data *data) +extern inline __s32 i2c_smbus_access(int file, char read_write, __u8 command, + int size, union smbus_data *data) { struct i2c_smbus_data args; - int res; args.read_write = read_write; args.command = command; @@ -60,12 +61,12 @@ extern inline s32 i2c_smbus_access(int file, char read_write, u8 command, } -extern inline s32 i2c_smbus_write_quick(int file, u8 value) +extern inline __s32 i2c_smbus_write_quick(int file, __u8 value) { return i2c_smbus_access(file,value,0,SMBUS_QUICK,NULL); } -extern inline s32 i2c_smbus_read_byte(int file) +extern inline __s32 i2c_smbus_read_byte(int file) { union smbus_data data; if (i2c_smbus_access(file,SMBUS_READ,0,SMBUS_BYTE,&data)) @@ -74,12 +75,12 @@ extern inline s32 i2c_smbus_read_byte(int file) return 0x0FF & data.byte; } -extern inline s32 i2c_smbus_write_byte(int file, u8 value) +extern inline __s32 i2c_smbus_write_byte(int file, __u8 value) { return i2c_smbus_access(file,SMBUS_WRITE,value, SMBUS_BYTE,NULL); } -extern inline s32 i2c_smbus_read_byte_data(int file, u8 command) +extern inline __s32 i2c_smbus_read_byte_data(int file, __u8 command) { union smbus_data data; if (i2c_smbus_access(file,SMBUS_READ,command,SMBUS_BYTE_DATA,&data)) @@ -88,14 +89,15 @@ extern inline s32 i2c_smbus_read_byte_data(int file, u8 command) return 0x0FF & data.byte; } -extern inline s32 i2c_smbus_write_byte_data(int file, u8 command, u8 value) +extern inline __s32 i2c_smbus_write_byte_data(int file, __u8 command, + __u8 value) { union smbus_data data; data.byte = value; return i2c_smbus_access(file,SMBUS_WRITE,command,SMBUS_BYTE_DATA,&data); } -extern inline s32 i2c_smbus_read_word_data(int file, u8 command) +extern inline __s32 i2c_smbus_read_word_data(int file, __u8 command) { union smbus_data data; if (i2c_smbus_access(file,SMBUS_READ,command,SMBUS_WORD_DATA,&data)) @@ -104,14 +106,15 @@ extern inline s32 i2c_smbus_read_word_data(int file, u8 command) return 0x0FFFF & data.word; } -extern inline s32 i2c_smbus_write_word_data(int file, u8 command, u16 value) +extern inline __s32 i2c_smbus_write_word_data(int file, __u8 command, + __u16 value) { union smbus_data data; data.word = value; return i2c_smbus_access(file,SMBUS_WRITE,command,SMBUS_WORD_DATA, &data); } -extern inline s32 i2c_smbus_process_call(int file, u8 command, u16 value) +extern inline __s32 i2c_smbus_process_call(int file, __u8 command, __u16 value) { union smbus_data data; data.word = value; @@ -123,7 +126,8 @@ extern inline s32 i2c_smbus_process_call(int file, u8 command, u16 value) /* Returns the number of read bytes */ -extern inline s32 i2c_smbus_read_block_data(int file, u8 command, u8 *values) +extern inline __s32 i2c_smbus_read_block_data(int file, __u8 command, + __u8 *values) { union smbus_data data; int i; @@ -136,8 +140,8 @@ extern inline s32 i2c_smbus_read_block_data(int file, u8 command, u8 *values) } } -extern inline s32 i2c_smbus_write_block_data(int file, u8 command, u8 length, - u8 *values) +extern inline __s32 i2c_smbus_write_block_data(int file, __u8 command, + __u8 length, __u8 *values) { union smbus_data data; int i; diff --git a/src/smbus.h b/src/smbus.h index 86bbd96b..e3f7b1dc 100644 --- a/src/smbus.h +++ b/src/smbus.h @@ -21,14 +21,34 @@ #ifndef SENSORS_SMBUS_H #define SENSORS_SMBUS_H -#ifdef __KERNEL__ - /* This file must interface with Simon Vogl's i2c driver. Version 19981006 is OK, earlier versions are not; later versions will probably give problems too. */ #include +/* This union is used within smbus_access routines */ +union smbus_data { + __u8 byte; + __u16 word; + __u8 block[32]; +}; + +/* smbus_access read or write markers */ +#define SMBUS_READ 1 +#define SMBUS_WRITE 0 + +/* SMBus transaction types (size parameter in the above functions) + Note: these no longer correspond to the (arbitrary) PIIX4 internal codes! */ +#define SMBUS_QUICK 0 +#define SMBUS_BYTE 1 +#define SMBUS_BYTE_DATA 2 +#define SMBUS_WORD_DATA 3 +#define SMBUS_PROC_CALL 4 +#define SMBUS_BLOCK_DATA 5 + +#ifdef __KERNEL__ + /* SPINLOCK is defined in i2c.h. */ #ifdef SPINLOCK #include @@ -136,25 +156,6 @@ struct smbus_adapter { #define i2c_is_smbus_adapter(adapptr) \ ((adapptr)->algo->id == ALGO_SMBUS) -/* This union is used within smbus_access routines */ -union smbus_data { - u8 byte; - u16 word; - u8 block[32]; -}; - -/* smbus_access read or write markers */ -#define SMBUS_READ 1 -#define SMBUS_WRITE 0 - -/* SMBus transaction types (size parameter in the above functions) - Note: these no longer correspond to the (arbitrary) PIIX4 internal codes! */ -#define SMBUS_QUICK 0 -#define SMBUS_BYTE 1 -#define SMBUS_BYTE_DATA 2 -#define SMBUS_WORD_DATA 3 -#define SMBUS_PROC_CALL 4 -#define SMBUS_BLOCK_DATA 5 /* Declare an algorithm structure. All SMBus derived adapters should use this algorithm! */