Background
I have a custom board with MAX9296A and MAX9295B GMSL2 chips. I also have the MAX96717F and MAX96724F EVKs. For these EVKs, ADI provides GMSL2 GUI software in Windows that supports three signal integrity tools.
- Link Margin
- Eye Mapper
- Forward Error Correction (FEC)
I would like to run these signal integrity tests with the MAX9296A and the MAX9295B. It doesn't have to have any kind of pretty GUI. Ideally we would be able to run these tests from a Linux terminal so that we can debug our production systems in house and in the field because we are dealing with some cabling issues. The MAX9296A and MAX9295B datsheets make no reference to FEC so I don't think the third tool is supported with these devices. (The MAX9296A datasheet does say however that "Hamming Error Correction" is not supported). So all I'm really looking for is a way to replicate the "Link Margin" and "Eye Mapper" test in Linux. Could anyone assist me with this? To narrow the scope of this thread, the focus will be on the MAX9296A GMSL2 deserializer. There will also be a bias to the Eye Margin test, but an end goal is to get Link Margin working too.
Things that could help
- GMSL2 GUI Windows source code (at least for the "Link Margin" and "Eye Mapper")
- I could rewrite the equivalent C++ application in Linux
- List of device registers needed by these tests
- An algorithm to interpret the device registers
What I have tried:
I have tried implementing the "Eye Mapper" test in Linux, but it has been quite frustrating. There is a lot of ambiguity in the register descriptions (this isn't a slight at ADI, just need guidance piecing them all together). Some registers seem to overlap in function or do not do what they say or do so consistently. By default, the Linux drivers put the eye-opening monitor (EOM) in periodic mode. If I poll the RLMS7 register, waiting for the EOM_DONE bitfield to get set, the EOM bitfield seems to get updated with the "Last completed eye-opening monitor observation". This seems to work reliably, but I have some questions.
- What does the last completed eye-opening monitor observation (RLMS7.EOM) mean?
- The RLMS4 register has a bitfield called EOM_CHK_AMOUNT which selects the order of the number of observations in each eye monitor window. In my case this value is 0x4 which equals 6.29*10^(0x4+2) = 6290000 observations. So does the RLMS7.EOM bitfield return the 6290000th observation or an average of the 6290000 observations in that eye monitor window? If it's only returning the last value, I don't really see the benefit of increasing the number of observations per window.
- How do you convert the 7-bit RLMS7.EOM field to a meaningful value?
- Looking at seemingly related registers like GMSL1_1C (0xB1C/0xC1C), the EOM_EYE_WIDTH bitfield seems provides this formula: opening width = EOM_EYE_WIDTH/63 x 100%. Can this same formula be used with the value in RLMS7.EOM? One cause of concern is that the GMSL1_1C register is a 6 bit bitfield whereas the RLMS7.EOM is a 7 bit bitfield. I get seemingly reasonable eye opening values with this formula, but it would be nice to get confirmation.
- Is the RLMS7.EOM register what the Eye Mapper uses?
- This is the only register I could find that actually outputs data. The GMSL1_1C.EOM_EYE_WIDTH bitfield seems very similar, but never outputs any data.
Additionally I have tried disabling EOM periodic mode so I can manually trigger the tests and have more control of the EOM but with little success.
- There are a bunch of RLMSX registers and GMSL1_XX registers that overlap in functionality. In general, the RLMS registers seem to do something but the GMSL1_XX registers do not. Can someone explain which ones to use and what happens if these register settings don't match?
- Examples:
- RLMS4.EOM_EN and GMSL1_13.EOM_EN_G1
- additionally some bitfields say the EOM is disabled if threshold is set to 0 (ex: RLMS6.EOM_RST_THR and GMSL1_13.EOM_MIN_THR_G1). What's weird is that I have observed periodic mode working even when these thresholds are 0, but in manual trigger mode it never works unless I raise the threshold. Just to be clear, manual trigger mode sometimes works, sometimes does not. It is very sporadic, but raising these thresholds seem necessary for manual trigger mode (it's confusing that the behavior would be different between periodic and manual trigger mode).
- RLMS4.EOM_PER_MODE and GMSL1_13.EOM_PER_MODE_G1
- RLMS4.EOM_CHK_THR and RLMS5.EOM_MIN_THR and GMSL1_13.EOM_MIN_THR_G1
- RLMS5.EOM_MAN_TRG_REQ and GMSL1_13.EOM_MAN_TRG_REQ_G1 and RLMS37.EyeMonStart
- RLMS7.EOM and GMSL1_1C.EOM_EYE_WIDTH
- RLMS7.EOM_DONE and RLMS37.EyeMonDone
- RLMS4.EOM_EN and GMSL1_13.EOM_EN_G1
- Examples:
- Notably, when a manual triggering the EOM stalls/fails (ie RLMS7.EOM_DONE is never set), the RLMS39.EyeMonErrCntH bitfield does not increment. Is there any way to diagnose why a manual trigger never completes?
- Perhaps I am not reading the value quickly enough, but why would it clear if it isn't getting retriggered? Perhaps the RLMS7.EOM_DONE field is not meant for this purpose. Are there alternatives?
- Less important, but what does RLMS stand for?
I haven't done much with trying to replicate the Link Margin test yet. The documentation for this seems even more thin, and I'm having a hard time finding where to start. I suspect RLMS58, RLMS59, RLMS5B, and RLMS95 are used. It's just a little unclear to me where the error channel bits are set to indicate a link margin error.
- Any guidance for Link Margin tool? Does anyone know where the error channel bit gets set? Expecting something like REG7 or INTR7 which set bits for undervoltage conditions, but can't find something similar for the Link Margin registers (RLMS 58,59,5B,95).
Default MAX9296A Registers (set by Linux Driver):
I wrote a debug utility to pretty print a subset of MAX9296A registers. I've attached a sample output for registers that are more relevant. These are just the defaults set by the linux driver. By default periodic mode appears to be running, but as stated above I've had lots of issues trying to manually trigger these devices. If someone could walk me through the steps to get to implement the "Eye Mapper" and "Link Margin", I would really appreciate it!
R0x001C: 0x09 R0x001C: 0x09 ┌──────────┬──────────┬────────────────────────────────────────────────┬───────────────────────────────────────────────────┐ │ BITFIELD │ BITS │ DESCRIPTION │ DECODE │ ├──────────┼──────────┼────────────────────────────────────────────────┼───────────────────────────────────────────────────┤ │EOM_ERR_OE│ 7 │Enable reporting of eye-opening monitor error │0b0: Reporting disabled │ │N_B │ │(EOM_ERR_FLAG_B - 0x1D) for Link B at ERRB pin │ │ ├──────────┼──────────┼────────────────────────────────────────────────┼───────────────────────────────────────────────────┤ │EOM_ERR_OE│ 6 │Enable reporting of eye-opening monitor error │0b0: Reporting disabled │ │N_A │ │(EOM_ERR_FLAG_A - 0x1D) for Link A at ERRB pin │ │ ├──────────┼──────────┼────────────────────────────────────────────────┼───────────────────────────────────────────────────┤ │MAX_RT_OEN│ 3 │Enable reporting of combined ARQ maximum │0b1: Reporting enabled │ │ │ │retransmission limit error flag (MAX_RT_FLAG - │ │ │ │ │0x1D) at ERRB pin │ │ ├──────────┼──────────┼────────────────────────────────────────────────┼───────────────────────────────────────────────────┤ │RT_CNT_OEN│ 2 │Enable reporting of combined ARQ retransmission │0b0: Reporting disabled │ │ │ │event flag (RT_CNT_FLAG - 0x1D) at ERRB pin │ │ ├──────────┼──────────┼────────────────────────────────────────────────┼───────────────────────────────────────────────────┤ │PKT_CNT_OE│ 1 │Enable reporting of packet count flag │0b0: Reporting disabled │ │N │ │(PKT_CNT_FLAG- 0x1D) at ERRB pin │ │ ├──────────┼──────────┼────────────────────────────────────────────────┼───────────────────────────────────────────────────┤ │WM_ERR_OEN│ 0 │Enable reporting of watermark errors │0b1: Reporting enabled │ │ │ │(WM_ERR_FLAG - 0x1D) at ERRB pin │ │ └──────────┴──────────┴────────────────────────────────────────────────┴───────────────────────────────────────────────────┘ R0x001D: 0x00 R0x001D: 0x00 ┌──────────┬──────────┬────────────────────────────────────────────────┬───────────────────────────────────────────────────┐ │ BITFIELD │ BITS │ DESCRIPTION │ DECODE │ ├──────────┼──────────┼────────────────────────────────────────────────┼───────────────────────────────────────────────────┤ │EOM_ERR_FL│ 7 │Eye-opening is below configured threshold for │0b0: No EOM error on Link B │ │AG_B │ │Link B │ │ ├──────────┼──────────┼────────────────────────────────────────────────┼───────────────────────────────────────────────────┤ │EOM_ERR_FL│ 6 │Eye-opening is below configured threshold for │0b0: No EOM error on Link A │ │AG_A │ │Link A │ │ ├──────────┼──────────┼────────────────────────────────────────────────┼───────────────────────────────────────────────────┤ │MAX_RT_FLA│ 3 │Combined ARQ maximum retransmission limit error │0b0: Flag not asserted │ │G │ │flag │ │ │ │ │ │ │ │ │ │Asserted when any of the selected channel's ARQ │ │ │ │ │retransmission limit is reached. │ │ │ │ │Selection is done by each channel's │ │ │ │ │MAX_RT_ERR_OEN (0x1C) bitfield. │ │ ├──────────┼──────────┼────────────────────────────────────────────────┼───────────────────────────────────────────────────┤ │RT_CNT_FLA│ 2 │Combined ARQ retransmission event flag │0b0: Flag not asserted │ │G │ │ │ │ │ │ │Asserted when any of the selected channels has │ │ │ │ │done at least one ARQ retransmission. │ │ │ │ │Selection is done by each channel's RT_CNT_OEN │ │ │ │ │(0x1C) bitfield. │ │ ├──────────┼──────────┼────────────────────────────────────────────────┼───────────────────────────────────────────────────┤ │PKT_CNT_FL│ 1 │Packet Count Flag │0b0: Flag not asserted │ │AG │ │ │ │ │ │ │Asserted when PKT_CNT (0x25) ≥ PKT_CNT_THR │ │ │ │ │(0x19) │ │ ├──────────┼──────────┼────────────────────────────────────────────────┼───────────────────────────────────────────────────┤ │WM_ERR_FLA│ 0 │Watermark Error Flag │0b0: Flag not asserted │ │G │ │ │ │ │ │ │Asserted when a watermark error is detected. │ │ └──────────┴──────────┴────────────────────────────────────────────────┴───────────────────────────────────────────────────┘ R0x1404: 0x4B R0x1404: 0x4B ┌──────────┬──────────┬────────────────────────────────────────────────┬───────────────────────────────────────────────────┐ │ BITFIELD │ BITS │ DESCRIPTION │ DECODE │ ├──────────┼──────────┼────────────────────────────────────────────────┼───────────────────────────────────────────────────┤ │EOM_CHK_AM│ 7:4 │A factor (N) used to select the order of number │0x4: N factor │ │OUNT │ │of observations in each eye monitor window. N is│ │ │ │ │used in the equation: │ │ │ │ │Observations = 6.29 x 10^(N + 2) │ │ ├──────────┼──────────┼────────────────────────────────────────────────┼───────────────────────────────────────────────────┤ │EOM_CHK_TH│ 3:2 │Eye-opening monitor number of error bits to │0b10: Allow 2 errors │ │R │ │allow in a measurement window │ │ ├──────────┼──────────┼────────────────────────────────────────────────┼───────────────────────────────────────────────────┤ │EOM_PER_MO│ 1 │Eye-opening monitor periodic mode enable │0b1: Eye-opening monitor periodic mode enabled │ │DE │ │ │ │ ├──────────┼──────────┼────────────────────────────────────────────────┼───────────────────────────────────────────────────┤ │EOM_EN │ 0 │Eye-opening monitor enable │0b1: Eye-opening monitor enabled │ └──────────┴──────────┴────────────────────────────────────────────────┴───────────────────────────────────────────────────┘ R0x1405: 0x10 R0x1405: 0x10 ┌──────────┬──────────┬────────────────────────────────────────────────┬───────────────────────────────────────────────────┐ │ BITFIELD │ BITS │ DESCRIPTION │ DECODE │ ├──────────┼──────────┼────────────────────────────────────────────────┼───────────────────────────────────────────────────┤ │EOM_MAN_TR│ 7 │Eye-opening monitor manual trigger. For use when│0b0: No action │ │G_REQ │ │periodic mode is disabled. │ │ ├──────────┼──────────┼────────────────────────────────────────────────┼───────────────────────────────────────────────────┤ │EOM_MIN_TH│ 6:0 │The eye-opening monitor minimum threshold as │0b0010000: Eye-opening monitor minimum threshold │ │R │ │defined by the equation: % eye-opening = │factor │ │ │ │EOM_MIN_THR/64. If the value is zero the EOM is │ │ │ │ │disabled. │ │ └──────────┴──────────┴────────────────────────────────────────────────┴───────────────────────────────────────────────────┘ R0x1406: 0x80 R0x1406: 0x80 ┌──────────┬──────────┬────────────────────────────────────────────────┬───────────────────────────────────────────────────┐ │ BITFIELD │ BITS │ DESCRIPTION │ DECODE │ ├──────────┼──────────┼────────────────────────────────────────────────┼───────────────────────────────────────────────────┤ │EOM_PV_MOD│ 7 │Eye-opening is measured vertically or │0b1: Horizonal opening mode │ │E │ │horizontally │ │ ├──────────┼──────────┼────────────────────────────────────────────────┼───────────────────────────────────────────────────┤ │EOM_RST_TH│ 6:0 │The eye-opening monitor refresh threshold as │0b0000000: Eye-opening monitor refresh threshold │ │R │ │defined by the equation: % eye opening = │factor │ │ │ │EOM_MIN_THR/64. If the value is zero the │ │ │ │ │eye-opening monitor is disabled. │ │ └──────────┴──────────┴────────────────────────────────────────────────┴───────────────────────────────────────────────────┘ R0x1407: 0x00 R0x1407: 0xA6 ┌──────────┬──────────┬────────────────────────────────────────────────┬───────────────────────────────────────────────────┐ │ BITFIELD │ BITS │ DESCRIPTION │ DECODE │ ├──────────┼──────────┼────────────────────────────────────────────────┼───────────────────────────────────────────────────┤ │EOM_DONE │ 7 │Eye-opening monitor measurement done │0b1: Eye-opening monitor complete │ ├──────────┼──────────┼────────────────────────────────────────────────┼───────────────────────────────────────────────────┤ │EOM │ 6:0 │Last completed eye-opening monitor observation │0b0100110: Eye-monitor opening measurement result │ └──────────┴──────────┴────────────────────────────────────────────────┴───────────────────────────────────────────────────┘ R0x1434: 0x00 R0x1434: 0x00 ┌──────────┬──────────┬────────────────────────────────────────────────┬───────────────────────────────────────────────────┐ │ BITFIELD │ BITS │ DESCRIPTION │ DECODE │ ├──────────┼──────────┼────────────────────────────────────────────────┼───────────────────────────────────────────────────┤ │EyeMonPerC│ 7:0 │Eye monitor period count (RxClk20) LSB │0x00: Eye monitor period count (Least Significant │ │ntL │ │ │Byte) │ └──────────┴──────────┴────────────────────────────────────────────────┴───────────────────────────────────────────────────┘ R0x1435: 0x00 R0x1435: 0x00 ┌──────────┬──────────┬────────────────────────────────────────────────┬───────────────────────────────────────────────────┐ │ BITFIELD │ BITS │ DESCRIPTION │ DECODE │ ├──────────┼──────────┼────────────────────────────────────────────────┼───────────────────────────────────────────────────┤ │EyeMonPerC│ 7:0 │Eye monitor period count (RxClk20) MSB │0x00: Eye monitor period count (Most Significant │ │ntH │ │ │Byte) │ └──────────┴──────────┴────────────────────────────────────────────────┴───────────────────────────────────────────────────┘ R0x1437: 0x00 R0x1437: 0x10 ┌──────────┬──────────┬────────────────────────────────────────────────┬───────────────────────────────────────────────────┐ │ BITFIELD │ BITS │ DESCRIPTION │ DECODE │ ├──────────┼──────────┼────────────────────────────────────────────────┼───────────────────────────────────────────────────┤ │EyeMonDone│ 4 │Eye monitor period complete (read-only, reset on│0b1: Eye monitor data collection complete │ │ │ │start) │ │ ├──────────┼──────────┼────────────────────────────────────────────────┼───────────────────────────────────────────────────┤ │EyeMonCntC│ 3 │Eye monitor error/valid count clear (one-shot). │0b0: NA │ │lr │ │Read-back is EyeMonClrPL from long pulse │ │ │ │ │generation. │ │ ├──────────┼──────────┼────────────────────────────────────────────────┼───────────────────────────────────────────────────┤ │EyeMonStar│ 2 │Eye monitor start (one-shot). Read-back is │0b0: NA │ │t │ │EyeMonStClrPL from long pulse generation for │ │ │ │ │both start and clear. │ │ ├──────────┼──────────┼────────────────────────────────────────────────┼───────────────────────────────────────────────────┤ │EyeMonPh │ 1 │Eye monitor phase │0b0: Eye monitor search early phase │ ├──────────┼──────────┼────────────────────────────────────────────────┼───────────────────────────────────────────────────┤ │EyeMonDPol│ 0 │Eye monitor data polarity │0b0: Eye monitor search for 1's │ └──────────┴──────────┴────────────────────────────────────────────────┴───────────────────────────────────────────────────┘ R0x1439: 0x00 R0x1439: 0x00 ┌──────────┬──────────┬────────────────────────────────────────────────┬───────────────────────────────────────────────────┐ │ BITFIELD │ BITS │ DESCRIPTION │ DECODE │ ├──────────┼──────────┼────────────────────────────────────────────────┼───────────────────────────────────────────────────┤ │EyeMonErrC│ 7:0 │Eye monitor error count (read-only) │0x00: Eye monitor error count (Most Significant │ │ntH │ │ │Byte) │ └──────────┴──────────┴────────────────────────────────────────────────┴───────────────────────────────────────────────────┘ R0x143A: 0x00 R0x143A: 0x00 ┌──────────┬──────────┬────────────────────────────────────────────────┬───────────────────────────────────────────────────┐ │ BITFIELD │ BITS │ DESCRIPTION │ DECODE │ ├──────────┼──────────┼────────────────────────────────────────────────┼───────────────────────────────────────────────────┤ │EyeMonValC│ 7:0 │Eye monitor valid (hit) count (read-only) │0x00: Eye monitor valid count (Least Significant │ │ntL │ │ │Byte) │ └──────────┴──────────┴────────────────────────────────────────────────┴───────────────────────────────────────────────────┘ R0x143B: 0x00 R0x143B: 0x00 ┌──────────┬──────────┬────────────────────────────────────────────────┬───────────────────────────────────────────────────┐ │ BITFIELD │ BITS │ DESCRIPTION │ DECODE │ ├──────────┼──────────┼────────────────────────────────────────────────┼───────────────────────────────────────────────────┤ │EyeMonValC│ 7:0 │Eye monitor valid (hit) count (read-only) │0x00: Eye monitor valid count (Most Significant │ │ntH │ │ │Byte) │ └──────────┴──────────┴────────────────────────────────────────────────┴───────────────────────────────────────────────────┘ R0x1458: 0x28 R0x1458: 0x28 ┌──────────┬──────────┬────────────────────────────────────────────────┬───────────────────────────────────────────────────┐ │ BITFIELD │ BITS │ DESCRIPTION │ DECODE │ ├──────────┼──────────┼────────────────────────────────────────────────┼───────────────────────────────────────────────────┤ │ErrChVTh1 │ 6:0 │Error channel target amplitude for ones. │0b0101000: Format: {sign, Magnitude[5:0]} │ │ │ │Bits 7, 5:0 │ │ │ │ │ │where │ │ │ │ │ sign: 1 = negative, 0 = positive │ │ │ │ │ Magnitude:: binary amplitude 4.7mV per count │ └──────────┴──────────┴────────────────────────────────────────────────┴───────────────────────────────────────────────────┘ R0x1459: 0x68 R0x1459: 0x68 ┌──────────┬──────────┬────────────────────────────────────────────────┬───────────────────────────────────────────────────┐ │ BITFIELD │ BITS │ DESCRIPTION │ DECODE │ ├──────────┼──────────┼────────────────────────────────────────────────┼───────────────────────────────────────────────────┤ │ErrChVTh0 │ 6:0 │Error channel target amplitude for zeros │0b1101000: Format: {sign, Magnitude[5:0]} │ │ │ │Bits 7, 5:0 │ │ │ │ │ │where │ │ │ │ │ sign: 1 = negative, 0 = positive │ │ │ │ │ Magnitude:: binary amplitude 4.7mV per count │ └──────────┴──────────┴────────────────────────────────────────────────┴───────────────────────────────────────────────────┘ R0x145B: 0xA8 R0x145B: 0x28 ┌──────────┬──────────┬────────────────────────────────────────────────┬───────────────────────────────────────────────────┐ │ BITFIELD │ BITS │ DESCRIPTION │ DECODE │ ├──────────┼──────────┼────────────────────────────────────────────────┼───────────────────────────────────────────────────┤ │ErrChVTh │ 7:0 │Error channel threshold (read-only) │0b00101000: The datasheet does not offer any │ │ │ │ │information to decode this bitfield. │ └──────────┴──────────┴────────────────────────────────────────────────┴───────────────────────────────────────────────────┘ R0x1495: 0x69 R0x1495: 0x69 ┌──────────┬──────────┬────────────────────────────────────────────────┬───────────────────────────────────────────────────┐ │ BITFIELD │ BITS │ DESCRIPTION │ DECODE │ ├──────────┼──────────┼────────────────────────────────────────────────┼───────────────────────────────────────────────────┤ │TxAmplManE│ 7 │Tx amplitude manual override │0b0: Do not manually override Tx amplitude │ │n │ │ │ │ ├──────────┼──────────┼────────────────────────────────────────────────┼───────────────────────────────────────────────────┤ │TxAmplMan │ 5:0 │Tx amplitude │0b101001: Binary amplitude 10mV per count │ └──────────┴──────────┴────────────────────────────────────────────────┴───────────────────────────────────────────────────┘ R0x0B13: 0xC0 R0x0B13: 0xC0 ┌──────────┬──────────┬────────────────────────────────────────────────┬───────────────────────────────────────────────────┐ │ BITFIELD │ BITS │ DESCRIPTION │ DECODE │ ├──────────┼──────────┼────────────────────────────────────────────────┼───────────────────────────────────────────────────┤ │EOM_EN_G1 │ 7 │Eye-opening monitor (EOM) enable │0x1: Enable EOM │ ├──────────┼──────────┼────────────────────────────────────────────────┼───────────────────────────────────────────────────┤ │EOM_PER_MO│ 6 │Eye-opening monitor (EOM) periodic mode select │0x1: Set EOM to use periodic mode │ │DE_G1 │ │ │ │ ├──────────┼──────────┼────────────────────────────────────────────────┼───────────────────────────────────────────────────┤ │EOM_MAN_TR│ 5 │Eye-opening monitor (EOM) manual trigger │0x0: Do not trigger EOM. │ │G_REQ_G1 │ │request. │ │ │ │ │Valid on the rising edge of this bit when not in│ │ │ │ │periodic mode. │ │ ├──────────┼──────────┼────────────────────────────────────────────────┼───────────────────────────────────────────────────┤ │EOM_MIN_TH│ 4:0 │Eye-opening minimum threshold (in terms of │0b00000: Disabled │ │R_G1 │ │percent) for flagging ERRORB pin. (Percentages │ │ │ │ │increment 3.125% per bitfield setting.) │ │ └──────────┴──────────┴────────────────────────────────────────────────┴───────────────────────────────────────────────────┘ R0x0B14: 0x80 R0x0B14: 0x80 ┌──────────┬──────────┬────────────────────────────────────────────────┬───────────────────────────────────────────────────┐ │ BITFIELD │ BITS │ DESCRIPTION │ DECODE │ ├──────────┼──────────┼────────────────────────────────────────────────┼───────────────────────────────────────────────────┤ │AEQ_EN │ 7 │Adaptive equalization (AEQ) enable │0x1: Enable AEQ │ ├──────────┼──────────┼────────────────────────────────────────────────┼───────────────────────────────────────────────────┤ │AEQ_PER_MO│ 6 │Adaptive equalizer periodic mode select │0b0: Set AEQ to use non-periodic mode │ │DE │ │ │ │ ├──────────┼──────────┼────────────────────────────────────────────────┼───────────────────────────────────────────────────┤ │AEQ_MAN_TR│ 5 │Enables adaptive equalizer manual fine tune │0x0: Do not trigger AEQ fine tuning │ │G_REQ │ │request. Valid on the rising edge of this bit │ │ │ │ │when not in periodic mode. │ │ ├──────────┼──────────┼────────────────────────────────────────────────┼───────────────────────────────────────────────────┤ │EOM_PER_TH│ 4:0 │Eye-opening threshold to trigger a fine tune │0b00000: Eye-opening threshold is disabled │ │R │ │operation │ │ └──────────┴──────────┴────────────────────────────────────────────────┴───────────────────────────────────────────────────┘ R0x0B1C: 0x00 R0x0B1C: 0x3F ┌──────────┬──────────┬────────────────────────────────────────────────┬───────────────────────────────────────────────────┐ │ BITFIELD │ BITS │ DESCRIPTION │ DECODE │ ├──────────┼──────────┼────────────────────────────────────────────────┼───────────────────────────────────────────────────┤ │EOM_EYE_WI│ 5:0 │Measured eye-opening. Opening width = │0b111111: Width is 63/63 x 100% │ │DTH │ │EOM_EYE_WIDTH/63 x 100% │ │ └──────────┴──────────┴────────────────────────────────────────────────┴───────────────────────────────────────────────────┘
Forgot to include RLMS95 in list of registers that I believe are used for Link Margin testing.
[edited by: rrdev at 6:24 PM (GMT -4) on 16 Jul 2024]