UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

cancel
Showing results for 
Search instead for 
Did you mean: 
Adventurer
Adventurer
198 Views
Registered: ‎09-05-2018

How to stop HDMI Tx_ss ?

Jump to solution

Hello Suport/ Community

We have developping a Solution derivate from TRD 2019.1 - base on VCU Audio

We have add a custom IP (Scaler VPSS) after the Mixer and before the HDMI Tx

such as this: 

Mixer -> Scaler -> HDMI Tx

We have derivate the code of the mixer(xlnx_mixer,c) to be able to add like vtc_bridge a scaler_bridge. All is good and at the initialization we set the parameters for the Scaler such as the resolution at input and at the output we set the HDMI TV/Monitor  prefered resolution.

This solution let us to adapt a stream of 4K (received from the network no HDMI input involved in this device) and play it to a FullHD TV

The solution works pretty well but the problem appear when we need to switch from a stream 4k at input to another resolution for example to 1080p. When changing the parameter input into the scaler, the stream is interrupt during the reconfiguration of the Scaler and the TxSS component lose the sync and an error appear on the kernel

 

 

[ 4001.686772] ------------[ cut here ]------------
[ 4001.686776] driver forgot to call drm_crtc_vblank_off()
[ 4001.686820] WARNING: CPU: 2 PID: 4736 at drivers/gpu/drm/drm_atomic_helper.c:1000 drm_atomic_helper_commit_modeset_disables+0x3b0/0x3b8
[ 4001.686822] Modules linked in: al5e(O) al5d(O) allegro(O) xlnx_vcu xlnx_vcu_clk xilinx_hdmi_tx(O) xilinx_hdmi_rx(O) dp159(O) xlnx_vcu_core xilinx_vphy(O) mali(O) uio_pdrv_genirq
[ 4001.686850] CPU: 2 PID: 4736 Comm: modetest Tainted: G           O      4.19.0 #1
[ 4001.686852] Hardware name: xlnx,zynqmp (DT)
[ 4001.686856] pstate: 40000005 (nZcv daif -PAN -UAO)
[ 4001.686861] pc : drm_atomic_helper_commit_modeset_disables+0x3b0/0x3b8
[ 4001.686865] lr : drm_atomic_helper_commit_modeset_disables+0x3b0/0x3b8
[ 4001.686867] sp : ffffff800ee93a70
[ 4001.686869] x29: ffffff800ee93a70 x28: ffffffc0115d7800 
[ 4001.686874] x27: ffffffc00f522400 x26: 0000000000000000 
[ 4001.686879] x25: 0000000000000038 x24: ffffff800923605b 
[ 4001.686883] x23: ffffff8008dd1688 x22: 0000000000000000 
[ 4001.686888] x21: ffffffc00ec42800 x20: ffffffc01375f890 
[ 4001.686893] x19: ffffffc00e3e2e00 x18: 00000000fffffff0 
[ 4001.686897] x17: 0000000000000001 x16: 0000000000000007 
[ 4001.686902] x15: ffffff80091ca758 x14: ffffff8009282a10 
[ 4001.686906] x13: 0000000000000000 x12: ffffff8009282000 
[ 4001.686911] x11: ffffff80091ca000 x10: ffffff8009282068 
[ 4001.686915] x9 : 0000000000000000 x8 : 0000000000000000 
[ 4001.686920] x7 : ffffff8009282000 x6 : 00000000000001be 
[ 4001.686924] x5 : 0000000000000001 x4 : ffffffc07fe95978 
[ 4001.686929] x3 : ffffffc07fe95978 x2 : 0000000000000007 
[ 4001.686933] x1 : 27800919312c6800 x0 : 0000000000000000 
[ 4001.686937] Call trace:
[ 4001.686942]  drm_atomic_helper_commit_modeset_disables+0x3b0/0x3b8
[ 4001.686946]  drm_atomic_helper_commit_tail+0x20/0x78
[ 4001.686950]  commit_tail+0x74/0x78
[ 4001.686953]  drm_atomic_helper_commit+0xc8/0x140
[ 4001.686959]  drm_atomic_commit+0x48/0x58
[ 4001.686963]  drm_atomic_connector_commit_dpms+0xe8/0x110
[ 4001.686968]  drm_mode_obj_set_property_ioctl+0x194/0x2d8
[ 4001.686972]  drm_ioctl_kernel+0xb4/0x100
[ 4001.686976]  drm_ioctl+0x204/0x3a8
[ 4001.686981]  do_vfs_ioctl+0xb8/0x8a0
[ 4001.686985]  ksys_ioctl+0x44/0x90
[ 4001.686989]  __arm64_sys_ioctl+0x1c/0x28
[ 4001.686994]  el0_svc_common+0x84/0xd8
[ 4001.686997]  el0_svc_handler+0x68/0x80
[ 4001.687001]  el0_svc+0x8/0xc
[ 4001.687004] ---[ end trace ddabcfccb15cb334 ]---
[ 4001.703953] call vpss.set_input(1920,1080,0x100a)
[ 4001.704023] call vpss.set_output(1920,1080,0x100a)
[ 4012.016496] [drm:drm_atomic_helper_wait_for_dependencies] *ERROR* [CRTC:34:crtc-0] flip_done timed out
[ 4022.256525] [drm:drm_atomic_helper_wait_for_dependencies] *ERROR* [CONNECTOR:36:HDMI-A-1] flip_done timed out
[ 4032.496556] [drm:drm_atomic_helper_wait_for_dependencies] *ERROR* [PLANE:32:plane-2] flip_done timed out
[ 4042.736584] [drm:drm_atomic_helper_wait_for_dependencies] *ERROR* [CRTC:34:crtc-0] flip_done timed out
[ 4052.976631] [drm:drm_atomic_helper_wait_for_dependencies] *ERROR* [CONNECTOR:36:HDMI-A-1] flip_done timed out
[ 4063.216643] [drm:drm_atomic_helper_wait_for_dependencies] *ERROR* [PLANE:32:plane-2] flip_done timed out
root@KDS-DEC10-1:~# 

 

 

I try differents approach but with no sucess in my opinion the TX_ss block must be stop before changing the Scaler configuration 

I tryied to set DPMS to off at CRTC like this

 

modetest  -D   a0090000.v_mix  -w 36:DPMS:3
do_config_scaler_bridge 1920 1080 1920 1080
modetest  -D   a0090000.v_mix  -w 36:DPMS:0

but it seems that there is no code that handle DPMS off

see https://github.com/Xilinx/hdmi-modules/blob/master/hdmi/xilinx_drm_hdmi.c line 951

 

/*
 * DRM encoder functions
 */
static void xlnx_drm_hdmi_encoder_dpms(struct drm_encoder *encoder, int dpms)
{
	struct xlnx_drm_hdmi *xhdmi = encoder_to_hdmi(encoder);
	hdmi_mutex_lock(&xhdmi->hdmi_mutex);
	dev_dbg(xhdmi->dev,"xilinx_drm_hdmi_dpms(dpms = %d)\n", dpms);

	if (xhdmi->dpms == dpms) {
		goto done;
	}

	xhdmi->dpms = dpms;

	switch (dpms) {
	case DRM_MODE_DPMS_ON:
		/* power-up */
		goto done;
	default:
		/* power-down */
		goto done;
	}
done:
	hdmi_mutex_unlock(&xhdmi->hdmi_mutex);
}

Thanks in advance....

Tags (2)
0 Kudos
1 Solution

Accepted Solutions
Adventurer
Adventurer
47 Views
Registered: ‎09-05-2018

Re: How to stop HDMI Tx_ss ?

Jump to solution
My Question is more about how to stop HDMI Tx_ss after it has been first configured
I have test the Wiki and it's doesnt worked for me ... seems to need another code not availlable in SDK 2019.1
0 Kudos
5 Replies
Adventurer
Adventurer
162 Views
Registered: ‎09-05-2018

Re: How to stop HDMI Tx_ss ?

Jump to solution

Another point to the problem (can be linked) when we run this command

modetest  -D   a0090000.v_mix  -w 36:DPMS:3

the TV Screen goes down about one second and then return to be active. Why ??? 

If the user wants to disable the output during more that this time how he could do?

 

0 Kudos
Xilinx Employee
Xilinx Employee
108 Views
Registered: ‎08-01-2007

Re: How to stop HDMI Tx_ss ?

Jump to solution

So we have DRM Drivers for the VPSS Scaler.  We just posted a Wiki page that explains how to use these.  If you follow this, you should be able to change the resolution on the HDMI Tx.

I recommend you use this rather than a modified version of the Video Mixer driver.

 

Chris
Video Design Hub | Embedded SW Support

---------------------------------------------------------------------------
Don’t forget to Reply, Kudo, and Accept as Solution.
---------------------------------------------------------------------------
0 Kudos
Moderator
Moderator
72 Views
Registered: ‎11-21-2018

Re: How to stop HDMI Tx_ss ?

Jump to solution

Hi @ericzerbib 

 

If your question is answered or your issue is solved, please kindly mark the response which helped as solution (click on "Accept as solution" button below the reply)

 

If this is not solved/answered, please reply in the topic giving more information on your current status.

 

Thanks and Regards,

Aoife
Product Application Engineer - Xilinx Technical Support EMEA
**~ Don't forget to reply, give kudos, and accept as solution.~**
0 Kudos
Adventurer
Adventurer
48 Views
Registered: ‎09-05-2018

Re: How to stop HDMI Tx_ss ?

Jump to solution
My Question is more about how to stop HDMI Tx_ss after it has been first configured
I have test the Wiki and it's doesnt worked for me ... seems to need another code not availlable in SDK 2019.1
0 Kudos
Adventurer
Adventurer
46 Views
Registered: ‎09-05-2018

Re: How to stop HDMI Tx_ss ?

Jump to solution
If you need to close the case close it ...
0 Kudos