주요 구조체 * soc_camera_device - soc_camera의 구현부의 _probe에서 채움 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 */ }, };