cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
yasin.kagan
Contributor
Contributor
311 Views
Registered: ‎02-06-2019

Custom PL Display on device tree

Jump to solution

Hi, everyone. 

I'm using zcu104 which has an ultrascale+ device with VCU and Vivado, Petalinux 2018.3 environments.

I need to implement a custom display on a Linux environment to use with GStreamer. (For displaying decoded VCU video). I don't want to use HDMI or DP. I need to drive my custom screen panel. 

For that purpose, I wrote a custom display IP block that works without any configuration. It uses fixed resolution and fixed pixel format. Just displays incoming AXI VIDEO STREAM data... and tested with TPG on bare-metal application. 

Now I want to stream decoded video data PS to PL and display it with GStreamer such as this command: 

 

gst-launch-1.0 filesrc location="input-file.mp4" ! h264parse ! omxh264dec ! kmssink bus-id=fd4a0000.zynqmp-display

(I need GStreamer for using VCU)

Gstreamer has v4l2sink, kmssink, and fbdevsink elements. If I connect my custom IP as one of these, the problem will be solved. 

But when I try to get frames with "frame_read_buffer" or "axi_vdma", drivers of these IP require additional endpoints and drivers. But my IP not has any configurable registers hence no need for any driver [at least I suppose]

When I searching about that, I have faced with writing DRM/KMS, v4l2 drivers but no experience with this kind of works. Some people made changes on Xilinx drivers to accomplish that (link).

Xilinx provides its own display drives only on DRM/KMS framework. Is that any reason for that? Am I have to use that framework? Or is there any simple method such as using fbdev?

Thanks in advance.

Y.K.T.

0 Kudos
Reply
1 Solution

Accepted Solutions
hokim
Scholar
Scholar
218 Views
Registered: ‎10-21-2015

Hi

You have to write custom DRM driver for your ip

It is not easy to write drm driver 

First of all, you should understand both linux DRM framework and xilinx DRM framework at https://github.com/Xilinx/linux-xlnx/tree/master/drivers/gpu/drm/xlnx

Then, you should write drm encoder module(eg. digilent-drm-hdmi.c) and combine it with xilinx drm components(xlnx_pl_disp.c)

This is my example for custom drm driver

https://forums.xilinx.com/t5/Video-and-Audio/Bug-report-on-DRM-CRTC-DMA-engine-driver/td-p/1141378

I recommend you consult to linux driver expert 

 

View solution in original post

2 Replies
yasin.kagan
Contributor
Contributor
230 Views
Registered: ‎02-06-2019

The topic still active.. even if 2 week passed.

0 Kudos
Reply
hokim
Scholar
Scholar
219 Views
Registered: ‎10-21-2015

Hi

You have to write custom DRM driver for your ip

It is not easy to write drm driver 

First of all, you should understand both linux DRM framework and xilinx DRM framework at https://github.com/Xilinx/linux-xlnx/tree/master/drivers/gpu/drm/xlnx

Then, you should write drm encoder module(eg. digilent-drm-hdmi.c) and combine it with xilinx drm components(xlnx_pl_disp.c)

This is my example for custom drm driver

https://forums.xilinx.com/t5/Video-and-Audio/Bug-report-on-DRM-CRTC-DMA-engine-driver/td-p/1141378

I recommend you consult to linux driver expert 

 

View solution in original post