Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Updated change log for 2019.2


Table of Contents
maxLevel1

...

  • The driver is tested with YUY2, NV16, NV12, RGB, GRAY8, UYVY and BGR Gstreamer formats only.  
  • Stride and height align issue. Please check here


Kernel Configuration

The following config options should be enabled in order to build Xilinx Multi-Scaler driver

CONFIG_VIDEO_XILINX

CONFIG_VIDEO_DEV

...

CONFIG_VIDEO_XILINX_MULTISCALER


The driver is available at,
https://github.com/Xilinx/linux-xlnx/blob/master/drivers/media/platform/xilinx/xilinx-multi-scaler.c

Device Tree Binding

The device tree node will be automatically generated, if the core is configured in the HW design, using the Device Tree BSP.

Steps to generate device-tree is documented here,
http://www.wiki.xilinx.com/Build+Device+Tree+Blob

And a sample binding is shown below and the description of DT property is documented here


Code Block
themeMidnight
v_multi_scaler_1: v_multi_scaler@a0000000 {
          clock-names = "ap_clk";
          clocks = <&misc_clk_0>;
          compatible = "xlnx,v-multi-scaler-1.0", "xlnx,v-multi-scaler-v1.0";
          interrupt-names = "interrupt";
          interrupt-parent = <&gic>;
          interrupts = <0 89 4>;
          reg = <0x0 0xa0000000 0x0 0x20000>;
          reset-gpios = <&gpio 78 1>;
          xlnx,dma-addr-width = <0x20>;
          xlnx,max-chan = <8>;
          xlnx,max-height = <2160>;
          xlnx,max-width = <3840>;
          xlnx,num-taps = <12>;
          xlnx,pixels-per-clock = /bits/ 8 <2>;
          xlnx,vid-formats = "xrgb8888", "bgr888", "xbgr8888", "xbgr2101010", "uyvy", "y8", "y10", "vuy888", "xvuy8888", "yuvx2101010", "yuyv", "nv12", "nv16", "xv20", "xv15";
};                                

...

  1. Gstreamer plugins enumerate all the channel/video devices for each of gst command. So, there might be chances that starting all channels with different gst process at same time do not allow the actual process to open the device and the process dedicated for the device does not start. For example, if all channels are opened immediately in a script, all the gst process open and close all the devices for all the channels and if somehow gst process 1 opens channel 2 and at same time if process 2 open channel 2, the 2nd process do not get the channel 2 and returns, despite the process 1 do not require the channel 2 and close the channel 2 afterwards.  Adding sleep after every enumeration is required to make all applications work properly.   

Change Log

2019.2

  • Summary
    • No changes

2019.1

  • Summary:
    • Support VB2_USERPTR IO mode
    • Added support for Pixels per clock 
    • Add support for formats having contiguous buffers for two planes. (NV12, NV16, XV20, XV15)
    • Clock framework support
    • Hack support for stride and height alignment required for VCU decoder
  • Commits:
    • 144e268 v4l: xilinx: multi-scaler: Set channel parameters to default values
    • 54b31ac v4l: xilinx: multi-scaler: Fix precedence error
    • 1fa95a9 media: xilinx: multi-scaler: Support stride and height alignment
    • 0dce6af media: xilinx: multi-scaler: Add clock framework support 
    • f280f6a media: xilinx: multi-scaler: Add support for formats having contiguous buffers for two planes.
    • b30b1e media: xilinx: multi-scaler: Align width to pixels per clock
    • 68bbe2 media: xilinx: multi-scaler: Add extra padding bytes after each row of pixels
    • fc81159 media: xilinx: multi-scaler: Replace dev_info with dev_dbg if all jobs are not ready
    • 2e2ece media: xilinx: multi-scaler: support VB2_USERPTR IO mode

...

2018.3

  • Summary:
    • Add first version of driver.
  • Commits:
    • 484cdb2 platform: xilinx: Add mem to mem Multi-Scaler driver (XM2MSC)


Related Links