Table of Contents
...
- The SDI source connected to SDI Rx port and should be running.
- The driver should have been loaded successfully during kernel bootup.
- Running media-ctl should show resolution.
E.g. “media-ctl –d /dev/media0 –p”
- Always check if the lock has occurred or not.
- If the lock is occurred, is the current mode (SD, HD, 3GA, 3GB, 6G, 12GI or 12GF) same as source?
- 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.
- Compact GT Reset - There are 2 signals connected to compact_gt which need to be toggled to have a clean reset of the GT.
The SI5324_LOL should be toggled to high and then made low. (Default low)
The fmc_init_done line should be toggled to low and then high (Default high).
FAQ
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_family | Transport Video Format | Active Pixels |
---|---|---|
0000 | SMPTE ST 275 | 1920 x 1080 |
0001 | SMPTE ST 296 | 1280 x 720 |
0010 | SMPTE ST 2048-2 | 2048x1080 |
0011 | SMPTE ST 295 | 1920 x 1080 |
1000 | NTSC | 720 x 486 |
1001 | PAL | 720 x 576 |
1111 | Unknown | |
Others | Reserved |
Frame Rate
rx_t_rate | Frame Rate |
---|---|
0000 | None |
0010 | 23.98 Hz |
0011 | 24 Hz |
0100 | 47.95 Hz |
0101 | 25 Hz |
0110 | 29.97 Hz |
0111 | 30 Hz |
1000 | 48 Hz |
1001 | 50 Hz |
1010 | 59.94 Hz |
1011 | 60 Hz |
Others | Reserved |
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- 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
2019.2
- 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
...