diff options
| -rw-r--r-- | include/i2c.h | 32 | 
1 files changed, 23 insertions, 9 deletions
| diff --git a/include/i2c.h b/include/i2c.h index 8ceb4c852..ee31034c7 100644 --- a/include/i2c.h +++ b/include/i2c.h @@ -46,16 +46,16 @@   */  #define I2C_RXTX_LEN	128	/* maximum tx/rx buffer length */ -#if defined(CONFIG_I2C_MULTI_BUS) -#if !defined(CONFIG_SYS_MAX_I2C_BUS) -#define CONFIG_SYS_MAX_I2C_BUS		2 -#endif -#define I2C_GET_BUS()		i2c_get_bus_num() -#define I2C_SET_BUS(a)		i2c_set_bus_num(a) +#ifdef	CONFIG_I2C_MULTI_BUS +#define	MAX_I2C_BUS			2 +#define	I2C_MULTI_BUS			1  #else -#define CONFIG_SYS_MAX_I2C_BUS		1 -#define I2C_GET_BUS()		0 -#define I2C_SET_BUS(a) +#define	MAX_I2C_BUS			1 +#define	I2C_MULTI_BUS			0 +#endif + +#if !defined(CONFIG_SYS_MAX_I2C_BUS) +#define CONFIG_SYS_MAX_I2C_BUS		MAX_I2C_BUS  #endif  /* define the I2C bus number for RTC and DTT if not already done */ @@ -236,4 +236,18 @@ int i2c_set_bus_speed(unsigned int);  unsigned int i2c_get_bus_speed(void); +/* NOTE: These two functions MUST be always_inline to avoid code growth! */ +static inline unsigned int I2C_GET_BUS(void) __attribute__((always_inline)); +static inline unsigned int I2C_GET_BUS(void) +{ +	return I2C_MULTI_BUS ? i2c_get_bus_num() : 0; +} + +static inline void I2C_SET_BUS(unsigned int bus) __attribute__((always_inline)); +static inline void I2C_SET_BUS(unsigned int bus) +{ +	if (I2C_MULTI_BUS) +		i2c_set_bus_num(bus); +} +  #endif	/* _I2C_H_ */ |