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>
This commit is contained in:
parent
e39cd81c44
commit
ecf5f077c8
|
@ -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;
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue