This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AM335x Display Shift

We are currently experiencing an issue where the display of our sign is shifted to the right. It seems to occur randomly, with a random number of pixels, for random durations. The shift has been between 4 to 16 pixels. It can be 30s or shorter and up to several hours. Eventually the sign recovers and begins displaying normally. During the issue the video being played back runs normally, it is just shifted off the display.

You can see in the above image that our display is shifted to the right by 9 pixels. Our application uses the DRM to allocate space for drawing on a panel 800x600. It should be drawing at the orgin, not shifted over. Our video signals are connected directly to our FPGA with which we drive LED tiles. We are running 24 bit color. We are currently using the kernel provided with SDK 8 release. This is kernel 3.14.26. 

We are running with kernel args drm.debug=14 in hopes that running the elevated output would allow us to see something. So far we have not noted any kernel messages or outputs from the drm debug in the dmesg output during the time that we see the shifted output.

We were able to capture video timings while the display was not shifted

We are also able to capture the video timing while the display was shifted

The following is information describing the two captures:

Here are two bitmaps that capture the video timing signal. The video timings never changed which means it was stable; H front porch, h sync time, h back porch, and other timing was consistently the same between good and bad video offset.  On the shifted display capture the first column video data is not in the right spot in respect to horizontal position. It occurs sometime. The good video signal has the data start at same time as the DE transition from low to high. The display offset capture has data start occurring several pixel clocks after DE transition from low to high which it could be 4 clocks or 8 clocks or 12 clocks or etc. Once it occurs may stay offset consistently for few a minutes to several hours and then recover back to the correct position. You can see on the good video capture the data is present right on the DE rising transition which has the red cursor line while the bad one has data several clocks after the red cursor

 Signal detail on the bitmap waveform

  • D0 – Pixel clock
  • D1 – VSYNC
  • D2 – HYSNC
  • D3 – DE
  • D4-D11 – 8 bit red data

Our panel settings are as follows:

panel {
		status = "okay";
		compatible = "ti,tilcdc,panel";
		pinctrl-names = "default";
		pinctrl-0 = <&nxp_hdmi_bonelt_pins>;
		panel-info {
			ac-bias           = <255>;
			ac-bias-intrpt    = <0>;
			dma-burst-sz      = <16>;
			bpp               = <32>;
			fdd               = <0x80>;
			sync-edge         = <0>;
			sync-ctrl         = <1>;
			raster-order      = <1>;
			fifo-th           = <0>;
		};
					
		display-timings {
			native-mode = <&timing0>;
			
			timing0: SVGA-800x600@60Hz {
			clock-frequency = <40000000>;
			hactive = <800>;
			hfront-porch = <40>;
			hsync-len = <128>;			
			hback-porch = <88>;
			vactive = <600>;			
			vfront-porch = <1>;
			vsync-len = <4>;
			vback-porch = <23>;			
			hsync-active = <0>;
			vsync-active = <0>;
			de-active = <1>;
			pixelclk-active = <0>;
			};
			
			timing1: SVGA-800x600@75Hz {
			clock-frequency = <49500000>;
			hactive = <800>;
			hfront-porch = <16>;
			hsync-len = <80>;			
			hback-porch = <160>;
			vactive = <600>;			
			vfront-porch = <1>;
			vsync-len = <3>;
			vback-porch = <21>;			
			hsync-active = <0>;
			vsync-active = <0>;
			de-active = <1>;
			pixelclk-active = <0>;
			};

			timing2: SXGA-800x600@85Hz {
			clock-frequency = <56250000>;
			hactive = <800>;
			hfront-porch = <32>;
			hsync-len = <64>;			
			hback-porch = <152>;
			vactive = <600>;			
			vfront-porch = <1>;			
			vsync-len = <3>;
			vback-porch = <27>;
			hsync-active = <0>;
			vsync-active = <0>;
			de-active = <1>;
			pixelclk-active = <0>;
			};
		
		}

Our pin muxxing is accomplished the following:

&am33xx_pinmux {
	nxp_hdmi_bonelt_pins: nxp_hdmi_bonelt_pins {
		pinctrl-single,pins = <
			0xa0 0x28 
			0xa4 0x28 
			0xa8 0x28 
			0xac 0x28 
			0xb0 0x28 
			0xb4 0x28 
			0xb8 0x28 
			0xbc 0x28 
			0xc0 0x28 
			0xc4 0x28 
			0xc8 0x28 
			0xcc 0x28 
			0xd0 0x28 
			0xd4 0x28 
			0xd8 0x28 
			0xdc 0x28 
			0x3c 0x01 
			0x38 0x01 
			0x34 0x01 
			0x30 0x01 
			0x2c 0x01 
			0x28 0x01 
			0x24 0x01 
			0x20 0x01 
			0xe0 0x28 
			0xe4 0x08 
			0xe8 0x08 
			0xec 0x08 
		>;
	};

The output of cat /proc/cmdline

console=ttyO0,115200n8 psplash=false rootflags=barrier=1,commit=1 consoleblank=0 root=/dev/mmcblk0p2 ro rootfstype=ext4 rootwait

The output of cat /proc/cpuinfo

processor	: 0
model name	: ARMv7 Processor rev 2 (v7l)
Features	: swp half thumb fastmult vfp edsp thumbee neon vfpv3 tls vfpd32 
CPU implementer	: 0x41
CPU architecture: 7
CPU variant	: 0x3
CPU part	: 0xc08
CPU revision	: 2

Hardware	: Generic AM33XX (Flattened Device Tree)
Revision	: 0000
Serial		: 0000000000000000

The output of fbset -i

mode "800x600"
    geometry 800 600 800 1800 32
    timings 0 0 0 0 0 0 0
    accel true
    rgba 8/16,8/8,8/0,8/24
endmode

Frame buffer device information:
    Name        : 
    Address     : 0x9e100000
    Size        : 5760000
    Type        : PACKED PIXELS
    Visual      : TRUECOLOR
    XPanStep    : 1
    YPanStep    : 1
    YWrapStep   : 0
    LineLength  : 3200
    Accelerator : No

The output of lsmod

Module                  Size  Used by
bufferclass_ti          5396  0 
omaplfb                11914  0 
musb_dsps               7287  0 
musb_hdrc              54294  1 musb_dsps
snd_soc_evm             5786  0 
pvrsrvkm              178684  2 bufferclass_ti,omaplfb
tilcdc                 27776  2 omaplfb
drm_kms_helper         40603  3 tilcdc
snd_soc_davinci_mcasp    12494  2 
at24                    5006  0 
snd_soc_tlv320aic3x    37026  1 
lm75                    4605  0 
gpio_pca953x            9166  8 
musb_am335x             1217  0 

Powervr.ini settings

[default]
WindowSystem=libpvrPVR2D_FRONTWSEGL.so
#WindowSystem=libpvrPVR2D_FLIPWSEGL.so

Output of cat /proc/pvr/version

Version SGX_DDK_Linux_CustomerTI sgxddk 1.10@2359475 (release) /home/adaptive-sdc/Graphics_SDK_5_01_01_02/GFX_Linux_KM
System Version String: SGX revision = 125

Output of cat /sys/class/graphics/fb0/rotate

0

Output of uname -a

Linux P1900-3-SSC 3.14.26-g07d13c6-dirty #24 Fri May 15 13:23:03 CDT 2015 armv7l GNU/Linux

Thank you in advance for any help you can provide.

Regards,

Matt Minga