[펌] http://blog.naver.com/PostView.nhn?blogId=green187&logNo=110129376501


machine init시에 다음 함수를 추가한다.(테스트 당시 arch/arm/mach-s3c2440/mach-smdk2440.c에 추가함.)

static struct i2c_board_info i2c_devs0[]    __initdata = {
        {   I2C_BOARD_INFO("eeprom",0x53),},

         // I2C_BOARD_INFO 함수의 첫번째 파라메터는 device driver에서 사용할 i2c_device_id와 동일해야함, 두번째파라메터는 device address를 넣는다.
};

 static void __init smdk2440_machine_init(void)

{

    s3c24xx_fb_set_platdata(&smdk2440_fb_info);
    s3c_i2c0_set_platdata(NULL);
    i2c_register_board_info(0, i2c_devs0, ARRAY_SIZE(i2c_devs0));

    platform_add_devices(smdk2440_devices, ARRAY_SIZE(smdk2440_devices));
    smdk_machine_init();
}


i2c device driver에서는 다음 형식으로 소스를 작성한다.

#define DEVICE_NAME     "eeprom"
static const struct i2c_device_id eep_id[] = {
    {   DEVICE_NAME, 0 },
    {   }  
};

 

static struct i2c_driver eep_driver =
{
    .driver = {
        .name       =   DEVICE_NAME,
    }, 
    .id_table       =   eep_id,
    .probe          =   eep_probe,
    .remove         =   eep_remove,
};

eep_probe함수가 호출되고 , i2c_master_send / i2c_master_recv함수를 통해 I2C device에 접근 할 수 있다.

'Kernel & Uboot' 카테고리의 다른 글

linux logo 변경하기.  (0) 2012.10.08
u-boot home page  (0) 2012.08.17
Video for Linux Two API Specification  (0) 2012.05.29
sysfs 다루기  (0) 2011.11.15
S5PC100 FIMC와 S3C6410 FIMC와의 차이  (0) 2011.03.03

+ Recent posts