From: Heiko Schocher Date: Fri, 17 Oct 2008 11:06:18 +0200 Subject: [U-Boot] [POWERPC v2] mgsuvd: fix compiler warning when using soft_i2c driver Message-ID: <48F8558A.4080902@denx.de> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Signed-off-by: Heiko Schocher --- This Patch replaces the Patch: http://lists.denx.de/pipermail/u-boot/2008-October/041890.html [U-Boot] [POWERPC] mgsuvd: fix compiler warning when using soft_i2c driver board/keymile/common/common.c | 3 ++- board/keymile/mgsuvd/mgsuvd.c | 12 +----------- drivers/i2c/soft_i2c.c | 4 ++++ include/configs/mgsuvd.h | 26 +++++++++++++++++--------- 4 files changed, 24 insertions(+), 21 deletions(-) diff --git a/board/keymile/common/common.c b/board/keymile/common/common.c index 61276d2..08cb1ef 100644 --- a/board/keymile/common/common.c +++ b/board/keymile/common/common.c @@ -34,6 +34,7 @@ #if defined(CONFIG_HARD_I2C) || defined(CONFIG_SOFT_I2C) #include #endif +#include extern int i2c_soft_read_pin (void); @@ -400,7 +401,7 @@ static void set_scl (int state) static int get_sda (void) { - return i2c_soft_read_pin (); + return I2C_READ; } static int get_scl (void) diff --git a/board/keymile/mgsuvd/mgsuvd.c b/board/keymile/mgsuvd/mgsuvd.c index ec13746..ba240b8 100644 --- a/board/keymile/mgsuvd/mgsuvd.c +++ b/board/keymile/mgsuvd/mgsuvd.c @@ -22,6 +22,7 @@ */ #include #include +#include #if defined(CONFIG_OF_BOARD_SETUP) && defined(CONFIG_OF_LIBFDT) #include @@ -226,14 +227,3 @@ void ft_board_setup(void *blob, bd_t *bd) ft_blob_update (blob, bd); } #endif /* defined(CONFIG_OF_BOARD_SETUP) && defined(CONFIG_OF_LIBFDT) */ - -int i2c_soft_read_pin (void) -{ - int val; - - *(unsigned short *)(I2C_BASE_DIR) &= ~SDA_CONF; - udelay(1); - val = *(unsigned char *)(I2C_BASE_PORT); - - return ((val & SDA_BIT) == SDA_BIT); -} diff --git a/drivers/i2c/soft_i2c.c b/drivers/i2c/soft_i2c.c index 508d3d7..ebe60e2 100644 --- a/drivers/i2c/soft_i2c.c +++ b/drivers/i2c/soft_i2c.c @@ -28,6 +28,7 @@ #include #ifdef CONFIG_MPC8260 /* only valid for MPC8260 */ #include +#include #endif #ifdef CONFIG_AT91RM9200 /* need this for the at91rm9200 */ #include @@ -39,6 +40,9 @@ #ifdef CONFIG_LPC2292 #include #endif +#ifdef CONFIG_MPC866 /* only valid for MPC866 */ +#include +#endif #include /* #define DEBUG_I2C */ diff --git a/include/configs/mgsuvd.h b/include/configs/mgsuvd.h index 7a80dad..32b636f 100644 --- a/include/configs/mgsuvd.h +++ b/include/configs/mgsuvd.h @@ -346,8 +346,10 @@ /* * Software (bit-bang) I2C driver configuration */ -#define I2C_BASE_DIR (CONFIG_SYS_PIGGY_BASE + 0x04) -#define I2C_BASE_PORT (CONFIG_SYS_PIGGY_BASE + 0x09) +#define I2C_BASE_DIR (volatile unsigned short __iomem *) \ + (CONFIG_SYS_PIGGY_BASE + 0x04) +#define I2C_BASE_PORT (volatile unsigned char __iomem *) \ + (CONFIG_SYS_PIGGY_BASE + 0x09) #define SDA_BIT 0x40 #define SCL_BIT 0x80 @@ -356,20 +358,26 @@ #define I2C_ACTIVE do {} while (0) #define I2C_TRISTATE do {} while (0) -#define I2C_READ i2c_soft_read_pin () +#define I2C_READ ((in_8(I2C_BASE_PORT) & SDA_BIT) == SDA_BIT) #define I2C_SDA(bit) if(bit) { \ - *(unsigned short *)(I2C_BASE_DIR) &= ~SDA_CONF; \ + out_be16(I2C_BASE_DIR, \ + in_be16(I2C_BASE_DIR) & ~SDA_CONF); \ } \ else { \ - *(unsigned char *)(I2C_BASE_PORT) &= ~SDA_BIT; \ - *(unsigned short *)(I2C_BASE_DIR) |= SDA_CONF; \ + out_8(I2C_BASE_PORT, \ + in_8(I2C_BASE_PORT) & ~SDA_BIT); \ + out_be16(I2C_BASE_DIR, \ + in_be16(I2C_BASE_DIR) | SDA_CONF); \ } #define I2C_SCL(bit) if(bit) { \ - *(unsigned short *)(I2C_BASE_DIR) &= ~SCL_CONF; \ + out_be16(I2C_BASE_DIR, \ + in_be16(I2C_BASE_DIR) & ~SCL_CONF); \ } \ else { \ - *(unsigned char *)(I2C_BASE_PORT) &= ~SCL_BIT; \ - *(unsigned short *)(I2C_BASE_DIR) |= SCL_CONF; \ + out_8(I2C_BASE_PORT, \ + in_8(I2C_BASE_PORT) & ~SCL_BIT); \ + out_be16(I2C_BASE_DIR, \ + in_be16(I2C_BASE_DIR) | SCL_CONF); \ } #define I2C_DELAY udelay(50) /* 1/4 I2C clock duration */ -- 1.5.6.1 -- DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany