diff --git a/Documentation/devicetree/bindings/iio/logic/adi,adsy1100-nyx.yaml b/Documentation/devicetree/bindings/iio/logic/adi,adsy1100-nyx.yaml new file mode 100644 index 00000000000000..133203f6c8c3f9 --- /dev/null +++ b/Documentation/devicetree/bindings/iio/logic/adi,adsy1100-nyx.yaml @@ -0,0 +1,262 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/iio/logic/adi,adsy1100-nyx.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Analog Devices ADSY1100 Apollo SOM "Nyx" RF front-end controller + +maintainers: + - Michael Hennerich + +description: | + GPIO-driven controller for the four RX and four TX RF channels of the + ADSY1100 Apollo SOM "Nyx" daughter board. The driver consumes the 76 + control GPIOs that drive the per-channel digital step attenuators (DSA), + filter band-selection multiplexers, channel powerdown and the RX LNA + bypass switches, and exposes high-level IIO controls. + + Per-channel power-on defaults can optionally be supplied through the + output-channels (TX) and input-channels (RX) container nodes. Defaults + supplied this way are applied at probe time, before the IIO device is + registered, so the hardware comes up in the requested state. + + Built-in defaults applied to every channel before any DT subnode is + parsed are: + - attenuation = 0 mdB (hardwaregain 0 dB) + - filter mode = THRU + - powerdown = disabled (channel enabled) + - RX LNA = disabled (bypass=1) + +properties: + compatible: + const: adi,adsy1100-nyx + + out-gpios: + description: | + Array of 76 control GPIOs. Layout, in the order listed: + [ 0.. 7] TX3..TX0 filter_ctrl_{0,1} (TX descending) + [ 8..15] RX3..RX0 filter_ctrl_{0,1} (RX descending) + [16..21] TX0 dsa[0..5] + [22..27] TX1 dsa[0..5] + [28..33] TX2 dsa[0..5] + [34..39] TX3 dsa[0..5] + [40..45] RX0 dsa[0..5] + [46..51] RX1 dsa[0..5] + [52..57] RX2 dsa[0..5] + [58..63] RX3 dsa[0..5] + [64..67] TX0..TX3 enable + [68..71] RX0..RX3 enable + [72..75] RX0..RX3 amp_bypass + minItems: 76 + maxItems: 76 + + label: + description: Human-readable label for this RFFE instance. + + output-channels: + type: object + description: | + Container for per-TX-channel (output) power-on default + configuration. Each child node configures one of the four TX paths. + properties: + '#address-cells': + const: 1 + '#size-cells': + const: 0 + patternProperties: + "^channel@[0-3]$": + type: object + description: Per-TX-channel default configuration. Index 0..3. + properties: + reg: + minimum: 0 + maximum: 3 + description: TX channel index (0..3). + + adi,attenuation-millidb: + $ref: /schemas/types.yaml#/definitions/uint32 + minimum: 0 + maximum: 31500 + multipleOf: 500 + default: 0 + description: | + Initial digital step attenuator (DSA) setting in + milli-dB. The DSA has 0.5 dB resolution, so the value + must be a multiple of 500. Maps to a negative IIO + hardwaregain in sysfs (e.g. 6000 mdB attenuation -> -6 dB + hardwaregain). + + adi,filter-mode: + $ref: /schemas/types.yaml#/definitions/uint32 + enum: [0, 1, 2, 3] + default: 1 + description: | + Initial filter band. Use one of the ADSY1100_NYX_FILTER_* + macros from : + 0 = LOW_BAND + 1 = THRU + 2 = X_BAND + 3 = KU_BAND + + adi,powerdown: + type: boolean + description: | + If present, the channel is powered down at probe time + instead of being brought up enabled. + + required: + - reg + additionalProperties: false + additionalProperties: false + + input-channels: + type: object + description: | + Container for per-RX-channel (input) power-on default + configuration. Each child node configures one of the four RX paths. + properties: + '#address-cells': + const: 1 + '#size-cells': + const: 0 + patternProperties: + "^channel@[0-3]$": + type: object + description: Per-RX-channel default configuration. Index 0..3. + properties: + reg: + minimum: 0 + maximum: 3 + description: RX channel index (0..3). + + adi,attenuation-millidb: + $ref: /schemas/types.yaml#/definitions/uint32 + minimum: 0 + maximum: 31500 + multipleOf: 500 + default: 0 + description: | + Initial digital step attenuator (DSA) setting in + milli-dB. The DSA has 0.5 dB resolution, so the value + must be a multiple of 500. Maps to a negative IIO + hardwaregain in sysfs. + + adi,filter-mode: + $ref: /schemas/types.yaml#/definitions/uint32 + enum: [0, 1, 2, 3] + default: 1 + description: | + Initial filter band. Use one of the ADSY1100_NYX_FILTER_* + macros from . + + adi,powerdown: + type: boolean + description: | + If present, the channel is powered down at probe time + instead of being brought up enabled. + + adi,amplifier-enable: + type: boolean + description: | + If present, the RX LNA is brought into the signal path at + probe time (bypass_amplifier_en=0). When absent the LNA is + bypassed (default). + + required: + - reg + additionalProperties: false + additionalProperties: false + +required: + - compatible + - out-gpios + +additionalProperties: false + +examples: + - | + #include + + rffe { + compatible = "adi,adsy1100-nyx"; + label = "nyx_controls"; + + out-gpios = <&gpio_a 0 0>, <&gpio_a 1 0>, <&gpio_a 2 0>, + <&gpio_a 3 0>, <&gpio_a 4 0>, <&gpio_a 5 0>, + <&gpio_a 6 0>, <&gpio_a 7 0>, <&gpio_a 8 0>, + <&gpio_a 9 0>, <&gpio_a 10 0>, <&gpio_a 11 0>, + <&gpio_a 12 0>, <&gpio_a 13 0>, <&gpio_a 14 0>, + <&gpio_a 15 0>, <&gpio_a 16 0>, <&gpio_a 17 0>, + <&gpio_a 18 0>, <&gpio_a 19 0>, <&gpio_a 20 0>, + <&gpio_a 21 0>, <&gpio_a 22 0>, <&gpio_a 23 0>, + <&gpio_a 24 0>, <&gpio_a 25 0>, <&gpio_a 26 0>, + <&gpio_a 27 0>, <&gpio_a 28 0>, <&gpio_a 29 0>, + <&gpio_a 30 0>, <&gpio_a 31 0>, <&gpio_b 0 0>, + <&gpio_b 1 0>, <&gpio_b 2 0>, <&gpio_b 3 0>, + <&gpio_b 4 0>, <&gpio_b 5 0>, <&gpio_b 6 0>, + <&gpio_b 7 0>, <&gpio_b 8 0>, <&gpio_b 9 0>, + <&gpio_b 10 0>, <&gpio_b 11 0>, <&gpio_b 12 0>, + <&gpio_b 13 0>, <&gpio_b 14 0>, <&gpio_b 15 0>, + <&gpio_b 16 0>, <&gpio_b 17 0>, <&gpio_b 18 0>, + <&gpio_b 19 0>, <&gpio_b 20 0>, <&gpio_b 21 0>, + <&gpio_b 22 0>, <&gpio_b 23 0>, <&gpio_b 24 0>, + <&gpio_b 25 0>, <&gpio_b 26 0>, <&gpio_b 27 0>, + <&gpio_b 28 0>, <&gpio_b 29 0>, <&gpio_b 30 0>, + <&gpio_b 31 0>, <&gpio_c 0 0>, <&gpio_c 1 0>, + <&gpio_c 2 0>, <&gpio_c 3 0>, <&gpio_c 4 0>, + <&gpio_c 5 0>, <&gpio_c 6 0>, <&gpio_c 7 0>, + <&gpio_c 8 0>, <&gpio_c 9 0>, <&gpio_c 10 0>, + <&gpio_c 11 0>; + + output-channels { + #address-cells = <1>; + #size-cells = <0>; + + channel@0 { + reg = <0>; + adi,attenuation-millidb = <6000>; /* -6.0 dB */ + adi,filter-mode = ; + }; + channel@1 { + reg = <1>; + adi,attenuation-millidb = <0>; + adi,filter-mode = ; + }; + channel@2 { + reg = <2>; + adi,filter-mode = ; + adi,powerdown; + }; + channel@3 { + reg = <3>; + adi,filter-mode = ; + }; + }; + + input-channels { + #address-cells = <1>; + #size-cells = <0>; + + channel@0 { + reg = <0>; + adi,attenuation-millidb = <3500>; /* -3.5 dB */ + adi,filter-mode = ; + }; + channel@1 { + reg = <1>; + adi,filter-mode = ; + adi,amplifier-enable; /* bring LNA into the path */ + }; + channel@2 { + reg = <2>; + adi,filter-mode = ; + }; + channel@3 { + reg = <3>; + adi,filter-mode = ; + adi,powerdown; + }; + }; + }; +... diff --git a/arch/arm64/boot/dts/xilinx/vu11p-ad9084-vpx-adsy1100-nyx.dtso b/arch/arm64/boot/dts/xilinx/vu11p-ad9084-vpx-adsy1100-nyx.dtso new file mode 100644 index 00000000000000..ca7e5a199db35e --- /dev/null +++ b/arch/arm64/boot/dts/xilinx/vu11p-ad9084-vpx-adsy1100-nyx.dtso @@ -0,0 +1,120 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Device-tree overlay that instantiates the ADSY1100 Apollo SOM "Nyx" + * RF front-end controller (drivers/iio/logic/adsy1100_nyx.c) on top of + * the vu11p-ad9084-vpx-revb base overlay. + * + * Adds a dedicated adsy1100-nyx node so the board binds against the + * high-level RFFE driver. The dormant rfpc_one_bit_adc_dac stub + * provided by the base overlay is left disabled. + */ +/dts-v1/; +/plugin/; + +#define DEVICE_PROFILE_NAME "204C_M4_L4_NP16_8p0_4x4.bin" + +#include "vu11p-ad9084-vpx-reva.dtso" +#include + +&adsy1100_nyx { + label = "nyx_controls"; + status = "okay"; + + out-gpios = <&axi_gpio_1 33 0>, <&axi_gpio_1 34 0>, + <&axi_gpio_1 35 0>, <&axi_gpio_1 36 0>, + <&axi_gpio_1 37 0>, <&axi_gpio_1 38 0>, + <&axi_gpio_1 39 0>, <&axi_gpio_1 40 0>, + <&axi_gpio_1 41 0>, <&axi_gpio_1 42 0>, + <&axi_gpio_1 43 0>, <&axi_gpio_1 44 0>, + <&axi_gpio_1 45 0>, <&axi_gpio_1 46 0>, + <&axi_gpio_1 47 0>, <&axi_gpio_1 48 0>, + <&axi_gpio_1 49 0>, <&axi_gpio_1 50 0>, + <&axi_gpio_1 51 0>, <&axi_gpio_1 52 0>, + <&axi_gpio_1 53 0>, <&axi_gpio_1 54 0>, + <&axi_gpio_1 55 0>, <&axi_gpio_1 56 0>, + <&axi_gpio_1 57 0>, <&axi_gpio_1 58 0>, + <&axi_gpio_1 59 0>, <&axi_gpio_1 60 0>, + <&axi_gpio_1 61 0>, <&axi_gpio_1 62 0>, + <&axi_gpio_1 63 0>, <&axi_gpio_2 0 0>, + <&axi_gpio_2 1 0>, <&axi_gpio_2 2 0>, + <&axi_gpio_2 3 0>, <&axi_gpio_2 4 0>, + <&axi_gpio_2 5 0>, <&axi_gpio_2 6 0>, + <&axi_gpio_2 7 0>, <&axi_gpio_2 8 0>, + <&axi_gpio_2 9 0>, <&axi_gpio_2 10 0>, + <&axi_gpio_2 11 0>, <&axi_gpio_2 12 0>, + <&axi_gpio_2 13 0>, <&axi_gpio_2 14 0>, + <&axi_gpio_2 15 0>, <&axi_gpio_2 16 0>, + <&axi_gpio_2 17 0>, <&axi_gpio_2 18 0>, + <&axi_gpio_2 19 0>, <&axi_gpio_2 20 0>, + <&axi_gpio_2 21 0>, <&axi_gpio_2 22 0>, + <&axi_gpio_2 23 0>, <&axi_gpio_2 24 0>, + <&axi_gpio_2 25 0>, <&axi_gpio_2 26 0>, + <&axi_gpio_2 27 0>, <&axi_gpio_2 28 0>, + <&axi_gpio_2 29 0>, <&axi_gpio_2 30 0>, + <&axi_gpio_2 31 0>, <&axi_gpio_2 32 0>, + <&axi_gpio_2 33 0>, <&axi_gpio_2 34 0>, + <&axi_gpio_2 35 0>, <&axi_gpio_2 36 0>, + <&axi_gpio_2 37 0>, <&axi_gpio_2 38 0>, + <&axi_gpio_2 39 0>, <&axi_gpio_2 40 0>, + <&axi_gpio_2 41 0>, <&axi_gpio_2 42 0>, + <&axi_gpio_2 43 0>, <&axi_gpio_2 44 0>; + + /* + * Per-channel power-on defaults. The values below match the + * driver's built-in defaults (0 dB attenuation, THRU filter, + * channel enabled, RX LNA bypassed) and are included here as + * a template -- edit per channel to override. + */ + output-channels { + #address-cells = <1>; + #size-cells = <0>; + + channel@0 { + reg = <0>; + adi,attenuation-millidb = <0>; + adi,filter-mode = ; + }; + channel@1 { + reg = <1>; + adi,attenuation-millidb = <0>; + adi,filter-mode = ; + }; + channel@2 { + reg = <2>; + adi,attenuation-millidb = <0>; + adi,filter-mode = ; + }; + channel@3 { + reg = <3>; + adi,attenuation-millidb = <0>; + adi,filter-mode = ; + }; + }; + + input-channels { + #address-cells = <1>; + #size-cells = <0>; + + channel@0 { + reg = <0>; + adi,attenuation-millidb = <0>; + adi,filter-mode = ; + /* adi,amplifier-enable; -- uncomment to bring the LNA into path */ + }; + channel@1 { + reg = <1>; + adi,attenuation-millidb = <0>; + adi,filter-mode = ; + }; + channel@2 { + reg = <2>; + adi,attenuation-millidb = <0>; + adi,filter-mode = ; + }; + channel@3 { + reg = <3>; + adi,attenuation-millidb = <0>; + adi,filter-mode = ; + }; + }; +}; diff --git a/arch/arm64/boot/dts/xilinx/vu11p-ad9084-vpx-reva.dtso b/arch/arm64/boot/dts/xilinx/vu11p-ad9084-vpx-reva.dtso index 65d18aaaf1b65a..6590ef92f1a70e 100644 --- a/arch/arm64/boot/dts/xilinx/vu11p-ad9084-vpx-reva.dtso +++ b/arch/arm64/boot/dts/xilinx/vu11p-ad9084-vpx-reva.dtso @@ -682,4 +682,11 @@ #size-cells = <0>; status = "disabled"; }; + + adsy1100_nyx: adsy1100-nyx@0 { + compatible = "adi,adsy1100-nyx"; + #address-cells = <1>; + #size-cells = <0>; + status = "disabled"; + }; }; diff --git a/arch/arm64/configs/adi_zynqmp_adsy1100_defconfig b/arch/arm64/configs/adi_zynqmp_adsy1100_defconfig index 192830c46d75b7..c9faf4bc9a0f11 100644 --- a/arch/arm64/configs/adi_zynqmp_adsy1100_defconfig +++ b/arch/arm64/configs/adi_zynqmp_adsy1100_defconfig @@ -320,6 +320,7 @@ CONFIG_XILINX_AMS=y # CONFIG_CF_AXI_DDS_AD9162 is not set CONFIG_ADF4382=y CONFIG_LTC6948=y +CONFIG_ADSY1100_NYX=y CONFIG_XILINX_INTC=y CONFIG_IRQCHIP_XILINX_INTC_MODULE_SUPPORT_EXPERIMENTAL=y CONFIG_PHY_XILINX_ZYNQMP=y diff --git a/drivers/iio/logic/Kconfig b/drivers/iio/logic/Kconfig index 79403c184f265e..44edb057b7be6b 100644 --- a/drivers/iio/logic/Kconfig +++ b/drivers/iio/logic/Kconfig @@ -17,3 +17,15 @@ config AXI_AION_TRIG tristate "AXI AION Trigger support" help Support for the AXI AION Trigger module HDL IP Core. + +config ADSY1100_NYX + tristate "Analog Devices ADSY1100 Nyx RF front-end controller" + depends on GPIOLIB && OF + help + Say yes here to support the Nyx RF front-end daughter board on the + Analog Devices ADSY1100 Apollo SOM platform. + + The driver exposes per-channel digital step attenuator settings + (in dB), filter band selection, channel powerdown and RX LNA + bypass through the IIO sysfs interface, driving the underlying + GPIOs as a single high-level device. diff --git a/drivers/iio/logic/Makefile b/drivers/iio/logic/Makefile index e9558ec2997a4f..d6813eca1fc7d0 100644 --- a/drivers/iio/logic/Makefile +++ b/drivers/iio/logic/Makefile @@ -2,4 +2,5 @@ obj-$(CONFIG_M2K_LOGIC_ANALYZER) += m2k-logic-analyzer.o obj-$(CONFIG_M2K_LOGIC_ANALYZER) += m2k-fabric.o obj-$(CONFIG_M2K_LOGIC_ANALYZER) += m2k-trigger-ad.o obj-$(CONFIG_AXI_AION_TRIG) += axi-aion-trig.o +obj-$(CONFIG_ADSY1100_NYX) += adsy1100_nyx.o diff --git a/drivers/iio/logic/adsy1100_nyx.c b/drivers/iio/logic/adsy1100_nyx.c new file mode 100644 index 00000000000000..39c4296f5aaa2d --- /dev/null +++ b/drivers/iio/logic/adsy1100_nyx.c @@ -0,0 +1,559 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Analog Devices ADSY1100 Apollo SOM "Nyx" RF front-end controller. + * + * GPIO-driven driver that provides a high-level IIO interface for the + * 4 RX / 4 TX RF channels on the Nyx daughter board: + * - per-channel digital step attenuator (0 .. -31.5 dB, 0.5 dB step) + * - per-channel filter band selection (low / thru / X / Ku) + * - per-channel powerdown + * - per-RX-channel low-noise amplifier bypass + * + * Copyright 2026 Analog Devices Inc. + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include + +#define ADSY1100_NYX_NUM_RX 4 +#define ADSY1100_NYX_NUM_TX 4 + +#define ADSY1100_NYX_DSA_BITS 6 +#define ADSY1100_NYX_DSA_MAX_X2 63 /* 31.5 dB / 0.5 dB step */ + +/* + * GPIO layout in the "out" gpio array, matching the order the DT lists in + * the out-gpios property of the Nyx node: + * + * [ 0.. 7] TX3..TX0 filter_ctrl_{0,1} (TX descending) + * [ 8..15] RX3..RX0 filter_ctrl_{0,1} (RX descending) + * [16..21] TX0 dsa[0..5] + * [22..27] TX1 dsa[0..5] + * [28..33] TX2 dsa[0..5] + * [34..39] TX3 dsa[0..5] + * [40..45] RX0 dsa[0..5] + * [46..51] RX1 dsa[0..5] + * [52..57] RX2 dsa[0..5] + * [58..63] RX3 dsa[0..5] + * [64..67] TX0..TX3 enable + * [68..71] RX0..RX3 enable + * [72..75] RX0..RX3 amp_bypass + */ +#define ADSY1100_NYX_GPIO_TX_FILT_BASE 0 +#define ADSY1100_NYX_GPIO_RX_FILT_BASE 8 +#define ADSY1100_NYX_GPIO_TX_DSA_BASE 16 +#define ADSY1100_NYX_GPIO_RX_DSA_BASE 40 +#define ADSY1100_NYX_GPIO_TX_EN_BASE 64 +#define ADSY1100_NYX_GPIO_RX_EN_BASE 68 +#define ADSY1100_NYX_GPIO_RX_AMP_BASE 72 +#define ADSY1100_NYX_GPIO_COUNT 76 + +#define ADSY1100_NYX_FILTER_NUM_MODES 4 + +struct adsy1100_nyx { + struct mutex lock; /* serialise GPIO updates and shadow state */ + struct gpio_descs *gpios; + + u8 rx_dsa_x2[ADSY1100_NYX_NUM_RX]; + u8 tx_dsa_x2[ADSY1100_NYX_NUM_TX]; + u8 rx_filter[ADSY1100_NYX_NUM_RX]; + u8 tx_filter[ADSY1100_NYX_NUM_TX]; + bool rx_powerdown[ADSY1100_NYX_NUM_RX]; + bool tx_powerdown[ADSY1100_NYX_NUM_TX]; + bool rx_amp_bypass[ADSY1100_NYX_NUM_RX]; +}; + +static unsigned int adsy1100_nyx_filt_base(bool tx, unsigned int ch) +{ + /* DT lists TX3..TX0 / RX3..RX0, so the per-channel base is reversed. */ + unsigned int base = tx ? ADSY1100_NYX_GPIO_TX_FILT_BASE + : ADSY1100_NYX_GPIO_RX_FILT_BASE; + unsigned int n = tx ? ADSY1100_NYX_NUM_TX : ADSY1100_NYX_NUM_RX; + + return base + (n - 1 - ch) * 2; +} + +static unsigned int adsy1100_nyx_dsa_base(bool tx, unsigned int ch) +{ + unsigned int base = tx ? ADSY1100_NYX_GPIO_TX_DSA_BASE + : ADSY1100_NYX_GPIO_RX_DSA_BASE; + + return base + ch * ADSY1100_NYX_DSA_BITS; +} + +static void adsy1100_nyx_apply_dsa(struct adsy1100_nyx *st, bool tx, + unsigned int ch, u8 val_x2) +{ + unsigned int base = adsy1100_nyx_dsa_base(tx, ch); + unsigned int i; + + for (i = 0; i < ADSY1100_NYX_DSA_BITS; i++) + gpiod_set_value_cansleep(st->gpios->desc[base + i], + (val_x2 >> i) & 1); + + if (tx) + st->tx_dsa_x2[ch] = val_x2; + else + st->rx_dsa_x2[ch] = val_x2; +} + +static void adsy1100_nyx_apply_filter(struct adsy1100_nyx *st, bool tx, + unsigned int ch, u8 mode) +{ + unsigned int base = adsy1100_nyx_filt_base(tx, ch); + + gpiod_set_value_cansleep(st->gpios->desc[base + 0], mode & 0x1); + gpiod_set_value_cansleep(st->gpios->desc[base + 1], (mode >> 1) & 0x1); + + if (tx) + st->tx_filter[ch] = mode; + else + st->rx_filter[ch] = mode; +} + +static void adsy1100_nyx_apply_enable(struct adsy1100_nyx *st, bool tx, + unsigned int ch, bool powerdown) +{ + unsigned int idx = (tx ? ADSY1100_NYX_GPIO_TX_EN_BASE + : ADSY1100_NYX_GPIO_RX_EN_BASE) + ch; + + gpiod_set_value_cansleep(st->gpios->desc[idx], powerdown ? 1 : 0); + + if (tx) + st->tx_powerdown[ch] = powerdown; + else + st->rx_powerdown[ch] = powerdown; +} + +static void adsy1100_nyx_apply_amp_bypass(struct adsy1100_nyx *st, + unsigned int ch, bool bypass) +{ + gpiod_set_value_cansleep(st->gpios->desc[ADSY1100_NYX_GPIO_RX_AMP_BASE + ch], + bypass ? 1 : 0); + st->rx_amp_bypass[ch] = bypass; +} + +/* + * hardwaregain encodes the DSA setting as a (negative) gain in dB. The DSA + * resolution is 0.5 dB, so val2 is always 0 or 500000. + */ +static int adsy1100_nyx_read_raw(struct iio_dev *indio_dev, + const struct iio_chan_spec *chan, + int *val, int *val2, long mask) +{ + struct adsy1100_nyx *st = iio_priv(indio_dev); + u8 dsa_x2; + + guard(mutex)(&st->lock); + + switch (mask) { + case IIO_CHAN_INFO_HARDWAREGAIN: + dsa_x2 = chan->output ? st->tx_dsa_x2[chan->channel] + : st->rx_dsa_x2[chan->channel]; + *val = -(dsa_x2 / 2); + *val2 = (dsa_x2 & 1) ? 500000 : 0; + if (*val == 0 && (dsa_x2 & 1)) + *val2 = -500000; + return IIO_VAL_INT_PLUS_MICRO_DB; + default: + return -EINVAL; + } +} + +static int adsy1100_nyx_write_raw(struct iio_dev *indio_dev, + const struct iio_chan_spec *chan, + int val, int val2, long mask) +{ + struct adsy1100_nyx *st = iio_priv(indio_dev); + int millidB; + u8 val_x2; + + guard(mutex)(&st->lock); + + switch (mask) { + case IIO_CHAN_INFO_HARDWAREGAIN: + /* Attenuator: only non-positive gains are accepted. */ + if (val > 0 || val2 > 0) + return -EINVAL; + + millidB = abs(val) * 1000 + abs(val2) / 1000; + if (millidB % 500) + return -EINVAL; + + val_x2 = millidB / 500; + if (val_x2 > ADSY1100_NYX_DSA_MAX_X2) + return -EINVAL; + + adsy1100_nyx_apply_dsa(st, chan->output, chan->channel, val_x2); + return 0; + default: + return -EINVAL; + } +} + +static int adsy1100_nyx_write_raw_get_fmt(struct iio_dev *indio_dev, + struct iio_chan_spec const *chan, + long mask) +{ + switch (mask) { + case IIO_CHAN_INFO_HARDWAREGAIN: + return IIO_VAL_INT_PLUS_MICRO_DB; + default: + return -EINVAL; + } +} + +static const char * const adsy1100_nyx_filter_modes[] = { + [ADSY1100_NYX_FILTER_LOW_BAND] = "low_band", + [ADSY1100_NYX_FILTER_THRU] = "thru", + [ADSY1100_NYX_FILTER_X_BAND] = "x_band", + [ADSY1100_NYX_FILTER_KU_BAND] = "ku_band", +}; + +static_assert(ARRAY_SIZE(adsy1100_nyx_filter_modes) == ADSY1100_NYX_FILTER_NUM_MODES); + +static int adsy1100_nyx_set_filter_mode(struct iio_dev *indio_dev, + const struct iio_chan_spec *chan, + unsigned int mode) +{ + struct adsy1100_nyx *st = iio_priv(indio_dev); + + guard(mutex)(&st->lock); + adsy1100_nyx_apply_filter(st, chan->output, chan->channel, mode); + return 0; +} + +static int adsy1100_nyx_get_filter_mode(struct iio_dev *indio_dev, + const struct iio_chan_spec *chan) +{ + struct adsy1100_nyx *st = iio_priv(indio_dev); + + return chan->output ? st->tx_filter[chan->channel] + : st->rx_filter[chan->channel]; +} + +static const struct iio_enum adsy1100_nyx_filter_enum = { + .items = adsy1100_nyx_filter_modes, + .num_items = ARRAY_SIZE(adsy1100_nyx_filter_modes), + .set = adsy1100_nyx_set_filter_mode, + .get = adsy1100_nyx_get_filter_mode, +}; + +static ssize_t adsy1100_nyx_powerdown_read(struct iio_dev *indio_dev, + uintptr_t priv, + const struct iio_chan_spec *chan, + char *buf) +{ + struct adsy1100_nyx *st = iio_priv(indio_dev); + bool state = chan->output ? st->tx_powerdown[chan->channel] + : st->rx_powerdown[chan->channel]; + + return sysfs_emit(buf, "%d\n", state); +} + +static ssize_t adsy1100_nyx_powerdown_write(struct iio_dev *indio_dev, + uintptr_t priv, + const struct iio_chan_spec *chan, + const char *buf, size_t len) +{ + struct adsy1100_nyx *st = iio_priv(indio_dev); + bool state; + int ret; + + ret = kstrtobool(buf, &state); + if (ret) + return ret; + + guard(mutex)(&st->lock); + adsy1100_nyx_apply_enable(st, chan->output, chan->channel, state); + return len; +} + +static ssize_t adsy1100_nyx_amp_bypass_read(struct iio_dev *indio_dev, + uintptr_t priv, + const struct iio_chan_spec *chan, + char *buf) +{ + struct adsy1100_nyx *st = iio_priv(indio_dev); + + return sysfs_emit(buf, "%d\n", st->rx_amp_bypass[chan->channel]); +} + +static ssize_t adsy1100_nyx_amp_bypass_write(struct iio_dev *indio_dev, + uintptr_t priv, + const struct iio_chan_spec *chan, + const char *buf, size_t len) +{ + struct adsy1100_nyx *st = iio_priv(indio_dev); + bool state; + int ret; + + ret = kstrtobool(buf, &state); + if (ret) + return ret; + + guard(mutex)(&st->lock); + adsy1100_nyx_apply_amp_bypass(st, chan->channel, state); + return len; +} + +static const struct iio_chan_spec_ext_info adsy1100_nyx_rx_ext_info[] = { + IIO_ENUM("filter_mode", IIO_SEPARATE, &adsy1100_nyx_filter_enum), + IIO_ENUM_AVAILABLE("filter_mode", IIO_SHARED_BY_TYPE, + &adsy1100_nyx_filter_enum), + { + .name = "powerdown", + .read = adsy1100_nyx_powerdown_read, + .write = adsy1100_nyx_powerdown_write, + .shared = IIO_SEPARATE, + }, + { + .name = "bypass_amplifier_en", + .read = adsy1100_nyx_amp_bypass_read, + .write = adsy1100_nyx_amp_bypass_write, + .shared = IIO_SEPARATE, + }, + { } +}; + +static const struct iio_chan_spec_ext_info adsy1100_nyx_tx_ext_info[] = { + IIO_ENUM("filter_mode", IIO_SEPARATE, &adsy1100_nyx_filter_enum), + IIO_ENUM_AVAILABLE("filter_mode", IIO_SHARED_BY_TYPE, + &adsy1100_nyx_filter_enum), + { + .name = "powerdown", + .read = adsy1100_nyx_powerdown_read, + .write = adsy1100_nyx_powerdown_write, + .shared = IIO_SEPARATE, + }, + { } +}; + +#define ADSY1100_NYX_RX_CHAN(idx) { \ + .type = IIO_VOLTAGE, \ + .indexed = 1, \ + .channel = (idx), \ + .info_mask_separate = BIT(IIO_CHAN_INFO_HARDWAREGAIN), \ + .ext_info = adsy1100_nyx_rx_ext_info, \ +} + +#define ADSY1100_NYX_TX_CHAN(idx) { \ + .type = IIO_VOLTAGE, \ + .indexed = 1, \ + .output = 1, \ + .channel = (idx), \ + .info_mask_separate = BIT(IIO_CHAN_INFO_HARDWAREGAIN), \ + .ext_info = adsy1100_nyx_tx_ext_info, \ +} + +static const struct iio_chan_spec adsy1100_nyx_channels[] = { + ADSY1100_NYX_RX_CHAN(0), + ADSY1100_NYX_RX_CHAN(1), + ADSY1100_NYX_RX_CHAN(2), + ADSY1100_NYX_RX_CHAN(3), + ADSY1100_NYX_TX_CHAN(0), + ADSY1100_NYX_TX_CHAN(1), + ADSY1100_NYX_TX_CHAN(2), + ADSY1100_NYX_TX_CHAN(3), +}; + +static const struct iio_info adsy1100_nyx_iio_info = { + .read_raw = adsy1100_nyx_read_raw, + .write_raw = adsy1100_nyx_write_raw, + .write_raw_get_fmt = adsy1100_nyx_write_raw_get_fmt, +}; + +/* + * adi,attenuation-millidb is encoded as a positive value [0..31500] in 500 + * mdB steps. The IIO sysfs "hardwaregain" attribute exposes the same value + * with the opposite sign. + */ +#define ADSY1100_NYX_DSA_MAX_MILLIDB 31500 +#define ADSY1100_NYX_DSA_STEP_MILLIDB 500 + +static int adsy1100_nyx_parse_dt_channel(struct device *dev, + struct fwnode_handle *node, + struct adsy1100_nyx *st, + bool tx, unsigned int ch) +{ + u8 dsa_x2 = 0; + u8 filter = ADSY1100_NYX_FILTER_THRU; + bool powerdown; + bool amp_enable = false; + u32 val; + + if (!fwnode_property_read_u32(node, "adi,attenuation-millidb", &val)) { + if (val > ADSY1100_NYX_DSA_MAX_MILLIDB || + val % ADSY1100_NYX_DSA_STEP_MILLIDB) + return dev_err_probe(dev, -EINVAL, + "%pfw: adi,attenuation-millidb %u invalid (0..%u in %u mdB steps)\n", + node, val, + ADSY1100_NYX_DSA_MAX_MILLIDB, + ADSY1100_NYX_DSA_STEP_MILLIDB); + dsa_x2 = val / ADSY1100_NYX_DSA_STEP_MILLIDB; + } + + if (!fwnode_property_read_u32(node, "adi,filter-mode", &val)) { + if (val >= ADSY1100_NYX_FILTER_NUM_MODES) + return dev_err_probe(dev, -EINVAL, + "%pfw: adi,filter-mode %u invalid\n", + node, val); + filter = val; + } + + powerdown = fwnode_property_read_bool(node, "adi,powerdown"); + + if (!tx) + amp_enable = fwnode_property_read_bool(node, + "adi,amplifier-enable"); + + adsy1100_nyx_apply_dsa(st, tx, ch, dsa_x2); + adsy1100_nyx_apply_filter(st, tx, ch, filter); + adsy1100_nyx_apply_enable(st, tx, ch, powerdown); + if (!tx) + adsy1100_nyx_apply_amp_bypass(st, ch, !amp_enable); + + return 0; +} + +static int adsy1100_nyx_parse_dt_group(struct device *dev, + struct adsy1100_nyx *st, + const char *group_name, + bool tx, unsigned int max_ch) +{ + struct fwnode_handle *group __free(fwnode_handle) = + device_get_named_child_node(dev, group_name); + struct fwnode_handle *child; + int ret; + + if (!group) + return 0; + + fwnode_for_each_child_node(group, child) { + u32 reg; + + ret = fwnode_property_read_u32(child, "reg", ®); + if (ret) { + ret = dev_err_probe(dev, ret, + "%pfw: missing reg property\n", + child); + goto err_put; + } + + if (reg >= max_ch) { + ret = dev_err_probe(dev, -EINVAL, + "%pfw: reg %u out of range (max %u)\n", + child, reg, max_ch - 1); + goto err_put; + } + + ret = adsy1100_nyx_parse_dt_channel(dev, child, st, tx, reg); + if (ret) + goto err_put; + } + + return 0; + +err_put: + fwnode_handle_put(child); + return ret; +} + +static int adsy1100_nyx_probe(struct platform_device *pdev) +{ + struct device *dev = &pdev->dev; + struct iio_dev *indio_dev; + struct adsy1100_nyx *st; + unsigned int i; + int ret; + + indio_dev = devm_iio_device_alloc(dev, sizeof(*st)); + if (!indio_dev) + return -ENOMEM; + + st = iio_priv(indio_dev); + + ret = devm_mutex_init(dev, &st->lock); + if (ret) + return ret; + + st->gpios = devm_gpiod_get_array(dev, "out", GPIOD_OUT_LOW); + if (IS_ERR(st->gpios)) + return dev_err_probe(dev, PTR_ERR(st->gpios), + "failed to acquire control GPIOs\n"); + + if (st->gpios->ndescs != ADSY1100_NYX_GPIO_COUNT) + return dev_err_probe(dev, -EINVAL, + "expected %d out-gpios, got %u\n", + ADSY1100_NYX_GPIO_COUNT, + st->gpios->ndescs); + + /* + * Bring the front-end into a defined state: 0 dB attenuation, THRU + * filter band, channels enabled (powerdown=0), RX LNAs bypassed + * (bypass=1). Per-channel defaults provided through the + * output-channels / input-channels subnodes override the built-in + * defaults below. + */ + for (i = 0; i < ADSY1100_NYX_NUM_RX; i++) { + adsy1100_nyx_apply_dsa(st, false, i, 0); + adsy1100_nyx_apply_filter(st, false, i, + ADSY1100_NYX_FILTER_THRU); + adsy1100_nyx_apply_enable(st, false, i, false); + adsy1100_nyx_apply_amp_bypass(st, i, true); + } + for (i = 0; i < ADSY1100_NYX_NUM_TX; i++) { + adsy1100_nyx_apply_dsa(st, true, i, 0); + adsy1100_nyx_apply_filter(st, true, i, + ADSY1100_NYX_FILTER_THRU); + adsy1100_nyx_apply_enable(st, true, i, false); + } + + ret = adsy1100_nyx_parse_dt_group(dev, st, "output-channels", true, + ADSY1100_NYX_NUM_TX); + if (ret) + return ret; + + ret = adsy1100_nyx_parse_dt_group(dev, st, "input-channels", false, + ADSY1100_NYX_NUM_RX); + if (ret) + return ret; + + indio_dev->name = "adsy1100-nyx"; + indio_dev->modes = INDIO_DIRECT_MODE; + indio_dev->info = &adsy1100_nyx_iio_info; + indio_dev->channels = adsy1100_nyx_channels; + indio_dev->num_channels = ARRAY_SIZE(adsy1100_nyx_channels); + + return devm_iio_device_register(dev, indio_dev); +} + +static const struct of_device_id adsy1100_nyx_of_match[] = { + { .compatible = "adi,adsy1100-nyx" }, + { } +}; +MODULE_DEVICE_TABLE(of, adsy1100_nyx_of_match); + +static struct platform_driver adsy1100_nyx_driver = { + .driver = { + .name = "adsy1100-nyx", + .of_match_table = adsy1100_nyx_of_match, + }, + .probe = adsy1100_nyx_probe, +}; +module_platform_driver(adsy1100_nyx_driver); + +MODULE_AUTHOR("Michael Hennerich "); +MODULE_DESCRIPTION("Analog Devices ADSY1100 Nyx RF front-end controller"); +MODULE_LICENSE("GPL"); diff --git a/firmware/204C_M4_L4_NP16_8p0_4x4.bin b/firmware/204C_M4_L4_NP16_8p0_4x4.bin new file mode 100644 index 00000000000000..f1487418da25d1 Binary files /dev/null and b/firmware/204C_M4_L4_NP16_8p0_4x4.bin differ diff --git a/firmware/204C_M4_L4_NP16_8p0_4x4.json b/firmware/204C_M4_L4_NP16_8p0_4x4.json new file mode 100644 index 00000000000000..a275bed1a7fbc0 --- /dev/null +++ b/firmware/204C_M4_L4_NP16_8p0_4x4.json @@ -0,0 +1,4382 @@ +{ + "profile_cfg": { + "profile_version": { + "major": 10, + "minor": 1, + "patch": 2 + }, + "cfg_version": 0, + "is_8t8r": false, + "sw_trim": 5 + }, + "clk_cfg": { + "is_dual_clk": false, + "clk_path_sel": true, + "ref_clk_freq_kHz": 0, + "clocking_mode": 0, + "adc_divby2": [false,false], + "dac_divby2": [true,true], + "adc_inclk_invert0": [false,false], + "adc_inclk_invert1": [false,false], + "dev_clk_freq_Hz": 8000000000, + "arm_clock_sel": 1, + "arm_clk_div": 2, + "serdes_clk_div": 8 + }, + "clk_pll": { + "loop_bandwidth": 0, + "phase_margin": 0, + "div_range": 0, + "div2": 0, + "power": 0, + "ref_clk_div": 1, + "i_bleed_en": 0, + "feedback_int": 0, + "feedback_frac": 0 + }, + "mcs_cfg": { + "center_sysref": { + "ref_to_int_period_ratio": 1, + "sysref_present": false, + "rx_term_en": false, + "cm_above_900mv": false + }, + "side_a_sysref": { + "ref_to_int_period_ratio": 1, + "sysref_present": false, + "rx_term_en": false, + "cm_above_900mv": false + }, + "side_b_sysref": { + "ref_to_int_period_ratio": 1, + "sysref_present": false, + "rx_term_en": false, + "cm_above_900mv": false + }, + "use_gapped_sysref": false, + "leave_sysref_rx_on": false, + "num_sysref_avg_mcs_fw": 31, + "sysref_lock_window_mcs_fw": 0, + "internal_sysref_prd_digclk_cycles_center": 256, + "internal_sysref_prd_digclk_cycles_side_a": 256, + "internal_sysref_prd_digclk_cycles_side_b": 256, + "adf4382_cfg": { + "side_a_adf4382_instance_cfg": 0, + "side_b_adf4382_instance_cfg": 0, + "del_mode": 0, + "clock_align_delay_adjust_gpio": [16,0], + "clock_align_delay_strobe_gpio": [15,0], + "track_polarity_select": [false,false], + "phase_adj": [1,0], + "track_win": [500,500] + }, + "mcs_trigger_cfg": { + "trigger_pin_to_rx_datapath_a_mapping": 0, + "trigger_pin_to_rx_datapath_b_mapping": 0, + "trigger_pin_to_tx_datapath_a_mapping": 0, + "trigger_pin_to_tx_datapath_b_mapping": 0 + } + }, + "gpio_cfg": { + "gpio_quick_config": 0, + "gpio_mode_en": 0, + "gpio_mode_dir": 0, + "gpio_from_master": 0, + "gpio_from_set": 0, + "gpio_from_clear": 0, + "gpio_source_control": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "gpio_stage_sel_lsb": 0, + "gpio_stage_sel_msb": 0 + }, + "tx_path": [ + { + "tx_cduc": [ + { + "nco": [ + { + "drc_en": true, + "nco_mode": 0, + "nco_if_mode": 0, + "drc_mxr_sel": 1, + "cmplx_mxr_mult_scale_en": 1, + "dc_testmode_value": 0, + "nco_phase_inc": 536870912, + "nco_phase_offset": 0, + "nco_phase_inc_frac_a": 0, + "nco_phase_inc_frac_b": 0, + "nco_phase_inc_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_phase_offset_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "amp_dither_en": false, + "phase_dither_en": false, + "nco_profile_sel_mode": 4, + "nco_auto_inc_dec": 0, + "debug_cdrc_clkoff_n": true + }, + { + "drc_en": false, + "nco_mode": 0, + "nco_if_mode": 0, + "drc_mxr_sel": 0, + "cmplx_mxr_mult_scale_en": 0, + "dc_testmode_value": 0, + "nco_phase_inc": 0, + "nco_phase_offset": 0, + "nco_phase_inc_frac_a": 0, + "nco_phase_inc_frac_b": 0, + "nco_phase_inc_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_phase_offset_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "amp_dither_en": false, + "phase_dither_en": false, + "nco_profile_sel_mode": 4, + "nco_auto_inc_dec": 0, + "debug_cdrc_clkoff_n": false + } + ], + "drc_ratio": 4 + }, + { + "nco": [ + { + "drc_en": true, + "nco_mode": 0, + "nco_if_mode": 0, + "drc_mxr_sel": 1, + "cmplx_mxr_mult_scale_en": 1, + "dc_testmode_value": 0, + "nco_phase_inc": 536870912, + "nco_phase_offset": 0, + "nco_phase_inc_frac_a": 0, + "nco_phase_inc_frac_b": 0, + "nco_phase_inc_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_phase_offset_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "amp_dither_en": false, + "phase_dither_en": false, + "nco_profile_sel_mode": 4, + "nco_auto_inc_dec": 0, + "debug_cdrc_clkoff_n": true + }, + { + "drc_en": false, + "nco_mode": 0, + "nco_if_mode": 0, + "drc_mxr_sel": 0, + "cmplx_mxr_mult_scale_en": 0, + "dc_testmode_value": 0, + "nco_phase_inc": 0, + "nco_phase_offset": 0, + "nco_phase_inc_frac_a": 0, + "nco_phase_inc_frac_b": 0, + "nco_phase_inc_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_phase_offset_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "amp_dither_en": false, + "phase_dither_en": false, + "nco_profile_sel_mode": 4, + "nco_auto_inc_dec": 0, + "debug_cdrc_clkoff_n": false + } + ], + "drc_ratio": 4 + } + ], + "tx_fduc": [ + { + "nco": [ + { + "drc_en": true, + "nco_mode": 0, + "nco_if_mode": 0, + "drc_mxr_sel": 1, + "cmplx_mxr_mult_scale_en": 1, + "dc_testmode_value": 0, + "nco_phase_inc": 14073748835533, + "nco_phase_offset": 0, + "nco_phase_inc_frac_a": 0, + "nco_phase_inc_frac_b": 0, + "amp_dither_en": false, + "phase_dither_en": false, + "hop_mode_en": false, + "hop_mode": 0, + "nco_phase_inc_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_phase_offset_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_profile_sel_mode": 4, + "nco_auto_inc_dec_freq": 0, + "nco_auto_inc_dec_phase": 0, + "nco_trig_hop_sel": 1, + "debug_fdrc_clkoff_n": true + }, + { + "drc_en": false, + "nco_mode": 0, + "nco_if_mode": 0, + "drc_mxr_sel": 0, + "cmplx_mxr_mult_scale_en": 0, + "dc_testmode_value": 0, + "nco_phase_inc": 0, + "nco_phase_offset": 0, + "nco_phase_inc_frac_a": 0, + "nco_phase_inc_frac_b": 0, + "amp_dither_en": false, + "phase_dither_en": false, + "hop_mode_en": false, + "hop_mode": 0, + "nco_phase_inc_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_phase_offset_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_profile_sel_mode": 4, + "nco_auto_inc_dec_freq": 0, + "nco_auto_inc_dec_phase": 0, + "nco_trig_hop_sel": 0, + "debug_fdrc_clkoff_n": false + } + ], + "drc_ratio": 4, + "sub_dp_gain_en": false, + "subdp_gain": 0 + }, + { + "nco": [ + { + "drc_en": true, + "nco_mode": 0, + "nco_if_mode": 0, + "drc_mxr_sel": 1, + "cmplx_mxr_mult_scale_en": 1, + "dc_testmode_value": 0, + "nco_phase_inc": 14073748835533, + "nco_phase_offset": 0, + "nco_phase_inc_frac_a": 0, + "nco_phase_inc_frac_b": 0, + "amp_dither_en": false, + "phase_dither_en": false, + "hop_mode_en": false, + "hop_mode": 0, + "nco_phase_inc_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_phase_offset_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_profile_sel_mode": 4, + "nco_auto_inc_dec_freq": 0, + "nco_auto_inc_dec_phase": 0, + "nco_trig_hop_sel": 1, + "debug_fdrc_clkoff_n": true + }, + { + "drc_en": false, + "nco_mode": 0, + "nco_if_mode": 0, + "drc_mxr_sel": 0, + "cmplx_mxr_mult_scale_en": 0, + "dc_testmode_value": 0, + "nco_phase_inc": 0, + "nco_phase_offset": 0, + "nco_phase_inc_frac_a": 0, + "nco_phase_inc_frac_b": 0, + "amp_dither_en": false, + "phase_dither_en": false, + "hop_mode_en": false, + "hop_mode": 0, + "nco_phase_inc_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_phase_offset_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_profile_sel_mode": 4, + "nco_auto_inc_dec_freq": 0, + "nco_auto_inc_dec_phase": 0, + "nco_trig_hop_sel": 0, + "debug_fdrc_clkoff_n": false + } + ], + "drc_ratio": 4, + "sub_dp_gain_en": false, + "subdp_gain": 0 + }, + { + "nco": [ + { + "drc_en": false, + "nco_mode": 0, + "nco_if_mode": 0, + "drc_mxr_sel": 1, + "cmplx_mxr_mult_scale_en": 1, + "dc_testmode_value": 0, + "nco_phase_inc": 0, + "nco_phase_offset": 0, + "nco_phase_inc_frac_a": 0, + "nco_phase_inc_frac_b": 0, + "amp_dither_en": false, + "phase_dither_en": false, + "hop_mode_en": false, + "hop_mode": 0, + "nco_phase_inc_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_phase_offset_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_profile_sel_mode": 4, + "nco_auto_inc_dec_freq": 0, + "nco_auto_inc_dec_phase": 0, + "nco_trig_hop_sel": 1, + "debug_fdrc_clkoff_n": true + }, + { + "drc_en": false, + "nco_mode": 0, + "nco_if_mode": 0, + "drc_mxr_sel": 0, + "cmplx_mxr_mult_scale_en": 0, + "dc_testmode_value": 0, + "nco_phase_inc": 0, + "nco_phase_offset": 0, + "nco_phase_inc_frac_a": 0, + "nco_phase_inc_frac_b": 0, + "amp_dither_en": false, + "phase_dither_en": false, + "hop_mode_en": false, + "hop_mode": 0, + "nco_phase_inc_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_phase_offset_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_profile_sel_mode": 4, + "nco_auto_inc_dec_freq": 0, + "nco_auto_inc_dec_phase": 0, + "nco_trig_hop_sel": 0, + "debug_fdrc_clkoff_n": false + } + ], + "drc_ratio": 4, + "sub_dp_gain_en": false, + "subdp_gain": 0 + }, + { + "nco": [ + { + "drc_en": false, + "nco_mode": 0, + "nco_if_mode": 0, + "drc_mxr_sel": 1, + "cmplx_mxr_mult_scale_en": 1, + "dc_testmode_value": 0, + "nco_phase_inc": 0, + "nco_phase_offset": 0, + "nco_phase_inc_frac_a": 0, + "nco_phase_inc_frac_b": 0, + "amp_dither_en": false, + "phase_dither_en": false, + "hop_mode_en": false, + "hop_mode": 0, + "nco_phase_inc_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_phase_offset_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_profile_sel_mode": 4, + "nco_auto_inc_dec_freq": 0, + "nco_auto_inc_dec_phase": 0, + "nco_trig_hop_sel": 1, + "debug_fdrc_clkoff_n": true + }, + { + "drc_en": false, + "nco_mode": 0, + "nco_if_mode": 0, + "drc_mxr_sel": 0, + "cmplx_mxr_mult_scale_en": 0, + "dc_testmode_value": 0, + "nco_phase_inc": 0, + "nco_phase_offset": 0, + "nco_phase_inc_frac_a": 0, + "nco_phase_inc_frac_b": 0, + "amp_dither_en": false, + "phase_dither_en": false, + "hop_mode_en": false, + "hop_mode": 0, + "nco_phase_inc_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_phase_offset_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_profile_sel_mode": 4, + "nco_auto_inc_dec_freq": 0, + "nco_auto_inc_dec_phase": 0, + "nco_trig_hop_sel": 0, + "debug_fdrc_clkoff_n": false + } + ], + "drc_ratio": 4, + "sub_dp_gain_en": false, + "subdp_gain": 0 + } + ], + "tx_pfilt": [ + { + "enable": false, + "coeffs": [ + [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] + ], + "i_mode": [0,0], + "q_mode": [0,0], + "output_dither_en": [false,false], + "real_data": 0, + "dq_mode": 0, + "add_sub_sel": 0, + "mode_switch": 0, + "pfilt_trigger_en": false, + "pfir_ix_gain_db": [0,0,0,0,0,0,0,0], + "pfir_iy_gain_db": [0,0,0,0,0,0,0,0], + "pfir_qx_gain_db": [0,0,0,0,0,0,0,0], + "pfir_qy_gain_db": [0,0,0,0,0,0,0,0], + "pfir_ix_scalar_gain_db": [0,0,0,0,0,0,0,0], + "pfir_iy_scalar_gain_db": [0,0,0,0,0,0,0,0], + "pfir_qx_scalar_gain_db": [0,0,0,0,0,0,0,0], + "pfir_qy_scalar_gain_db": [0,0,0,0,0,0,0,0], + "hc_prog_delay": [0,0,0,0,0,0,0,0] + } + ], + "tx_cfir": [ + { + "coeffs_i": [ + [ + [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] + ], + [ + [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] + ] + ], + "coeffs_q": [ + [ + [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] + ], + [ + [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] + ] + ], + "cfir_gain_dB": [ + [0,0,0,0],[0,0,0,0] + ], + "scalar_i": [ + [0,0,0,0],[0,0,0,0] + ], + "scalar_q": [ + [0,0,0,0],[0,0,0,0] + ], + "enable": false, + "sparse_mode": false, + "cfir_mode": 0 + }, + { + "coeffs_i": [ + [ + [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] + ], + [ + [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] + ] + ], + "coeffs_q": [ + [ + [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] + ], + [ + [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] + ] + ], + "cfir_gain_dB": [ + [0,0,0,0],[0,0,0,0] + ], + "scalar_i": [ + [0,0,0,0],[0,0,0,0] + ], + "scalar_q": [ + [0,0,0,0],[0,0,0,0] + ], + "enable": false, + "sparse_mode": false, + "cfir_mode": 0 + } + ], + "tx_fsrc": { + "fsrc_rate_int": 0, + "fsrc_rate_frac_a": 0, + "fsrc_rate_frac_b": 0, + "fsrc_delay": 0, + "gain_reduction": 0, + "ptr_syncrstval": 0, + "ptr_overwrite": false, + "data_mult_dither_en": false, + "dither_en": false, + "split_4t4r": false, + "mode_1x": false, + "enable0": false, + "enable1": false, + "bypass": false + }, + "tx_mux_summer_xbar": { + "cduc_dac_enables": [0,2,1,3], + "fduc_cduc_summer": [1,2,0,0], + "mux1_sel": [0,0], + "mux0_sel": [0,1,0,1], + "low_samp_en": false + }, + "tx_dyn_recfg": { + "prefsrc_lcm": 0, + "postfsrc_lcm": 0, + "trig_recfg_mode": false, + "cnco_rst_en": false, + "fnco_rst_en": false, + "resync_en": false, + "ts_rst_en": false, + "tzero_coher_en": false + }, + "tx_pa_prot": [ + { + "pa_clkdiv_en": false, + "paprot_pwr_cfg": { + "pa_clk_en": false, + "short_pac_en": false, + "long_pac_en": false, + "pwr_threshold_long": 0, + "pwr_threshold_short": 0, + "avg_long_win": 0, + "avg_short_win": 0 + }, + "paprot_sm_cfg": { + "enable_paprotsm": false, + "rampdwn_to_papin_en": false, + "srl_err_en": false, + "avg_pwr_err_en": false, + "auto_dyn_recfg_en": false, + "jesd_err_en": false, + "jesd_err_auto_cfg_en": false, + "data_ready_auto_cfg_en": false, + "zero_flush_clock_stable_rise_en": false, + "zero_flush_dyn_recfg_ramp_up_en": false, + "zero_flush_txen_fall_en": false, + "zero_flush_txen_rise_en": false, + "zero_flush_start_en": false, + "drive_sm_by_dig_en": false, + "hold_sample_en": false, + "skip_ramp_up": false, + "skip_ramp_down": false, + "ramp_up_timer_en": false, + "ramp_dwn_timer_en": false, + "zero_flush_timer": 0, + "ramp_down_timer_val": 0, + "ramp_up_timer_val": 0, + "dp_zero_flush_sel_0": 0, + "dp_zero_flush_sel_1": 0, + "data_ready_sel_ramp": 0, + "jesd_err_sel_ramp": 0 + }, + "paprot_ramp_cfg": { + "gain_clk_en": false, + "zero_detect_en": false, + "force_ramps_dyn_recfg_en": false, + "force_ramp_up_en": false, + "force_ramp_dwn_en": false, + "enable_gain": false, + "enable_ramp": false, + "trig_ramp_together": false, + "gain_inc_step": 0, + "gain_dec_step": 0, + "gain_max_val": 0 + }, + "paprot_sr_cfg": { + "sr_clk_en": false, + "sr_err_self_clr_en": false, + "sr_calculation_en": false, + "slew_rate_err_irq_en": false, + "sr_path_sel": 0, + "sr_threshold": 0 + } + }, + { + "pa_clkdiv_en": false, + "paprot_pwr_cfg": { + "pa_clk_en": false, + "short_pac_en": false, + "long_pac_en": false, + "pwr_threshold_long": 0, + "pwr_threshold_short": 0, + "avg_long_win": 0, + "avg_short_win": 0 + }, + "paprot_sm_cfg": { + "enable_paprotsm": false, + "rampdwn_to_papin_en": false, + "srl_err_en": false, + "avg_pwr_err_en": false, + "auto_dyn_recfg_en": false, + "jesd_err_en": false, + "jesd_err_auto_cfg_en": false, + "data_ready_auto_cfg_en": false, + "zero_flush_clock_stable_rise_en": false, + "zero_flush_dyn_recfg_ramp_up_en": false, + "zero_flush_txen_fall_en": false, + "zero_flush_txen_rise_en": false, + "zero_flush_start_en": false, + "drive_sm_by_dig_en": false, + "hold_sample_en": false, + "skip_ramp_up": false, + "skip_ramp_down": false, + "ramp_up_timer_en": false, + "ramp_dwn_timer_en": false, + "zero_flush_timer": 0, + "ramp_down_timer_val": 0, + "ramp_up_timer_val": 0, + "dp_zero_flush_sel_0": 0, + "dp_zero_flush_sel_1": 0, + "data_ready_sel_ramp": 0, + "jesd_err_sel_ramp": 0 + }, + "paprot_ramp_cfg": { + "gain_clk_en": false, + "zero_detect_en": false, + "force_ramps_dyn_recfg_en": false, + "force_ramp_up_en": false, + "force_ramp_dwn_en": false, + "enable_gain": false, + "enable_ramp": false, + "trig_ramp_together": false, + "gain_inc_step": 0, + "gain_dec_step": 0, + "gain_max_val": 0 + }, + "paprot_sr_cfg": { + "sr_clk_en": false, + "sr_err_self_clr_en": false, + "sr_calculation_en": false, + "slew_rate_err_irq_en": false, + "sr_path_sel": 0, + "sr_threshold": 0 + } + }, + { + "pa_clkdiv_en": false, + "paprot_pwr_cfg": { + "pa_clk_en": false, + "short_pac_en": false, + "long_pac_en": false, + "pwr_threshold_long": 0, + "pwr_threshold_short": 0, + "avg_long_win": 0, + "avg_short_win": 0 + }, + "paprot_sm_cfg": { + "enable_paprotsm": false, + "rampdwn_to_papin_en": false, + "srl_err_en": false, + "avg_pwr_err_en": false, + "auto_dyn_recfg_en": false, + "jesd_err_en": false, + "jesd_err_auto_cfg_en": false, + "data_ready_auto_cfg_en": false, + "zero_flush_clock_stable_rise_en": false, + "zero_flush_dyn_recfg_ramp_up_en": false, + "zero_flush_txen_fall_en": false, + "zero_flush_txen_rise_en": false, + "zero_flush_start_en": false, + "drive_sm_by_dig_en": false, + "hold_sample_en": false, + "skip_ramp_up": false, + "skip_ramp_down": false, + "ramp_up_timer_en": false, + "ramp_dwn_timer_en": false, + "zero_flush_timer": 0, + "ramp_down_timer_val": 0, + "ramp_up_timer_val": 0, + "dp_zero_flush_sel_0": 0, + "dp_zero_flush_sel_1": 0, + "data_ready_sel_ramp": 0, + "jesd_err_sel_ramp": 0 + }, + "paprot_ramp_cfg": { + "gain_clk_en": false, + "zero_detect_en": false, + "force_ramps_dyn_recfg_en": false, + "force_ramp_up_en": false, + "force_ramp_dwn_en": false, + "enable_gain": false, + "enable_ramp": false, + "trig_ramp_together": false, + "gain_inc_step": 0, + "gain_dec_step": 0, + "gain_max_val": 0 + }, + "paprot_sr_cfg": { + "sr_clk_en": false, + "sr_err_self_clr_en": false, + "sr_calculation_en": false, + "slew_rate_err_irq_en": false, + "sr_path_sel": 0, + "sr_threshold": 0 + } + }, + { + "pa_clkdiv_en": false, + "paprot_pwr_cfg": { + "pa_clk_en": false, + "short_pac_en": false, + "long_pac_en": false, + "pwr_threshold_long": 0, + "pwr_threshold_short": 0, + "avg_long_win": 0, + "avg_short_win": 0 + }, + "paprot_sm_cfg": { + "enable_paprotsm": false, + "rampdwn_to_papin_en": false, + "srl_err_en": false, + "avg_pwr_err_en": false, + "auto_dyn_recfg_en": false, + "jesd_err_en": false, + "jesd_err_auto_cfg_en": false, + "data_ready_auto_cfg_en": false, + "zero_flush_clock_stable_rise_en": false, + "zero_flush_dyn_recfg_ramp_up_en": false, + "zero_flush_txen_fall_en": false, + "zero_flush_txen_rise_en": false, + "zero_flush_start_en": false, + "drive_sm_by_dig_en": false, + "hold_sample_en": false, + "skip_ramp_up": false, + "skip_ramp_down": false, + "ramp_up_timer_en": false, + "ramp_dwn_timer_en": false, + "zero_flush_timer": 0, + "ramp_down_timer_val": 0, + "ramp_up_timer_val": 0, + "dp_zero_flush_sel_0": 0, + "dp_zero_flush_sel_1": 0, + "data_ready_sel_ramp": 0, + "jesd_err_sel_ramp": 0 + }, + "paprot_ramp_cfg": { + "gain_clk_en": false, + "zero_detect_en": false, + "force_ramps_dyn_recfg_en": false, + "force_ramp_up_en": false, + "force_ramp_dwn_en": false, + "enable_gain": false, + "enable_ramp": false, + "trig_ramp_together": false, + "gain_inc_step": 0, + "gain_dec_step": 0, + "gain_max_val": 0 + }, + "paprot_sr_cfg": { + "sr_clk_en": false, + "sr_err_self_clr_en": false, + "sr_calculation_en": false, + "slew_rate_err_irq_en": false, + "sr_path_sel": 0, + "sr_threshold": 0 + } + } + ], + "inv_sinc_en": [true,true,false,false], + "tx_enable": [ + { + "enable_spien": false, + "enable_spi": false, + "enable_pol": false, + "slice_sel": 0, + "pfilt_sel": 0, + "cdrc_sel": 0, + "fdrc_sel": 0, + "cfir_sel": 0, + "fsrc_sel": 0, + "jesd_link_sel": 0, + "jesd_phy_sel": 0, + "modsw_sel": false, + "invsinc_sel": 0, + "gain_sel": 0, + "srd_sel": 0 + }, + { + "enable_spien": false, + "enable_spi": false, + "enable_pol": false, + "slice_sel": 0, + "pfilt_sel": 0, + "cdrc_sel": 0, + "fdrc_sel": 0, + "cfir_sel": 0, + "fsrc_sel": 0, + "jesd_link_sel": 0, + "jesd_phy_sel": 0, + "modsw_sel": false, + "invsinc_sel": 0, + "gain_sel": 0, + "srd_sel": 0 + }, + { + "enable_spien": false, + "enable_spi": false, + "enable_pol": false, + "slice_sel": 0, + "pfilt_sel": 0, + "cdrc_sel": 0, + "fdrc_sel": 0, + "cfir_sel": 0, + "fsrc_sel": 0, + "jesd_link_sel": 0, + "jesd_phy_sel": 0, + "modsw_sel": false, + "invsinc_sel": 0, + "gain_sel": 0, + "srd_sel": 0 + }, + { + "enable_spien": false, + "enable_spi": false, + "enable_pol": false, + "slice_sel": 0, + "pfilt_sel": 0, + "cdrc_sel": 0, + "fdrc_sel": 0, + "cfir_sel": 0, + "fsrc_sel": 0, + "jesd_link_sel": 0, + "jesd_phy_sel": 0, + "modsw_sel": false, + "invsinc_sel": 0, + "gain_sel": 0, + "srd_sel": 0 + } + ], + "tx_power": [ + { + "rxtxen_sel": 0, + "spi_rxtxen": false, + "spi_rxtxen_ena": false, + "sm_en": false, + "sel_cnt_rate": false, + "conv_fall": 0, + "conv_rise": 0, + "dig_fall": 0, + "dig_rise": 0, + "pa_fall": 0, + "pa_rise": 0, + "count_maxa": 0, + "count_maxb": 0, + "count_maxc": 0, + "count_maxd": 0, + "count_maxe": 0, + "count_maxf": 0 + }, + { + "rxtxen_sel": 0, + "spi_rxtxen": false, + "spi_rxtxen_ena": false, + "sm_en": false, + "sel_cnt_rate": false, + "conv_fall": 0, + "conv_rise": 0, + "dig_fall": 0, + "dig_rise": 0, + "pa_fall": 0, + "pa_rise": 0, + "count_maxa": 0, + "count_maxb": 0, + "count_maxc": 0, + "count_maxd": 0, + "count_maxe": 0, + "count_maxf": 0 + }, + { + "rxtxen_sel": 0, + "spi_rxtxen": false, + "spi_rxtxen_ena": false, + "sm_en": false, + "sel_cnt_rate": false, + "conv_fall": 0, + "conv_rise": 0, + "dig_fall": 0, + "dig_rise": 0, + "pa_fall": 0, + "pa_rise": 0, + "count_maxa": 0, + "count_maxb": 0, + "count_maxc": 0, + "count_maxd": 0, + "count_maxe": 0, + "count_maxf": 0 + }, + { + "rxtxen_sel": 0, + "spi_rxtxen": false, + "spi_rxtxen_ena": false, + "sm_en": false, + "sel_cnt_rate": false, + "conv_fall": 0, + "conv_rise": 0, + "dig_fall": 0, + "dig_rise": 0, + "pa_fall": 0, + "pa_rise": 0, + "count_maxa": 0, + "count_maxb": 0, + "count_maxc": 0, + "count_maxd": 0, + "count_maxe": 0, + "count_maxf": 0 + }, + { + "rxtxen_sel": 0, + "spi_rxtxen": false, + "spi_rxtxen_ena": false, + "sm_en": false, + "sel_cnt_rate": false, + "conv_fall": 0, + "conv_rise": 0, + "dig_fall": 0, + "dig_rise": 0, + "pa_fall": 0, + "pa_rise": 0, + "count_maxa": 0, + "count_maxb": 0, + "count_maxc": 0, + "count_maxd": 0, + "count_maxe": 0, + "count_maxf": 0 + }, + { + "rxtxen_sel": 0, + "spi_rxtxen": false, + "spi_rxtxen_ena": false, + "sm_en": false, + "sel_cnt_rate": false, + "conv_fall": 0, + "conv_rise": 0, + "dig_fall": 0, + "dig_rise": 0, + "pa_fall": 0, + "pa_rise": 0, + "count_maxa": 0, + "count_maxb": 0, + "count_maxc": 0, + "count_maxd": 0, + "count_maxe": 0, + "count_maxf": 0 + }, + { + "rxtxen_sel": 0, + "spi_rxtxen": false, + "spi_rxtxen_ena": false, + "sm_en": false, + "sel_cnt_rate": false, + "conv_fall": 0, + "conv_rise": 0, + "dig_fall": 0, + "dig_rise": 0, + "pa_fall": 0, + "pa_rise": 0, + "count_maxa": 0, + "count_maxb": 0, + "count_maxc": 0, + "count_maxd": 0, + "count_maxe": 0, + "count_maxf": 0 + }, + { + "rxtxen_sel": 0, + "spi_rxtxen": false, + "spi_rxtxen_ena": false, + "sm_en": false, + "sel_cnt_rate": false, + "conv_fall": 0, + "conv_rise": 0, + "dig_fall": 0, + "dig_rise": 0, + "pa_fall": 0, + "pa_rise": 0, + "count_maxa": 0, + "count_maxb": 0, + "count_maxc": 0, + "count_maxd": 0, + "count_maxe": 0, + "count_maxf": 0 + } + ] + }, + { + "tx_cduc": [ + { + "nco": [ + { + "drc_en": true, + "nco_mode": 0, + "nco_if_mode": 0, + "drc_mxr_sel": 1, + "cmplx_mxr_mult_scale_en": 1, + "dc_testmode_value": 0, + "nco_phase_inc": 536870912, + "nco_phase_offset": 0, + "nco_phase_inc_frac_a": 0, + "nco_phase_inc_frac_b": 0, + "nco_phase_inc_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_phase_offset_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "amp_dither_en": false, + "phase_dither_en": false, + "nco_profile_sel_mode": 4, + "nco_auto_inc_dec": 0, + "debug_cdrc_clkoff_n": true + }, + { + "drc_en": false, + "nco_mode": 0, + "nco_if_mode": 0, + "drc_mxr_sel": 0, + "cmplx_mxr_mult_scale_en": 0, + "dc_testmode_value": 0, + "nco_phase_inc": 0, + "nco_phase_offset": 0, + "nco_phase_inc_frac_a": 0, + "nco_phase_inc_frac_b": 0, + "nco_phase_inc_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_phase_offset_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "amp_dither_en": false, + "phase_dither_en": false, + "nco_profile_sel_mode": 4, + "nco_auto_inc_dec": 0, + "debug_cdrc_clkoff_n": false + } + ], + "drc_ratio": 4 + }, + { + "nco": [ + { + "drc_en": true, + "nco_mode": 0, + "nco_if_mode": 0, + "drc_mxr_sel": 1, + "cmplx_mxr_mult_scale_en": 1, + "dc_testmode_value": 0, + "nco_phase_inc": 536870912, + "nco_phase_offset": 0, + "nco_phase_inc_frac_a": 0, + "nco_phase_inc_frac_b": 0, + "nco_phase_inc_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_phase_offset_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "amp_dither_en": false, + "phase_dither_en": false, + "nco_profile_sel_mode": 4, + "nco_auto_inc_dec": 0, + "debug_cdrc_clkoff_n": true + }, + { + "drc_en": false, + "nco_mode": 0, + "nco_if_mode": 0, + "drc_mxr_sel": 0, + "cmplx_mxr_mult_scale_en": 0, + "dc_testmode_value": 0, + "nco_phase_inc": 0, + "nco_phase_offset": 0, + "nco_phase_inc_frac_a": 0, + "nco_phase_inc_frac_b": 0, + "nco_phase_inc_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_phase_offset_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "amp_dither_en": false, + "phase_dither_en": false, + "nco_profile_sel_mode": 4, + "nco_auto_inc_dec": 0, + "debug_cdrc_clkoff_n": false + } + ], + "drc_ratio": 4 + } + ], + "tx_fduc": [ + { + "nco": [ + { + "drc_en": true, + "nco_mode": 0, + "nco_if_mode": 0, + "drc_mxr_sel": 1, + "cmplx_mxr_mult_scale_en": 1, + "dc_testmode_value": 0, + "nco_phase_inc": 14073748835533, + "nco_phase_offset": 0, + "nco_phase_inc_frac_a": 0, + "nco_phase_inc_frac_b": 0, + "amp_dither_en": false, + "phase_dither_en": false, + "hop_mode_en": false, + "hop_mode": 0, + "nco_phase_inc_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_phase_offset_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_profile_sel_mode": 4, + "nco_auto_inc_dec_freq": 0, + "nco_auto_inc_dec_phase": 0, + "nco_trig_hop_sel": 1, + "debug_fdrc_clkoff_n": true + }, + { + "drc_en": false, + "nco_mode": 0, + "nco_if_mode": 0, + "drc_mxr_sel": 0, + "cmplx_mxr_mult_scale_en": 0, + "dc_testmode_value": 0, + "nco_phase_inc": 0, + "nco_phase_offset": 0, + "nco_phase_inc_frac_a": 0, + "nco_phase_inc_frac_b": 0, + "amp_dither_en": false, + "phase_dither_en": false, + "hop_mode_en": false, + "hop_mode": 0, + "nco_phase_inc_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_phase_offset_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_profile_sel_mode": 4, + "nco_auto_inc_dec_freq": 0, + "nco_auto_inc_dec_phase": 0, + "nco_trig_hop_sel": 0, + "debug_fdrc_clkoff_n": false + } + ], + "drc_ratio": 4, + "sub_dp_gain_en": false, + "subdp_gain": 0 + }, + { + "nco": [ + { + "drc_en": true, + "nco_mode": 0, + "nco_if_mode": 0, + "drc_mxr_sel": 1, + "cmplx_mxr_mult_scale_en": 1, + "dc_testmode_value": 0, + "nco_phase_inc": 14073748835533, + "nco_phase_offset": 0, + "nco_phase_inc_frac_a": 0, + "nco_phase_inc_frac_b": 0, + "amp_dither_en": false, + "phase_dither_en": false, + "hop_mode_en": false, + "hop_mode": 0, + "nco_phase_inc_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_phase_offset_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_profile_sel_mode": 4, + "nco_auto_inc_dec_freq": 0, + "nco_auto_inc_dec_phase": 0, + "nco_trig_hop_sel": 1, + "debug_fdrc_clkoff_n": true + }, + { + "drc_en": false, + "nco_mode": 0, + "nco_if_mode": 0, + "drc_mxr_sel": 0, + "cmplx_mxr_mult_scale_en": 0, + "dc_testmode_value": 0, + "nco_phase_inc": 0, + "nco_phase_offset": 0, + "nco_phase_inc_frac_a": 0, + "nco_phase_inc_frac_b": 0, + "amp_dither_en": false, + "phase_dither_en": false, + "hop_mode_en": false, + "hop_mode": 0, + "nco_phase_inc_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_phase_offset_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_profile_sel_mode": 4, + "nco_auto_inc_dec_freq": 0, + "nco_auto_inc_dec_phase": 0, + "nco_trig_hop_sel": 0, + "debug_fdrc_clkoff_n": false + } + ], + "drc_ratio": 4, + "sub_dp_gain_en": false, + "subdp_gain": 0 + }, + { + "nco": [ + { + "drc_en": false, + "nco_mode": 0, + "nco_if_mode": 0, + "drc_mxr_sel": 1, + "cmplx_mxr_mult_scale_en": 1, + "dc_testmode_value": 0, + "nco_phase_inc": 0, + "nco_phase_offset": 0, + "nco_phase_inc_frac_a": 0, + "nco_phase_inc_frac_b": 0, + "amp_dither_en": false, + "phase_dither_en": false, + "hop_mode_en": false, + "hop_mode": 0, + "nco_phase_inc_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_phase_offset_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_profile_sel_mode": 4, + "nco_auto_inc_dec_freq": 0, + "nco_auto_inc_dec_phase": 0, + "nco_trig_hop_sel": 1, + "debug_fdrc_clkoff_n": true + }, + { + "drc_en": false, + "nco_mode": 0, + "nco_if_mode": 0, + "drc_mxr_sel": 0, + "cmplx_mxr_mult_scale_en": 0, + "dc_testmode_value": 0, + "nco_phase_inc": 0, + "nco_phase_offset": 0, + "nco_phase_inc_frac_a": 0, + "nco_phase_inc_frac_b": 0, + "amp_dither_en": false, + "phase_dither_en": false, + "hop_mode_en": false, + "hop_mode": 0, + "nco_phase_inc_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_phase_offset_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_profile_sel_mode": 4, + "nco_auto_inc_dec_freq": 0, + "nco_auto_inc_dec_phase": 0, + "nco_trig_hop_sel": 0, + "debug_fdrc_clkoff_n": false + } + ], + "drc_ratio": 4, + "sub_dp_gain_en": false, + "subdp_gain": 0 + }, + { + "nco": [ + { + "drc_en": false, + "nco_mode": 0, + "nco_if_mode": 0, + "drc_mxr_sel": 1, + "cmplx_mxr_mult_scale_en": 1, + "dc_testmode_value": 0, + "nco_phase_inc": 0, + "nco_phase_offset": 0, + "nco_phase_inc_frac_a": 0, + "nco_phase_inc_frac_b": 0, + "amp_dither_en": false, + "phase_dither_en": false, + "hop_mode_en": false, + "hop_mode": 0, + "nco_phase_inc_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_phase_offset_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_profile_sel_mode": 4, + "nco_auto_inc_dec_freq": 0, + "nco_auto_inc_dec_phase": 0, + "nco_trig_hop_sel": 1, + "debug_fdrc_clkoff_n": true + }, + { + "drc_en": false, + "nco_mode": 0, + "nco_if_mode": 0, + "drc_mxr_sel": 0, + "cmplx_mxr_mult_scale_en": 0, + "dc_testmode_value": 0, + "nco_phase_inc": 0, + "nco_phase_offset": 0, + "nco_phase_inc_frac_a": 0, + "nco_phase_inc_frac_b": 0, + "amp_dither_en": false, + "phase_dither_en": false, + "hop_mode_en": false, + "hop_mode": 0, + "nco_phase_inc_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_phase_offset_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_profile_sel_mode": 4, + "nco_auto_inc_dec_freq": 0, + "nco_auto_inc_dec_phase": 0, + "nco_trig_hop_sel": 0, + "debug_fdrc_clkoff_n": false + } + ], + "drc_ratio": 4, + "sub_dp_gain_en": false, + "subdp_gain": 0 + } + ], + "tx_pfilt": [ + { + "enable": false, + "coeffs": [ + [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] + ], + "i_mode": [0,0], + "q_mode": [0,0], + "output_dither_en": [false,false], + "real_data": 0, + "dq_mode": 0, + "add_sub_sel": 0, + "mode_switch": 0, + "pfilt_trigger_en": false, + "pfir_ix_gain_db": [0,0,0,0,0,0,0,0], + "pfir_iy_gain_db": [0,0,0,0,0,0,0,0], + "pfir_qx_gain_db": [0,0,0,0,0,0,0,0], + "pfir_qy_gain_db": [0,0,0,0,0,0,0,0], + "pfir_ix_scalar_gain_db": [0,0,0,0,0,0,0,0], + "pfir_iy_scalar_gain_db": [0,0,0,0,0,0,0,0], + "pfir_qx_scalar_gain_db": [0,0,0,0,0,0,0,0], + "pfir_qy_scalar_gain_db": [0,0,0,0,0,0,0,0], + "hc_prog_delay": [0,0,0,0,0,0,0,0] + } + ], + "tx_cfir": [ + { + "coeffs_i": [ + [ + [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] + ], + [ + [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] + ] + ], + "coeffs_q": [ + [ + [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] + ], + [ + [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] + ] + ], + "cfir_gain_dB": [ + [0,0,0,0],[0,0,0,0] + ], + "scalar_i": [ + [0,0,0,0],[0,0,0,0] + ], + "scalar_q": [ + [0,0,0,0],[0,0,0,0] + ], + "enable": false, + "sparse_mode": false, + "cfir_mode": 0 + }, + { + "coeffs_i": [ + [ + [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] + ], + [ + [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] + ] + ], + "coeffs_q": [ + [ + [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] + ], + [ + [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] + ] + ], + "cfir_gain_dB": [ + [0,0,0,0],[0,0,0,0] + ], + "scalar_i": [ + [0,0,0,0],[0,0,0,0] + ], + "scalar_q": [ + [0,0,0,0],[0,0,0,0] + ], + "enable": false, + "sparse_mode": false, + "cfir_mode": 0 + } + ], + "tx_fsrc": { + "fsrc_rate_int": 0, + "fsrc_rate_frac_a": 0, + "fsrc_rate_frac_b": 0, + "fsrc_delay": 0, + "gain_reduction": 0, + "ptr_syncrstval": 0, + "ptr_overwrite": false, + "data_mult_dither_en": false, + "dither_en": false, + "split_4t4r": false, + "mode_1x": false, + "enable0": false, + "enable1": false, + "bypass": false + }, + "tx_mux_summer_xbar": { + "cduc_dac_enables": [0,2,1,3], + "fduc_cduc_summer": [1,2,0,0], + "mux1_sel": [0,0], + "mux0_sel": [0,1,0,1], + "low_samp_en": false + }, + "tx_dyn_recfg": { + "prefsrc_lcm": 0, + "postfsrc_lcm": 0, + "trig_recfg_mode": false, + "cnco_rst_en": false, + "fnco_rst_en": false, + "resync_en": false, + "ts_rst_en": false, + "tzero_coher_en": false + }, + "tx_pa_prot": [ + { + "pa_clkdiv_en": false, + "paprot_pwr_cfg": { + "pa_clk_en": false, + "short_pac_en": false, + "long_pac_en": false, + "pwr_threshold_long": 0, + "pwr_threshold_short": 0, + "avg_long_win": 0, + "avg_short_win": 0 + }, + "paprot_sm_cfg": { + "enable_paprotsm": false, + "rampdwn_to_papin_en": false, + "srl_err_en": false, + "avg_pwr_err_en": false, + "auto_dyn_recfg_en": false, + "jesd_err_en": false, + "jesd_err_auto_cfg_en": false, + "data_ready_auto_cfg_en": false, + "zero_flush_clock_stable_rise_en": false, + "zero_flush_dyn_recfg_ramp_up_en": false, + "zero_flush_txen_fall_en": false, + "zero_flush_txen_rise_en": false, + "zero_flush_start_en": false, + "drive_sm_by_dig_en": false, + "hold_sample_en": false, + "skip_ramp_up": false, + "skip_ramp_down": false, + "ramp_up_timer_en": false, + "ramp_dwn_timer_en": false, + "zero_flush_timer": 0, + "ramp_down_timer_val": 0, + "ramp_up_timer_val": 0, + "dp_zero_flush_sel_0": 0, + "dp_zero_flush_sel_1": 0, + "data_ready_sel_ramp": 0, + "jesd_err_sel_ramp": 0 + }, + "paprot_ramp_cfg": { + "gain_clk_en": false, + "zero_detect_en": false, + "force_ramps_dyn_recfg_en": false, + "force_ramp_up_en": false, + "force_ramp_dwn_en": false, + "enable_gain": false, + "enable_ramp": false, + "trig_ramp_together": false, + "gain_inc_step": 0, + "gain_dec_step": 0, + "gain_max_val": 0 + }, + "paprot_sr_cfg": { + "sr_clk_en": false, + "sr_err_self_clr_en": false, + "sr_calculation_en": false, + "slew_rate_err_irq_en": false, + "sr_path_sel": 0, + "sr_threshold": 0 + } + }, + { + "pa_clkdiv_en": false, + "paprot_pwr_cfg": { + "pa_clk_en": false, + "short_pac_en": false, + "long_pac_en": false, + "pwr_threshold_long": 0, + "pwr_threshold_short": 0, + "avg_long_win": 0, + "avg_short_win": 0 + }, + "paprot_sm_cfg": { + "enable_paprotsm": false, + "rampdwn_to_papin_en": false, + "srl_err_en": false, + "avg_pwr_err_en": false, + "auto_dyn_recfg_en": false, + "jesd_err_en": false, + "jesd_err_auto_cfg_en": false, + "data_ready_auto_cfg_en": false, + "zero_flush_clock_stable_rise_en": false, + "zero_flush_dyn_recfg_ramp_up_en": false, + "zero_flush_txen_fall_en": false, + "zero_flush_txen_rise_en": false, + "zero_flush_start_en": false, + "drive_sm_by_dig_en": false, + "hold_sample_en": false, + "skip_ramp_up": false, + "skip_ramp_down": false, + "ramp_up_timer_en": false, + "ramp_dwn_timer_en": false, + "zero_flush_timer": 0, + "ramp_down_timer_val": 0, + "ramp_up_timer_val": 0, + "dp_zero_flush_sel_0": 0, + "dp_zero_flush_sel_1": 0, + "data_ready_sel_ramp": 0, + "jesd_err_sel_ramp": 0 + }, + "paprot_ramp_cfg": { + "gain_clk_en": false, + "zero_detect_en": false, + "force_ramps_dyn_recfg_en": false, + "force_ramp_up_en": false, + "force_ramp_dwn_en": false, + "enable_gain": false, + "enable_ramp": false, + "trig_ramp_together": false, + "gain_inc_step": 0, + "gain_dec_step": 0, + "gain_max_val": 0 + }, + "paprot_sr_cfg": { + "sr_clk_en": false, + "sr_err_self_clr_en": false, + "sr_calculation_en": false, + "slew_rate_err_irq_en": false, + "sr_path_sel": 0, + "sr_threshold": 0 + } + }, + { + "pa_clkdiv_en": false, + "paprot_pwr_cfg": { + "pa_clk_en": false, + "short_pac_en": false, + "long_pac_en": false, + "pwr_threshold_long": 0, + "pwr_threshold_short": 0, + "avg_long_win": 0, + "avg_short_win": 0 + }, + "paprot_sm_cfg": { + "enable_paprotsm": false, + "rampdwn_to_papin_en": false, + "srl_err_en": false, + "avg_pwr_err_en": false, + "auto_dyn_recfg_en": false, + "jesd_err_en": false, + "jesd_err_auto_cfg_en": false, + "data_ready_auto_cfg_en": false, + "zero_flush_clock_stable_rise_en": false, + "zero_flush_dyn_recfg_ramp_up_en": false, + "zero_flush_txen_fall_en": false, + "zero_flush_txen_rise_en": false, + "zero_flush_start_en": false, + "drive_sm_by_dig_en": false, + "hold_sample_en": false, + "skip_ramp_up": false, + "skip_ramp_down": false, + "ramp_up_timer_en": false, + "ramp_dwn_timer_en": false, + "zero_flush_timer": 0, + "ramp_down_timer_val": 0, + "ramp_up_timer_val": 0, + "dp_zero_flush_sel_0": 0, + "dp_zero_flush_sel_1": 0, + "data_ready_sel_ramp": 0, + "jesd_err_sel_ramp": 0 + }, + "paprot_ramp_cfg": { + "gain_clk_en": false, + "zero_detect_en": false, + "force_ramps_dyn_recfg_en": false, + "force_ramp_up_en": false, + "force_ramp_dwn_en": false, + "enable_gain": false, + "enable_ramp": false, + "trig_ramp_together": false, + "gain_inc_step": 0, + "gain_dec_step": 0, + "gain_max_val": 0 + }, + "paprot_sr_cfg": { + "sr_clk_en": false, + "sr_err_self_clr_en": false, + "sr_calculation_en": false, + "slew_rate_err_irq_en": false, + "sr_path_sel": 0, + "sr_threshold": 0 + } + }, + { + "pa_clkdiv_en": false, + "paprot_pwr_cfg": { + "pa_clk_en": false, + "short_pac_en": false, + "long_pac_en": false, + "pwr_threshold_long": 0, + "pwr_threshold_short": 0, + "avg_long_win": 0, + "avg_short_win": 0 + }, + "paprot_sm_cfg": { + "enable_paprotsm": false, + "rampdwn_to_papin_en": false, + "srl_err_en": false, + "avg_pwr_err_en": false, + "auto_dyn_recfg_en": false, + "jesd_err_en": false, + "jesd_err_auto_cfg_en": false, + "data_ready_auto_cfg_en": false, + "zero_flush_clock_stable_rise_en": false, + "zero_flush_dyn_recfg_ramp_up_en": false, + "zero_flush_txen_fall_en": false, + "zero_flush_txen_rise_en": false, + "zero_flush_start_en": false, + "drive_sm_by_dig_en": false, + "hold_sample_en": false, + "skip_ramp_up": false, + "skip_ramp_down": false, + "ramp_up_timer_en": false, + "ramp_dwn_timer_en": false, + "zero_flush_timer": 0, + "ramp_down_timer_val": 0, + "ramp_up_timer_val": 0, + "dp_zero_flush_sel_0": 0, + "dp_zero_flush_sel_1": 0, + "data_ready_sel_ramp": 0, + "jesd_err_sel_ramp": 0 + }, + "paprot_ramp_cfg": { + "gain_clk_en": false, + "zero_detect_en": false, + "force_ramps_dyn_recfg_en": false, + "force_ramp_up_en": false, + "force_ramp_dwn_en": false, + "enable_gain": false, + "enable_ramp": false, + "trig_ramp_together": false, + "gain_inc_step": 0, + "gain_dec_step": 0, + "gain_max_val": 0 + }, + "paprot_sr_cfg": { + "sr_clk_en": false, + "sr_err_self_clr_en": false, + "sr_calculation_en": false, + "slew_rate_err_irq_en": false, + "sr_path_sel": 0, + "sr_threshold": 0 + } + } + ], + "inv_sinc_en": [true,true,false,false], + "tx_enable": [ + { + "enable_spien": false, + "enable_spi": false, + "enable_pol": false, + "slice_sel": 0, + "pfilt_sel": 0, + "cdrc_sel": 0, + "fdrc_sel": 0, + "cfir_sel": 0, + "fsrc_sel": 0, + "jesd_link_sel": 0, + "jesd_phy_sel": 0, + "modsw_sel": false, + "invsinc_sel": 0, + "gain_sel": 0, + "srd_sel": 0 + }, + { + "enable_spien": false, + "enable_spi": false, + "enable_pol": false, + "slice_sel": 0, + "pfilt_sel": 0, + "cdrc_sel": 0, + "fdrc_sel": 0, + "cfir_sel": 0, + "fsrc_sel": 0, + "jesd_link_sel": 0, + "jesd_phy_sel": 0, + "modsw_sel": false, + "invsinc_sel": 0, + "gain_sel": 0, + "srd_sel": 0 + }, + { + "enable_spien": false, + "enable_spi": false, + "enable_pol": false, + "slice_sel": 0, + "pfilt_sel": 0, + "cdrc_sel": 0, + "fdrc_sel": 0, + "cfir_sel": 0, + "fsrc_sel": 0, + "jesd_link_sel": 0, + "jesd_phy_sel": 0, + "modsw_sel": false, + "invsinc_sel": 0, + "gain_sel": 0, + "srd_sel": 0 + }, + { + "enable_spien": false, + "enable_spi": false, + "enable_pol": false, + "slice_sel": 0, + "pfilt_sel": 0, + "cdrc_sel": 0, + "fdrc_sel": 0, + "cfir_sel": 0, + "fsrc_sel": 0, + "jesd_link_sel": 0, + "jesd_phy_sel": 0, + "modsw_sel": false, + "invsinc_sel": 0, + "gain_sel": 0, + "srd_sel": 0 + } + ], + "tx_power": [ + { + "rxtxen_sel": 0, + "spi_rxtxen": false, + "spi_rxtxen_ena": false, + "sm_en": false, + "sel_cnt_rate": false, + "conv_fall": 0, + "conv_rise": 0, + "dig_fall": 0, + "dig_rise": 0, + "pa_fall": 0, + "pa_rise": 0, + "count_maxa": 0, + "count_maxb": 0, + "count_maxc": 0, + "count_maxd": 0, + "count_maxe": 0, + "count_maxf": 0 + }, + { + "rxtxen_sel": 0, + "spi_rxtxen": false, + "spi_rxtxen_ena": false, + "sm_en": false, + "sel_cnt_rate": false, + "conv_fall": 0, + "conv_rise": 0, + "dig_fall": 0, + "dig_rise": 0, + "pa_fall": 0, + "pa_rise": 0, + "count_maxa": 0, + "count_maxb": 0, + "count_maxc": 0, + "count_maxd": 0, + "count_maxe": 0, + "count_maxf": 0 + }, + { + "rxtxen_sel": 0, + "spi_rxtxen": false, + "spi_rxtxen_ena": false, + "sm_en": false, + "sel_cnt_rate": false, + "conv_fall": 0, + "conv_rise": 0, + "dig_fall": 0, + "dig_rise": 0, + "pa_fall": 0, + "pa_rise": 0, + "count_maxa": 0, + "count_maxb": 0, + "count_maxc": 0, + "count_maxd": 0, + "count_maxe": 0, + "count_maxf": 0 + }, + { + "rxtxen_sel": 0, + "spi_rxtxen": false, + "spi_rxtxen_ena": false, + "sm_en": false, + "sel_cnt_rate": false, + "conv_fall": 0, + "conv_rise": 0, + "dig_fall": 0, + "dig_rise": 0, + "pa_fall": 0, + "pa_rise": 0, + "count_maxa": 0, + "count_maxb": 0, + "count_maxc": 0, + "count_maxd": 0, + "count_maxe": 0, + "count_maxf": 0 + }, + { + "rxtxen_sel": 0, + "spi_rxtxen": false, + "spi_rxtxen_ena": false, + "sm_en": false, + "sel_cnt_rate": false, + "conv_fall": 0, + "conv_rise": 0, + "dig_fall": 0, + "dig_rise": 0, + "pa_fall": 0, + "pa_rise": 0, + "count_maxa": 0, + "count_maxb": 0, + "count_maxc": 0, + "count_maxd": 0, + "count_maxe": 0, + "count_maxf": 0 + }, + { + "rxtxen_sel": 0, + "spi_rxtxen": false, + "spi_rxtxen_ena": false, + "sm_en": false, + "sel_cnt_rate": false, + "conv_fall": 0, + "conv_rise": 0, + "dig_fall": 0, + "dig_rise": 0, + "pa_fall": 0, + "pa_rise": 0, + "count_maxa": 0, + "count_maxb": 0, + "count_maxc": 0, + "count_maxd": 0, + "count_maxe": 0, + "count_maxf": 0 + }, + { + "rxtxen_sel": 0, + "spi_rxtxen": false, + "spi_rxtxen_ena": false, + "sm_en": false, + "sel_cnt_rate": false, + "conv_fall": 0, + "conv_rise": 0, + "dig_fall": 0, + "dig_rise": 0, + "pa_fall": 0, + "pa_rise": 0, + "count_maxa": 0, + "count_maxb": 0, + "count_maxc": 0, + "count_maxd": 0, + "count_maxe": 0, + "count_maxf": 0 + }, + { + "rxtxen_sel": 0, + "spi_rxtxen": false, + "spi_rxtxen_ena": false, + "sm_en": false, + "sel_cnt_rate": false, + "conv_fall": 0, + "conv_rise": 0, + "dig_fall": 0, + "dig_rise": 0, + "pa_fall": 0, + "pa_rise": 0, + "count_maxa": 0, + "count_maxb": 0, + "count_maxc": 0, + "count_maxd": 0, + "count_maxe": 0, + "count_maxf": 0 + } + ] + } + ], + "rx_path": [ + { + "rx_cddc": [ + { + "nco": [ + { + "drc_en": true, + "nco_mode": 0, + "nco_if_mode": 0, + "drc_mxr_sel": 0, + "cmplx_mxr_mult_scale_en": 1, + "dc_testmode_value": 0, + "nco_phase_inc": 1342177280, + "nco_phase_offset": 0, + "nco_phase_inc_frac_a": 0, + "nco_phase_inc_frac_b": 0, + "nco_phase_inc_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_phase_offset_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "amp_dither_en": false, + "phase_dither_en": false, + "nco_profile_sel_mode": 4, + "nco_auto_inc_dec": 0, + "debug_cdrc_clkoff_n": true + }, + { + "drc_en": false, + "nco_mode": 0, + "nco_if_mode": 0, + "drc_mxr_sel": 0, + "cmplx_mxr_mult_scale_en": 0, + "dc_testmode_value": 0, + "nco_phase_inc": 0, + "nco_phase_offset": 0, + "nco_phase_inc_frac_a": 0, + "nco_phase_inc_frac_b": 0, + "nco_phase_inc_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_phase_offset_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "amp_dither_en": false, + "phase_dither_en": false, + "nco_profile_sel_mode": 4, + "nco_auto_inc_dec": 0, + "debug_cdrc_clkoff_n": false + } + ], + "drc_ratio": 3, + "fine_bypass": false, + "link_num": 0, + "hb1_filt_dly_en": false, + "hb2_filt_dly_en": false, + "tb1_filt_dly_cycles": 0, + "hb1_gain_6db_en": false, + "tb1_gain_6db_en": false, + "trig_mst_en": false, + "trig_mst_period": 0, + "trig_mst_offset": 0, + "debug_cddc_clkoff_n": 255 + }, + { + "nco": [ + { + "drc_en": true, + "nco_mode": 0, + "nco_if_mode": 0, + "drc_mxr_sel": 0, + "cmplx_mxr_mult_scale_en": 1, + "dc_testmode_value": 0, + "nco_phase_inc": 1342177280, + "nco_phase_offset": 0, + "nco_phase_inc_frac_a": 0, + "nco_phase_inc_frac_b": 0, + "nco_phase_inc_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_phase_offset_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "amp_dither_en": false, + "phase_dither_en": false, + "nco_profile_sel_mode": 4, + "nco_auto_inc_dec": 0, + "debug_cdrc_clkoff_n": true + }, + { + "drc_en": false, + "nco_mode": 0, + "nco_if_mode": 0, + "drc_mxr_sel": 0, + "cmplx_mxr_mult_scale_en": 0, + "dc_testmode_value": 0, + "nco_phase_inc": 0, + "nco_phase_offset": 0, + "nco_phase_inc_frac_a": 0, + "nco_phase_inc_frac_b": 0, + "nco_phase_inc_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_phase_offset_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "amp_dither_en": false, + "phase_dither_en": false, + "nco_profile_sel_mode": 4, + "nco_auto_inc_dec": 0, + "debug_cdrc_clkoff_n": false + } + ], + "drc_ratio": 3, + "fine_bypass": false, + "link_num": 0, + "hb1_filt_dly_en": false, + "hb2_filt_dly_en": false, + "tb1_filt_dly_cycles": 0, + "hb1_gain_6db_en": false, + "tb1_gain_6db_en": false, + "trig_mst_en": false, + "trig_mst_period": 0, + "trig_mst_offset": 0, + "debug_cddc_clkoff_n": 255 + } + ], + "rx_fddc": [ + { + "nco": [ + { + "drc_en": true, + "nco_mode": 0, + "nco_if_mode": 0, + "drc_mxr_sel": 1, + "cmplx_mxr_mult_scale_en": 1, + "dc_testmode_value": 0, + "nco_phase_inc": 703687441777, + "nco_phase_offset": 0, + "nco_phase_inc_frac_a": 0, + "nco_phase_inc_frac_b": 0, + "amp_dither_en": false, + "phase_dither_en": false, + "hop_mode_en": false, + "hop_mode": 0, + "nco_phase_inc_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_phase_offset_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_profile_sel_mode": 4, + "nco_auto_inc_dec_freq": 0, + "nco_auto_inc_dec_phase": 0, + "nco_trig_hop_sel": 1, + "debug_fdrc_clkoff_n": true + }, + { + "drc_en": false, + "nco_mode": 0, + "nco_if_mode": 0, + "drc_mxr_sel": 0, + "cmplx_mxr_mult_scale_en": 0, + "dc_testmode_value": 0, + "nco_phase_inc": 0, + "nco_phase_offset": 0, + "nco_phase_inc_frac_a": 0, + "nco_phase_inc_frac_b": 0, + "amp_dither_en": false, + "phase_dither_en": false, + "hop_mode_en": false, + "hop_mode": 0, + "nco_phase_inc_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_phase_offset_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_profile_sel_mode": 4, + "nco_auto_inc_dec_freq": 0, + "nco_auto_inc_dec_phase": 0, + "nco_trig_hop_sel": 0, + "debug_fdrc_clkoff_n": false + } + ], + "drc_ratio": 2, + "link_num": 0, + "debug_fddc_clkoff_n": 255, + "hb1_filt_dly_en": false, + "hb2_filt_dly_en": false, + "hb3_filt_dly_en": false, + "hb4_filt_dly_en": false, + "hb5_filt_dly_en": false, + "hb6_filt_dly_en": false, + "hb1_gain_6db_en": true + }, + { + "nco": [ + { + "drc_en": false, + "nco_mode": 0, + "nco_if_mode": 0, + "drc_mxr_sel": 1, + "cmplx_mxr_mult_scale_en": 1, + "dc_testmode_value": 0, + "nco_phase_inc": 0, + "nco_phase_offset": 0, + "nco_phase_inc_frac_a": 0, + "nco_phase_inc_frac_b": 0, + "amp_dither_en": false, + "phase_dither_en": false, + "hop_mode_en": false, + "hop_mode": 0, + "nco_phase_inc_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_phase_offset_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_profile_sel_mode": 4, + "nco_auto_inc_dec_freq": 0, + "nco_auto_inc_dec_phase": 0, + "nco_trig_hop_sel": 1, + "debug_fdrc_clkoff_n": true + }, + { + "drc_en": false, + "nco_mode": 0, + "nco_if_mode": 0, + "drc_mxr_sel": 0, + "cmplx_mxr_mult_scale_en": 0, + "dc_testmode_value": 0, + "nco_phase_inc": 0, + "nco_phase_offset": 0, + "nco_phase_inc_frac_a": 0, + "nco_phase_inc_frac_b": 0, + "amp_dither_en": false, + "phase_dither_en": false, + "hop_mode_en": false, + "hop_mode": 0, + "nco_phase_inc_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_phase_offset_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_profile_sel_mode": 4, + "nco_auto_inc_dec_freq": 0, + "nco_auto_inc_dec_phase": 0, + "nco_trig_hop_sel": 0, + "debug_fdrc_clkoff_n": false + } + ], + "drc_ratio": 2, + "link_num": 0, + "debug_fddc_clkoff_n": 255, + "hb1_filt_dly_en": false, + "hb2_filt_dly_en": false, + "hb3_filt_dly_en": false, + "hb4_filt_dly_en": false, + "hb5_filt_dly_en": false, + "hb6_filt_dly_en": false, + "hb1_gain_6db_en": true + }, + { + "nco": [ + { + "drc_en": true, + "nco_mode": 0, + "nco_if_mode": 0, + "drc_mxr_sel": 1, + "cmplx_mxr_mult_scale_en": 1, + "dc_testmode_value": 0, + "nco_phase_inc": 703687441777, + "nco_phase_offset": 0, + "nco_phase_inc_frac_a": 0, + "nco_phase_inc_frac_b": 0, + "amp_dither_en": false, + "phase_dither_en": false, + "hop_mode_en": false, + "hop_mode": 0, + "nco_phase_inc_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_phase_offset_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_profile_sel_mode": 4, + "nco_auto_inc_dec_freq": 0, + "nco_auto_inc_dec_phase": 0, + "nco_trig_hop_sel": 1, + "debug_fdrc_clkoff_n": true + }, + { + "drc_en": false, + "nco_mode": 0, + "nco_if_mode": 0, + "drc_mxr_sel": 0, + "cmplx_mxr_mult_scale_en": 0, + "dc_testmode_value": 0, + "nco_phase_inc": 0, + "nco_phase_offset": 0, + "nco_phase_inc_frac_a": 0, + "nco_phase_inc_frac_b": 0, + "amp_dither_en": false, + "phase_dither_en": false, + "hop_mode_en": false, + "hop_mode": 0, + "nco_phase_inc_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_phase_offset_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_profile_sel_mode": 4, + "nco_auto_inc_dec_freq": 0, + "nco_auto_inc_dec_phase": 0, + "nco_trig_hop_sel": 0, + "debug_fdrc_clkoff_n": false + } + ], + "drc_ratio": 2, + "link_num": 0, + "debug_fddc_clkoff_n": 255, + "hb1_filt_dly_en": false, + "hb2_filt_dly_en": false, + "hb3_filt_dly_en": false, + "hb4_filt_dly_en": false, + "hb5_filt_dly_en": false, + "hb6_filt_dly_en": false, + "hb1_gain_6db_en": true + }, + { + "nco": [ + { + "drc_en": false, + "nco_mode": 0, + "nco_if_mode": 0, + "drc_mxr_sel": 1, + "cmplx_mxr_mult_scale_en": 1, + "dc_testmode_value": 0, + "nco_phase_inc": 0, + "nco_phase_offset": 0, + "nco_phase_inc_frac_a": 0, + "nco_phase_inc_frac_b": 0, + "amp_dither_en": false, + "phase_dither_en": false, + "hop_mode_en": false, + "hop_mode": 0, + "nco_phase_inc_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_phase_offset_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_profile_sel_mode": 4, + "nco_auto_inc_dec_freq": 0, + "nco_auto_inc_dec_phase": 0, + "nco_trig_hop_sel": 1, + "debug_fdrc_clkoff_n": true + }, + { + "drc_en": false, + "nco_mode": 0, + "nco_if_mode": 0, + "drc_mxr_sel": 0, + "cmplx_mxr_mult_scale_en": 0, + "dc_testmode_value": 0, + "nco_phase_inc": 0, + "nco_phase_offset": 0, + "nco_phase_inc_frac_a": 0, + "nco_phase_inc_frac_b": 0, + "amp_dither_en": false, + "phase_dither_en": false, + "hop_mode_en": false, + "hop_mode": 0, + "nco_phase_inc_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_phase_offset_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_profile_sel_mode": 4, + "nco_auto_inc_dec_freq": 0, + "nco_auto_inc_dec_phase": 0, + "nco_trig_hop_sel": 0, + "debug_fdrc_clkoff_n": false + } + ], + "drc_ratio": 2, + "link_num": 0, + "debug_fddc_clkoff_n": 255, + "hb1_filt_dly_en": false, + "hb2_filt_dly_en": false, + "hb3_filt_dly_en": false, + "hb4_filt_dly_en": false, + "hb5_filt_dly_en": false, + "hb6_filt_dly_en": false, + "hb1_gain_6db_en": true + } + ], + "rx_pfilt": [ + { + "enable": false, + "coeffs": [ + [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] + ], + "i_mode": [0,0], + "q_mode": [0,0], + "output_dither_en": [false,false], + "real_data": 1, + "dq_mode": 0, + "add_sub_sel": 0, + "mode_switch": 0, + "pfilt_trigger_en": false, + "pfir_ix_gain_db": [0,0,0,0,0,0,0,0], + "pfir_iy_gain_db": [0,0,0,0,0,0,0,0], + "pfir_qx_gain_db": [0,0,0,0,0,0,0,0], + "pfir_qy_gain_db": [0,0,0,0,0,0,0,0], + "pfir_ix_scalar_gain_db": [0,0,0,0,0,0,0,0], + "pfir_iy_scalar_gain_db": [0,0,0,0,0,0,0,0], + "pfir_qx_scalar_gain_db": [0,0,0,0,0,0,0,0], + "pfir_qy_scalar_gain_db": [0,0,0,0,0,0,0,0], + "hc_prog_delay": [0,0,0,0,0,0,0,0] + } + ], + "rx_cfir": [ + { + "coeffs_i": [ + [ + [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] + ], + [ + [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] + ] + ], + "coeffs_q": [ + [ + [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] + ], + [ + [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] + ] + ], + "cfir_gain_dB": [ + [0,0,0,0],[0,0,0,0] + ], + "scalar_i": [ + [0,0,0,0],[0,0,0,0] + ], + "scalar_q": [ + [0,0,0,0],[0,0,0,0] + ], + "enable": false, + "sparse_mode": false, + "cfir_mode": 0 + }, + { + "coeffs_i": [ + [ + [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] + ], + [ + [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] + ] + ], + "coeffs_q": [ + [ + [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] + ], + [ + [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] + ] + ], + "cfir_gain_dB": [ + [0,0,0,0],[0,0,0,0] + ], + "scalar_i": [ + [0,0,0,0],[0,0,0,0] + ], + "scalar_q": [ + [0,0,0,0],[0,0,0,0] + ], + "enable": false, + "sparse_mode": false, + "cfir_mode": 0 + } + ], + "rx_fsrc": { + "fsrc_rate_int": 0, + "fsrc_rate_frac_a": 0, + "fsrc_rate_frac_b": 0, + "fsrc_delay": 0, + "gain_reduction": 0, + "ptr_syncrstval": 0, + "ptr_overwrite": false, + "data_mult_dither_en": false, + "dither_en": false, + "split_4t4r": false, + "mode_1x": false, + "enable0": false, + "enable1": false, + "bypass": false + }, + "rx_mux_splitter_xbar": { + "mux0_out_adc_sel": [0,0,0,0], + "mux2_fddc_input_sel": [0,0,4,4], + "low_samp_en": false + }, + "rx_dyn_recfg": { + "prefsrc_lcm": 0, + "postfsrc_lcm": 0, + "trig_recfg_mode": false, + "cnco_rst_en": false, + "fnco_rst_en": false, + "resync_en": false, + "ts_rst_en": false, + "tzero_coher_en": false + }, + "rx_dformat": [ + { + "inv": false, + "sel": 0, + "ddc_dither_en": false, + "res": 0, + "tmode": { + "sel": 0, + "type_sel": 0, + "pn_force_rst": false, + "flush": false, + "usr_pat_sel": false, + "res": 0 + }, + "rm_fifo": { + "invalid_en": false, + "sample_repeat_en": true + } + }, + { + "inv": false, + "sel": 0, + "ddc_dither_en": false, + "res": 0, + "tmode": { + "sel": 0, + "type_sel": 0, + "pn_force_rst": false, + "flush": false, + "usr_pat_sel": false, + "res": 0 + }, + "rm_fifo": { + "invalid_en": false, + "sample_repeat_en": true + } + } + ], + "rx_smon": [ + { + "period": 0, + "gpio_en": false, + "peak_en": false, + "jlink_sel": 0, + "sframer_en": false, + "sframer_mode": 0, + "sync_en": false, + "sync_next": 0, + "thresh_high": 0, + "thresh_low": 0 + }, + { + "period": 0, + "gpio_en": false, + "peak_en": false, + "jlink_sel": 0, + "sframer_en": false, + "sframer_mode": 0, + "sync_en": false, + "sync_next": 0, + "thresh_high": 0, + "thresh_low": 0 + }, + { + "period": 0, + "gpio_en": false, + "peak_en": false, + "jlink_sel": 0, + "sframer_en": false, + "sframer_mode": 0, + "sync_en": false, + "sync_next": 0, + "thresh_high": 0, + "thresh_low": 0 + }, + { + "period": 0, + "gpio_en": false, + "peak_en": false, + "jlink_sel": 0, + "sframer_en": false, + "sframer_mode": 0, + "sync_en": false, + "sync_next": 0, + "thresh_high": 0, + "thresh_low": 0 + } + ], + "rx_enable": [ + { + "enable_spien": false, + "enable_spi": false, + "enable_pol": false, + "slice_sel": 0, + "pfilt_sel": 0, + "cdrc_sel": 0, + "fdrc_sel": 0, + "cfir_sel": 0, + "fsrc_sel": 0, + "jesd_link_sel": 0, + "jesd_phy_sel": 0, + "modsw_sel": false, + "invsinc_sel": 0, + "gain_sel": 0, + "srd_sel": 0 + }, + { + "enable_spien": false, + "enable_spi": false, + "enable_pol": false, + "slice_sel": 0, + "pfilt_sel": 0, + "cdrc_sel": 0, + "fdrc_sel": 0, + "cfir_sel": 0, + "fsrc_sel": 0, + "jesd_link_sel": 0, + "jesd_phy_sel": 0, + "modsw_sel": false, + "invsinc_sel": 0, + "gain_sel": 0, + "srd_sel": 0 + }, + { + "enable_spien": false, + "enable_spi": false, + "enable_pol": false, + "slice_sel": 0, + "pfilt_sel": 0, + "cdrc_sel": 0, + "fdrc_sel": 0, + "cfir_sel": 0, + "fsrc_sel": 0, + "jesd_link_sel": 0, + "jesd_phy_sel": 0, + "modsw_sel": false, + "invsinc_sel": 0, + "gain_sel": 0, + "srd_sel": 0 + }, + { + "enable_spien": false, + "enable_spi": false, + "enable_pol": false, + "slice_sel": 0, + "pfilt_sel": 0, + "cdrc_sel": 0, + "fdrc_sel": 0, + "cfir_sel": 0, + "fsrc_sel": 0, + "jesd_link_sel": 0, + "jesd_phy_sel": 0, + "modsw_sel": false, + "invsinc_sel": 0, + "gain_sel": 0, + "srd_sel": 0 + } + ], + "rx_power": [ + { + "rxtxen_sel": 0, + "spi_rxtxen": false, + "spi_rxtxen_ena": false, + "sm_en": false, + "sel_cnt_rate": false, + "conv_fall": 0, + "conv_rise": 0, + "dig_fall": 0, + "dig_rise": 0, + "pa_fall": 0, + "pa_rise": 0, + "count_maxa": 0, + "count_maxb": 0, + "count_maxc": 0, + "count_maxd": 0, + "count_maxe": 0, + "count_maxf": 0 + }, + { + "rxtxen_sel": 0, + "spi_rxtxen": false, + "spi_rxtxen_ena": false, + "sm_en": false, + "sel_cnt_rate": false, + "conv_fall": 0, + "conv_rise": 0, + "dig_fall": 0, + "dig_rise": 0, + "pa_fall": 0, + "pa_rise": 0, + "count_maxa": 0, + "count_maxb": 0, + "count_maxc": 0, + "count_maxd": 0, + "count_maxe": 0, + "count_maxf": 0 + }, + { + "rxtxen_sel": 0, + "spi_rxtxen": false, + "spi_rxtxen_ena": false, + "sm_en": false, + "sel_cnt_rate": false, + "conv_fall": 0, + "conv_rise": 0, + "dig_fall": 0, + "dig_rise": 0, + "pa_fall": 0, + "pa_rise": 0, + "count_maxa": 0, + "count_maxb": 0, + "count_maxc": 0, + "count_maxd": 0, + "count_maxe": 0, + "count_maxf": 0 + }, + { + "rxtxen_sel": 0, + "spi_rxtxen": false, + "spi_rxtxen_ena": false, + "sm_en": false, + "sel_cnt_rate": false, + "conv_fall": 0, + "conv_rise": 0, + "dig_fall": 0, + "dig_rise": 0, + "pa_fall": 0, + "pa_rise": 0, + "count_maxa": 0, + "count_maxb": 0, + "count_maxc": 0, + "count_maxd": 0, + "count_maxe": 0, + "count_maxf": 0 + }, + { + "rxtxen_sel": 0, + "spi_rxtxen": false, + "spi_rxtxen_ena": false, + "sm_en": false, + "sel_cnt_rate": false, + "conv_fall": 0, + "conv_rise": 0, + "dig_fall": 0, + "dig_rise": 0, + "pa_fall": 0, + "pa_rise": 0, + "count_maxa": 0, + "count_maxb": 0, + "count_maxc": 0, + "count_maxd": 0, + "count_maxe": 0, + "count_maxf": 0 + }, + { + "rxtxen_sel": 0, + "spi_rxtxen": false, + "spi_rxtxen_ena": false, + "sm_en": false, + "sel_cnt_rate": false, + "conv_fall": 0, + "conv_rise": 0, + "dig_fall": 0, + "dig_rise": 0, + "pa_fall": 0, + "pa_rise": 0, + "count_maxa": 0, + "count_maxb": 0, + "count_maxc": 0, + "count_maxd": 0, + "count_maxe": 0, + "count_maxf": 0 + }, + { + "rxtxen_sel": 0, + "spi_rxtxen": false, + "spi_rxtxen_ena": false, + "sm_en": false, + "sel_cnt_rate": false, + "conv_fall": 0, + "conv_rise": 0, + "dig_fall": 0, + "dig_rise": 0, + "pa_fall": 0, + "pa_rise": 0, + "count_maxa": 0, + "count_maxb": 0, + "count_maxc": 0, + "count_maxd": 0, + "count_maxe": 0, + "count_maxf": 0 + }, + { + "rxtxen_sel": 0, + "spi_rxtxen": false, + "spi_rxtxen_ena": false, + "sm_en": false, + "sel_cnt_rate": false, + "conv_fall": 0, + "conv_rise": 0, + "dig_fall": 0, + "dig_rise": 0, + "pa_fall": 0, + "pa_rise": 0, + "count_maxa": 0, + "count_maxb": 0, + "count_maxc": 0, + "count_maxd": 0, + "count_maxe": 0, + "count_maxf": 0 + } + ], + "rx_bmem": [ + { + "fast_nslow_mode": 0, + "bmem_shut_down": false, + "bmem_sleep": false, + "bmem_mode": 0, + "bmem_en": false, + "hop_dly_sel_mode": 0, + "bmem_8t8r_cap_mask": 0, + "ramclk_ph_dis": false, + "parity_check_en": false, + "trig_mode_en": false, + "trig_mode_sclr_en": false, + "sample_dly": 0, + "hop_delay0": 0, + "hop_delay1": 0, + "hop_delay2": 0, + "hop_delay3": 0 + }, + { + "fast_nslow_mode": 0, + "bmem_shut_down": false, + "bmem_sleep": false, + "bmem_mode": 0, + "bmem_en": false, + "hop_dly_sel_mode": 0, + "bmem_8t8r_cap_mask": 0, + "ramclk_ph_dis": false, + "parity_check_en": false, + "trig_mode_en": false, + "trig_mode_sclr_en": false, + "sample_dly": 0, + "hop_delay0": 0, + "hop_delay1": 0, + "hop_delay2": 0, + "hop_delay3": 0 + }, + { + "fast_nslow_mode": 0, + "bmem_shut_down": false, + "bmem_sleep": false, + "bmem_mode": 0, + "bmem_en": false, + "hop_dly_sel_mode": 0, + "bmem_8t8r_cap_mask": 0, + "ramclk_ph_dis": false, + "parity_check_en": false, + "trig_mode_en": false, + "trig_mode_sclr_en": false, + "sample_dly": 0, + "hop_delay0": 0, + "hop_delay1": 0, + "hop_delay2": 0, + "hop_delay3": 0 + }, + { + "fast_nslow_mode": 0, + "bmem_shut_down": false, + "bmem_sleep": false, + "bmem_mode": 0, + "bmem_en": false, + "hop_dly_sel_mode": 0, + "bmem_8t8r_cap_mask": 0, + "ramclk_ph_dis": false, + "parity_check_en": false, + "trig_mode_en": false, + "trig_mode_sclr_en": false, + "sample_dly": 0, + "hop_delay0": 0, + "hop_delay1": 0, + "hop_delay2": 0, + "hop_delay3": 0 + }, + { + "fast_nslow_mode": 0, + "bmem_shut_down": false, + "bmem_sleep": false, + "bmem_mode": 0, + "bmem_en": false, + "hop_dly_sel_mode": 0, + "bmem_8t8r_cap_mask": 0, + "ramclk_ph_dis": false, + "parity_check_en": false, + "trig_mode_en": false, + "trig_mode_sclr_en": false, + "sample_dly": 0, + "hop_delay0": 0, + "hop_delay1": 0, + "hop_delay2": 0, + "hop_delay3": 0 + }, + { + "fast_nslow_mode": 0, + "bmem_shut_down": false, + "bmem_sleep": false, + "bmem_mode": 0, + "bmem_en": false, + "hop_dly_sel_mode": 0, + "bmem_8t8r_cap_mask": 0, + "ramclk_ph_dis": false, + "parity_check_en": false, + "trig_mode_en": false, + "trig_mode_sclr_en": false, + "sample_dly": 0, + "hop_delay0": 0, + "hop_delay1": 0, + "hop_delay2": 0, + "hop_delay3": 0 + } + ] + }, + { + "rx_cddc": [ + { + "nco": [ + { + "drc_en": true, + "nco_mode": 0, + "nco_if_mode": 0, + "drc_mxr_sel": 0, + "cmplx_mxr_mult_scale_en": 1, + "dc_testmode_value": 0, + "nco_phase_inc": 1342177280, + "nco_phase_offset": 0, + "nco_phase_inc_frac_a": 0, + "nco_phase_inc_frac_b": 0, + "nco_phase_inc_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_phase_offset_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "amp_dither_en": false, + "phase_dither_en": false, + "nco_profile_sel_mode": 4, + "nco_auto_inc_dec": 0, + "debug_cdrc_clkoff_n": true + }, + { + "drc_en": false, + "nco_mode": 0, + "nco_if_mode": 0, + "drc_mxr_sel": 0, + "cmplx_mxr_mult_scale_en": 0, + "dc_testmode_value": 0, + "nco_phase_inc": 0, + "nco_phase_offset": 0, + "nco_phase_inc_frac_a": 0, + "nco_phase_inc_frac_b": 0, + "nco_phase_inc_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_phase_offset_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "amp_dither_en": false, + "phase_dither_en": false, + "nco_profile_sel_mode": 4, + "nco_auto_inc_dec": 0, + "debug_cdrc_clkoff_n": false + } + ], + "drc_ratio": 3, + "fine_bypass": false, + "link_num": 0, + "hb1_filt_dly_en": false, + "hb2_filt_dly_en": false, + "tb1_filt_dly_cycles": 0, + "hb1_gain_6db_en": false, + "tb1_gain_6db_en": false, + "trig_mst_en": false, + "trig_mst_period": 0, + "trig_mst_offset": 0, + "debug_cddc_clkoff_n": 255 + }, + { + "nco": [ + { + "drc_en": true, + "nco_mode": 0, + "nco_if_mode": 0, + "drc_mxr_sel": 0, + "cmplx_mxr_mult_scale_en": 1, + "dc_testmode_value": 0, + "nco_phase_inc": 1342177280, + "nco_phase_offset": 0, + "nco_phase_inc_frac_a": 0, + "nco_phase_inc_frac_b": 0, + "nco_phase_inc_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_phase_offset_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "amp_dither_en": false, + "phase_dither_en": false, + "nco_profile_sel_mode": 4, + "nco_auto_inc_dec": 0, + "debug_cdrc_clkoff_n": true + }, + { + "drc_en": false, + "nco_mode": 0, + "nco_if_mode": 0, + "drc_mxr_sel": 0, + "cmplx_mxr_mult_scale_en": 0, + "dc_testmode_value": 0, + "nco_phase_inc": 0, + "nco_phase_offset": 0, + "nco_phase_inc_frac_a": 0, + "nco_phase_inc_frac_b": 0, + "nco_phase_inc_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_phase_offset_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "amp_dither_en": false, + "phase_dither_en": false, + "nco_profile_sel_mode": 4, + "nco_auto_inc_dec": 0, + "debug_cdrc_clkoff_n": false + } + ], + "drc_ratio": 3, + "fine_bypass": false, + "link_num": 0, + "hb1_filt_dly_en": false, + "hb2_filt_dly_en": false, + "tb1_filt_dly_cycles": 0, + "hb1_gain_6db_en": false, + "tb1_gain_6db_en": false, + "trig_mst_en": false, + "trig_mst_period": 0, + "trig_mst_offset": 0, + "debug_cddc_clkoff_n": 255 + } + ], + "rx_fddc": [ + { + "nco": [ + { + "drc_en": true, + "nco_mode": 0, + "nco_if_mode": 0, + "drc_mxr_sel": 1, + "cmplx_mxr_mult_scale_en": 1, + "dc_testmode_value": 0, + "nco_phase_inc": 703687441777, + "nco_phase_offset": 0, + "nco_phase_inc_frac_a": 0, + "nco_phase_inc_frac_b": 0, + "amp_dither_en": false, + "phase_dither_en": false, + "hop_mode_en": false, + "hop_mode": 0, + "nco_phase_inc_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_phase_offset_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_profile_sel_mode": 4, + "nco_auto_inc_dec_freq": 0, + "nco_auto_inc_dec_phase": 0, + "nco_trig_hop_sel": 1, + "debug_fdrc_clkoff_n": true + }, + { + "drc_en": false, + "nco_mode": 0, + "nco_if_mode": 0, + "drc_mxr_sel": 0, + "cmplx_mxr_mult_scale_en": 0, + "dc_testmode_value": 0, + "nco_phase_inc": 0, + "nco_phase_offset": 0, + "nco_phase_inc_frac_a": 0, + "nco_phase_inc_frac_b": 0, + "amp_dither_en": false, + "phase_dither_en": false, + "hop_mode_en": false, + "hop_mode": 0, + "nco_phase_inc_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_phase_offset_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_profile_sel_mode": 4, + "nco_auto_inc_dec_freq": 0, + "nco_auto_inc_dec_phase": 0, + "nco_trig_hop_sel": 0, + "debug_fdrc_clkoff_n": false + } + ], + "drc_ratio": 2, + "link_num": 0, + "debug_fddc_clkoff_n": 255, + "hb1_filt_dly_en": false, + "hb2_filt_dly_en": false, + "hb3_filt_dly_en": false, + "hb4_filt_dly_en": false, + "hb5_filt_dly_en": false, + "hb6_filt_dly_en": false, + "hb1_gain_6db_en": true + }, + { + "nco": [ + { + "drc_en": false, + "nco_mode": 0, + "nco_if_mode": 0, + "drc_mxr_sel": 1, + "cmplx_mxr_mult_scale_en": 1, + "dc_testmode_value": 0, + "nco_phase_inc": 0, + "nco_phase_offset": 0, + "nco_phase_inc_frac_a": 0, + "nco_phase_inc_frac_b": 0, + "amp_dither_en": false, + "phase_dither_en": false, + "hop_mode_en": false, + "hop_mode": 0, + "nco_phase_inc_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_phase_offset_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_profile_sel_mode": 4, + "nco_auto_inc_dec_freq": 0, + "nco_auto_inc_dec_phase": 0, + "nco_trig_hop_sel": 1, + "debug_fdrc_clkoff_n": true + }, + { + "drc_en": false, + "nco_mode": 0, + "nco_if_mode": 0, + "drc_mxr_sel": 0, + "cmplx_mxr_mult_scale_en": 0, + "dc_testmode_value": 0, + "nco_phase_inc": 0, + "nco_phase_offset": 0, + "nco_phase_inc_frac_a": 0, + "nco_phase_inc_frac_b": 0, + "amp_dither_en": false, + "phase_dither_en": false, + "hop_mode_en": false, + "hop_mode": 0, + "nco_phase_inc_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_phase_offset_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_profile_sel_mode": 4, + "nco_auto_inc_dec_freq": 0, + "nco_auto_inc_dec_phase": 0, + "nco_trig_hop_sel": 0, + "debug_fdrc_clkoff_n": false + } + ], + "drc_ratio": 2, + "link_num": 0, + "debug_fddc_clkoff_n": 255, + "hb1_filt_dly_en": false, + "hb2_filt_dly_en": false, + "hb3_filt_dly_en": false, + "hb4_filt_dly_en": false, + "hb5_filt_dly_en": false, + "hb6_filt_dly_en": false, + "hb1_gain_6db_en": true + }, + { + "nco": [ + { + "drc_en": true, + "nco_mode": 0, + "nco_if_mode": 0, + "drc_mxr_sel": 1, + "cmplx_mxr_mult_scale_en": 1, + "dc_testmode_value": 0, + "nco_phase_inc": 703687441777, + "nco_phase_offset": 0, + "nco_phase_inc_frac_a": 0, + "nco_phase_inc_frac_b": 0, + "amp_dither_en": false, + "phase_dither_en": false, + "hop_mode_en": false, + "hop_mode": 0, + "nco_phase_inc_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_phase_offset_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_profile_sel_mode": 4, + "nco_auto_inc_dec_freq": 0, + "nco_auto_inc_dec_phase": 0, + "nco_trig_hop_sel": 1, + "debug_fdrc_clkoff_n": true + }, + { + "drc_en": false, + "nco_mode": 0, + "nco_if_mode": 0, + "drc_mxr_sel": 0, + "cmplx_mxr_mult_scale_en": 0, + "dc_testmode_value": 0, + "nco_phase_inc": 0, + "nco_phase_offset": 0, + "nco_phase_inc_frac_a": 0, + "nco_phase_inc_frac_b": 0, + "amp_dither_en": false, + "phase_dither_en": false, + "hop_mode_en": false, + "hop_mode": 0, + "nco_phase_inc_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_phase_offset_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_profile_sel_mode": 4, + "nco_auto_inc_dec_freq": 0, + "nco_auto_inc_dec_phase": 0, + "nco_trig_hop_sel": 0, + "debug_fdrc_clkoff_n": false + } + ], + "drc_ratio": 2, + "link_num": 0, + "debug_fddc_clkoff_n": 255, + "hb1_filt_dly_en": false, + "hb2_filt_dly_en": false, + "hb3_filt_dly_en": false, + "hb4_filt_dly_en": false, + "hb5_filt_dly_en": false, + "hb6_filt_dly_en": false, + "hb1_gain_6db_en": true + }, + { + "nco": [ + { + "drc_en": false, + "nco_mode": 0, + "nco_if_mode": 0, + "drc_mxr_sel": 1, + "cmplx_mxr_mult_scale_en": 1, + "dc_testmode_value": 0, + "nco_phase_inc": 0, + "nco_phase_offset": 0, + "nco_phase_inc_frac_a": 0, + "nco_phase_inc_frac_b": 0, + "amp_dither_en": false, + "phase_dither_en": false, + "hop_mode_en": false, + "hop_mode": 0, + "nco_phase_inc_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_phase_offset_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_profile_sel_mode": 4, + "nco_auto_inc_dec_freq": 0, + "nco_auto_inc_dec_phase": 0, + "nco_trig_hop_sel": 1, + "debug_fdrc_clkoff_n": true + }, + { + "drc_en": false, + "nco_mode": 0, + "nco_if_mode": 0, + "drc_mxr_sel": 0, + "cmplx_mxr_mult_scale_en": 0, + "dc_testmode_value": 0, + "nco_phase_inc": 0, + "nco_phase_offset": 0, + "nco_phase_inc_frac_a": 0, + "nco_phase_inc_frac_b": 0, + "amp_dither_en": false, + "phase_dither_en": false, + "hop_mode_en": false, + "hop_mode": 0, + "nco_phase_inc_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_phase_offset_words": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "nco_profile_sel_mode": 4, + "nco_auto_inc_dec_freq": 0, + "nco_auto_inc_dec_phase": 0, + "nco_trig_hop_sel": 0, + "debug_fdrc_clkoff_n": false + } + ], + "drc_ratio": 2, + "link_num": 0, + "debug_fddc_clkoff_n": 255, + "hb1_filt_dly_en": false, + "hb2_filt_dly_en": false, + "hb3_filt_dly_en": false, + "hb4_filt_dly_en": false, + "hb5_filt_dly_en": false, + "hb6_filt_dly_en": false, + "hb1_gain_6db_en": true + } + ], + "rx_pfilt": [ + { + "enable": false, + "coeffs": [ + [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] + ], + "i_mode": [0,0], + "q_mode": [0,0], + "output_dither_en": [false,false], + "real_data": 1, + "dq_mode": 0, + "add_sub_sel": 0, + "mode_switch": 0, + "pfilt_trigger_en": false, + "pfir_ix_gain_db": [0,0,0,0,0,0,0,0], + "pfir_iy_gain_db": [0,0,0,0,0,0,0,0], + "pfir_qx_gain_db": [0,0,0,0,0,0,0,0], + "pfir_qy_gain_db": [0,0,0,0,0,0,0,0], + "pfir_ix_scalar_gain_db": [0,0,0,0,0,0,0,0], + "pfir_iy_scalar_gain_db": [0,0,0,0,0,0,0,0], + "pfir_qx_scalar_gain_db": [0,0,0,0,0,0,0,0], + "pfir_qy_scalar_gain_db": [0,0,0,0,0,0,0,0], + "hc_prog_delay": [0,0,0,0,0,0,0,0] + } + ], + "rx_cfir": [ + { + "coeffs_i": [ + [ + [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] + ], + [ + [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] + ] + ], + "coeffs_q": [ + [ + [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] + ], + [ + [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] + ] + ], + "cfir_gain_dB": [ + [0,0,0,0],[0,0,0,0] + ], + "scalar_i": [ + [0,0,0,0],[0,0,0,0] + ], + "scalar_q": [ + [0,0,0,0],[0,0,0,0] + ], + "enable": false, + "sparse_mode": false, + "cfir_mode": 0 + }, + { + "coeffs_i": [ + [ + [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] + ], + [ + [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] + ] + ], + "coeffs_q": [ + [ + [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] + ], + [ + [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] + ] + ], + "cfir_gain_dB": [ + [0,0,0,0],[0,0,0,0] + ], + "scalar_i": [ + [0,0,0,0],[0,0,0,0] + ], + "scalar_q": [ + [0,0,0,0],[0,0,0,0] + ], + "enable": false, + "sparse_mode": false, + "cfir_mode": 0 + } + ], + "rx_fsrc": { + "fsrc_rate_int": 0, + "fsrc_rate_frac_a": 0, + "fsrc_rate_frac_b": 0, + "fsrc_delay": 0, + "gain_reduction": 0, + "ptr_syncrstval": 0, + "ptr_overwrite": false, + "data_mult_dither_en": false, + "dither_en": false, + "split_4t4r": false, + "mode_1x": false, + "enable0": false, + "enable1": false, + "bypass": false + }, + "rx_mux_splitter_xbar": { + "mux0_out_adc_sel": [0,0,0,0], + "mux2_fddc_input_sel": [0,0,4,4], + "low_samp_en": false + }, + "rx_dyn_recfg": { + "prefsrc_lcm": 0, + "postfsrc_lcm": 0, + "trig_recfg_mode": false, + "cnco_rst_en": false, + "fnco_rst_en": false, + "resync_en": false, + "ts_rst_en": false, + "tzero_coher_en": false + }, + "rx_dformat": [ + { + "inv": false, + "sel": 0, + "ddc_dither_en": false, + "res": 0, + "tmode": { + "sel": 0, + "type_sel": 0, + "pn_force_rst": false, + "flush": false, + "usr_pat_sel": false, + "res": 0 + }, + "rm_fifo": { + "invalid_en": false, + "sample_repeat_en": true + } + }, + { + "inv": false, + "sel": 0, + "ddc_dither_en": false, + "res": 0, + "tmode": { + "sel": 0, + "type_sel": 0, + "pn_force_rst": false, + "flush": false, + "usr_pat_sel": false, + "res": 0 + }, + "rm_fifo": { + "invalid_en": false, + "sample_repeat_en": true + } + } + ], + "rx_smon": [ + { + "period": 0, + "gpio_en": false, + "peak_en": false, + "jlink_sel": 0, + "sframer_en": false, + "sframer_mode": 0, + "sync_en": false, + "sync_next": 0, + "thresh_high": 0, + "thresh_low": 0 + }, + { + "period": 0, + "gpio_en": false, + "peak_en": false, + "jlink_sel": 0, + "sframer_en": false, + "sframer_mode": 0, + "sync_en": false, + "sync_next": 0, + "thresh_high": 0, + "thresh_low": 0 + }, + { + "period": 0, + "gpio_en": false, + "peak_en": false, + "jlink_sel": 0, + "sframer_en": false, + "sframer_mode": 0, + "sync_en": false, + "sync_next": 0, + "thresh_high": 0, + "thresh_low": 0 + }, + { + "period": 0, + "gpio_en": false, + "peak_en": false, + "jlink_sel": 0, + "sframer_en": false, + "sframer_mode": 0, + "sync_en": false, + "sync_next": 0, + "thresh_high": 0, + "thresh_low": 0 + } + ], + "rx_enable": [ + { + "enable_spien": false, + "enable_spi": false, + "enable_pol": false, + "slice_sel": 0, + "pfilt_sel": 0, + "cdrc_sel": 0, + "fdrc_sel": 0, + "cfir_sel": 0, + "fsrc_sel": 0, + "jesd_link_sel": 0, + "jesd_phy_sel": 0, + "modsw_sel": false, + "invsinc_sel": 0, + "gain_sel": 0, + "srd_sel": 0 + }, + { + "enable_spien": false, + "enable_spi": false, + "enable_pol": false, + "slice_sel": 0, + "pfilt_sel": 0, + "cdrc_sel": 0, + "fdrc_sel": 0, + "cfir_sel": 0, + "fsrc_sel": 0, + "jesd_link_sel": 0, + "jesd_phy_sel": 0, + "modsw_sel": false, + "invsinc_sel": 0, + "gain_sel": 0, + "srd_sel": 0 + }, + { + "enable_spien": false, + "enable_spi": false, + "enable_pol": false, + "slice_sel": 0, + "pfilt_sel": 0, + "cdrc_sel": 0, + "fdrc_sel": 0, + "cfir_sel": 0, + "fsrc_sel": 0, + "jesd_link_sel": 0, + "jesd_phy_sel": 0, + "modsw_sel": false, + "invsinc_sel": 0, + "gain_sel": 0, + "srd_sel": 0 + }, + { + "enable_spien": false, + "enable_spi": false, + "enable_pol": false, + "slice_sel": 0, + "pfilt_sel": 0, + "cdrc_sel": 0, + "fdrc_sel": 0, + "cfir_sel": 0, + "fsrc_sel": 0, + "jesd_link_sel": 0, + "jesd_phy_sel": 0, + "modsw_sel": false, + "invsinc_sel": 0, + "gain_sel": 0, + "srd_sel": 0 + } + ], + "rx_power": [ + { + "rxtxen_sel": 0, + "spi_rxtxen": false, + "spi_rxtxen_ena": false, + "sm_en": false, + "sel_cnt_rate": false, + "conv_fall": 0, + "conv_rise": 0, + "dig_fall": 0, + "dig_rise": 0, + "pa_fall": 0, + "pa_rise": 0, + "count_maxa": 0, + "count_maxb": 0, + "count_maxc": 0, + "count_maxd": 0, + "count_maxe": 0, + "count_maxf": 0 + }, + { + "rxtxen_sel": 0, + "spi_rxtxen": false, + "spi_rxtxen_ena": false, + "sm_en": false, + "sel_cnt_rate": false, + "conv_fall": 0, + "conv_rise": 0, + "dig_fall": 0, + "dig_rise": 0, + "pa_fall": 0, + "pa_rise": 0, + "count_maxa": 0, + "count_maxb": 0, + "count_maxc": 0, + "count_maxd": 0, + "count_maxe": 0, + "count_maxf": 0 + }, + { + "rxtxen_sel": 0, + "spi_rxtxen": false, + "spi_rxtxen_ena": false, + "sm_en": false, + "sel_cnt_rate": false, + "conv_fall": 0, + "conv_rise": 0, + "dig_fall": 0, + "dig_rise": 0, + "pa_fall": 0, + "pa_rise": 0, + "count_maxa": 0, + "count_maxb": 0, + "count_maxc": 0, + "count_maxd": 0, + "count_maxe": 0, + "count_maxf": 0 + }, + { + "rxtxen_sel": 0, + "spi_rxtxen": false, + "spi_rxtxen_ena": false, + "sm_en": false, + "sel_cnt_rate": false, + "conv_fall": 0, + "conv_rise": 0, + "dig_fall": 0, + "dig_rise": 0, + "pa_fall": 0, + "pa_rise": 0, + "count_maxa": 0, + "count_maxb": 0, + "count_maxc": 0, + "count_maxd": 0, + "count_maxe": 0, + "count_maxf": 0 + }, + { + "rxtxen_sel": 0, + "spi_rxtxen": false, + "spi_rxtxen_ena": false, + "sm_en": false, + "sel_cnt_rate": false, + "conv_fall": 0, + "conv_rise": 0, + "dig_fall": 0, + "dig_rise": 0, + "pa_fall": 0, + "pa_rise": 0, + "count_maxa": 0, + "count_maxb": 0, + "count_maxc": 0, + "count_maxd": 0, + "count_maxe": 0, + "count_maxf": 0 + }, + { + "rxtxen_sel": 0, + "spi_rxtxen": false, + "spi_rxtxen_ena": false, + "sm_en": false, + "sel_cnt_rate": false, + "conv_fall": 0, + "conv_rise": 0, + "dig_fall": 0, + "dig_rise": 0, + "pa_fall": 0, + "pa_rise": 0, + "count_maxa": 0, + "count_maxb": 0, + "count_maxc": 0, + "count_maxd": 0, + "count_maxe": 0, + "count_maxf": 0 + }, + { + "rxtxen_sel": 0, + "spi_rxtxen": false, + "spi_rxtxen_ena": false, + "sm_en": false, + "sel_cnt_rate": false, + "conv_fall": 0, + "conv_rise": 0, + "dig_fall": 0, + "dig_rise": 0, + "pa_fall": 0, + "pa_rise": 0, + "count_maxa": 0, + "count_maxb": 0, + "count_maxc": 0, + "count_maxd": 0, + "count_maxe": 0, + "count_maxf": 0 + }, + { + "rxtxen_sel": 0, + "spi_rxtxen": false, + "spi_rxtxen_ena": false, + "sm_en": false, + "sel_cnt_rate": false, + "conv_fall": 0, + "conv_rise": 0, + "dig_fall": 0, + "dig_rise": 0, + "pa_fall": 0, + "pa_rise": 0, + "count_maxa": 0, + "count_maxb": 0, + "count_maxc": 0, + "count_maxd": 0, + "count_maxe": 0, + "count_maxf": 0 + } + ], + "rx_bmem": [ + { + "fast_nslow_mode": 0, + "bmem_shut_down": false, + "bmem_sleep": false, + "bmem_mode": 0, + "bmem_en": false, + "hop_dly_sel_mode": 0, + "bmem_8t8r_cap_mask": 0, + "ramclk_ph_dis": false, + "parity_check_en": false, + "trig_mode_en": false, + "trig_mode_sclr_en": false, + "sample_dly": 0, + "hop_delay0": 0, + "hop_delay1": 0, + "hop_delay2": 0, + "hop_delay3": 0 + }, + { + "fast_nslow_mode": 0, + "bmem_shut_down": false, + "bmem_sleep": false, + "bmem_mode": 0, + "bmem_en": false, + "hop_dly_sel_mode": 0, + "bmem_8t8r_cap_mask": 0, + "ramclk_ph_dis": false, + "parity_check_en": false, + "trig_mode_en": false, + "trig_mode_sclr_en": false, + "sample_dly": 0, + "hop_delay0": 0, + "hop_delay1": 0, + "hop_delay2": 0, + "hop_delay3": 0 + }, + { + "fast_nslow_mode": 0, + "bmem_shut_down": false, + "bmem_sleep": false, + "bmem_mode": 0, + "bmem_en": false, + "hop_dly_sel_mode": 0, + "bmem_8t8r_cap_mask": 0, + "ramclk_ph_dis": false, + "parity_check_en": false, + "trig_mode_en": false, + "trig_mode_sclr_en": false, + "sample_dly": 0, + "hop_delay0": 0, + "hop_delay1": 0, + "hop_delay2": 0, + "hop_delay3": 0 + }, + { + "fast_nslow_mode": 0, + "bmem_shut_down": false, + "bmem_sleep": false, + "bmem_mode": 0, + "bmem_en": false, + "hop_dly_sel_mode": 0, + "bmem_8t8r_cap_mask": 0, + "ramclk_ph_dis": false, + "parity_check_en": false, + "trig_mode_en": false, + "trig_mode_sclr_en": false, + "sample_dly": 0, + "hop_delay0": 0, + "hop_delay1": 0, + "hop_delay2": 0, + "hop_delay3": 0 + }, + { + "fast_nslow_mode": 0, + "bmem_shut_down": false, + "bmem_sleep": false, + "bmem_mode": 0, + "bmem_en": false, + "hop_dly_sel_mode": 0, + "bmem_8t8r_cap_mask": 0, + "ramclk_ph_dis": false, + "parity_check_en": false, + "trig_mode_en": false, + "trig_mode_sclr_en": false, + "sample_dly": 0, + "hop_delay0": 0, + "hop_delay1": 0, + "hop_delay2": 0, + "hop_delay3": 0 + }, + { + "fast_nslow_mode": 0, + "bmem_shut_down": false, + "bmem_sleep": false, + "bmem_mode": 0, + "bmem_en": false, + "hop_dly_sel_mode": 0, + "bmem_8t8r_cap_mask": 0, + "ramclk_ph_dis": false, + "parity_check_en": false, + "trig_mode_en": false, + "trig_mode_sclr_en": false, + "sample_dly": 0, + "hop_delay0": 0, + "hop_delay1": 0, + "hop_delay2": 0, + "hop_delay3": 0 + } + ] + } + ], + "jtx": [ + { + "common_link_cfg": { + "ver": 1, + "subclass": 0, + "dual_link": false, + "lane_enables": 15, + "lane_rate_kHz": 8250000 + }, + "tx_link_cfg": [ + { + "link_in_use": true, + "e_minus1": 0, + "bank_id": 0, + "dev_id": 0, + "base_lane_id": 0, + "l_minus1": 3, + "f_minus1": 1, + "m_minus1": 3, + "s_minus1": 0, + "high_dens": false, + "k_minus1": 127, + "n_minus1": 15, + "np_minus1": 15, + "ns_minus1": 3, + "cs": 0, + "scr": true, + "quick_cfg_en": true, + "quick_mode_id": 26, + "syncb_in_sel": 0, + "syncb_lvds_mode": 0, + "fec_enable": false, + "async_mode": false, + "metword_rev": false, + "link_dp_ratio": 16, + "link_total_ratio": 16, + "phase_adjust": 0, + "conv_xbar_sel": [0,1,4,5,0,0,0,0,0,0,0,0,0,0,0,0], + "lane_xbar": [0,1,2,3,15,15,15,15,15,15,15,15] + }, + { + "link_in_use": false, + "e_minus1": 0, + "bank_id": 0, + "dev_id": 0, + "base_lane_id": 6, + "l_minus1": 0, + "f_minus1": 0, + "m_minus1": 0, + "s_minus1": 0, + "high_dens": false, + "k_minus1": 0, + "n_minus1": 0, + "np_minus1": 0, + "ns_minus1": 0, + "cs": 0, + "scr": false, + "quick_cfg_en": false, + "quick_mode_id": 0, + "syncb_in_sel": 0, + "syncb_lvds_mode": 0, + "fec_enable": false, + "async_mode": false, + "metword_rev": false, + "link_dp_ratio": 0, + "link_total_ratio": 0, + "phase_adjust": 0, + "conv_xbar_sel": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "lane_xbar": [0,0,0,0,0,0,0,0,0,0,0,0] + } + ], + "serializer_lane": [ + { + "ser_amplitude": 0, + "ser_pre_emphasis": 0, + "ser_post_emphasis": 0, + "ser_invert_lane_polarity": false, + "lanerate_adapt": 0 + }, + { + "ser_amplitude": 0, + "ser_pre_emphasis": 0, + "ser_post_emphasis": 0, + "ser_invert_lane_polarity": false, + "lanerate_adapt": 0 + }, + { + "ser_amplitude": 0, + "ser_pre_emphasis": 0, + "ser_post_emphasis": 0, + "ser_invert_lane_polarity": false, + "lanerate_adapt": 0 + }, + { + "ser_amplitude": 0, + "ser_pre_emphasis": 0, + "ser_post_emphasis": 0, + "ser_invert_lane_polarity": false, + "lanerate_adapt": 0 + }, + { + "ser_amplitude": 0, + "ser_pre_emphasis": 0, + "ser_post_emphasis": 0, + "ser_invert_lane_polarity": false, + "lanerate_adapt": 0 + }, + { + "ser_amplitude": 0, + "ser_pre_emphasis": 0, + "ser_post_emphasis": 0, + "ser_invert_lane_polarity": false, + "lanerate_adapt": 0 + }, + { + "ser_amplitude": 0, + "ser_pre_emphasis": 0, + "ser_post_emphasis": 0, + "ser_invert_lane_polarity": false, + "lanerate_adapt": 0 + }, + { + "ser_amplitude": 0, + "ser_pre_emphasis": 0, + "ser_post_emphasis": 0, + "ser_invert_lane_polarity": false, + "lanerate_adapt": 0 + }, + { + "ser_amplitude": 0, + "ser_pre_emphasis": 0, + "ser_post_emphasis": 0, + "ser_invert_lane_polarity": false, + "lanerate_adapt": 0 + }, + { + "ser_amplitude": 0, + "ser_pre_emphasis": 0, + "ser_post_emphasis": 0, + "ser_invert_lane_polarity": false, + "lanerate_adapt": 0 + }, + { + "ser_amplitude": 0, + "ser_pre_emphasis": 0, + "ser_post_emphasis": 0, + "ser_invert_lane_polarity": false, + "lanerate_adapt": 0 + }, + { + "ser_amplitude": 0, + "ser_pre_emphasis": 0, + "ser_post_emphasis": 0, + "ser_invert_lane_polarity": false, + "lanerate_adapt": 0 + } + ] + }, + { + "common_link_cfg": { + "ver": 1, + "subclass": 0, + "dual_link": false, + "lane_enables": 15, + "lane_rate_kHz": 8250000 + }, + "tx_link_cfg": [ + { + "link_in_use": true, + "e_minus1": 0, + "bank_id": 0, + "dev_id": 0, + "base_lane_id": 0, + "l_minus1": 3, + "f_minus1": 1, + "m_minus1": 3, + "s_minus1": 0, + "high_dens": false, + "k_minus1": 127, + "n_minus1": 15, + "np_minus1": 15, + "ns_minus1": 3, + "cs": 0, + "scr": true, + "quick_cfg_en": true, + "quick_mode_id": 26, + "syncb_in_sel": 0, + "syncb_lvds_mode": 0, + "fec_enable": false, + "async_mode": false, + "metword_rev": false, + "link_dp_ratio": 16, + "link_total_ratio": 16, + "phase_adjust": 0, + "conv_xbar_sel": [0,1,4,5,0,0,0,0,0,0,0,0,0,0,0,0], + "lane_xbar": [0,1,2,3,15,15,15,15,15,15,15,15] + }, + { + "link_in_use": false, + "e_minus1": 0, + "bank_id": 0, + "dev_id": 0, + "base_lane_id": 6, + "l_minus1": 0, + "f_minus1": 0, + "m_minus1": 0, + "s_minus1": 0, + "high_dens": false, + "k_minus1": 0, + "n_minus1": 0, + "np_minus1": 0, + "ns_minus1": 0, + "cs": 0, + "scr": false, + "quick_cfg_en": false, + "quick_mode_id": 0, + "syncb_in_sel": 0, + "syncb_lvds_mode": 0, + "fec_enable": false, + "async_mode": false, + "metword_rev": false, + "link_dp_ratio": 0, + "link_total_ratio": 0, + "phase_adjust": 0, + "conv_xbar_sel": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "lane_xbar": [0,0,0,0,0,0,0,0,0,0,0,0] + } + ], + "serializer_lane": [ + { + "ser_amplitude": 0, + "ser_pre_emphasis": 0, + "ser_post_emphasis": 0, + "ser_invert_lane_polarity": false, + "lanerate_adapt": 0 + }, + { + "ser_amplitude": 0, + "ser_pre_emphasis": 0, + "ser_post_emphasis": 0, + "ser_invert_lane_polarity": false, + "lanerate_adapt": 0 + }, + { + "ser_amplitude": 0, + "ser_pre_emphasis": 0, + "ser_post_emphasis": 0, + "ser_invert_lane_polarity": false, + "lanerate_adapt": 0 + }, + { + "ser_amplitude": 0, + "ser_pre_emphasis": 0, + "ser_post_emphasis": 0, + "ser_invert_lane_polarity": false, + "lanerate_adapt": 0 + }, + { + "ser_amplitude": 0, + "ser_pre_emphasis": 0, + "ser_post_emphasis": 0, + "ser_invert_lane_polarity": false, + "lanerate_adapt": 0 + }, + { + "ser_amplitude": 0, + "ser_pre_emphasis": 0, + "ser_post_emphasis": 0, + "ser_invert_lane_polarity": false, + "lanerate_adapt": 0 + }, + { + "ser_amplitude": 0, + "ser_pre_emphasis": 0, + "ser_post_emphasis": 0, + "ser_invert_lane_polarity": false, + "lanerate_adapt": 0 + }, + { + "ser_amplitude": 0, + "ser_pre_emphasis": 0, + "ser_post_emphasis": 0, + "ser_invert_lane_polarity": false, + "lanerate_adapt": 0 + }, + { + "ser_amplitude": 0, + "ser_pre_emphasis": 0, + "ser_post_emphasis": 0, + "ser_invert_lane_polarity": false, + "lanerate_adapt": 0 + }, + { + "ser_amplitude": 0, + "ser_pre_emphasis": 0, + "ser_post_emphasis": 0, + "ser_invert_lane_polarity": false, + "lanerate_adapt": 0 + }, + { + "ser_amplitude": 0, + "ser_pre_emphasis": 0, + "ser_post_emphasis": 0, + "ser_invert_lane_polarity": false, + "lanerate_adapt": 0 + }, + { + "ser_amplitude": 0, + "ser_pre_emphasis": 0, + "ser_post_emphasis": 0, + "ser_invert_lane_polarity": false, + "lanerate_adapt": 0 + } + ] + } + ], + "jrx": [ + { + "common_link_cfg": { + "ver": 1, + "subclass": 0, + "dual_link": false, + "lane_enables": 15, + "lane_rate_kHz": 8250000 + }, + "rx_link_cfg": [ + { + "link_in_use": true, + "e_minus1": 0, + "bank_id": 0, + "dev_id": 0, + "base_lane_id": 0, + "l_minus1": 3, + "f_minus1": 1, + "m_minus1": 3, + "s_minus1": 0, + "high_dens": false, + "k_minus1": 127, + "n_minus1": 15, + "np_minus1": 15, + "ns_minus1": 3, + "cs": 0, + "scr": true, + "quick_cfg_en": true, + "quick_mode_id": 26, + "syncb_out_sel": 0, + "syncb_lvds_mode": 0, + "link_dp_ratio": 16, + "link_total_ratio": 16, + "invalid_data_en": false, + "invalid_sample_num": 0, + "sample_repeat_en": true, + "phase_adjust": 0, + "sample_xbar_sel": [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "lane_xbar": [0,1,2,3,15,15,15,15,15,15,15,15] + }, + { + "link_in_use": false, + "e_minus1": 0, + "bank_id": 0, + "dev_id": 0, + "base_lane_id": 6, + "l_minus1": 0, + "f_minus1": 0, + "m_minus1": 0, + "s_minus1": 0, + "high_dens": false, + "k_minus1": 0, + "n_minus1": 0, + "np_minus1": 0, + "ns_minus1": 0, + "cs": 0, + "scr": false, + "quick_cfg_en": false, + "quick_mode_id": 0, + "syncb_out_sel": 0, + "syncb_lvds_mode": 0, + "link_dp_ratio": 0, + "link_total_ratio": 0, + "invalid_data_en": false, + "invalid_sample_num": 0, + "sample_repeat_en": false, + "phase_adjust": 0, + "sample_xbar_sel": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "lane_xbar": [0,0,0,0,0,0,0,0,0,0,0,0] + } + ], + "deserializer_common": { + "rx_des_mode": 1, + "num_bridging_cals": 0, + "sample_xbar_override": false + }, + "deserializer_lane": [ + { + "high_boost_options": 0, + "des_inv_lane_pol": false, + "lanerate_adapt": 0, + "cfg_options": [0,0,0,0,0,0,0,0,0,0], + "ctle_filter_mask": 0 + }, + { + "high_boost_options": 0, + "des_inv_lane_pol": false, + "lanerate_adapt": 0, + "cfg_options": [0,0,0,0,0,0,0,0,0,0], + "ctle_filter_mask": 0 + }, + { + "high_boost_options": 0, + "des_inv_lane_pol": false, + "lanerate_adapt": 0, + "cfg_options": [0,0,0,0,0,0,0,0,0,0], + "ctle_filter_mask": 0 + }, + { + "high_boost_options": 0, + "des_inv_lane_pol": false, + "lanerate_adapt": 0, + "cfg_options": [0,0,0,0,0,0,0,0,0,0], + "ctle_filter_mask": 0 + }, + { + "high_boost_options": 0, + "des_inv_lane_pol": false, + "lanerate_adapt": 0, + "cfg_options": [0,0,0,0,0,0,0,0,0,0], + "ctle_filter_mask": 0 + }, + { + "high_boost_options": 0, + "des_inv_lane_pol": false, + "lanerate_adapt": 0, + "cfg_options": [0,0,0,0,0,0,0,0,0,0], + "ctle_filter_mask": 0 + }, + { + "high_boost_options": 0, + "des_inv_lane_pol": false, + "lanerate_adapt": 0, + "cfg_options": [0,0,0,0,0,0,0,0,0,0], + "ctle_filter_mask": 0 + }, + { + "high_boost_options": 0, + "des_inv_lane_pol": false, + "lanerate_adapt": 0, + "cfg_options": [0,0,0,0,0,0,0,0,0,0], + "ctle_filter_mask": 0 + }, + { + "high_boost_options": 0, + "des_inv_lane_pol": false, + "lanerate_adapt": 0, + "cfg_options": [0,0,0,0,0,0,0,0,0,0], + "ctle_filter_mask": 0 + }, + { + "high_boost_options": 0, + "des_inv_lane_pol": false, + "lanerate_adapt": 0, + "cfg_options": [0,0,0,0,0,0,0,0,0,0], + "ctle_filter_mask": 0 + }, + { + "high_boost_options": 0, + "des_inv_lane_pol": false, + "lanerate_adapt": 0, + "cfg_options": [0,0,0,0,0,0,0,0,0,0], + "ctle_filter_mask": 0 + }, + { + "high_boost_options": 0, + "des_inv_lane_pol": false, + "lanerate_adapt": 0, + "cfg_options": [0,0,0,0,0,0,0,0,0,0], + "ctle_filter_mask": 0 + } + ] + }, + { + "common_link_cfg": { + "ver": 1, + "subclass": 0, + "dual_link": false, + "lane_enables": 15, + "lane_rate_kHz": 8250000 + }, + "rx_link_cfg": [ + { + "link_in_use": true, + "e_minus1": 0, + "bank_id": 0, + "dev_id": 0, + "base_lane_id": 0, + "l_minus1": 3, + "f_minus1": 1, + "m_minus1": 3, + "s_minus1": 0, + "high_dens": false, + "k_minus1": 127, + "n_minus1": 15, + "np_minus1": 15, + "ns_minus1": 3, + "cs": 0, + "scr": true, + "quick_cfg_en": true, + "quick_mode_id": 26, + "syncb_out_sel": 0, + "syncb_lvds_mode": 0, + "link_dp_ratio": 16, + "link_total_ratio": 16, + "invalid_data_en": false, + "invalid_sample_num": 0, + "sample_repeat_en": true, + "phase_adjust": 0, + "sample_xbar_sel": [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "lane_xbar": [0,1,2,3,15,15,15,15,15,15,15,15] + }, + { + "link_in_use": false, + "e_minus1": 0, + "bank_id": 0, + "dev_id": 0, + "base_lane_id": 6, + "l_minus1": 0, + "f_minus1": 0, + "m_minus1": 0, + "s_minus1": 0, + "high_dens": false, + "k_minus1": 0, + "n_minus1": 0, + "np_minus1": 0, + "ns_minus1": 0, + "cs": 0, + "scr": false, + "quick_cfg_en": false, + "quick_mode_id": 0, + "syncb_out_sel": 0, + "syncb_lvds_mode": 0, + "link_dp_ratio": 0, + "link_total_ratio": 0, + "invalid_data_en": false, + "invalid_sample_num": 0, + "sample_repeat_en": false, + "phase_adjust": 0, + "sample_xbar_sel": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "lane_xbar": [0,0,0,0,0,0,0,0,0,0,0,0] + } + ], + "deserializer_common": { + "rx_des_mode": 1, + "num_bridging_cals": 0, + "sample_xbar_override": false + }, + "deserializer_lane": [ + { + "high_boost_options": 0, + "des_inv_lane_pol": false, + "lanerate_adapt": 0, + "cfg_options": [0,0,0,0,0,0,0,0,0,0], + "ctle_filter_mask": 0 + }, + { + "high_boost_options": 0, + "des_inv_lane_pol": false, + "lanerate_adapt": 0, + "cfg_options": [0,0,0,0,0,0,0,0,0,0], + "ctle_filter_mask": 0 + }, + { + "high_boost_options": 0, + "des_inv_lane_pol": false, + "lanerate_adapt": 0, + "cfg_options": [0,0,0,0,0,0,0,0,0,0], + "ctle_filter_mask": 0 + }, + { + "high_boost_options": 0, + "des_inv_lane_pol": false, + "lanerate_adapt": 0, + "cfg_options": [0,0,0,0,0,0,0,0,0,0], + "ctle_filter_mask": 0 + }, + { + "high_boost_options": 0, + "des_inv_lane_pol": false, + "lanerate_adapt": 0, + "cfg_options": [0,0,0,0,0,0,0,0,0,0], + "ctle_filter_mask": 0 + }, + { + "high_boost_options": 0, + "des_inv_lane_pol": false, + "lanerate_adapt": 0, + "cfg_options": [0,0,0,0,0,0,0,0,0,0], + "ctle_filter_mask": 0 + }, + { + "high_boost_options": 0, + "des_inv_lane_pol": false, + "lanerate_adapt": 0, + "cfg_options": [0,0,0,0,0,0,0,0,0,0], + "ctle_filter_mask": 0 + }, + { + "high_boost_options": 0, + "des_inv_lane_pol": false, + "lanerate_adapt": 0, + "cfg_options": [0,0,0,0,0,0,0,0,0,0], + "ctle_filter_mask": 0 + }, + { + "high_boost_options": 0, + "des_inv_lane_pol": false, + "lanerate_adapt": 0, + "cfg_options": [0,0,0,0,0,0,0,0,0,0], + "ctle_filter_mask": 0 + }, + { + "high_boost_options": 0, + "des_inv_lane_pol": false, + "lanerate_adapt": 0, + "cfg_options": [0,0,0,0,0,0,0,0,0,0], + "ctle_filter_mask": 0 + }, + { + "high_boost_options": 0, + "des_inv_lane_pol": false, + "lanerate_adapt": 0, + "cfg_options": [0,0,0,0,0,0,0,0,0,0], + "ctle_filter_mask": 0 + }, + { + "high_boost_options": 0, + "des_inv_lane_pol": false, + "lanerate_adapt": 0, + "cfg_options": [0,0,0,0,0,0,0,0,0,0], + "ctle_filter_mask": 0 + } + ] + } + ], + "dac_cfg": [ + { + "dac_sampling_rate_Hz": 8000000000, + "shuffle_en": [true,true,true,true], + "scrambler_en": [true,true,true,true], + "data_invert_en": [false,false,false,false] + }, + { + "dac_sampling_rate_Hz": 8000000000, + "shuffle_en": [true,true,true,true], + "scrambler_en": [true,true,true,true], + "data_invert_en": [false,false,false,false] + } + ], + "adc_cfg": [ + { + "adc_sampling_rate_Hz": 8000000000, + "adc_init_cal_type": 0, + "adc_init_cal_index": 7, + "adc_slice_mode": [6,6,6,6], + "adc_track_mode": [1,1,1,1], + "full_scale_adj": [0,0,0,0], + "inp_coupling_type": [0,0,0,0], + "inp_signal_type": [0,0,0,0], + "inp_polarity": [0,0,0,0], + "slice_mode_switch_cfg": { + "switch_type": 0, + "trig_gpio_num": 0 + }, + "adc_options": [0,0,0,0,0,0,0,0] + }, + { + "adc_sampling_rate_Hz": 8000000000, + "adc_init_cal_type": 0, + "adc_init_cal_index": 7, + "adc_slice_mode": [6,6,6,6], + "adc_track_mode": [1,1,1,1], + "full_scale_adj": [0,0,0,0], + "inp_coupling_type": [0,0,0,0], + "inp_signal_type": [0,0,0,0], + "inp_polarity": [0,0,0,0], + "slice_mode_switch_cfg": { + "switch_type": 0, + "trig_gpio_num": 0 + }, + "adc_options": [0,0,0,0,0,0,0,0] + } + ], + "lb0_en": [ + [false,false],[false,false] + ], + "serdes_pll": { + "loop_bandwidth": 1000000, + "phase_margin": 50, + "div_range": 0, + "div2": 1, + "power": 1, + "ref_clk_div": 1, + "i_bleed_en": 0, + "serdes_pll_odiv": 1, + "feedback_int": 66, + "feedback_frac": 0 + }, + "adc_enable": 51, + "dac_enable": 255, + "reserved_cfg": [0,0,5,0,244,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "profile_checksum": 3858154872 +} \ No newline at end of file diff --git a/include/dt-bindings/iio/logic/adi,adsy1100-nyx.h b/include/dt-bindings/iio/logic/adi,adsy1100-nyx.h new file mode 100644 index 00000000000000..e786c48dd8ffac --- /dev/null +++ b/include/dt-bindings/iio/logic/adi,adsy1100-nyx.h @@ -0,0 +1,20 @@ +/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */ +/* + * Device-tree bindings for the Analog Devices ADSY1100 Apollo SOM + * "Nyx" RF front-end controller. + * + * Copyright 2026 Analog Devices Inc. + */ +#ifndef _DT_BINDINGS_IIO_LOGIC_ADI_ADSY1100_NYX_H +#define _DT_BINDINGS_IIO_LOGIC_ADI_ADSY1100_NYX_H + +/* + * Filter band selection used with the adi,filter-mode property of the + * per-channel dac@N / adc@N subnodes. + */ +#define ADSY1100_NYX_FILTER_LOW_BAND 0 +#define ADSY1100_NYX_FILTER_THRU 1 +#define ADSY1100_NYX_FILTER_X_BAND 2 +#define ADSY1100_NYX_FILTER_KU_BAND 3 + +#endif /* _DT_BINDINGS_IIO_LOGIC_ADI_ADSY1100_NYX_H */