Skip to content

Commit 255f8a9

Browse files
mhennerichnunojsa
authored andcommitted
dts: zynqmp-adrv9009-zu11eg: Example with 204.8MHz base band rate
This example enables a non standard rate of 204.8MHz. This setup requires a slightly different clock tree configuration. Please see comments in the devicetree for further details. Signed-off-by: Michael Hennerich <[email protected]>
1 parent a932bd7 commit 255f8a9

File tree

1 file changed

+232
-0
lines changed

1 file changed

+232
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,232 @@
1+
// SPDX-License-Identifier: GPL-2.0
2+
/*
3+
* Analog Devices ADRV2CRR-FMC using ADRV9009-ZU11EG System on Module + AD-FMCOMMS8-EBZ
4+
* https://wiki.analog.com/resources/eval/user-guides/adrv9009-zu11eg/adrv2crr-fmc_carrier_board
5+
* https://wiki.analog.com/resources/eval/user-guides/ad-fmcomms8-ebz
6+
* https://wiki.analog.com/resources/tools-software/linux-drivers/iio-transceiver/adrv9009
7+
* https://wiki.analog.com/resources/tools-software/linux-software/adrv9009_advanced_plugin
8+
*
9+
* hdl_project: <adrv9009zu11eg/adrv2crr_fmcomms8>
10+
* board_revision: <>
11+
*
12+
* Copyright (C) 2023 Analog Devices Inc.
13+
*/
14+
15+
#include "zynqmp-adrv9009-zu11eg-revb-adrv2crr-fmc-revb-sync-fmcomms8-jesd204-fsm.dts"
16+
17+
&axi_adrv9009_adxcvr_tx {
18+
adi,sys-clk-select = <XCVR_QPLL1>; /* Switch to QPLL1 */
19+
};
20+
21+
/* For a device clock of 204.8 MHz we need to alter the HMC7044 PLL2/VCO
22+
* frequency. So 2457.6 MHz divides nicely with 204.8 MHz, while we can
23+
* still derive this from a 122.88 MHz VCXO.
24+
*/
25+
26+
&hmc7044 {
27+
adi,pll2-output-frequency = <2457600000>;
28+
};
29+
30+
&hmc7044_fmc {
31+
adi,pll2-output-frequency = <2457600000>;
32+
};
33+
34+
/* There is a HMC7044 multichip sync requirement.
35+
* The SYNC pulse frequency through PLL1 must be a submultiple of the VCXO frequency.
36+
* So far we used the SYSREF frequency for this, however in this setup the SYSREF
37+
* frequency is 3.2MHz which no longer divides nicely with the
38+
* VCXO. To work around this. We force a value that works for clock tree synchronisation
39+
*/
40+
41+
&hmc7044_car {
42+
adi,jesd204-skip-sysref-frequency-calc;
43+
adi,jesd204-desired-sysref-frequency-hz = <3840000>;
44+
};
45+
46+
&trx0_adrv9009 {
47+
adi,rx-profile-rf-bandwidth_hz = <160000000>;
48+
adi,rx-profile-rhb1-decimation = <1>;
49+
adi,rx-profile-rx-bbf3d-bcorner_khz = <160000>;
50+
adi,rx-profile-rx-ddc-mode = <0>;
51+
adi,rx-profile-rx-dec5-decimation = <4>;
52+
adi,rx-profile-rx-fir-decimation = <2>;
53+
adi,rx-profile-rx-fir-gain_db = <(-6)>;
54+
adi,rx-profile-rx-fir-num-fir-coefs = <48>;
55+
adi,rx-profile-rx-output-rate_khz = <204800>;
56+
adi,rx-profile-rx-fir-coefs = /bits/ 16 <(-3) (-10) (16) (28) (-42) (-71) (97) (148) (-194) (-281) (353) (493) (-602) (-821) (983) (1327) (-1565) (-2142) (2500) (3590) (-4320) (-7239) (9270) (31252) (31252) (9270) (-7239) (-4320) (3590) (2500) (-2142) (-1565) (1327) (983) (-821) (-602) (493) (353) (-281) (-194) (148) (97) (-71) (-42) (28) (16) (-10) (-3)>;
57+
adi,rx-profile-rx-adc-profile = /bits/ 16 <(229) (168) (181) (90) (1280) (893) (1316) (83) (1190) (38) (829) (21) (48) (42) (30) (210) (0) (0) (0) (0) (53) (0) (7) (6) (42) (0) (7) (6) (42) (0) (25) (27) (0) (0) (25) (27) (0) (0) (165) (44) (31) (905)>;
58+
59+
adi,orx-profile-orx-ddc-mode = <0>;
60+
adi,orx-profile-orx-output-rate_khz = <204800>;
61+
adi,orx-profile-rf-bandwidth_hz = <160000000>;
62+
adi,orx-profile-rhb1-decimation = <1>;
63+
adi,orx-profile-rx-bbf3d-bcorner_khz = <225000>;
64+
adi,orx-profile-rx-dec5-decimation = <4>;
65+
adi,orx-profile-rx-fir-decimation = <2>;
66+
adi,orx-profile-rx-fir-gain_db = <(-6)>;
67+
adi,orx-profile-rx-fir-num-fir-coefs = <48>;
68+
adi,orx-profile-rx-fir-coefs = /bits/ 16 <(-3) (-8) (15) (25) (-39) (-64) (76) (101) (-206) (-245) (349) (437) (-583) (-733) (943) (1189) (-1497) (-1924) (2398) (3246) (-4149) (-6490) (9504) (30424) (30424) (9504) (-6490) (-4149) (3246) (2398) (-1924) (-1497) (1189) (943) (-733) (-583) (437) (349) (-245) (-206) (101) (76) (-64) (-39) (25) (15) (-8) (-3)>;
69+
adi,orx-profile-orx-low-pass-adc-profile = /bits/ 16 <(229) (168) (181) (90) (1280) (893) (1316) (83) (1190) (38) (829) (21) (48) (42) (30) (210) (0) (0) (0) (0) (53) (0) (7) (6) (42) (0) (7) (6) (42) (0) (25) (27) (0) (0) (25) (27) (0) (0) (165) (44) (31) (905)>;
70+
adi,orx-profile-orx-band-pass-adc-profile = /bits/ 16 <(229) (168) (181) (90) (1280) (893) (1316) (83) (1190) (38) (829) (21) (48) (42) (30) (210) (0) (0) (0) (0) (53) (0) (7) (6) (42) (0) (7) (6) (42) (0) (25) (27) (0) (0) (25) (27) (0) (0) (165) (44) (31) (905)>;
71+
72+
adi,tx-profile-dac-div = <1>;
73+
adi,tx-profile-primary-sig-bandwidth_hz = <80000000>;
74+
adi,tx-profile-rf-bandwidth_hz = <160000000>;
75+
adi,tx-profile-thb1-interpolation = <2>;
76+
adi,tx-profile-thb2-interpolation = <2>;
77+
adi,tx-profile-thb3-interpolation = <2>;
78+
adi,tx-profile-tx-bbf3d-bcorner_khz = <80000>;
79+
adi,tx-profile-tx-dac3d-bcorner_khz = <187000>;
80+
adi,tx-profile-tx-fir-gain_db = <6>;
81+
adi,tx-profile-tx-fir-interpolation = <1>;
82+
adi,tx-profile-tx-fir-num-fir-coefs = <20>;
83+
adi,tx-profile-tx-input-rate_khz = <204800>;
84+
adi,tx-profile-tx-int5-interpolation = <1>;
85+
adi,tx-profile-tx-fir-coefs = /bits/ 16 <(185) (-416) (672) (-1124) (1525) (-1931) (2050) (-1472) (-377) (17608) (-377) (-1472) (2050) (-1931) (1525) (-1124) (672) (-416) (185) (0)>;
86+
adi,tx-profile-loop-back-adc-profile = /bits/ 16 <(259) (167) (181) (90) (1280) (675) (1291) (56) (1150) (27) (749) (28) (48) (41) (28) (194) (0) (0) (0) (0) (49) (0) (7) (6) (42) (0) (7) (6) (42) (0) (25) (27) (0) (0) (25) (27) (0) (0) (165) (44) (31) (905)>;
87+
88+
adi,dig-clocks-clk-pll-hs-div = <1>;
89+
adi,dig-clocks-clk-pll-vco-freq_khz = <8192000>;
90+
adi,dig-clocks-device-clock_khz = <204800>;
91+
};
92+
93+
&trx1_adrv9009 {
94+
adi,rx-profile-rf-bandwidth_hz = <160000000>;
95+
adi,rx-profile-rhb1-decimation = <1>;
96+
adi,rx-profile-rx-bbf3d-bcorner_khz = <160000>;
97+
adi,rx-profile-rx-ddc-mode = <0>;
98+
adi,rx-profile-rx-dec5-decimation = <4>;
99+
adi,rx-profile-rx-fir-decimation = <2>;
100+
adi,rx-profile-rx-fir-gain_db = <(-6)>;
101+
adi,rx-profile-rx-fir-num-fir-coefs = <48>;
102+
adi,rx-profile-rx-output-rate_khz = <204800>;
103+
adi,rx-profile-rx-fir-coefs = /bits/ 16 <(-3) (-10) (16) (28) (-42) (-71) (97) (148) (-194) (-281) (353) (493) (-602) (-821) (983) (1327) (-1565) (-2142) (2500) (3590) (-4320) (-7239) (9270) (31252) (31252) (9270) (-7239) (-4320) (3590) (2500) (-2142) (-1565) (1327) (983) (-821) (-602) (493) (353) (-281) (-194) (148) (97) (-71) (-42) (28) (16) (-10) (-3)>;
104+
adi,rx-profile-rx-adc-profile = /bits/ 16 <(229) (168) (181) (90) (1280) (893) (1316) (83) (1190) (38) (829) (21) (48) (42) (30) (210) (0) (0) (0) (0) (53) (0) (7) (6) (42) (0) (7) (6) (42) (0) (25) (27) (0) (0) (25) (27) (0) (0) (165) (44) (31) (905)>;
105+
106+
adi,orx-profile-orx-ddc-mode = <0>;
107+
adi,orx-profile-orx-output-rate_khz = <204800>;
108+
adi,orx-profile-rf-bandwidth_hz = <160000000>;
109+
adi,orx-profile-rhb1-decimation = <1>;
110+
adi,orx-profile-rx-bbf3d-bcorner_khz = <225000>;
111+
adi,orx-profile-rx-dec5-decimation = <4>;
112+
adi,orx-profile-rx-fir-decimation = <2>;
113+
adi,orx-profile-rx-fir-gain_db = <(-6)>;
114+
adi,orx-profile-rx-fir-num-fir-coefs = <48>;
115+
adi,orx-profile-rx-fir-coefs = /bits/ 16 <(-3) (-8) (15) (25) (-39) (-64) (76) (101) (-206) (-245) (349) (437) (-583) (-733) (943) (1189) (-1497) (-1924) (2398) (3246) (-4149) (-6490) (9504) (30424) (30424) (9504) (-6490) (-4149) (3246) (2398) (-1924) (-1497) (1189) (943) (-733) (-583) (437) (349) (-245) (-206) (101) (76) (-64) (-39) (25) (15) (-8) (-3)>;
116+
adi,orx-profile-orx-low-pass-adc-profile = /bits/ 16 <(229) (168) (181) (90) (1280) (893) (1316) (83) (1190) (38) (829) (21) (48) (42) (30) (210) (0) (0) (0) (0) (53) (0) (7) (6) (42) (0) (7) (6) (42) (0) (25) (27) (0) (0) (25) (27) (0) (0) (165) (44) (31) (905)>;
117+
adi,orx-profile-orx-band-pass-adc-profile = /bits/ 16 <(229) (168) (181) (90) (1280) (893) (1316) (83) (1190) (38) (829) (21) (48) (42) (30) (210) (0) (0) (0) (0) (53) (0) (7) (6) (42) (0) (7) (6) (42) (0) (25) (27) (0) (0) (25) (27) (0) (0) (165) (44) (31) (905)>;
118+
119+
adi,tx-profile-dac-div = <1>;
120+
adi,tx-profile-primary-sig-bandwidth_hz = <80000000>;
121+
adi,tx-profile-rf-bandwidth_hz = <160000000>;
122+
adi,tx-profile-thb1-interpolation = <2>;
123+
adi,tx-profile-thb2-interpolation = <2>;
124+
adi,tx-profile-thb3-interpolation = <2>;
125+
adi,tx-profile-tx-bbf3d-bcorner_khz = <80000>;
126+
adi,tx-profile-tx-dac3d-bcorner_khz = <187000>;
127+
adi,tx-profile-tx-fir-gain_db = <6>;
128+
adi,tx-profile-tx-fir-interpolation = <1>;
129+
adi,tx-profile-tx-fir-num-fir-coefs = <20>;
130+
adi,tx-profile-tx-input-rate_khz = <204800>;
131+
adi,tx-profile-tx-int5-interpolation = <1>;
132+
adi,tx-profile-tx-fir-coefs = /bits/ 16 <(185) (-416) (672) (-1124) (1525) (-1931) (2050) (-1472) (-377) (17608) (-377) (-1472) (2050) (-1931) (1525) (-1124) (672) (-416) (185) (0)>;
133+
adi,tx-profile-loop-back-adc-profile = /bits/ 16 <(259) (167) (181) (90) (1280) (675) (1291) (56) (1150) (27) (749) (28) (48) (41) (28) (194) (0) (0) (0) (0) (49) (0) (7) (6) (42) (0) (7) (6) (42) (0) (25) (27) (0) (0) (25) (27) (0) (0) (165) (44) (31) (905)>;
134+
135+
adi,dig-clocks-clk-pll-hs-div = <1>;
136+
adi,dig-clocks-clk-pll-vco-freq_khz = <8192000>;
137+
adi,dig-clocks-device-clock_khz = <204800>;
138+
};
139+
140+
&trx2_adrv9009 {
141+
adi,rx-profile-rf-bandwidth_hz = <160000000>;
142+
adi,rx-profile-rhb1-decimation = <1>;
143+
adi,rx-profile-rx-bbf3d-bcorner_khz = <160000>;
144+
adi,rx-profile-rx-ddc-mode = <0>;
145+
adi,rx-profile-rx-dec5-decimation = <4>;
146+
adi,rx-profile-rx-fir-decimation = <2>;
147+
adi,rx-profile-rx-fir-gain_db = <(-6)>;
148+
adi,rx-profile-rx-fir-num-fir-coefs = <48>;
149+
adi,rx-profile-rx-output-rate_khz = <204800>;
150+
adi,rx-profile-rx-fir-coefs = /bits/ 16 <(-3) (-10) (16) (28) (-42) (-71) (97) (148) (-194) (-281) (353) (493) (-602) (-821) (983) (1327) (-1565) (-2142) (2500) (3590) (-4320) (-7239) (9270) (31252) (31252) (9270) (-7239) (-4320) (3590) (2500) (-2142) (-1565) (1327) (983) (-821) (-602) (493) (353) (-281) (-194) (148) (97) (-71) (-42) (28) (16) (-10) (-3)>;
151+
adi,rx-profile-rx-adc-profile = /bits/ 16 <(229) (168) (181) (90) (1280) (893) (1316) (83) (1190) (38) (829) (21) (48) (42) (30) (210) (0) (0) (0) (0) (53) (0) (7) (6) (42) (0) (7) (6) (42) (0) (25) (27) (0) (0) (25) (27) (0) (0) (165) (44) (31) (905)>;
152+
153+
adi,orx-profile-orx-ddc-mode = <0>;
154+
adi,orx-profile-orx-output-rate_khz = <204800>;
155+
adi,orx-profile-rf-bandwidth_hz = <160000000>;
156+
adi,orx-profile-rhb1-decimation = <1>;
157+
adi,orx-profile-rx-bbf3d-bcorner_khz = <225000>;
158+
adi,orx-profile-rx-dec5-decimation = <4>;
159+
adi,orx-profile-rx-fir-decimation = <2>;
160+
adi,orx-profile-rx-fir-gain_db = <(-6)>;
161+
adi,orx-profile-rx-fir-num-fir-coefs = <48>;
162+
adi,orx-profile-rx-fir-coefs = /bits/ 16 <(-3) (-8) (15) (25) (-39) (-64) (76) (101) (-206) (-245) (349) (437) (-583) (-733) (943) (1189) (-1497) (-1924) (2398) (3246) (-4149) (-6490) (9504) (30424) (30424) (9504) (-6490) (-4149) (3246) (2398) (-1924) (-1497) (1189) (943) (-733) (-583) (437) (349) (-245) (-206) (101) (76) (-64) (-39) (25) (15) (-8) (-3)>;
163+
adi,orx-profile-orx-low-pass-adc-profile = /bits/ 16 <(229) (168) (181) (90) (1280) (893) (1316) (83) (1190) (38) (829) (21) (48) (42) (30) (210) (0) (0) (0) (0) (53) (0) (7) (6) (42) (0) (7) (6) (42) (0) (25) (27) (0) (0) (25) (27) (0) (0) (165) (44) (31) (905)>;
164+
adi,orx-profile-orx-band-pass-adc-profile = /bits/ 16 <(229) (168) (181) (90) (1280) (893) (1316) (83) (1190) (38) (829) (21) (48) (42) (30) (210) (0) (0) (0) (0) (53) (0) (7) (6) (42) (0) (7) (6) (42) (0) (25) (27) (0) (0) (25) (27) (0) (0) (165) (44) (31) (905)>;
165+
166+
adi,tx-profile-dac-div = <1>;
167+
adi,tx-profile-primary-sig-bandwidth_hz = <80000000>;
168+
adi,tx-profile-rf-bandwidth_hz = <160000000>;
169+
adi,tx-profile-thb1-interpolation = <2>;
170+
adi,tx-profile-thb2-interpolation = <2>;
171+
adi,tx-profile-thb3-interpolation = <2>;
172+
adi,tx-profile-tx-bbf3d-bcorner_khz = <80000>;
173+
adi,tx-profile-tx-dac3d-bcorner_khz = <187000>;
174+
adi,tx-profile-tx-fir-gain_db = <6>;
175+
adi,tx-profile-tx-fir-interpolation = <1>;
176+
adi,tx-profile-tx-fir-num-fir-coefs = <20>;
177+
adi,tx-profile-tx-input-rate_khz = <204800>;
178+
adi,tx-profile-tx-int5-interpolation = <1>;
179+
adi,tx-profile-tx-fir-coefs = /bits/ 16 <(185) (-416) (672) (-1124) (1525) (-1931) (2050) (-1472) (-377) (17608) (-377) (-1472) (2050) (-1931) (1525) (-1124) (672) (-416) (185) (0)>;
180+
adi,tx-profile-loop-back-adc-profile = /bits/ 16 <(259) (167) (181) (90) (1280) (675) (1291) (56) (1150) (27) (749) (28) (48) (41) (28) (194) (0) (0) (0) (0) (49) (0) (7) (6) (42) (0) (7) (6) (42) (0) (25) (27) (0) (0) (25) (27) (0) (0) (165) (44) (31) (905)>;
181+
182+
adi,dig-clocks-clk-pll-hs-div = <1>;
183+
adi,dig-clocks-clk-pll-vco-freq_khz = <8192000>;
184+
adi,dig-clocks-device-clock_khz = <204800>;
185+
};
186+
187+
&trx3_adrv9009 {
188+
adi,rx-profile-rf-bandwidth_hz = <160000000>;
189+
adi,rx-profile-rhb1-decimation = <1>;
190+
adi,rx-profile-rx-bbf3d-bcorner_khz = <160000>;
191+
adi,rx-profile-rx-ddc-mode = <0>;
192+
adi,rx-profile-rx-dec5-decimation = <4>;
193+
adi,rx-profile-rx-fir-decimation = <2>;
194+
adi,rx-profile-rx-fir-gain_db = <(-6)>;
195+
adi,rx-profile-rx-fir-num-fir-coefs = <48>;
196+
adi,rx-profile-rx-output-rate_khz = <204800>;
197+
adi,rx-profile-rx-fir-coefs = /bits/ 16 <(-3) (-10) (16) (28) (-42) (-71) (97) (148) (-194) (-281) (353) (493) (-602) (-821) (983) (1327) (-1565) (-2142) (2500) (3590) (-4320) (-7239) (9270) (31252) (31252) (9270) (-7239) (-4320) (3590) (2500) (-2142) (-1565) (1327) (983) (-821) (-602) (493) (353) (-281) (-194) (148) (97) (-71) (-42) (28) (16) (-10) (-3)>;
198+
adi,rx-profile-rx-adc-profile = /bits/ 16 <(229) (168) (181) (90) (1280) (893) (1316) (83) (1190) (38) (829) (21) (48) (42) (30) (210) (0) (0) (0) (0) (53) (0) (7) (6) (42) (0) (7) (6) (42) (0) (25) (27) (0) (0) (25) (27) (0) (0) (165) (44) (31) (905)>;
199+
200+
adi,orx-profile-orx-ddc-mode = <0>;
201+
adi,orx-profile-orx-output-rate_khz = <204800>;
202+
adi,orx-profile-rf-bandwidth_hz = <160000000>;
203+
adi,orx-profile-rhb1-decimation = <1>;
204+
adi,orx-profile-rx-bbf3d-bcorner_khz = <225000>;
205+
adi,orx-profile-rx-dec5-decimation = <4>;
206+
adi,orx-profile-rx-fir-decimation = <2>;
207+
adi,orx-profile-rx-fir-gain_db = <(-6)>;
208+
adi,orx-profile-rx-fir-num-fir-coefs = <48>;
209+
adi,orx-profile-rx-fir-coefs = /bits/ 16 <(-3) (-8) (15) (25) (-39) (-64) (76) (101) (-206) (-245) (349) (437) (-583) (-733) (943) (1189) (-1497) (-1924) (2398) (3246) (-4149) (-6490) (9504) (30424) (30424) (9504) (-6490) (-4149) (3246) (2398) (-1924) (-1497) (1189) (943) (-733) (-583) (437) (349) (-245) (-206) (101) (76) (-64) (-39) (25) (15) (-8) (-3)>;
210+
adi,orx-profile-orx-low-pass-adc-profile = /bits/ 16 <(229) (168) (181) (90) (1280) (893) (1316) (83) (1190) (38) (829) (21) (48) (42) (30) (210) (0) (0) (0) (0) (53) (0) (7) (6) (42) (0) (7) (6) (42) (0) (25) (27) (0) (0) (25) (27) (0) (0) (165) (44) (31) (905)>;
211+
adi,orx-profile-orx-band-pass-adc-profile = /bits/ 16 <(229) (168) (181) (90) (1280) (893) (1316) (83) (1190) (38) (829) (21) (48) (42) (30) (210) (0) (0) (0) (0) (53) (0) (7) (6) (42) (0) (7) (6) (42) (0) (25) (27) (0) (0) (25) (27) (0) (0) (165) (44) (31) (905)>;
212+
213+
adi,tx-profile-dac-div = <1>;
214+
adi,tx-profile-primary-sig-bandwidth_hz = <80000000>;
215+
adi,tx-profile-rf-bandwidth_hz = <160000000>;
216+
adi,tx-profile-thb1-interpolation = <2>;
217+
adi,tx-profile-thb2-interpolation = <2>;
218+
adi,tx-profile-thb3-interpolation = <2>;
219+
adi,tx-profile-tx-bbf3d-bcorner_khz = <80000>;
220+
adi,tx-profile-tx-dac3d-bcorner_khz = <187000>;
221+
adi,tx-profile-tx-fir-gain_db = <6>;
222+
adi,tx-profile-tx-fir-interpolation = <1>;
223+
adi,tx-profile-tx-fir-num-fir-coefs = <20>;
224+
adi,tx-profile-tx-input-rate_khz = <204800>;
225+
adi,tx-profile-tx-int5-interpolation = <1>;
226+
adi,tx-profile-tx-fir-coefs = /bits/ 16 <(185) (-416) (672) (-1124) (1525) (-1931) (2050) (-1472) (-377) (17608) (-377) (-1472) (2050) (-1931) (1525) (-1124) (672) (-416) (185) (0)>;
227+
adi,tx-profile-loop-back-adc-profile = /bits/ 16 <(259) (167) (181) (90) (1280) (675) (1291) (56) (1150) (27) (749) (28) (48) (41) (28) (194) (0) (0) (0) (0) (49) (0) (7) (6) (42) (0) (7) (6) (42) (0) (25) (27) (0) (0) (25) (27) (0) (0) (165) (44) (31) (905)>;
228+
229+
adi,dig-clocks-clk-pll-hs-div = <1>;
230+
adi,dig-clocks-clk-pll-vco-freq_khz = <8192000>;
231+
adi,dig-clocks-device-clock_khz = <204800>;
232+
};

0 commit comments

Comments
 (0)