AnsweredAssumed Answered

i.MX53 TVE Not Working Android 10.3.2

Question asked by Daryl Jarman on Jan 16, 2013
Latest reply on Jan 24, 2013 by Daryl Jarman

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.

 

 

 

 

 

Outcomes