주요 구조체
soc_camera는 i2c_driver의 일종으로 취급. 예:
static struct i2c_driver mt9m001_i2c_driver = { .driver = { .name = "mt9m001", }, .probe = mt9m001_probe, .remove = mt9m001_remove, .id_table = mt9m001_id, };
icl은 arch/arm/mach-pxa/보드이름.c 에서 정의/구현됨 예. pcm990-baseboard.c march-rfidc100.c ???
static struct soc_camera_link iclink = { .bus_id = 0, /* Must match with the camera ID above */ .query_bus_param = pcm990_camera_query_bus_param, .set_bus_param = pcm990_camera_set_bus_param, .free_bus = pcm990_camera_free_bus, };
이게 i2c의 platform_data로 묶여 들어감.
/* Board I2C devices. */ static struct i2c_board_info __initdata pcm990_i2c_devices[] = { { /* Must initialize before the camera(s) */ I2C_BOARD_INFO("pca9536", 0x41), .platform_data = &pca9536_data, }, { I2C_BOARD_INFO("mt9v022", 0x48), .platform_data = &iclink, /* With extender */ }, { I2C_BOARD_INFO("mt9m001", 0x5d), .platform_data = &iclink, /* With extender */ }, };