diff options
| author | Timur Tabi <timur@freescale.com> | 2008-12-03 11:28:30 -0600 | 
|---|---|---|
| committer | Wolfgang Denk <wd@denx.de> | 2008-12-15 23:46:21 +0100 | 
| commit | ecf5f077c8e77454f532eaac3e3afb7cfc48c62d (patch) | |
| tree | 31ff670aa674bc9e44c6dd4baeea0ad5a4855fe5 | |
| parent | e39cd81c44740d7355d277ed3d38536cbe1e003d (diff) | |
| download | olio-uboot-2014.01-ecf5f077c8e77454f532eaac3e3afb7cfc48c62d.tar.xz olio-uboot-2014.01-ecf5f077c8e77454f532eaac3e3afb7cfc48c62d.zip | |
i2c: merge all i2c_reg_read() and i2c_reg_write() into inline functions
All implementations of the functions i2c_reg_read() and
i2c_reg_write() are identical. We can save space and simplify the
code by converting these functions into inlines and putting them in
i2c.h.
Signed-off-by: Timur Tabi <timur@freescale.com>
Acked-By: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
| -rw-r--r-- | cpu/arm920t/at91rm9200/i2c.c | 14 | ||||
| -rw-r--r-- | cpu/arm926ejs/davinci/i2c.c | 17 | ||||
| -rw-r--r-- | cpu/blackfin/i2c.c | 16 | ||||
| -rw-r--r-- | cpu/mpc512x/i2c.c | 17 | ||||
| -rw-r--r-- | cpu/mpc5xxx/i2c.c | 16 | ||||
| -rw-r--r-- | cpu/mpc8220/i2c.c | 16 | ||||
| -rw-r--r-- | cpu/mpc824x/drivers/i2c/i2c.c | 14 | ||||
| -rw-r--r-- | cpu/mpc8260/i2c.c | 16 | ||||
| -rw-r--r-- | cpu/mpc8xx/i2c.c | 33 | ||||
| -rw-r--r-- | cpu/ppc4xx/i2c.c | 20 | ||||
| -rw-r--r-- | cpu/pxa/i2c.c | 15 | ||||
| -rw-r--r-- | drivers/i2c/fsl_i2c.c | 16 | ||||
| -rw-r--r-- | drivers/i2c/soft_i2c.c | 19 | ||||
| -rw-r--r-- | include/i2c.h | 62 | 
14 files changed, 60 insertions, 231 deletions
| diff --git a/cpu/arm920t/at91rm9200/i2c.c b/cpu/arm920t/at91rm9200/i2c.c index b68c5dd82..9fd72d397 100644 --- a/cpu/arm920t/at91rm9200/i2c.c +++ b/cpu/arm920t/at91rm9200/i2c.c @@ -189,20 +189,6 @@ i2c_init(int speed, int slaveaddr)  	return;  } -uchar i2c_reg_read(uchar i2c_addr, uchar reg) -{ -	unsigned char buf; - -	i2c_read(i2c_addr, reg, 1, &buf, 1); - -	return(buf); -} - -void i2c_reg_write(uchar i2c_addr, uchar reg, uchar val) -{ -	i2c_write(i2c_addr, reg, 1, &val, 1); -} -  int i2c_set_bus_speed(unsigned int speed)  {  	return -1; diff --git a/cpu/arm926ejs/davinci/i2c.c b/cpu/arm926ejs/davinci/i2c.c index d220a4c72..3ba20ef18 100644 --- a/cpu/arm926ejs/davinci/i2c.c +++ b/cpu/arm926ejs/davinci/i2c.c @@ -331,21 +331,4 @@ int i2c_write(u_int8_t chip, u_int32_t addr, int alen, u_int8_t *buf, int len)  	return(0);  } - -u_int8_t i2c_reg_read(u_int8_t chip, u_int8_t reg) -{ -	u_int8_t	tmp; - -	i2c_read(chip, reg, 1, &tmp, 1); -	return(tmp); -} - - -void i2c_reg_write(u_int8_t chip, u_int8_t reg, u_int8_t val) -{ -	u_int8_t	tmp; - -	i2c_write(chip, reg, 1, &tmp, 1); -} -  #endif /* CONFIG_DRIVER_DAVINCI_I2C */ diff --git a/cpu/blackfin/i2c.c b/cpu/blackfin/i2c.c index 60f03d47a..2a3e2238c 100644 --- a/cpu/blackfin/i2c.c +++ b/cpu/blackfin/i2c.c @@ -425,20 +425,4 @@ int i2c_write(uchar chip, uint addr, int alen, uchar * buffer, int len)  } -uchar i2c_reg_read(uchar chip, uchar reg) -{ -	uchar buf; - -	PRINTD("i2c_reg_read: chip=0x%02x, reg=0x%02x\n", chip, reg); -	i2c_read(chip, reg, 0, &buf, 1); -	return (buf); -} - -void i2c_reg_write(uchar chip, uchar reg, uchar val) -{ -	PRINTD("i2c_reg_write: chip=0x%02x, reg=0x%02x, val=0x%02x\n", chip, -			reg, val); -	i2c_write(chip, reg, 0, &val, 1); -} -  #endif /* CONFIG_HARD_I2C */ diff --git a/cpu/mpc512x/i2c.c b/cpu/mpc512x/i2c.c index 77a6f0dc4..4f6bc8640 100644 --- a/cpu/mpc512x/i2c.c +++ b/cpu/mpc512x/i2c.c @@ -382,23 +382,6 @@ Done:  	return ret;  } -uchar i2c_reg_read (uchar chip, uchar reg) -{ -	uchar buf; - -	i2c_read (chip, reg, 1, &buf, 1); - -	return buf; -} - -void i2c_reg_write (uchar chip, uchar reg, uchar val) -{ -	i2c_write (chip, reg, 1, &val, 1); - -	return; -} - -  int i2c_set_bus_num (unsigned int bus)  {  	if (bus >= I2C_BUS_CNT) { diff --git a/cpu/mpc5xxx/i2c.c b/cpu/mpc5xxx/i2c.c index 4d16bbe77..7d76274ad 100644 --- a/cpu/mpc5xxx/i2c.c +++ b/cpu/mpc5xxx/i2c.c @@ -380,20 +380,4 @@ Done:  	return ret;  } -uchar i2c_reg_read(uchar chip, uchar reg) -{ -	uchar buf; - -	i2c_read(chip, reg, 1, &buf, 1); - -	return buf; -} - -void i2c_reg_write(uchar chip, uchar reg, uchar val) -{ -	i2c_write(chip, reg, 1, &val, 1); - -	return; -} -  #endif	/* CONFIG_HARD_I2C */ diff --git a/cpu/mpc8220/i2c.c b/cpu/mpc8220/i2c.c index d67936dc3..76ecdf11e 100644 --- a/cpu/mpc8220/i2c.c +++ b/cpu/mpc8220/i2c.c @@ -387,20 +387,4 @@ int i2c_write (uchar chip, uint addr, int alen, uchar * buf, int len)  	return ret;  } -uchar i2c_reg_read (uchar chip, uchar reg) -{ -	uchar buf; - -	i2c_read (chip, reg, 1, &buf, 1); - -	return buf; -} - -void i2c_reg_write (uchar chip, uchar reg, uchar val) -{ -	i2c_write (chip, reg, 1, &val, 1); - -	return; -} -  #endif /* CONFIG_HARD_I2C */ diff --git a/cpu/mpc824x/drivers/i2c/i2c.c b/cpu/mpc824x/drivers/i2c/i2c.c index 854345e14..637ae4c1b 100644 --- a/cpu/mpc824x/drivers/i2c/i2c.c +++ b/cpu/mpc824x/drivers/i2c/i2c.c @@ -267,18 +267,4 @@ int i2c_probe (uchar chip)  	return i2c_read (chip, 0, 1, (uchar *) &tmp, 1);  } -uchar i2c_reg_read (uchar i2c_addr, uchar reg) -{ -	uchar buf[1]; - -	i2c_read (i2c_addr, reg, 1, buf, 1); - -	return (buf[0]); -} - -void i2c_reg_write (uchar i2c_addr, uchar reg, uchar val) -{ -	i2c_write (i2c_addr, reg, 1, &val, 1); -} -  #endif /* CONFIG_HARD_I2C */ diff --git a/cpu/mpc8260/i2c.c b/cpu/mpc8260/i2c.c index c12463994..35cf8f143 100644 --- a/cpu/mpc8260/i2c.c +++ b/cpu/mpc8260/i2c.c @@ -753,22 +753,6 @@ i2c_write(uchar chip, uint addr, int alen, uchar *buffer, int len)  	return 0;  } -uchar -i2c_reg_read(uchar chip, uchar reg) -{ -	uchar buf; - -	i2c_read(chip, reg, 1, &buf, 1); - -	return (buf); -} - -void -i2c_reg_write(uchar chip, uchar reg, uchar val) -{ -	i2c_write(chip, reg, 1, &val, 1); -} -  #if defined(CONFIG_I2C_MULTI_BUS)  /*   * Functions for multiple I2C bus handling diff --git a/cpu/mpc8xx/i2c.c b/cpu/mpc8xx/i2c.c index 29c7c71bb..338cababe 100644 --- a/cpu/mpc8xx/i2c.c +++ b/cpu/mpc8xx/i2c.c @@ -42,19 +42,6 @@ DECLARE_GLOBAL_DATA_PTR;  /* define to enable debug messages */  #undef	DEBUG_I2C -/*----------------------------------------------------------------------- - * Set default values - */ -#ifndef	CONFIG_SYS_I2C_SPEED -#define	CONFIG_SYS_I2C_SPEED	50000 -#endif - -#ifndef	CONFIG_SYS_I2C_SLAVE -#define	CONFIG_SYS_I2C_SLAVE	0xFE -#endif -/*----------------------------------------------------------------------- - */ -  /* tx/rx timeout (we need the i2c early, so we don't use get_timer()) */  #define TOUT_LOOP 1000000 @@ -717,24 +704,4 @@ int i2c_write(uchar chip, uint addr, int alen, uchar *buffer, int len)  	return 0;  } -uchar -i2c_reg_read(uchar i2c_addr, uchar reg) -{ -	uchar buf; - -	i2c_init(CONFIG_SYS_I2C_SPEED, CONFIG_SYS_I2C_SLAVE); - -	i2c_read(i2c_addr, reg, 1, &buf, 1); - -	return (buf); -} - -void -i2c_reg_write(uchar i2c_addr, uchar reg, uchar val) -{ -	i2c_init(CONFIG_SYS_I2C_SPEED, CONFIG_SYS_I2C_SLAVE); - -	i2c_write(i2c_addr, reg, 1, &val, 1); -} -  #endif	/* CONFIG_HARD_I2C */ diff --git a/cpu/ppc4xx/i2c.c b/cpu/ppc4xx/i2c.c index 9073ee240..9d416ca5e 100644 --- a/cpu/ppc4xx/i2c.c +++ b/cpu/ppc4xx/i2c.c @@ -419,26 +419,6 @@ int i2c_write(uchar chip, uint addr, int alen, uchar * buffer, int len)  	return (i2c_transfer(0, chip<<1, &xaddr[4-alen], alen, buffer, len ) != 0);  } -/*----------------------------------------------------------------------- - * Read a register - */ -uchar i2c_reg_read(uchar i2c_addr, uchar reg) -{ -	uchar buf; - -	i2c_read(i2c_addr, reg, 1, &buf, 1); - -	return (buf); -} - -/*----------------------------------------------------------------------- - * Write a register - */ -void i2c_reg_write(uchar i2c_addr, uchar reg, uchar val) -{ -	i2c_write(i2c_addr, reg, 1, &val, 1); -} -  #if defined(CONFIG_I2C_MULTI_BUS)  /*   * Functions for multiple I2C bus handling diff --git a/cpu/pxa/i2c.c b/cpu/pxa/i2c.c index 08042be1c..6b72ba13a 100644 --- a/cpu/pxa/i2c.c +++ b/cpu/pxa/i2c.c @@ -455,19 +455,4 @@ int i2c_write(uchar chip, uint addr, int alen, uchar *buffer, int len)  } -uchar i2c_reg_read (uchar chip, uchar reg) -{ -	uchar buf; - -	PRINTD(("i2c_reg_read(chip=0x%02x, reg=0x%02x)\n",chip,reg)); -	i2c_read(chip, reg, 1, &buf, 1); -	return (buf); -} - -void  i2c_reg_write(uchar chip, uchar reg, uchar val) -{ -	PRINTD(("i2c_reg_write(chip=0x%02x, reg=0x%02x, val=0x%02x)\n",chip,reg,val)); -	i2c_write(chip, reg, 1, &val, 1); -} -  #endif	/* CONFIG_HARD_I2C */ diff --git a/drivers/i2c/fsl_i2c.c b/drivers/i2c/fsl_i2c.c index 3b5c06ba6..ce646fd7e 100644 --- a/drivers/i2c/fsl_i2c.c +++ b/drivers/i2c/fsl_i2c.c @@ -367,22 +367,6 @@ i2c_probe(uchar chip)  	return i2c_read(chip, 0, 0, NULL, 0);  } -uchar -i2c_reg_read(uchar i2c_addr, uchar reg) -{ -	uchar buf[1]; - -	i2c_read(i2c_addr, reg, 1, buf, 1); - -	return buf[0]; -} - -void -i2c_reg_write(uchar i2c_addr, uchar reg, uchar val) -{ -	i2c_write(i2c_addr, reg, 1, &val, 1); -} -  int i2c_set_bus_num(unsigned int bus)  {  #ifdef CONFIG_SYS_I2C2_OFFSET diff --git a/drivers/i2c/soft_i2c.c b/drivers/i2c/soft_i2c.c index d2a51426e..f12dedf89 100644 --- a/drivers/i2c/soft_i2c.c +++ b/drivers/i2c/soft_i2c.c @@ -435,22 +435,3 @@ int  i2c_write(uchar chip, uint addr, int alen, uchar *buffer, int len)  	return(failures);  } -/*----------------------------------------------------------------------- - * Read a register - */ -uchar i2c_reg_read(uchar i2c_addr, uchar reg) -{ -	uchar buf; - -	i2c_read(i2c_addr, reg, 1, &buf, 1); - -	return(buf); -} - -/*----------------------------------------------------------------------- - * Write a register - */ -void i2c_reg_write(uchar i2c_addr, uchar reg, uchar val) -{ -	i2c_write(i2c_addr, reg, 1, &val, 1); -} diff --git a/include/i2c.h b/include/i2c.h index 8d6f86742..fad2d5716 100644 --- a/include/i2c.h +++ b/include/i2c.h @@ -76,6 +76,20 @@  #  define I2C_SOFT_DECLARATIONS  # endif  #endif + +#ifdef CONFIG_8xx +/* Set default values for the I2C bus speed and slave address on 8xx. In the + * future, we'll define these in all 8xx board config files. + */ +#ifndef	CONFIG_SYS_I2C_SPEED +#define	CONFIG_SYS_I2C_SPEED	50000 +#endif + +#ifndef	CONFIG_SYS_I2C_SLAVE +#define	CONFIG_SYS_I2C_SLAVE	0xFE +#endif +#endif +  /*   * Initialization, must be called once on start up, may be called   * repeatedly to change the speed and slave addresses. @@ -132,8 +146,52 @@ int i2c_write(uchar chip, uint addr, int alen, uchar *buffer, int len);  /*   * Utility routines to read/write registers.   */ -uchar i2c_reg_read (uchar chip, uchar reg); -void  i2c_reg_write(uchar chip, uchar reg, uchar val); +static inline u8 i2c_reg_read(u8 addr, u8 reg) +{ +	u8 buf; + +#ifdef CONFIG_8xx +	/* MPC8xx needs this.  Maybe one day we can get rid of it. */ +	i2c_init(CONFIG_SYS_I2C_SPEED, CONFIG_SYS_I2C_SLAVE); +#endif + +#ifdef DEBUG +	printf("%s: addr=0x%02x, reg=0x%02x\n", __func__, addr, reg); +#endif + +#ifdef CONFIG_BLACKFIN +	/* This ifdef will become unneccessary in a future version of the +	 * blackfin I2C driver. +	 */ +	i2c_read(addr, reg, 0, &buf, 1); +#else +	i2c_read(addr, reg, 1, &buf, 1); +#endif + +	return buf; +} + +static inline void i2c_reg_write(u8 addr, u8 reg, u8 val) +{ +#ifdef CONFIG_8xx +	/* MPC8xx needs this.  Maybe one day we can get rid of it. */ +	i2c_init(CONFIG_SYS_I2C_SPEED, CONFIG_SYS_I2C_SLAVE); +#endif + +#ifdef DEBUG +	printf("%s: addr=0x%02x, reg=0x%02x, val=0x%02x\n", +	       __func__, addr, reg, val); +#endif + +#ifdef CONFIG_BLACKFIN +	/* This ifdef will become unneccessary in a future version of the +	 * blackfin I2C driver. +	 */ +	i2c_write(addr, reg, 0, &val, 1); +#else +	i2c_write(addr, reg, 1, &val, 1); +#endif +}  /*   * Functions for setting the current I2C bus and its speed |