Failed to register i2c client错误之解决

Failed to register i2c client错误

 

 

最近最韦东山的I2C实验,用的是3.4.2内核

# insmod at24cxx_dev.ko出错提示

i2c i2c-0: Failed to register i2c clientat24c08 at 0x50 (-16)

 

打log跟踪,是i2c_new_device函数中i2c_check_addr_busy后打出来的,发现将地址改为0x60可以正常加载,看来是有人占用了0x50这个地址

 

make menuconfig发现I2C EEPROMSfrom most vendors是自动勾选的。

Device Drivers--->Miscdevices--->EEPROM support-->


将arch/arm/mach-s3c24xx的Kconfig中将select  EEPROM_AT24注释掉即可。

重新make menuconfig看一下:

Failed to register i2c client错误之解决_第1张图片

 

发现还是不行0x50地址还是被占用,发现arch/arm/mach-s3c24xx/mach-mini2440.c

static struct i2c_board_infomini2440_i2c_devs[] __initdata = {

       {

               I2C_BOARD_INFO("24c08", 0x50),

                .platform_data = &at24c08,

       },

};

原来是它使用这个地址。看来是因为我用的机器ID是7cf所以会出这个问题machid=7cf。

在函数mini2440_init中

将此行注释掉i2c_register_board_info(0,mini2440_i2c_devs,ARRAY_SIZE(mini2440_i2c_devs));

问题解决。

 

 

 

你可能感兴趣的:(c,struct)