You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(adrv937x): align DT with Kuiper reference (capture still deferred)
Align ``ADRV937xBuilder``'s output for ``zc706+adrv9371`` with the
working SD-card devicetree shipped by Kuiper so the AD9528,
axi-adxcvr, axi-jesd204, and AD9371 drivers all probe and reach
JESD ``opt_post_running_stage`` cleanly on real hardware. Full
state progression verified on bq via hw CI:
before → after
--------------------------------------------------------------
RESET Failed → reset succeeds
Requesting device clock 122.88 MHz → AD9528 drives dev_clk
failed got 0 (channel@13 / FMC_CLK)
jesd204 link_pre_setup -ENODEV → opt_post_running_stage
cycling clean on all 3 links
axi-adxcvr / axi-jesd204-rx → both probe (``AXI-
deferred probe pending JESD204-RX (1.07.a) at
0x44AA0000...``)
cf_axi_adc probe stuck → probed ADC AD9371 MASTER
AD9371 ARM uninitialized → Firmware 5.2.2 API
1.5.2.3566 initialized
JESD clocks 245.76 / 122.88 → 122.88 / 122.88 match
mismatch measured
Changes:
- ``adidt/xsa/builders/adrv937x.py``:
- Emit AD9528 ``channel@{1,3,12,13}`` with correct divider +
signal-source + extended-name (DEV_CLK, FMC_CLK, DEV_SYSREF,
FMC_SYSREF).
- Wire AD9528 ``reset-gpios = <&gpio0 113 0>``.
- Mark AD9528 as ``jesd204-device`` / ``#jesd204-cells = <2>``
/ ``jesd204-sysref-provider`` / ``adi,jesd204-max-sysref-
frequency-hz`` — required for the Mykonos driver's
``opt_post_running_stage`` callback to find the sysref
provider in the graph.
- Correct AD9371 GPIO pins: ``trx_reset_gpio`` 130 → 106,
``trx_sysref_req_gpio`` 136 → 112, new ``ad9528_reset_gpio``
= 113.
- Add AD9528 as link-2 input on the AD9371's
``jesd204-inputs``.
- Add the three ``adi,{sys,out}-clk-select`` +
``adi,use-lpm-enable`` props on ``axi-adxcvr`` — without
these the platform driver defers probe indefinitely.
- Drop emission of ``_DEFAULT_MYKONOS_PROFILE_PROPS`` as a
builder-level constant. Move the profile values into
``adidt/xsa/profiles/adrv937x_zc706.json`` as a
``trx_profile_props`` list, keeping the builder default
empty. The profile has to match the HDL's compile-time
``TX_JESD_*`` / ``RX_JESD_*`` knobs (see
``analogdevicesinc/hdl/projects/adrv937x/zc706/README``),
which is board-build-specific.
- ``adidt/xsa/profiles/adrv937x_zc706.json``:
- ``trx_reset_gpio`` → 106, ``trx_sysref_req_gpio`` → 112,
new ``ad9528_reset_gpio`` → 113.
- ``misc_clk_hz`` 245_760_000 → 122_880_000 (physical FMC
clock on this board; the wrong 245.76 MHz declared rate
triggered the JESD link-clock measured/reported mismatch
that kept the link disabled).
- New ``trx_profile_props`` list carrying 51 Mykonos
``adi,{rx,obs,tx,sniffer}-profile-*`` + ``adi,clocks-*``
lines copied verbatim from bq's working SD-card DT.
- ``adidt/xsa/profiles.py``: accept ``ad9528_reset_gpio`` +
``ad9528_jesd204_max_sysref_hz`` in the ``adrv9009_board``
schema allowlist so JSON loads don't reject the new keys.
- ``adidt/devices/clocks/ad952x.py``: optional
``jesd204_sysref_provider`` + ``jesd204_max_sysref_hz`` fields
on ``AD9528_1`` that ``extra_dt_lines`` emits when set. Opt-in
so the ADRV9009/ZCU102 path is unaffected.
- ``adidt/eval/adrv937x_fmc.py``: System-API side GPIO sync
(130/136 → 106/112) to keep the dts-parity test green.
- ``test/devices/fixtures/adrv9371_zc706_xsa_reference.dts``:
regenerated from the new builder output.
Still-open blocker (documented in the hw test's TODO):
ad9371 spi1.1: ILAS mismatch: c7f8
ILAS {lanes per converter, scrambling, octets per frame,
frames per multiframe, number of converters,
sample resolution, control bits per sample} did not match
Our ``axi-jesd204-{tx,rx}`` overlays already emit the exact
framing (M=4 L=4 F=2 / M=4 L=2 F=4, Np=16, CS=2) that the HDL
README documents as default, and the same builder path works on
ADRV9009/ZCU102 — so the remaining gap is that the
``trx_profile_props`` shipped in the profile JSON (copied from
the SD-card DT as a starting point) implies a different JESD
framing than the XSA's HDL bitstream compiles in. Pairing the
profile to the HDL is the single-file drop-in fix that closes
this out; flagged in the TODO with concrete next steps (iio-
oscilloscope regeneration vs ``trx_profile_props`` JSON override).
Unit tests: 449 passed, 13 skipped, 4 xfailed.
0 commit comments