This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

OMAP board I2C register questions~

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