imx: ventana: use hdmiinfmt env var to override HDMI capture format

The HDMI receiver used on the GW54xx and GW551x has a 16bit video data bus
interconnect between it and the IMX6 CSI. This can be used in two different
modes, each having advantages and disadvantages. Allow the hdmiinfmt env
var to specify which format is desired (yuv422smp or yuv422bt656).

Signed-off-by: Tim Harvey <tharvey@gateworks.com>
This commit is contained in:
Tim Harvey 2015-04-08 12:55:01 -07:00 committed by Stefano Babic
parent e9fc6d137b
commit a2559f113c

View File

@ -1580,6 +1580,42 @@ int misc_init_r(void)
#if defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP)
static int ft_sethdmiinfmt(void *blob, char *mode)
{
int off;
if (!mode)
return -EINVAL;
off = fdt_node_offset_by_compatible(blob, -1, "nxp,tda1997x");
if (off < 0)
return off;
if (0 == strcasecmp(mode, "yuv422bt656")) {
u8 cfg[] = { 0x00, 0x00, 0x00, 0x82, 0x81, 0x00,
0x00, 0x00, 0x00 };
mode = "422_ccir";
fdt_setprop(blob, off, "vidout_fmt", mode, strlen(mode) + 1);
fdt_setprop_u32(blob, off, "vidout_trc", 1);
fdt_setprop_u32(blob, off, "vidout_blc", 1);
fdt_setprop(blob, off, "vidout_portcfg", cfg, sizeof(cfg));
printf(" set HDMI input mode to %s\n", mode);
} else if (0 == strcasecmp(mode, "yuv422smp")) {
u8 cfg[] = { 0x00, 0x00, 0x00, 0x88, 0x87, 0x00,
0x82, 0x81, 0x00 };
mode = "422_smp";
fdt_setprop(blob, off, "vidout_fmt", mode, strlen(mode) + 1);
fdt_setprop_u32(blob, off, "vidout_trc", 0);
fdt_setprop_u32(blob, off, "vidout_blc", 0);
fdt_setprop(blob, off, "vidout_portcfg", cfg, sizeof(cfg));
printf(" set HDMI input mode to %s\n", mode);
} else {
return -EINVAL;
}
return 0;
}
/*
* called prior to booting kernel or by 'fdt boardsetup' command
*
@ -1640,6 +1676,9 @@ int ft_board_setup(void *blob, bd_t *bd)
fdt_setprop(blob, 0, "board", info->model,
strlen((const char *)info->model) + 1);
/* set desired digital video capture format */
ft_sethdmiinfmt(blob, getenv("hdmiinfmt"));
/*
* disable serial2 node for GW54xx for compatibility with older
* 3.10.x kernel that improperly had this node enabled in the DT