patches/linux/2.6.11.3/160-linux-2.6.11-allow-gcc-4.0-i2c.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Sun Feb 17 22:08:06 2008 +0000 (2008-02-17)
changeset 431 8bde4c6ea47a
permissions -rw-r--r--
Robert P. J. DAY says:

apparently, the patchset for gcc 4.2.1 applies properly to the
source for gcc 4.2.2 and gcc 4.2.3. so, if you want, you can simply
add support for those last two just by augmenting menuconfig and
adding a couple symlinks for those two directories. seems like a
cheap way to add a couple new versions.
     1 Fixes
     2 
     3 In file included from fs/compat_ioctl.c:69,
     4                  from arch/ppc64/kernel/ioctl32.c:24:
     5 include/linux/i2c.h:58: error: array type has incomplete element type
     6 include/linux/i2c.h:197: error: array type has incomplete element type
     7 
     8 when compiling with gcc-4.0.
     9 
    10 --- linux-2.6.11.3/include/linux/i2c.h.old	2005-03-19 10:59:09.000000000 -0800
    11 +++ linux-2.6.11.3/include/linux/i2c.h	2005-03-19 11:01:37.000000000 -0800
    12 @@ -36,7 +36,22 @@
    13  
    14  /* --- General options ------------------------------------------------	*/
    15  
    16 -struct i2c_msg;
    17 +/*
    18 + * I2C Message - used for pure i2c transaction, also from /dev interface
    19 + */
    20 +struct i2c_msg {
    21 +	__u16 addr;	/* slave address			*/
    22 + 	__u16 flags;		
    23 +#define I2C_M_TEN	0x10	/* we have a ten bit chip address	*/
    24 +#define I2C_M_RD	0x01
    25 +#define I2C_M_NOSTART	0x4000
    26 +#define I2C_M_REV_DIR_ADDR	0x2000
    27 +#define I2C_M_IGNORE_NAK	0x1000
    28 +#define I2C_M_NO_RD_ACK		0x0800
    29 + 	__u16 len;		/* msg length				*/
    30 + 	__u8 *buf;		/* pointer to msg data			*/
    31 +};
    32 +
    33  struct i2c_algorithm;
    34  struct i2c_adapter;
    35  struct i2c_client;
    36 @@ -379,22 +394,6 @@
    37  /* Return 1 if adapter supports everything we need, 0 if not. */
    38  extern int i2c_check_functionality (struct i2c_adapter *adap, u32 func);
    39  
    40 -/*
    41 - * I2C Message - used for pure i2c transaction, also from /dev interface
    42 - */
    43 -struct i2c_msg {
    44 -	__u16 addr;	/* slave address			*/
    45 - 	__u16 flags;		
    46 -#define I2C_M_TEN	0x10	/* we have a ten bit chip address	*/
    47 -#define I2C_M_RD	0x01
    48 -#define I2C_M_NOSTART	0x4000
    49 -#define I2C_M_REV_DIR_ADDR	0x2000
    50 -#define I2C_M_IGNORE_NAK	0x1000
    51 -#define I2C_M_NO_RD_ACK		0x0800
    52 - 	__u16 len;		/* msg length				*/
    53 - 	__u8 *buf;		/* pointer to msg data			*/
    54 -};
    55 -
    56  /* To determine what functionality is present */
    57  
    58  #define I2C_FUNC_I2C			0x00000001