Post Go back to editing

ADRV9002 driver hang on FH enable

Thread Summary

The user is experiencing a driver hang when attempting to enable frequency hopping (FH) on the ADRV9002 with a custom board and Altera 5.4.84 kernel. The issue occurs during the 'adi_adrv9001_cals_InitCals_Run' function call, with errors indicating ARM memory is not accessible. The final answer suggests the problem is likely hardware-related, as the driver works with non-FH profiles and the issue is not reproducible on the ZCU102 eval board. The user is advised to check power supply lines and consider using a typical LTE profile for further testing.
AI Generated Content
Category: Software
Product Number: ADRV9002

Hello,

We are using the ADRV9002 with a custom board and are attempting to use the frequency hopping feature.  The driver we are using is the one contained in the adrv9002 kernel branch - some very minor porting work was required to bring this into our local build and the driver is working well outside of frequency hopping.

TES 0.20.0 was used to generate a frequency hopping enabled profile.  When the driver attempts to load with FH enabled, we see a delay of approximately 1 minute before the following messages are produced:

[   72.254643] adrv9002 spi0.0: [ERROR]: Error number  3 (0x00000003), Recovery action -101.In file drivers/iio/adc/navassa/devices/adrv9001/public/src/adi_adrv9001_arm.c, in function adi_adrv9001_arm_CmdStatus_Wait, in line  678, variable name device.Error message ArmCmdStatusWait() failed due to thrown ARM error. ARM time out .
[   72.297757] adrv9002 spi0.0: adrv9002_setup, 2861: failed with "ArmCmdStatusWait() failed due to thrown ARM error. ARM time out " (3)

[   75.111140] adrv9002 spi0.0: [ERROR]: Error number  1 (0x00000001), Recovery action -2.In file drivers/iio/adc/navassa/devices/adrv9001/public/src/adi_adrv9001_powermanagement.c, in function adi_adrv9001_powermanagement_Configure_Validate, in line  39, variable name readPattern.Error message ARM memory is not accessible. Check whether device clock and/or power is connected to the ADRV9001 board.
[   75.146262] adrv9002 spi0.0: [ERROR]: Error number  1 (0x00000001), Recovery action -2.In file drivers/iio/adc/navassa/devices/adrv9001/public/src/adi_adrv9001_powermanagement.c, in function adi_adrv9001_powermanagement_Configure, in line  70, variable name NULL.Error message ARM memory is not accessible. Check whether device clock and/or power is connected to the ADRV9001 board.
[   75.179999] adrv9002 spi0.0: adrv9002_power_mgmt_config, 2602: failed with "ARM memory is not accessible. Check whether device clock and/or power is connected to the ADRV9001 board" (1)
[   75.197890] cf_axi_adc: probe of ff220000.axi-adrv9002-rx-lpc failed with error -22

After this point the driver fails to attach and the device is non-operational.  Some investigation has found the failure is occurring somewhere related to the 'adi_adrv9001_cals_InitCals_Run' function call.  I understand that the FH tables are supposed to be provided via sysfs, however the driver doesn't load to this point so I am not sure what other steps are required other than providing the FH enabled profile.

Any guidance would be appreciated.

Thanks,

Justin

  • Hi,

    Which linux branch are you using? Can you also share your profile so I can try and load it on my end?

    - Nuno Sá

  • Hi Nuno,

    Thanks for the follow up.  We are using the drivers located in this branch:
    https://github.com/analogdevicesinc/linux/tree/adrv9002

    Brought into our Altera 5.4.84 kernel.

    Profile is attached:

     

    {
      "clocks": {
        "deviceClock_kHz": 38400,
        "clkPllVcoFreq_daHz": 384000000,
        "clkPllHsDiv": 0,
        "clkPllMode": 1,
        "clk1105Div": 2,
        "armClkDiv": 6,
        "armPowerSavingClkDiv": 1,
        "refClockOutEnable": true,
        "auxPllPower": 2,
        "clkPllPower": 2,
        "padRefClkDrv": 0,
        "extLo1OutFreq_kHz": 0,
        "extLo2OutFreq_kHz": 0,
        "rfPll1LoMode": 0,
        "rfPll2LoMode": 0,
        "ext1LoType": 0,
        "ext2LoType": 0,
        "rx1RfInputSel": 0,
        "rx2RfInputSel": 0,
        "extLo1Divider": 2,
        "extLo2Divider": 2,
        "rfPllPhaseSyncMode": 0,
        "rx1LoSelect": 2,
        "rx2LoSelect": 2,
        "tx1LoSelect": 1,
        "tx2LoSelect": 1,
        "rx1LoDivMode": 1,
        "rx2LoDivMode": 1,
        "tx1LoDivMode": 1,
        "tx2LoDivMode": 1,
        "loGen1Select": 1,
        "loGen2Select": 1
      },
      "rx": {
        "rxInitChannelMask": 195,
        "rxChannelCfg": [ {
            "profile": {
              "primarySigBandwidth_Hz": 20000000,
              "rxOutputRate_Hz": 40000000,
              "rxInterfaceSampleRate_Hz": 40000000,
              "rxOffsetLo_kHz": 490,
              "rxNcoEnable": true,
              "outputSignaling": 0,
              "filterOrder": 1,
              "filterOrderLp": 1,
              "hpAdcCorner": 20000000,
              "lpAdcCorner": 0,
              "adcClk_kHz": 960000,
              "rxCorner3dB_kHz": 10000,
              "rxCorner3dBLp_kHz": 10000,
              "tiaPower": 2,
              "tiaPowerLp": 2,
              "channelType": 1,
              "adcType": 1,
              "lpAdcCalMode": 0,
              "gainTableType": 0,
              "rxDpProfile": {
                "rxNbDecTop": {
                  "scicBlk23En": 0,
                  "scicBlk23DivFactor": 1,
                  "scicBlk23LowRippleEn": 0,
                  "decBy2Blk35En": 0,
                  "decBy2Blk37En": 0,
                  "decBy2Blk39En": 0,
                  "decBy2Blk41En": 0,
                  "decBy2Blk43En": 0,
                  "decBy3Blk45En": 0,
                  "decBy2Blk47En": 0
                },
                "rxWbDecTop": {
                  "decBy2Blk25En": 0,
                  "decBy2Blk27En": 0,
                  "decBy2Blk29En": 0,
                  "decBy2Blk31En": 0,
                  "decBy2Blk33En": 0,
                  "wbLpfBlk33p1En": 0
                },
                "rxDecTop": {
                  "decBy3Blk15En": 0,
                  "decBy2Hb3Blk17p1En": 1,
                  "decBy2Hb4Blk17p2En": 0,
                  "decBy2Hb5Blk19p1En": 1,
                  "decBy2Hb6Blk19p2En": 0
                },
                "rxSincHBTop": {
                  "sincGainMux": 1,
                  "sincMux": 1,
                  "hbMux": 4,
                  "isGainCompEnabled": 0,
                  "gainComp9GainI": [ 16384, 16384, 16384, 16384, 16384, 16384 ],
                  "gainComp9GainQ": [ 0, 0, 0, 0, 0, 0 ]
                },
                "rxNbDem": {
                  "dpInFifo": {
                    "dpInFifoEn": 0,
                    "dpInFifoMode": 0,
                    "dpInFifoTestDataSel": 0
                  },
                  "rxNbNco": {
                    "rxNbNcoEn": 0,
                    "rxNbNcoConfig": {
                      "freq": 0,
                      "sampleFreq": 0,
                      "phase": 0,
                      "realOut": 0
                    }
                  },
                  "rxWbNbCompPFir": {
                    "bankSel": 0,
                    "rxWbNbCompPFirInMuxSel": 0,
                    "rxWbNbCompPFirEn": 1
                  },
                  "resamp": {
                    "rxResampEn": 0,
                    "resampPhaseI": 0,
                    "resampPhaseQ": 0
                  },
                  "gsOutMuxSel": 1,
                  "rxOutSel": 0,
                  "rxRoundMode": 0,
                  "dpArmSel": 0
                }
              },
              "lnaConfig": {
                "externalLnaPresent": false,
                "gpioSourceSel": 0,
                "externalLnaPinSel": 0,
                "settlingDelay": 0,
                "numberLnaGainSteps": 0,
                "lnaGainSteps_mdB": [ 0, 0, 0, 0 ],
                "lnaDigitalGainDelay": 0,
                "minGainIndex": 0
              },
              "rxSsiConfig": {
                "ssiType": 2,
                "ssiDataFormatSel": 4,
                "numLaneSel": 1,
                "strobeType": 0,
                "lsbFirst": 0,
                "qFirst": 0,
                "txRefClockPin": 0,
                "lvdsIBitInversion": false,
                "lvdsQBitInversion": false,
                "lvdsStrobeBitInversion": false,
                "lvdsUseLsbIn12bitMode": 0,
                "lvdsRxClkInversionEn": false,
                "cmosDdrPosClkEn": false,
                "cmosClkInversionEn": false,
                "ddrEn": true,
                "rxMaskStrobeEn": false
              }
            }
          }, {
            "profile": {
              "primarySigBandwidth_Hz": 20000000,
              "rxOutputRate_Hz": 40000000,
              "rxInterfaceSampleRate_Hz": 40000000,
              "rxOffsetLo_kHz": 490,
              "rxNcoEnable": true,
              "outputSignaling": 0,
              "filterOrder": 1,
              "filterOrderLp": 1,
              "hpAdcCorner": 20000000,
              "lpAdcCorner": 0,
              "adcClk_kHz": 960000,
              "rxCorner3dB_kHz": 10000,
              "rxCorner3dBLp_kHz": 10000,
              "tiaPower": 2,
              "tiaPowerLp": 2,
              "channelType": 2,
              "adcType": 1,
              "lpAdcCalMode": 0,
              "gainTableType": 0,
              "rxDpProfile": {
                "rxNbDecTop": {
                  "scicBlk23En": 0,
                  "scicBlk23DivFactor": 1,
                  "scicBlk23LowRippleEn": 0,
                  "decBy2Blk35En": 0,
                  "decBy2Blk37En": 0,
                  "decBy2Blk39En": 0,
                  "decBy2Blk41En": 0,
                  "decBy2Blk43En": 0,
                  "decBy3Blk45En": 0,
                  "decBy2Blk47En": 0
                },
                "rxWbDecTop": {
                  "decBy2Blk25En": 0,
                  "decBy2Blk27En": 0,
                  "decBy2Blk29En": 0,
                  "decBy2Blk31En": 0,
                  "decBy2Blk33En": 0,
                  "wbLpfBlk33p1En": 0
                },
                "rxDecTop": {
                  "decBy3Blk15En": 0,
                  "decBy2Hb3Blk17p1En": 1,
                  "decBy2Hb4Blk17p2En": 0,
                  "decBy2Hb5Blk19p1En": 1,
                  "decBy2Hb6Blk19p2En": 0
                },
                "rxSincHBTop": {
                  "sincGainMux": 1,
                  "sincMux": 1,
                  "hbMux": 4,
                  "isGainCompEnabled": 0,
                  "gainComp9GainI": [ 16384, 16384, 16384, 16384, 16384, 16384 ],
                  "gainComp9GainQ": [ 0, 0, 0, 0, 0, 0 ]
                },
                "rxNbDem": {
                  "dpInFifo": {
                    "dpInFifoEn": 0,
                    "dpInFifoMode": 0,
                    "dpInFifoTestDataSel": 0
                  },
                  "rxNbNco": {
                    "rxNbNcoEn": 0,
                    "rxNbNcoConfig": {
                      "freq": 0,
                      "sampleFreq": 0,
                      "phase": 0,
                      "realOut": 0
                    }
                  },
                  "rxWbNbCompPFir": {
                    "bankSel": 2,
                    "rxWbNbCompPFirInMuxSel": 0,
                    "rxWbNbCompPFirEn": 1
                  },
                  "resamp": {
                    "rxResampEn": 0,
                    "resampPhaseI": 0,
                    "resampPhaseQ": 0
                  },
                  "gsOutMuxSel": 1,
                  "rxOutSel": 0,
                  "rxRoundMode": 0,
                  "dpArmSel": 0
                }
              },
              "lnaConfig": {
                "externalLnaPresent": false,
                "gpioSourceSel": 0,
                "externalLnaPinSel": 0,
                "settlingDelay": 0,
                "numberLnaGainSteps": 0,
                "lnaGainSteps_mdB": [ 0, 0, 0, 0 ],
                "lnaDigitalGainDelay": 0,
                "minGainIndex": 0
              },
              "rxSsiConfig": {
                "ssiType": 2,
                "ssiDataFormatSel": 4,
                "numLaneSel": 1,
                "strobeType": 0,
                "lsbFirst": 0,
                "qFirst": 0,
                "txRefClockPin": 0,
                "lvdsIBitInversion": false,
                "lvdsQBitInversion": false,
                "lvdsStrobeBitInversion": false,
                "lvdsUseLsbIn12bitMode": 0,
                "lvdsRxClkInversionEn": false,
                "cmosDdrPosClkEn": false,
                "cmosClkInversionEn": false,
                "ddrEn": true,
                "rxMaskStrobeEn": false
              }
            }
          }, {
            "profile": {
              "primarySigBandwidth_Hz": 12500,
              "rxOutputRate_Hz": 0,
              "rxInterfaceSampleRate_Hz": 0,
              "rxOffsetLo_kHz": 0,
              "rxNcoEnable": false,
              "outputSignaling": 0,
              "filterOrder": 1,
              "filterOrderLp": 1,
              "hpAdcCorner": 0,
              "lpAdcCorner": 0,
              "adcClk_kHz": 0,
              "rxCorner3dB_kHz": 0,
              "rxCorner3dBLp_kHz": 0,
              "tiaPower": 2,
              "tiaPowerLp": 2,
              "channelType": 0,
              "adcType": 1,
              "lpAdcCalMode": 0,
              "gainTableType": 0,
              "rxDpProfile": {
                "rxNbDecTop": {
                  "scicBlk23En": 0,
                  "scicBlk23DivFactor": 0,
                  "scicBlk23LowRippleEn": 0,
                  "decBy2Blk35En": 0,
                  "decBy2Blk37En": 0,
                  "decBy2Blk39En": 0,
                  "decBy2Blk41En": 0,
                  "decBy2Blk43En": 0,
                  "decBy3Blk45En": 0,
                  "decBy2Blk47En": 0
                },
                "rxWbDecTop": {
                  "decBy2Blk25En": 0,
                  "decBy2Blk27En": 0,
                  "decBy2Blk29En": 0,
                  "decBy2Blk31En": 0,
                  "decBy2Blk33En": 0,
                  "wbLpfBlk33p1En": 0
                },
                "rxDecTop": {
                  "decBy3Blk15En": 0,
                  "decBy2Hb3Blk17p1En": 0,
                  "decBy2Hb4Blk17p2En": 0,
                  "decBy2Hb5Blk19p1En": 0,
                  "decBy2Hb6Blk19p2En": 0
                },
                "rxSincHBTop": {
                  "sincGainMux": 1,
                  "sincMux": 0,
                  "hbMux": 4,
                  "isGainCompEnabled": 0,
                  "gainComp9GainI": [ 16384, 16384, 16384, 16384, 16384, 16384 ],
                  "gainComp9GainQ": [ 0, 0, 0, 0, 0, 0 ]
                },
                "rxNbDem": {
                  "dpInFifo": {
                    "dpInFifoEn": 0,
                    "dpInFifoMode": 0,
                    "dpInFifoTestDataSel": 0
                  },
                  "rxNbNco": {
                    "rxNbNcoEn": 0,
                    "rxNbNcoConfig": {
                      "freq": 0,
                      "sampleFreq": 0,
                      "phase": 0,
                      "realOut": 0
                    }
                  },
                  "rxWbNbCompPFir": {
                    "bankSel": 0,
                    "rxWbNbCompPFirInMuxSel": 0,
                    "rxWbNbCompPFirEn": 0
                  },
                  "resamp": {
                    "rxResampEn": 0,
                    "resampPhaseI": 0,
                    "resampPhaseQ": 0
                  },
                  "gsOutMuxSel": 1,
                  "rxOutSel": 0,
                  "rxRoundMode": 0,
                  "dpArmSel": 0
                }
              },
              "lnaConfig": {
                "externalLnaPresent": false,
                "gpioSourceSel": 0,
                "externalLnaPinSel": 0,
                "settlingDelay": 0,
                "numberLnaGainSteps": 0,
                "lnaGainSteps_mdB": [ 0, 0, 0, 0 ],
                "lnaDigitalGainDelay": 0,
                "minGainIndex": 0
              },
              "rxSsiConfig": {
                "ssiType": 0,
                "ssiDataFormatSel": 0,
                "numLaneSel": 0,
                "strobeType": 0,
                "lsbFirst": 0,
                "qFirst": 0,
                "txRefClockPin": 0,
                "lvdsIBitInversion": false,
                "lvdsQBitInversion": false,
                "lvdsStrobeBitInversion": false,
                "lvdsUseLsbIn12bitMode": 0,
                "lvdsRxClkInversionEn": false,
                "cmosDdrPosClkEn": false,
                "cmosClkInversionEn": false,
                "ddrEn": false,
                "rxMaskStrobeEn": false
              }
            }
          }, {
            "profile": {
              "primarySigBandwidth_Hz": 12500,
              "rxOutputRate_Hz": 0,
              "rxInterfaceSampleRate_Hz": 0,
              "rxOffsetLo_kHz": 0,
              "rxNcoEnable": false,
              "outputSignaling": 0,
              "filterOrder": 1,
              "filterOrderLp": 1,
              "hpAdcCorner": 0,
              "lpAdcCorner": 0,
              "adcClk_kHz": 0,
              "rxCorner3dB_kHz": 0,
              "rxCorner3dBLp_kHz": 0,
              "tiaPower": 2,
              "tiaPowerLp": 2,
              "channelType": 0,
              "adcType": 1,
              "lpAdcCalMode": 0,
              "gainTableType": 0,
              "rxDpProfile": {
                "rxNbDecTop": {
                  "scicBlk23En": 0,
                  "scicBlk23DivFactor": 0,
                  "scicBlk23LowRippleEn": 0,
                  "decBy2Blk35En": 0,
                  "decBy2Blk37En": 0,
                  "decBy2Blk39En": 0,
                  "decBy2Blk41En": 0,
                  "decBy2Blk43En": 0,
                  "decBy3Blk45En": 0,
                  "decBy2Blk47En": 0
                },
                "rxWbDecTop": {
                  "decBy2Blk25En": 0,
                  "decBy2Blk27En": 0,
                  "decBy2Blk29En": 0,
                  "decBy2Blk31En": 0,
                  "decBy2Blk33En": 0,
                  "wbLpfBlk33p1En": 0
                },
                "rxDecTop": {
                  "decBy3Blk15En": 0,
                  "decBy2Hb3Blk17p1En": 0,
                  "decBy2Hb4Blk17p2En": 0,
                  "decBy2Hb5Blk19p1En": 0,
                  "decBy2Hb6Blk19p2En": 0
                },
                "rxSincHBTop": {
                  "sincGainMux": 1,
                  "sincMux": 0,
                  "hbMux": 4,
                  "isGainCompEnabled": 0,
                  "gainComp9GainI": [ 16384, 16384, 16384, 16384, 16384, 16384 ],
                  "gainComp9GainQ": [ 0, 0, 0, 0, 0, 0 ]
                },
                "rxNbDem": {
                  "dpInFifo": {
                    "dpInFifoEn": 0,
                    "dpInFifoMode": 0,
                    "dpInFifoTestDataSel": 0
                  },
                  "rxNbNco": {
                    "rxNbNcoEn": 0,
                    "rxNbNcoConfig": {
                      "freq": 0,
                      "sampleFreq": 0,
                      "phase": 0,
                      "realOut": 0
                    }
                  },
                  "rxWbNbCompPFir": {
                    "bankSel": 0,
                    "rxWbNbCompPFirInMuxSel": 0,
                    "rxWbNbCompPFirEn": 0
                  },
                  "resamp": {
                    "rxResampEn": 0,
                    "resampPhaseI": 0,
                    "resampPhaseQ": 0
                  },
                  "gsOutMuxSel": 1,
                  "rxOutSel": 0,
                  "rxRoundMode": 0,
                  "dpArmSel": 0
                }
              },
              "lnaConfig": {
                "externalLnaPresent": false,
                "gpioSourceSel": 0,
                "externalLnaPinSel": 0,
                "settlingDelay": 0,
                "numberLnaGainSteps": 0,
                "lnaGainSteps_mdB": [ 0, 0, 0, 0 ],
                "lnaDigitalGainDelay": 0,
                "minGainIndex": 0
              },
              "rxSsiConfig": {
                "ssiType": 0,
                "ssiDataFormatSel": 0,
                "numLaneSel": 0,
                "strobeType": 0,
                "lsbFirst": 0,
                "qFirst": 0,
                "txRefClockPin": 0,
                "lvdsIBitInversion": false,
                "lvdsQBitInversion": false,
                "lvdsStrobeBitInversion": false,
                "lvdsUseLsbIn12bitMode": 0,
                "lvdsRxClkInversionEn": false,
                "cmosDdrPosClkEn": false,
                "cmosClkInversionEn": false,
                "ddrEn": false,
                "rxMaskStrobeEn": false
              }
            }
          }, {
            "profile": {
              "primarySigBandwidth_Hz": 20000000,
              "rxOutputRate_Hz": 40000000,
              "rxInterfaceSampleRate_Hz": 40000000,
              "rxOffsetLo_kHz": 0,
              "rxNcoEnable": false,
              "outputSignaling": 0,
              "filterOrder": 1,
              "filterOrderLp": 1,
              "hpAdcCorner": 50000000,
              "lpAdcCorner": 0,
              "adcClk_kHz": 960000,
              "rxCorner3dB_kHz": 100000,
              "rxCorner3dBLp_kHz": 100000,
              "tiaPower": 2,
              "tiaPowerLp": 2,
              "channelType": 64,
              "adcType": 1,
              "lpAdcCalMode": 0,
              "gainTableType": 0,
              "rxDpProfile": {
                "rxNbDecTop": {
                  "scicBlk23En": 0,
                  "scicBlk23DivFactor": 1,
                  "scicBlk23LowRippleEn": 0,
                  "decBy2Blk35En": 0,
                  "decBy2Blk37En": 0,
                  "decBy2Blk39En": 0,
                  "decBy2Blk41En": 0,
                  "decBy2Blk43En": 0,
                  "decBy3Blk45En": 0,
                  "decBy2Blk47En": 0
                },
                "rxWbDecTop": {
                  "decBy2Blk25En": 0,
                  "decBy2Blk27En": 0,
                  "decBy2Blk29En": 0,
                  "decBy2Blk31En": 0,
                  "decBy2Blk33En": 0,
                  "wbLpfBlk33p1En": 0
                },
                "rxDecTop": {
                  "decBy3Blk15En": 0,
                  "decBy2Hb3Blk17p1En": 1,
                  "decBy2Hb4Blk17p2En": 0,
                  "decBy2Hb5Blk19p1En": 1,
                  "decBy2Hb6Blk19p2En": 0
                },
                "rxSincHBTop": {
                  "sincGainMux": 1,
                  "sincMux": 1,
                  "hbMux": 2,
                  "isGainCompEnabled": 0,
                  "gainComp9GainI": [ 16384, 16384, 16384, 16384, 16384, 16384 ],
                  "gainComp9GainQ": [ 0, 0, 0, 0, 0, 0 ]
                },
                "rxNbDem": {
                  "dpInFifo": {
                    "dpInFifoEn": 0,
                    "dpInFifoMode": 0,
                    "dpInFifoTestDataSel": 0
                  },
                  "rxNbNco": {
                    "rxNbNcoEn": 0,
                    "rxNbNcoConfig": {
                      "freq": 0,
                      "sampleFreq": 0,
                      "phase": 0,
                      "realOut": 0
                    }
                  },
                  "rxWbNbCompPFir": {
                    "bankSel": 1,
                    "rxWbNbCompPFirInMuxSel": 0,
                    "rxWbNbCompPFirEn": 0
                  },
                  "resamp": {
                    "rxResampEn": 0,
                    "resampPhaseI": 0,
                    "resampPhaseQ": 0
                  },
                  "gsOutMuxSel": 1,
                  "rxOutSel": 0,
                  "rxRoundMode": 0,
                  "dpArmSel": 0
                }
              },
              "lnaConfig": {
                "externalLnaPresent": false,
                "gpioSourceSel": 0,
                "externalLnaPinSel": 0,
                "settlingDelay": 0,
                "numberLnaGainSteps": 0,
                "lnaGainSteps_mdB": [ 0, 0, 0, 0 ],
                "lnaDigitalGainDelay": 0,
                "minGainIndex": 0
              },
              "rxSsiConfig": {
                "ssiType": 2,
                "ssiDataFormatSel": 4,
                "numLaneSel": 1,
                "strobeType": 0,
                "lsbFirst": 0,
                "qFirst": 0,
                "txRefClockPin": 0,
                "lvdsIBitInversion": false,
                "lvdsQBitInversion": false,
                "lvdsStrobeBitInversion": false,
                "lvdsUseLsbIn12bitMode": 0,
                "lvdsRxClkInversionEn": false,
                "cmosDdrPosClkEn": false,
                "cmosClkInversionEn": false,
                "ddrEn": true,
                "rxMaskStrobeEn": false
              }
            }
          }, {
            "profile": {
              "primarySigBandwidth_Hz": 20000000,
              "rxOutputRate_Hz": 40000000,
              "rxInterfaceSampleRate_Hz": 40000000,
              "rxOffsetLo_kHz": 0,
              "rxNcoEnable": false,
              "outputSignaling": 0,
              "filterOrder": 1,
              "filterOrderLp": 1,
              "hpAdcCorner": 50000000,
              "lpAdcCorner": 0,
              "adcClk_kHz": 960000,
              "rxCorner3dB_kHz": 100000,
              "rxCorner3dBLp_kHz": 100000,
              "tiaPower": 2,
              "tiaPowerLp": 2,
              "channelType": 128,
              "adcType": 1,
              "lpAdcCalMode": 0,
              "gainTableType": 0,
              "rxDpProfile": {
                "rxNbDecTop": {
                  "scicBlk23En": 0,
                  "scicBlk23DivFactor": 1,
                  "scicBlk23LowRippleEn": 0,
                  "decBy2Blk35En": 0,
                  "decBy2Blk37En": 0,
                  "decBy2Blk39En": 0,
                  "decBy2Blk41En": 0,
                  "decBy2Blk43En": 0,
                  "decBy3Blk45En": 0,
                  "decBy2Blk47En": 0
                },
                "rxWbDecTop": {
                  "decBy2Blk25En": 0,
                  "decBy2Blk27En": 0,
                  "decBy2Blk29En": 0,
                  "decBy2Blk31En": 0,
                  "decBy2Blk33En": 0,
                  "wbLpfBlk33p1En": 0
                },
                "rxDecTop": {
                  "decBy3Blk15En": 0,
                  "decBy2Hb3Blk17p1En": 1,
                  "decBy2Hb4Blk17p2En": 0,
                  "decBy2Hb5Blk19p1En": 1,
                  "decBy2Hb6Blk19p2En": 0
                },
                "rxSincHBTop": {
                  "sincGainMux": 1,
                  "sincMux": 1,
                  "hbMux": 2,
                  "isGainCompEnabled": 0,
                  "gainComp9GainI": [ 16384, 16384, 16384, 16384, 16384, 16384 ],
                  "gainComp9GainQ": [ 0, 0, 0, 0, 0, 0 ]
                },
                "rxNbDem": {
                  "dpInFifo": {
                    "dpInFifoEn": 0,
                    "dpInFifoMode": 0,
                    "dpInFifoTestDataSel": 0
                  },
                  "rxNbNco": {
                    "rxNbNcoEn": 0,
                    "rxNbNcoConfig": {
                      "freq": 0,
                      "sampleFreq": 0,
                      "phase": 0,
                      "realOut": 0
                    }
                  },
                  "rxWbNbCompPFir": {
                    "bankSel": 3,
                    "rxWbNbCompPFirInMuxSel": 0,
                    "rxWbNbCompPFirEn": 0
                  },
                  "resamp": {
                    "rxResampEn": 0,
                    "resampPhaseI": 0,
                    "resampPhaseQ": 0
                  },
                  "gsOutMuxSel": 1,
                  "rxOutSel": 0,
                  "rxRoundMode": 0,
                  "dpArmSel": 0
                }
              },
              "lnaConfig": {
                "externalLnaPresent": false,
                "gpioSourceSel": 0,
                "externalLnaPinSel": 0,
                "settlingDelay": 0,
                "numberLnaGainSteps": 0,
                "lnaGainSteps_mdB": [ 0, 0, 0, 0 ],
                "lnaDigitalGainDelay": 0,
                "minGainIndex": 0
              },
              "rxSsiConfig": {
                "ssiType": 2,
                "ssiDataFormatSel": 4,
                "numLaneSel": 1,
                "strobeType": 0,
                "lsbFirst": 0,
                "qFirst": 0,
                "txRefClockPin": 0,
                "lvdsIBitInversion": false,
                "lvdsQBitInversion": false,
                "lvdsStrobeBitInversion": false,
                "lvdsUseLsbIn12bitMode": 0,
                "lvdsRxClkInversionEn": false,
                "cmosDdrPosClkEn": false,
                "cmosClkInversionEn": false,
                "ddrEn": true,
                "rxMaskStrobeEn": false
              }
            }
          }, {
            "profile": {
              "primarySigBandwidth_Hz": 12500,
              "rxOutputRate_Hz": 0,
              "rxInterfaceSampleRate_Hz": 0,
              "rxOffsetLo_kHz": 0,
              "rxNcoEnable": false,
              "outputSignaling": 0,
              "filterOrder": 1,
              "filterOrderLp": 1,
              "hpAdcCorner": 0,
              "lpAdcCorner": 0,
              "adcClk_kHz": 0,
              "rxCorner3dB_kHz": 0,
              "rxCorner3dBLp_kHz": 0,
              "tiaPower": 2,
              "tiaPowerLp": 2,
              "channelType": 0,
              "adcType": 1,
              "lpAdcCalMode": 0,
              "gainTableType": 0,
              "rxDpProfile": {
                "rxNbDecTop": {
                  "scicBlk23En": 0,
                  "scicBlk23DivFactor": 0,
                  "scicBlk23LowRippleEn": 0,
                  "decBy2Blk35En": 0,
                  "decBy2Blk37En": 0,
                  "decBy2Blk39En": 0,
                  "decBy2Blk41En": 0,
                  "decBy2Blk43En": 0,
                  "decBy3Blk45En": 0,
                  "decBy2Blk47En": 0
                },
                "rxWbDecTop": {
                  "decBy2Blk25En": 0,
                  "decBy2Blk27En": 0,
                  "decBy2Blk29En": 0,
                  "decBy2Blk31En": 0,
                  "decBy2Blk33En": 0,
                  "wbLpfBlk33p1En": 0
                },
                "rxDecTop": {
                  "decBy3Blk15En": 0,
                  "decBy2Hb3Blk17p1En": 0,
                  "decBy2Hb4Blk17p2En": 0,
                  "decBy2Hb5Blk19p1En": 0,
                  "decBy2Hb6Blk19p2En": 0
                },
                "rxSincHBTop": {
                  "sincGainMux": 1,
                  "sincMux": 0,
                  "hbMux": 4,
                  "isGainCompEnabled": 0,
                  "gainComp9GainI": [ 16384, 16384, 16384, 16384, 16384, 16384 ],
                  "gainComp9GainQ": [ 0, 0, 0, 0, 0, 0 ]
                },
                "rxNbDem": {
                  "dpInFifo": {
                    "dpInFifoEn": 0,
                    "dpInFifoMode": 0,
                    "dpInFifoTestDataSel": 0
                  },
                  "rxNbNco": {
                    "rxNbNcoEn": 0,
                    "rxNbNcoConfig": {
                      "freq": 0,
                      "sampleFreq": 0,
                      "phase": 0,
                      "realOut": 0
                    }
                  },
                  "rxWbNbCompPFir": {
                    "bankSel": 0,
                    "rxWbNbCompPFirInMuxSel": 0,
                    "rxWbNbCompPFirEn": 0
                  },
                  "resamp": {
                    "rxResampEn": 0,
                    "resampPhaseI": 0,
                    "resampPhaseQ": 0
                  },
                  "gsOutMuxSel": 1,
                  "rxOutSel": 0,
                  "rxRoundMode": 0,
                  "dpArmSel": 0
                }
              },
              "lnaConfig": {
                "externalLnaPresent": false,
                "gpioSourceSel": 0,
                "externalLnaPinSel": 0,
                "settlingDelay": 0,
                "numberLnaGainSteps": 0,
                "lnaGainSteps_mdB": [ 0, 0, 0, 0 ],
                "lnaDigitalGainDelay": 0,
                "minGainIndex": 0
              },
              "rxSsiConfig": {
                "ssiType": 0,
                "ssiDataFormatSel": 0,
                "numLaneSel": 0,
                "strobeType": 0,
                "lsbFirst": 0,
                "qFirst": 0,
                "txRefClockPin": 0,
                "lvdsIBitInversion": false,
                "lvdsQBitInversion": false,
                "lvdsStrobeBitInversion": false,
                "lvdsUseLsbIn12bitMode": 0,
                "lvdsRxClkInversionEn": false,
                "cmosDdrPosClkEn": false,
                "cmosClkInversionEn": false,
                "ddrEn": false,
                "rxMaskStrobeEn": false
              }
            }
          }, {
            "profile": {
              "primarySigBandwidth_Hz": 12500,
              "rxOutputRate_Hz": 0,
              "rxInterfaceSampleRate_Hz": 0,
              "rxOffsetLo_kHz": 0,
              "rxNcoEnable": false,
              "outputSignaling": 0,
              "filterOrder": 1,
              "filterOrderLp": 1,
              "hpAdcCorner": 0,
              "lpAdcCorner": 0,
              "adcClk_kHz": 0,
              "rxCorner3dB_kHz": 0,
              "rxCorner3dBLp_kHz": 0,
              "tiaPower": 2,
              "tiaPowerLp": 2,
              "channelType": 0,
              "adcType": 1,
              "lpAdcCalMode": 0,
              "gainTableType": 0,
              "rxDpProfile": {
                "rxNbDecTop": {
                  "scicBlk23En": 0,
                  "scicBlk23DivFactor": 0,
                  "scicBlk23LowRippleEn": 0,
                  "decBy2Blk35En": 0,
                  "decBy2Blk37En": 0,
                  "decBy2Blk39En": 0,
                  "decBy2Blk41En": 0,
                  "decBy2Blk43En": 0,
                  "decBy3Blk45En": 0,
                  "decBy2Blk47En": 0
                },
                "rxWbDecTop": {
                  "decBy2Blk25En": 0,
                  "decBy2Blk27En": 0,
                  "decBy2Blk29En": 0,
                  "decBy2Blk31En": 0,
                  "decBy2Blk33En": 0,
                  "wbLpfBlk33p1En": 0
                },
                "rxDecTop": {
                  "decBy3Blk15En": 0,
                  "decBy2Hb3Blk17p1En": 0,
                  "decBy2Hb4Blk17p2En": 0,
                  "decBy2Hb5Blk19p1En": 0,
                  "decBy2Hb6Blk19p2En": 0
                },
                "rxSincHBTop": {
                  "sincGainMux": 1,
                  "sincMux": 0,
                  "hbMux": 4,
                  "isGainCompEnabled": 0,
                  "gainComp9GainI": [ 16384, 16384, 16384, 16384, 16384, 16384 ],
                  "gainComp9GainQ": [ 0, 0, 0, 0, 0, 0 ]
                },
                "rxNbDem": {
                  "dpInFifo": {
                    "dpInFifoEn": 0,
                    "dpInFifoMode": 0,
                    "dpInFifoTestDataSel": 0
                  },
                  "rxNbNco": {
                    "rxNbNcoEn": 0,
                    "rxNbNcoConfig": {
                      "freq": 0,
                      "sampleFreq": 0,
                      "phase": 0,
                      "realOut": 0
                    }
                  },
                  "rxWbNbCompPFir": {
                    "bankSel": 0,
                    "rxWbNbCompPFirInMuxSel": 0,
                    "rxWbNbCompPFirEn": 0
                  },
                  "resamp": {
                    "rxResampEn": 0,
                    "resampPhaseI": 0,
                    "resampPhaseQ": 0
                  },
                  "gsOutMuxSel": 1,
                  "rxOutSel": 0,
                  "rxRoundMode": 0,
                  "dpArmSel": 0
                }
              },
              "lnaConfig": {
                "externalLnaPresent": false,
                "gpioSourceSel": 0,
                "externalLnaPinSel": 0,
                "settlingDelay": 0,
                "numberLnaGainSteps": 0,
                "lnaGainSteps_mdB": [ 0, 0, 0, 0 ],
                "lnaDigitalGainDelay": 0,
                "minGainIndex": 0
              },
              "rxSsiConfig": {
                "ssiType": 0,
                "ssiDataFormatSel": 0,
                "numLaneSel": 0,
                "strobeType": 0,
                "lsbFirst": 0,
                "qFirst": 0,
                "txRefClockPin": 0,
                "lvdsIBitInversion": false,
                "lvdsQBitInversion": false,
                "lvdsStrobeBitInversion": false,
                "lvdsUseLsbIn12bitMode": 0,
                "lvdsRxClkInversionEn": false,
                "cmosDdrPosClkEn": false,
                "cmosClkInversionEn": false,
                "ddrEn": false,
                "rxMaskStrobeEn": false
              }
            }
          } ]
      },
      "tx": {
        "txInitChannelMask": 12,
        "txProfile": [ {
            "primarySigBandwidth_Hz": 20000000,
            "txInputRate_Hz": 40000000,
            "txInterfaceSampleRate_Hz": 40000000,
            "txOffsetLo_kHz": 0,
            "validDataDelay": 0,
            "txBbf3dBCorner_kHz": 50000,
            "outputSignaling": 0,
            "txPdBiasCurrent": 1,
            "txPdGainEnable": 0,
            "txPrePdRealPole_kHz": 1000000,
            "txPostPdRealPole_kHz": 530000,
            "txBbfPower": 2,
            "txExtLoopBackType": 0,
            "txExtLoopBackForInitCal": 0,
            "txPeakLoopBackPower": 0,
            "frequencyDeviation_Hz": 0,
            "txDpProfile": {
              "txPreProc": {
                "txPreProcSymbol0": 0,
                "txPreProcSymbol1": 0,
                "txPreProcSymbol2": 0,
                "txPreProcSymbol3": 0,
                "txPreProcSymMapDivFactor": 1,
                "txPreProcMode": 1,
                "txPreProcWbNbPfirIBankSel": 0,
                "txPreProcWbNbPfirQBankSel": 1
              },
              "txWbIntTop": {
                "txInterpBy2Blk30En": 0,
                "txInterpBy2Blk28En": 0,
                "txInterpBy2Blk26En": 0,
                "txInterpBy2Blk24En": 0,
                "txInterpBy2Blk22En": 0,
                "txWbLpfBlk22p1En": 0
              },
              "txNbIntTop": {
                "txInterpBy2Blk20En": 0,
                "txInterpBy2Blk18En": 0,
                "txInterpBy2Blk16En": 0,
                "txInterpBy2Blk14En": 0,
                "txInterpBy2Blk12En": 0,
                "txInterpBy3Blk10En": 0,
                "txInterpBy2Blk8En": 0,
                "txScicBlk32En": 0,
                "txScicBlk32DivFactor": 1
              },
              "txIntTop": {
                "interpBy3Blk44p1En": 1,
                "sinc3Blk44En": 0,
                "sinc2Blk42En": 0,
                "interpBy3Blk40En": 0,
                "interpBy2Blk38En": 1,
                "interpBy2Blk36En": 1
              },
              "txIntTopFreqDevMap": {
                "rrc2Frac": 0,
                "mpll": 0,
                "nchLsw": 0,
                "nchMsb": 0,
                "freqDevMapEn": 0,
                "txRoundEn": 1
              },
              "txIqdmDuc": {
                "iqdmDucMode": 0,
                "iqdmDev": 0,
                "iqdmDevOffset": 0,
                "iqdmScalar": 0,
                "iqdmThreshold": 0,
                "iqdmNco": {
                  "freq": 0,
                  "sampleFreq": 40000000,
                  "phase": 0,
                  "realOut": 0
                }
              }
            },
            "txSsiConfig": {
              "ssiType": 2,
              "ssiDataFormatSel": 4,
              "numLaneSel": 1,
              "strobeType": 0,
              "lsbFirst": 0,
              "qFirst": 0,
              "txRefClockPin": 0,
              "lvdsIBitInversion": false,
              "lvdsQBitInversion": false,
              "lvdsStrobeBitInversion": false,
              "lvdsUseLsbIn12bitMode": 0,
              "lvdsRxClkInversionEn": false,
              "cmosDdrPosClkEn": false,
              "cmosClkInversionEn": false,
              "ddrEn": true,
              "rxMaskStrobeEn": false
            }
          }, {
            "primarySigBandwidth_Hz": 20000000,
            "txInputRate_Hz": 40000000,
            "txInterfaceSampleRate_Hz": 40000000,
            "txOffsetLo_kHz": 0,
            "validDataDelay": 0,
            "txBbf3dBCorner_kHz": 50000,
            "outputSignaling": 0,
            "txPdBiasCurrent": 1,
            "txPdGainEnable": 0,
            "txPrePdRealPole_kHz": 1000000,
            "txPostPdRealPole_kHz": 530000,
            "txBbfPower": 2,
            "txExtLoopBackType": 0,
            "txExtLoopBackForInitCal": 0,
            "txPeakLoopBackPower": 0,
            "frequencyDeviation_Hz": 0,
            "txDpProfile": {
              "txPreProc": {
                "txPreProcSymbol0": 0,
                "txPreProcSymbol1": 0,
                "txPreProcSymbol2": 0,
                "txPreProcSymbol3": 0,
                "txPreProcSymMapDivFactor": 1,
                "txPreProcMode": 1,
                "txPreProcWbNbPfirIBankSel": 2,
                "txPreProcWbNbPfirQBankSel": 3
              },
              "txWbIntTop": {
                "txInterpBy2Blk30En": 0,
                "txInterpBy2Blk28En": 0,
                "txInterpBy2Blk26En": 0,
                "txInterpBy2Blk24En": 0,
                "txInterpBy2Blk22En": 0,
                "txWbLpfBlk22p1En": 0
              },
              "txNbIntTop": {
                "txInterpBy2Blk20En": 0,
                "txInterpBy2Blk18En": 0,
                "txInterpBy2Blk16En": 0,
                "txInterpBy2Blk14En": 0,
                "txInterpBy2Blk12En": 0,
                "txInterpBy3Blk10En": 0,
                "txInterpBy2Blk8En": 0,
                "txScicBlk32En": 0,
                "txScicBlk32DivFactor": 1
              },
              "txIntTop": {
                "interpBy3Blk44p1En": 1,
                "sinc3Blk44En": 0,
                "sinc2Blk42En": 0,
                "interpBy3Blk40En": 0,
                "interpBy2Blk38En": 1,
                "interpBy2Blk36En": 1
              },
              "txIntTopFreqDevMap": {
                "rrc2Frac": 0,
                "mpll": 0,
                "nchLsw": 0,
                "nchMsb": 0,
                "freqDevMapEn": 0,
                "txRoundEn": 1
              },
              "txIqdmDuc": {
                "iqdmDucMode": 0,
                "iqdmDev": 0,
                "iqdmDevOffset": 0,
                "iqdmScalar": 0,
                "iqdmThreshold": 0,
                "iqdmNco": {
                  "freq": 0,
                  "sampleFreq": 40000000,
                  "phase": 0,
                  "realOut": 0
                }
              }
            },
            "txSsiConfig": {
              "ssiType": 2,
              "ssiDataFormatSel": 4,
              "numLaneSel": 1,
              "strobeType": 0,
              "lsbFirst": 0,
              "qFirst": 0,
              "txRefClockPin": 0,
              "lvdsIBitInversion": false,
              "lvdsQBitInversion": false,
              "lvdsStrobeBitInversion": false,
              "lvdsUseLsbIn12bitMode": 0,
              "lvdsRxClkInversionEn": false,
              "cmosDdrPosClkEn": false,
              "cmosClkInversionEn": false,
              "ddrEn": true,
              "rxMaskStrobeEn": false
            }
          } ]
      },
      "sysConfig": {
        "duplexMode": 0,
        "fhModeOn": 1,
        "numDynamicProfiles": 1,
        "mcsMode": 0,
        "mcsInterfaceType": 0,
        "adcTypeMonitor": 1,
        "pllLockTime_us": 77,
        "pllPhaseSyncWait_us": 0,
        "pllModulus": {
          "modulus": [ 8388593, 8388593, 8388593, 8388593, 8388593 ],
          "dmModulus": [ 8388593, 8388593 ]
        }
      },
      "pfirBuffer": {
        "pfirRxWbNbChFilterCoeff_A": {
          "numCoeff": 128,
          "symmetricSel": 0,
          "tapsSel": 3,
          "gainSel": 2,
          "coefficients": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8388608, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]
        },
        "pfirRxWbNbChFilterCoeff_B": {
          "numCoeff": 128,
          "symmetricSel": 0,
          "tapsSel": 3,
          "gainSel": 2,
          "coefficients": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8388608, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]
        },
        "pfirRxWbNbChFilterCoeff_C": {
          "numCoeff": 128,
          "symmetricSel": 0,
          "tapsSel": 3,
          "gainSel": 2,
          "coefficients": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8388608, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]
        },
        "pfirRxWbNbChFilterCoeff_D": {
          "numCoeff": 128,
          "symmetricSel": 0,
          "tapsSel": 3,
          "gainSel": 2,
          "coefficients": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8388608, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]
        },
        "pfirTxWbNbPulShpCoeff_A": {
          "numCoeff": 128,
          "symmetricSel": 0,
          "tapsSel": 3,
          "gainSel": 2,
          "coefficients": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]
        },
        "pfirTxWbNbPulShpCoeff_B": {
          "numCoeff": 128,
          "symmetricSel": 0,
          "tapsSel": 3,
          "gainSel": 2,
          "coefficients": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]
        },
        "pfirTxWbNbPulShpCoeff_C": {
          "numCoeff": 128,
          "symmetricSel": 0,
          "tapsSel": 3,
          "gainSel": 2,
          "coefficients": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]
        },
        "pfirTxWbNbPulShpCoeff_D": {
          "numCoeff": 128,
          "symmetricSel": 0,
          "tapsSel": 3,
          "gainSel": 2,
          "coefficients": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]
        },
        "pfirRxNbPulShp": [ {
            "numCoeff": 128,
            "symmetricSel": 0,
            "taps": 128,
            "gainSel": 2,
            "coefficients": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8388608, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]
          }, {
            "numCoeff": 128,
            "symmetricSel": 0,
            "taps": 128,
            "gainSel": 2,
            "coefficients": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8388608, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]
          } ],
        "pfirRxMagLowTiaLowSRHp": [ {
            "numCoeff": 21,
            "coefficients": [ 3, -116, 500, -633, -520, 1609, 783, -3980, -1975, 11016, 19392, 11016, -1975, -3980, 783, 1609, -520, -633, 500, -116, 3 ]
          }, {
            "numCoeff": 21,
            "coefficients": [ 3, -116, 500, -633, -520, 1609, 783, -3980, -1975, 11016, 19392, 11016, -1975, -3980, 783, 1609, -520, -633, 500, -116, 3 ]
          } ],
        "pfirRxMagLowTiaHighSRHp": [ {
            "numCoeff": 21,
            "coefficients": [ -710, 40, 1726, 1906, -1470, -5751, -5663, 162, 7493, 12017, 13269, 12017, 7493, 162, -5663, -5751, -1470, 1906, 1726, 40, -710 ]
          }, {
            "numCoeff": 21,
            "coefficients": [ -710, 40, 1726, 1906, -1470, -5751, -5663, 162, 7493, 12017, 13269, 12017, 7493, 162, -5663, -5751, -1470, 1906, 1726, 40, -710 ]
          } ],
        "pfirRxMagHighTiaHighSRHp": [ {
            "numCoeff": 21,
            "coefficients": [ 4, 23, -176, 631, -1603, 3201, -5306, 7454, -8659, 5616, 30400, 5616, -8659, 7454, -5306, 3201, -1603, 631, -176, 23, 4 ]
          }, {
            "numCoeff": 21,
            "coefficients": [ 4, 23, -176, 631, -1603, 3201, -5306, 7454, -8659, 5616, 30400, 5616, -8659, 7454, -5306, 3201, -1603, 631, -176, 23, 4 ]
          } ],
        "pfirRxMagLowTiaLowSRLp": [ {
            "numCoeff": 21,
            "coefficients": [ 3, -116, 500, -633, -520, 1609, 783, -3979, -1974, 11016, 19389, 11016, -1974, -3979, 783, 1609, -520, -633, 500, -116, 3 ]
          }, {
            "numCoeff": 21,
            "coefficients": [ 3, -116, 500, -633, -520, 1609, 783, -3979, -1974, 11016, 19389, 11016, -1974, -3979, 783, 1609, -520, -633, 500, -116, 3 ]
          } ],
        "pfirRxMagLowTiaHighSRLp": [ {
            "numCoeff": 21,
            "coefficients": [ -710, 40, 1724, 1903, -1471, -5747, -5656, 167, 7492, 12010, 13259, 12010, 7492, 167, -5656, -5747, -1471, 1903, 1724, 40, -710 ]
          }, {
            "numCoeff": 21,
            "coefficients": [ -710, 40, 1724, 1903, -1471, -5747, -5656, 167, 7492, 12010, 13259, 12010, 7492, 167, -5656, -5747, -1471, 1903, 1724, 40, -710 ]
          } ],
        "pfirRxMagHighTiaHighSRLp": [ {
            "numCoeff": 21,
            "coefficients": [ 4, 22, -169, 612, -1558, 3118, -5180, 7306, -8549, 5683, 30195, 5683, -8549, 7306, -5180, 3118, -1558, 612, -169, 22, 4 ]
          }, {
            "numCoeff": 21,
            "coefficients": [ 4, 22, -169, 612, -1558, 3118, -5180, 7306, -8549, 5683, 30195, 5683, -8549, 7306, -5180, 3118, -1558, 612, -169, 22, 4 ]
          } ],
        "pfirTxMagComp1": {
          "numCoeff": 21,
          "coefficients": [ -4, 117, -588, 1843, -4319, 8109, -12389, 15089, -11070, 292, 38616, 292, -11070, 15089, -12389, 8109, -4319, 1843, -588, 117, -4 ]
        },
        "pfirTxMagComp2": {
          "numCoeff": 21,
          "coefficients": [ -4, 117, -588, 1843, -4319, 8109, -12389, 15089, -11070, 292, 38616, 292, -11070, 15089, -12389, 8109, -4319, 1843, -588, 117, -4 ]
        },
        "pfirTxMagCompNb": [ {
            "numCoeff": 13,
            "coefficients": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]
          }, {
            "numCoeff": 13,
            "coefficients": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]
          } ],
        "pfirRxMagCompNb": [ {
            "numCoeff": 13,
            "coefficients": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]
          }, {
            "numCoeff": 13,
            "coefficients": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]
          } ]
      }
    }

    Thanks,

    Justin

  • Hi Justin,

    I see you are not using the master branch which most likely explains your issue. The profile you are generating is not compatible with the driver in that branch. Note that branch is way behind master (it was a dev branch; not really something to be used).

    For TES 0.20, you need to use the driver in the master branch.

    - Nuno Sá

  • Thank you, I will try this and report back if we're still experiencing issues.

  • Hi Nuno,

    I have switched to using the tip of the master branch and am experiencing the same issue with identical error logs.  The driver seems to work fine as long as we don't use a FH enabled profile.

    Any ideas on what we can try?

    Thanks,

    Justin

  • Hi,

    Not really... I'll have to try that profile on my end and see if the issue is reproducible.

    - Nuno Sá

  • Hi,

    So I gave your profile a test and I did not experienced your issue. I was able to, sometimes, load the profile. Note that I said sometimes because I did had issues related with interface tuning. Interface tuning is the last thing being done on the device setup.

    So, apparently, we do have some issues for this profile but not really the ones you are experiencing... You are having problems even before reaching the tuning phase.

    After this point the driver fails to attach and the device is non-operational.  Some investigation has found the failure is occurring somewhere related to the 'adi_adrv9001_cals_InitCals_Run' function call

    Looking at the full log, it actually seems the issue is in adrv9002_power_mgmt_config() call and those errors might indicate that there might be some issue on your HW design that only pops up with FH enabled profiles. Could you confirm on your kernel boot log, which api version is being used?

    Another thing (should not be related with your issue) is that you should generate a stream file in TES under file->generate stream image and load that before the profile. The process is identical to the profile loading but the IIO attribute name in this case is 'stream_config'.

    - Nuno Sá

  • Hi Nuno,

    Thanks for the details.  In the working case, I see the following printouts in the driver initialization:
    [   19.086182] adrv9002 spi0.0: adrv9002-phy Rev 12.0, Firmware 0.240.48.8,  Stream 0.7.9.0,  API version: 48.49.2 successfully initialized
    [   19.118263] cf_axi_adc ff220000.axi-adrv9002-rx-lpc: ADI AIM (0.00.) at 0xFF220000 mapped to 0x29d3d165, probed ADC ADRV9002 as master

    Do those versions look reasonable to you?

    Do you have any thoughts on what HW design issues might be the culprit?  My understanding is we only are using the reset line and SPI bus for sample data, I do not believe our HW design is aware that FH mode has been enabled.

    We are loading the profile via /lib/firmware files, as well as the TES generated stream image.  Since you also had issues using the profile I provided, is it possible for you to provide us a known working FH profile and stream image?

    Thanks,

    Justin

  • Hi,

    Yes, this is the currently supported version...

    Do you have any thoughts on what HW design issues might be the culprit?  My understanding is we only are using the reset line and SPI bus for sample data, I do not believe our HW design is aware that FH mode has been enabled

    I'm also not an HW expert so my best guess is that when FH is enabled, there are more blocks/HW enabled/setted up in the chip which may be triggering some issue (maybe in the supply lines?), Saying this because the issue is not triggered with the default profiles...

    We are loading the profile via /lib/firmware files,

    I see, I did my test loading the profiles using the IIO sysfs attribute... In theory, should not matter.

    Since you also had issues using the profile I provided, is it possible for you to provide us a known working FH profile and stream image?

    As I said, I've had different issues than what you are experiencing but yes, you can try another profile. As I could see from the output rates in your profile, you are generating some custom profile. I would say to just use a typical LTE one with, let's say, 15.36 MSPS.

    - Nuno Sá

  • Hi Nuno,

    We tried using an LTE FH profile and stream image and experienced the exact failure as before.  Does this help narrow down the potential problem?

    Can you please provide us HDL reference design source code?

    Thanks,

    Justin