axi_ad9361: Fixup LVDS RX_FRAME (#916) #1460
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
PR Description
The rx_error_r* on the axi_ad9361/xilinx/axi_ad9361_lvds_if.v were not implemented properly.
the author intended it to be the inverse of all valid frames combinations {rx_frame, rx_frame_s} but only compared against rx_frame_s.
Checking against all valid frames is also unnecessary, since checking for unequal DDR output values have the same practical effect.
It is also worth noting that at 2RX mode, a frame fulfills the 2 channels in 4 clock cycles, while {rx_frame, rx_frame_s} looks back only 2 clock cycles.
UG-570, p95
This commit changes rx_error to be a "link stable signal".
Relevant information:
AD9361:
operates in DDR
Linux/no-os drivers set (or leave default):
AXI_AD9361:
rx_r1_mode is ADC_COMMON 0x0011[2] R1_MODE with:
status is ADC_COMMON 0x0017 [0] STATUS with:
Aims to fix #916, but does not try to fix the frame skew/unequal ddr output observed in the issue author first screenshot, however, the prior logic may resolve into the error signal never asserting, entering runtime without properly aligning, somewhere around ad9361_conv.c#ad9361_dig_tune_delay.
An unaligned frame results into the following Linux boot log message:
Tested on hardware in loopback with single channel, dual channel, single tone, dual tone, and BISPs.
Updates only the xilinx side, since the 83d3bde only edited it, but the error logic could be added to intel also.
PR Type
PR Checklist