[펌] 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 |