Всем привет!
Ребят, кто-нибудь дружил отладочный борд Sabrelite с ADV7280-M? Имею проблему, в том что не создается файл устройства /dev/videoN, и как следствие не могу захватить видеопоток.
Имею комплект плат Sabrelite с процессором IMX6Q и ADV7280-M. ADV7280-M являет собой отладочный комплект для оцифровки аналового видео. SabreLite и ADV7280-M подключены через MIPI-CSI2 интерфейс.
Подключал согласно такой схеме
Управляется adv7280-M через драйвер, под названием adv7280_mipi_tvin. По коду драйвера понятно, что он обслуживает только i2c и по ней выполняет конфигурацию adv7280M.
Я загружаю модуль ядра mxc_v4l2_capture, который тянет за собой еще модули как зависимые. По идеи должен был появиться файл устройства в /dev/videoN. Появляется только два файла устройства /dev/video0, /dev/video1, но они будут и без подключения к ADV. Нового файла устройства, для adv7280-M не появляется.
root@linaro-alip:/home/bat# lsmod
Module                  Size  Used by
adv7280_mipi_tvin       3916  0 
mxc_v4l2_capture       22202  0 
ipu_bg_overlay_sdc      3885  1 mxc_v4l2_capture
ipu_still               1644  1 mxc_v4l2_capture
ipu_prp_enc             4586  1 mxc_v4l2_capture
ipu_csi_enc             2889  1 mxc_v4l2_capture
ipu_fg_overlay_sdc      4864  1 mxc_v4l2_capture
vivante                  947  0 
drm                   140255  1 vivante
Для того, что бы ядро понимало, какой адрес i2c обслeживается дрaйвером adv7280, и автоматически загрузило драйвер, пришлось редкатировать файл board-mx6_nitrogen6x.c. добавив немного кода, брал по аналогии с adv7180 и конфигурации для другого борда.
// без этой структуры при вызове метода драйвера adv7280_i2c_probe указатель на platform_data == NULL.
static struct fsl_mxc_tvin_platform_data adv7280_data = {
	.dvddio_reg	= NULL,
	.dvdd_reg	= NULL,
	.avdd_reg	= NULL,
	.pvdd_reg	= NULL,
	.pwdn		= NULL,
	.cvbs		= true,
	.io_init    = mx6q_mipi_csi1_io_init,
	/* csi slave reg address */
        // в коде драйвера адрес выставляется на 0x50(?), и используется в случае если он не определен в этой структуре. 
	.csi_tx_addr = 0x52,
};
static void mx6q_mipi_csi1_io_init(void)
{
	mxc_iomux_set_gpr_register(13, 3, 3, 1);
}
static struct mipi_csi2_platform_data mipi_csi2_pdata = {
	.ipu_id	 = 0,
	.csi_id = 0,
	.v_channel = 0,
	.lanes = 2,
	.dphy_clk = "mipi_pllref_clk",
	.pixel_clk = "emi_clk",
};
static struct i2c_board_info mxc_i2c1_board_info[] __initdata = {
	{
		I2C_BOARD_INFO("mxc_hdmi_i2c", 0x50),
	},
#ifdef CSI0_CAMERA
	{
		I2C_BOARD_INFO("ov5642", 0x3d),
		.platform_data = (void *)&ov564x_data,
	},
#endif
#ifdef MIPI_CAMERA
	{
		I2C_BOARD_INFO("ov5640_mipi", 0x3e),
		.platform_data = (void *)&ov5640_mipi_data,
	},
	// !!!!!!!!!!!!!!!
	{
		I2C_BOARD_INFO("adv7280", 0x21),
		.platform_data = (void *)&adv7280_data,
	},
#endif
};
adv7280_mipi_tvin отрабатывает по i2c, видно на осциллографе, никаких ошибок не демонстрирует (я повтыкал выводов через printk, все норм).
Куда копать не знаю. Да и опыта большого нет с ядром и железом.
При обращении к уже созданным файлам устройства /dev/video0 или /dev/video1, которые создаются и без подключения платы, в dmesg падает сообщение: mxc_v4l_open: Mxc Camera no sensor ipu0/csi0 mxc_v4l_open: Mxc Camera no sensor ipu1/csi1

