Hi guys~
I have a question about I2C_BOARD_INFO function. In the board_omap3evm.c file ,I register a I2C device info like below:
static struct i2c_board_info __initdata ts_i2c_boardinfo[] =
{
{
I2C_BOARD_INFO("device", 0x70>>1), //the device actual address is 0x70
},
};
The actual send address on the I2C BUS is 0x70.If i use I2C_BOARD_INFO("device", 0x70), the I2C BUS actual send address is 0x70*2.
But for the TWL4030 device,the device address is 0x48,in the board_omap3evm.c file ,it was register like this:
static struct i2c_board_info __initdata beagle_i2c1_boardinfo[] = {
{
I2C_BOARD_INFO("twl4030", 0x48), //why this address don't need right shift??
.flags = I2C_CLIENT_WAKE,
.irq = INT_34XX_SYS_NIRQ,
.platform_data = &beagle_twldata,
},
};
static struct i2c_board_info __initdata ts_i2c_boardinfo[] =
{
{
I2C_BOARD_INFO("device", 0x55>>1), //the device actual address is 0x55
},
};
When change the device address to 0x55,the actual send address is 0x54~~ I know ,when the device add is even,this method is OK,but odd don't.
Why ~~??
Please help me and give some light~ thanks!
Regards
Tommy