AnsweredAssumed Answered

Removing axi_hdmi@70e00000 from devicetrees prevents cf-ad9361-dds-core from working properly

Question asked by Hrvoje on Apr 25, 2018
Latest reply on Apr 27, 2018 by larsc

Due to a number of reasons I would like to remove HDMI video and SPDIF audio controllers from the FMCOMMS5 (on ZC706) reference design and still use Analog Devices Linux from Git. I have tried solution posted here -  Easiest way to remove adv7511 from daq2 reference design and still use linux - but solution doesn't work for me. When i disable axi_hdmi@70e00000 from devicetrees i'm getting crashes every time i try reading from DAC registers. For example, after i disable above mentioned device and i try running the following commands on the ZC706:


echo 0x80004088 > /sys/kernel/debug/iio/iio\:device4/direct_reg_access

cat /sys/kernel/debug/iio/iio\:device4/direct_reg_access


i'm getting the following error:

Unhandled fault: imprecise external abort (0x406) at 0x0002c62c
pgd = ee76c000
[0002c62c] *pgd=2f248831, *pte=3315575f, *ppte=33155c7f
Internal error: : 406 [#1] PREEMPT SMP ARM
Modules linked in:
CPU: 1 PID: 2066 Comm: cat Not tainted 4.9.0-g60e7170ff385 #1
Hardware name: Xilinx Zynq Platform
task: ef17b3c0 task.stack: ee984000
PC is at cf_axi_dds_reg_access+0x7c/0x124
LR is at cf_axi_dds_reg_access+0x4c/0x124
pc : [<c04837a0>] lr : [<c0483770>] psr: a00f0013
sp : ee985e78 ip : 00000000 fp : 00000000
r10: 00000000 r9 : ffffffed r8 : ee9059a0
r7 : 00000000 r6 : ee985ea0 r5 : ee905800 r4 : 00000000
r3 : f097e000 r2 : 00000000 r1 : f0982088 r0 : ee9059a0
Flags: NzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment none
Control: 18c5387d Table: 2e76c04a DAC: 00000051
Process cat (pid: 2066, stack limit = 0xee984210)
Stack: (0xee985e78 to 0xee986000)
5e60: ee905800 c0483724
5e80: 0001c000 00010000 ee985f80 c05e4e10 00000000 c042e2c8 eec6c908 ee985fb0
5ea0: 00000000 ee93b8c0 00000817 0002c62c ee733058 c01b1124 c042e288 ee723e40
5ec0: 0001c000 00010000 ee985f80 c01b1338 00000051 00000000 00000800 ee723e40
5ee0: c01b12ec 00010000 ee985f80 00000000 00010000 c00ed448 0002c62c ee985fb0
5f00: 0001d9e0 00010fff 00002201 c00092d8 00001000 00000000 00000000 00000000
5f20: 00000002 2756cc4a 5ae0500e 11253f75 5ae0500e 11253f75 00000598 00000000
5f40: bebd1630 ee723e40 0001c000 00010000 ee985f80 00000000 00010000 c00ee228
5f60: 00000001 00000000 ee723e40 ee723e40 00000000 00000000 0001c000 c00ef020
5f80: 00000000 00000000 00000000 00010000 ffff1000 0001c000 00000003 c000f944
5fa0: ee984000 c000f780 00010000 ffff1000 00000003 0001c000 00010000 0001c000
5fc0: 00010000 ffff1000 0001c000 00000003 7fffe000 00000001 00000000 00000000
5fe0: 00000000 bebd157c 0000b649 b6ecc916 400f0030 00000003 00000000 00000000
[<c04837a0>] (cf_axi_dds_reg_access) from [<c042e2c8>] (iio_debugfs_read_reg+0x40/0xac)
[<c042e2c8>] (iio_debugfs_read_reg) from [<c01b1338>] (full_proxy_read+0x4c/0x6c)
[<c01b1338>] (full_proxy_read) from [<c00ed448>] (__vfs_read+0x1c/0x10c)
[<c00ed448>] (__vfs_read) from [<c00ee228>] (vfs_read+0x8c/0x118)
[<c00ee228>] (vfs_read) from [<c00ef020>] (SyS_read+0x3c/0x90)
[<c00ef020>] (SyS_read) from [<c000f780>] (ret_fast_syscall+0x0/0x3c)
Code: e6ff1074 e0831001 e5914000 f57ff04f (e5864000)
---[ end trace 99faa88a11d7a810 ]---
Segmentation fault


I don't understand what is the correlation between hdmi device and ad9361 core, and why disabling the first one would cause issues with the second one. What is the proper way to remove hdmi related devices from devicetrees and still retain full AD9361 functionality?