Versions Compared


  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Fixed images


  1. The SDI source connected to SDI Rx port and should be running.
  2. The driver should have been loaded successfully during kernel bootup.
  3. Running media-ctl should show resolution.
    1. E.g. “media-ctl –d /dev/media0 –p”
  4. Always check if the lock has occurred or not.
  5. If the lock is occurred, is the current mode (SD, HD, 3GA, 3GB, 6G, 12GI or 12GF) same as source?
  6. What is the ST352 payload in RX_ST352_DATA_DS1 register? Decode it to get resolution and size and color format. 
    • Refer to driver code how to decode.
  7. Compact GT Reset - There are 2 signals connected to compact_gt which need to be toggled to have a clean reset of the GT.
    1. The SI5324_LOL should be toggled to high and then made low. (Default low)

    2. The fmc_init_done line should be toggled to low and then high (Default high).

    3. image2018-5-25_10-28-9.pngImage Removedimage2018-5-25_11-46-23.pngImage RemovedImage AddedImage Added


Q1 - While running yavta for resolution AxB with our source box, we see "Unable to start streaming: Invalid argument (22)." Why is this happening?

Ans - One possible reason is that the resolution that the SDI source is generating and what is being passed to yavta don't match.

Run media-ctl to find out the resolution currently being identified by the SDI Rx IP driver.

Read your SDI source documentation to know how to manipulate the resolutions.

Q2 - The frame rate reported by yavta is significantly lesser than expected.

Ans - Depending on your design and system load, there may be a case where there may be frame drops.

But double check the ST352 payload in SDI Rx to verify if the SDI source connected is correctly generating the required frame rate (fps).

You may have to refer to PG205 to decode the RX FAMILY to get the resolution and RX Frame Rate (in case of zero payload in 2017.3/4)

Family Detection

rx_t_familyTransport Video FormatActive Pixels
0000SMPTE ST 2751920 x 1080
0001SMPTE ST 2961280 x 720
0010SMPTE ST 2048-22048x1080
0011SMPTE ST 2951920 x 1080
1000NTSC720 x 486
1001PAL720 x 576

Frame Rate

rx_t_rateFrame Rate
001023.98 Hz
001124 Hz
010047.95 Hz
010125 Hz
011029.97 Hz
011130 Hz
100048 Hz
100150 Hz
101059.94 Hz
101160 Hz

Q3 - After boot up, even though there is valid SDI source connected, the IP is unable to detect the source and video is not locked. Why could this happen?

Ans - Check if the IP's registers are not default values after kernel boots up. E.g. MODULE_CTRL register should be 0x3F30. If the registers are in default state, it may mean the clocking to the IP is not correct. Please check device tree to set the correct clock source.

Boards Supported

Driver has been tested on the following boards
  1. ZCU106 1.0

Known Issues

  • AR68766 - SMPTE UHD-SDI RX Subsystem - Release Notes and Known Issues for the Vivado 2017.3 tool and later versions

Change log


  • Summary
    • Fixed driver based on comments received while upstreaming like enumerating media bus formats.
    • Fixed interrupt handling for combined lock/unlock interrupts and correctly clearing processed interrupts
  • Commits
    • 3de732f v4l: xilinx: sdirxss: Uninitialize the subsystem correctly

    • 23b13a3 v4l: xilinx: sdirxss: Check for 10bpc in dt

    • df18806 v4l: xilinx: sdirxss: Call xsdirx_streamflow_control() directly

    • 1df1d9f v4l: xilinx: sdirxss: Make functions static inline

    • 75b9c47 v4l: xilinx: sdirxss: Fix code formatting and comments

    • 4414443 v4l: xilinx: sdirxss: Correct handling of combined lock/unlock interrupts

    • 784427f v4l: xilinx: sdirxss: Clear processed interrupts only

    • 1c98050 v4l: xilinx: sdirxss: Add support to enumerate media bus formats

    • b1b4c50 v4l: xilinx: sdirxss: Replace single element array with variable

    • f3bd12b v4l: xilinx: sdirxss: Use clk_bulk_* apis

    • b996133 v4l: xilinx: sdirxss: Make structures constant