Hi Titusrathinaraj:
Thanks very much for your help!
I add code to board-da850-evm.c
But error still exist:
Linux video capture interface: v2.00
TW9910 probe ...
tw9910 1-0045: bus width error //In Version 2.6.37, this error is not exist!
TW9910 probe ok!
vpif_capture vpif_capture: Error registering v4l2 subdevice
Some code list is:
static struct i2c_board_info __initdata da850_evm_i2c_devices[] = {
{
I2C_BOARD_INFO("tw9910", 0x45),
};
/* I2C Video */
static struct i2c_board_info i2c_camera[] = {
{
I2C_BOARD_INFO(CAMERA_NAME, 0x45),
},
};
static struct tw9910_video_info tw9910_info = {
.buswidth = SOCAM_DATAWIDTH_8,
.mpout = TW9910_MPO_FIELD,
};
static struct soc_camera_link tw9910_link = {
.i2c_adapter_id = 0,
.bus_id = 1,
//.power = tw9910_power,
.power = NULL,
.board_info = &i2c_camera[0],
.module_name = CAMERA_NAME,
.priv = &tw9910_info,
};
static struct platform_device tw9910_camera[] = {
{
.name = "TW9910 for soc-camera",
.id = 1,
.dev = {
.platform_data = &tw9910_link,
},
},
};
static struct platform_device *tw9910_devices[] __initdata = {
&tw9910_camera[0],
};
static struct vpif_subdev_info da850_vpif_capture_sdev_info[] = {
#if defined(CONFIG_DA850_UI_CAMERA)
{
.name = "tw9910",
.board_info = {
I2C_BOARD_INFO("tw9910", 0x45),
.platform_data = &da850_evm_ui_expander_info, //Is it right?
},
.vpif_if = {
.if_type = VPIF_IF_RAW_BAYER,
.hd_pol = 0,
.vd_pol = 0,
.fid_pol = 0,
},
},
static __init void da850_evm_init(void)
{
....
i2c_register_board_info(1, da850_evm_i2c_devices,
ARRAY_SIZE(da850_evm_i2c_devices));
....
if (HAS_VPIF_CAPTURE) {
ret = davinci_cfg_reg_list(da850_vpif_capture_pins);
if (ret)
pr_warning("da850_evm_init: VPIF capture mux failed:"
"%d\n", ret);
//LiChangsheng add
platform_add_devices(tw9910_devices, ARRAY_SIZE(tw9910_devices));
ret = da850_register_vpif_capture(&da850_vpif_capture_config);
if (ret)
pr_warning("da850_evm_init: VPIF capture setup failed:"
"%d\n", ret);
}
....
}
So I had some question:
1 Does it need to add I2C_BOARD_INFO to da850_evm_i2c_devices? Because TW9910 device add by platform_add_devices:
static struct i2c_board_info __initdata da850_evm_i2c_devices[] = {
{
I2C_BOARD_INFO("tw9910", 0x45),
};
2 Does da850_register_vpif_capture need to call? Or what should I do to init some config to get CAMERA frame data?
3 What's type does tw9910's platform_data need?
da850_vpif_capture_sdev_info[] = {
....
.platform_data = &da850_evm_ui_expander_info, //Is it right?
....
}
Full board-da850-evm.c is:
(Please visit the site to view this file)
Thanks very much!