Greetings Freescale community.
I am working on an Android target which is based on a i.MX53 Sabre platform. It is running Android 10.3.2. I am currently trying to get the TVout functionality to work, as the target is a media platform.
I have been referencing mostly the i.MX_Android_R10.3.2_User_Guide.html, section 4.4.1 TVout for the boot parameters. I have adjusted these parameters to be as follows:
Kernel command line: init=/init console=ttymxc1,115200 androidboot.console=ttymxc1 androidboot.model=MC-2000 androidboot.revision=1.03 androidboot.serialno=1390000000000028 video=mxcdi0fb:RGB666,CIO2-WVGA ldb=di0 di0_primary pmem=32M,64M fbmem=10M gpu_nommu gpu_memory=64M video=mxcdi1fb:YUV444,TV-NTSC tve ethaddr=00:17:1a:f0:01:2f boot_sbmr=0x10042940 boot_mode=normal
The screen resolution defined for CIO2-WVGA is defined in the mx53_cio2.c platform file, as seen below:
static struct fb_videomode video_modes[] = {
{
"CIO2-WVGA", 60, 800, 480, 37037, 40, 40, 5, 5, 20, 10,
FB_SYNC_CLK_LAT_FALL,
FB_VMODE_NONINTERLACED,
0,},
{
/* 800x480 @ 57 Hz , pixel clk @ 27MHz */
"CLAA-WVGA", 57, 800, 480, 37037, 40, 60, 10, 10, 20, 10,
FB_SYNC_CLK_LAT_FALL,
FB_VMODE_NONINTERLACED,
0,},
{
/* 1600x1200 @ 60 Hz 162M pixel clk*/
"UXGA", 60, 1600, 1200, 6172,
304, 64,
1, 46,
192, 3,
FB_SYNC_HOR_HIGH_ACT|FB_SYNC_VERT_HIGH_ACT,
FB_VMODE_NONINTERLACED,
0,},
};
I can confirm this via the following:
# cd /sys/class/graphics/fb0
# cat modes
D:800x480p-60
From the User Guide, I then perform the following shell instructions:
# cd /sys/class/graphics/fb1
# echo D:720x480i-60 > mode
# echo 0 >blank
# echo 1 >blank
# setprop rw.VIDEO_TVOUT_DISPLAY 1
At this point I should be able to use the Gallery app to play a video, which should have output to the TV, which it does not, although it is being displayed to the main LCD display. I have also tried to force the unblanking via the following:
# echo 0 >blank
This still has no affect. Should Android go ahead and unblank the display? What would keep it from doing so?
I know it is not "officially" supported, I made a temporary change to the 'tve.c' driver to obtain its input from the color bar generator, and not the Video data bus, and the color bars do show up on the TV, confirming the correct hardware impedance.
I have been able to obtain the following register dump during playback from the tve and ipu:
tve_com_conf_reg 0x106009
tve_cd_cont_reg 0x0
tve_int_cont_reg 0x7
tve_tst_mode_reg 0x0
tve_tvdac_cont_reg0 0x0
tve_tvdac_cont_reg1 0x0
tve_tvdac_cont_reg2 0x0
IPU_CONF = 0x000006E0
IDMAC_CONF = 0x0000002F
IDMAC_CHA_EN1 = 0x18800000
IDMAC_CHA_EN2 = 0x00000000
IDMAC_CHA_PRI1 = 0x18800001
IDMAC_CHA_PRI2 = 0x00000000
IDMAC_BAND_EN1 = 0x00000000
IDMAC_BAND_EN2 = 0x00000000
IPU_CHA_DB_MODE_SEL0 = 0x08000000
IPU_CHA_DB_MODE_SEL1 = 0x00000000
IPU_CHA_TRB_MODE_SEL0 = 0x10800000
IPU_CHA_TRB_MODE_SEL1 = 0x00000000
DMFC_WR_CHAN = 0x00000090
DMFC_WR_CHAN_DEF = 0x202020F6
DMFC_DP_CHAN = 0x00009694
DMFC_DP_CHAN_DEF = 0x2020F6F6
DMFC_IC_CTRL = 0x00000002
IPU_FS_PROC_FLOW1 = 0x00000000
IPU_FS_PROC_FLOW2 = 0x00000000
IPU_FS_PROC_FLOW3 = 0x00000000
IPU_FS_DISP_FLOW1 = 0x00000000
IPU VDI Regs = 0x00000000
IPU CM Regs = 0x000006E4
IPU IC Regs = 0x00000000
IPU IDMAC Regs = 0x0000002F
IPU DP Regs = 0x0000030D
IPU DC Regs = 0xFFFF0000
IPU DMFC Regs = 0x00200000
IPU DI0 Regs = 0x06300006
IPU DI1 Regs = 0x10300096
IPU SMFC Regs = 0x00000000
IPU CSI0 Regs = 0x00000000
IPU CSI1 Regs = 0x00000000
IPU CPMem = 0x00000000
IPU TPMem = 0x00000000
IPU DC Template Mem = 0x00018808
IPU Display Region 1 Mem = 0x00000000
I am a bit concerned that the IDMAC_CHA_EN2 register seems to be un-initialized, although from the IPU_CONF, both display interfaces seem to be enabled.
I have looked at the Linux_20201112_20patch_bundle.tar.gz kernel patches, and this version of Android Linux seems to have all of these patches applied.
This is where it stands at this point. If anyone has any ideas or suggestions, please let me know.