Bring up AD9001 - Device driver error

Hi All,

during building of the AD-9001 at our custom board using the HDF repo: adrv9001_zed and DTS based on:  zynq-zed-adv7511-adrv9002

we got the following error during boot time:

adrv9002 spi0.0: [ERROR]: Error number 1 (0x00000001), Recovery action -2.In file drivers/iio/adc/navassa/devices/adrv9001/public/src/adi_adrv9001_arm.c, in function adi_adrv9001_arm_Memory_ReadWrite_Validate, in line 357, variable name address.Error message Invalid ARM Memory Address.
adrv9002 spi0.0: [ERROR]: Error number 1 (0x00000001), Recovery action -2.In file drivers/iio/adc/navassa/devices/adrv9001/public/src/adi_adrv9001_arm.c, in function adi_adrv9001_arm_Memory_Write, in line 403, variable name NULL.Error message Invalid ARM Memory Address.
adrv9002 spi0.0: [ERROR]: Error number 1 (0x00000001), Recovery action -2.In file drivers/iio/adc/navassa/devices/adrv9001/public/src/adi_adrv9001_powermanagement.c, in function adi_adrv9001_powermanagement_Configure, in line 56, variable name NULL.Error message Invalid ARM Memory Address.
adrv9002 spi0.0: adrv9002_power_mgmt_config, 2142: failed with "Invalid ARM Memory Address" (1)
adrv9002 spi0.0: [ERROR]: Error number 1 (0x00000001), Recovery action -2.In file drivers/iio/adc/navassa/devices/adrv9001/public/src/adi_adrv9001_arm.c, in function adi_adrv9001_arm_Memory_ReadWrite_Validate, in line 357, variable name address.Error message Invalid ARM Memory Address.
adrv9002 spi0.0: [ERROR]: Error number 1 (0x00000001), Recovery action -2.In file drivers/iio/adc/navassa/devices/adrv9001/public/src/adi_adrv9001_arm.c, in function adi_adrv9001_arm_Memory_Write, in line 403, variable name NULL.Error message Invalid ARM Memory Address.
adrv9002 spi0.0: [ERROR]: Error number 1 (0x00000001), Recovery action -2.In file drivers/iio/adc/navassa/devices/adrv9001/public/src/adi_adrv9001_powermanagement.c, in function adi_adrv9001_powermanagement_Configure, in line 56, variable name NULL.Error message Invalid ARM Memory Address.
adrv9002 spi0.0: adrv9002_power_mgmt_config, 2142: failed with "Invalid ARM Memory Address" (1)
cf_axi_adc: probe of 44a00000.axi-adrv9002-rx-lpc failed with error -22
cf_axi_tdd 44a0c800.axi-adrv9002-core-tdd1-lpc: Major version mismatch between PCORE and driver. Driver expected 1.00.a, PCORE reported 173.222.⚌
cf_axi_tdd 44a0cc00.axi-adrv9002-core-tdd2-lpc: Major version mismatch between PCORE and driver. Driver expected 1.00.a, PCORE reported 173.222.⚌
Division by zero in kernel.

the communication from FPGA layer to AD is based on SPI-0 (the I2C domain is disabled).

due to mention errors in the IIOScope utility we don`t see the RF response although it probably found the  IPC (Tx signals) as can you see here:

After investigate the device (9001) drive code: it seems that the issue come from the line: 

address >= ADRV9001_ADDR_ARM_START_PROG && address <= ADRV9001_ADDR_ARM_END_PROG (at File: adi_adrv9001_arm), it seems like an PL physically address error rather then issue at the dts / Linux (PS) side.

Please assist us to overcome this issue, the time is critical for us.

Thanks a`lot,

Roee.   



edit line
[edited by: Roee Zi at 9:36 PM (GMT -4) on 28 Jun 2021]
Parents
  • 0
    •  Analog Employees 
    on Jun 29, 2021 7:12 AM

    Hi Roee,

    It looks something very odd is going on as the TDD cores are also not coming up correctly. I will have to see if I can replicate this on my side... Are you using the master branches (on both hdl and linux) or are you using a release branch?

    - Nuno Sá

  • Hi,

    The kernel device driver are not the most update. but they exist.

    the Meta-ADI is point to 2019_R2 and the HDF design also.

    i don`t knew if it related but i build the project with PetaLinux 2019 R1 and not 2019 R2.

    i attached in the follow link the driver files as they appear my workstation.

    https://www.jumbomail.me/j/nbzMpoRiVkabqRc

    i can try to update the AD9001 kernel driver to latest master version, but don`t sure this is the reason for this issue.

    Thanks,

    Roee.  

  • 0
    •  Analog Employees 
    on Jun 29, 2021 8:05 AM in reply to Roee Zi

    Hi,

    That is fine. If you want to build our 2019_r2 release, we use petalinux 2019_R1 as specified in meta-adi README page (for the 2019_R2 branch).

    I will test this on my side...

    - Nuno Sá

  • Hi,

    After checking at the FPGA / PL layer the address of the axi_adrv9001_tx/rx dma is 0x000000 (NULL), therefore the driver may collapse.

    but it no make sense since we based our FPGA reference design at Analog design for ZED 9001 board.

    Below are dts section of the FPGA_AXI:

    fpga-axi@0 {
    compatible = "simple-bus";
    #address-cells = <0x1>;
    #size-cells = <0x1>;
    ranges;

    i2c@41600000 {
    compatible = "xlnx,axi-iic-1.01.b", "xlnx,xps-iic-2.00.a";
    reg = <0x41600000 0x10000>;
    interrupt-parent = <0x1>;
    interrupts = <0x0 0x3a 0x4>;
    clocks = <0x2 0xf>;
    clock-names = "pclk";
    #size-cells = <0x0>;
    #address-cells = <0x1>;

    adv7511@39 {
    compatible = "adi,adv7511";
    reg = <0x39 0x3f>;
    reg-names = "primary", "edid";
    adi,input-depth = <0x8>;
    adi,input-colorspace = "yuv422";
    adi,input-clock = "1x";
    adi,input-style = <0x1>;
    adi,input-justification = "right";
    adi,clock-delay = <0x0>;
    #sound-dai-cells = <0x0>;
    phandle = <0x1b>;

    ports {
    #address-cells = <0x1>;
    #size-cells = <0x0>;

    port@0 {
    reg = <0x0>;

    endpoint {
    remote-endpoint = <0xe>;
    phandle = <0x12>;
    };
    };

    port@1 {
    reg = <0x1>;
    };
    };
    };

    adau1761@3b {
    compatible = "adi,adau1761";
    reg = <0x3b>;
    clocks = <0xf>;
    clock-names = "mclk";
    #sound-dai-cells = <0x0>;
    phandle = <0x1d>;
    };
    };

    dma@43000000 {
    compatible = "adi,axi-dmac-1.00.a";
    reg = <0x43000000 0x10000>;
    #dma-cells = <0x1>;
    interrupts = <0x0 0x3b 0x4>;
    clocks = <0x2 0x10>;
    phandle = <0x10>;

    adi,channels {
    #size-cells = <0x0>;
    #address-cells = <0x1>;

    dma-channel@0 {
    reg = <0x0>;
    adi,source-bus-width = <0x40>;
    adi,source-bus-type = <0x0>;
    adi,destination-bus-width = <0x40>;
    adi,destination-bus-type = <0x1>;
    };
    };
    };

    axi-clkgen@79000000 {
    compatible = "adi,axi-clkgen-2.00.a";
    reg = <0x79000000 0x10000>;
    #clock-cells = <0x0>;
    clocks = <0x2 0xf 0x2 0x10>;
    clock-names = "s_axi_aclk", "clkin1";
    phandle = <0x11>;
    };

    axi_hdmi@70e00000 {
    compatible = "adi,axi-hdmi-tx-1.00.a";
    reg = <0x70e00000 0x10000>;
    dmas = <0x10 0x0>;
    dma-names = "video";
    clocks = <0x11>;

    port {

    endpoint {
    remote-endpoint = <0x12>;
    phandle = <0xe>;
    };
    };
    };

    axi-spdif-tx@75c00000 {
    compatible = "adi,axi-spdif-tx-1.00.a";
    reg = <0x75c00000 0x1000>;
    dmas = <0x13 0x0>;
    dma-names = "tx";
    clocks = <0x2 0xf 0xf>;
    clock-names = "axi", "ref";
    #sound-dai-cells = <0x0>;
    phandle = <0x1a>;
    };

    axi-i2s@77600000 {
    compatible = "adi,axi-i2s-1.00.a";
    reg = <0x77600000 0x1000>;
    dmas = <0x13 0x1 0x13 0x2>;
    dma-names = "tx", "rx";
    clocks = <0x2 0xf 0xf>;
    clock-names = "axi", "ref";
    #sound-dai-cells = <0x0>;
    phandle = <0x1c>;
    };

    axi-sysid-0@45000000 {
    compatible = "adi,axi-sysid-1.00.a";
    reg = <0x45000000 0x10000>;
    };

    i2c@41620000 {
    #address-cells = <0x1>;
    #size-cells = <0x1>;
    clock-names = "s_axi_aclk";
    clocks = <0x2 0xf>;
    compatible = "xlnx,axi-iic-2.0", "xlnx,xps-iic-2.00.a";
    reg = <0x41620000 0x1000>;
    };

    dma@44A30000 {
    compatible = "adi,axi-dmac-1.00.a";
    reg = <0x44a30000 0x1000>;
    #dma-cells = <0x1>;
    interrupts = <0x0 0x39 0x4>;
    clock-names = "s_axi_aclk", "m_dest_axi_aclk", "fifo_wr_clk";
    clocks = <0x2 0xf 0x2 0x10 0x14>;
    phandle = <0x16>;

    adi,channels {
    #size-cells = <0x0>;
    #address-cells = <0x1>;

    dma-channel@0 {
    reg = <0x0>;
    adi,source-bus-width = <0x40>;
    adi,source-bus-type = <0x2>;
    adi,destination-bus-width = <0x40>;
    adi,destination-bus-type = <0x0>;
    };
    };
    };

    dma@44A40000 {
    compatible = "adi,axi-dmac-1.00.a";
    reg = <0x44a40000 0x10000>;
    #dma-cells = <0x1>;
    interrupts = <0x0 0x38 0x4>;
    clock-names = "s_axi_aclk", "m_dest_axi_aclk", "fifo_wr_clk";
    clocks = <0x2 0xf 0x2 0x10 0x14>;
    phandle = <0x18>;

    adi,channels {
    #size-cells = <0x0>;
    #address-cells = <0x1>;

    dma-channel@0 {
    reg = <0x0>;
    adi,source-bus-width = <0x40>;
    adi,source-bus-type = <0x2>;
    adi,destination-bus-width = <0x40>;
    adi,destination-bus-type = <0x0>;
    };
    };
    };

    dma@44A50000 {
    compatible = "adi,axi-dmac-1.00.a";
    reg = <0x44a50000 0x10000>;
    #dma-cells = <0x1>;
    interrupts = <0x0 0x37 0x4>;
    clock-names = "s_axi_aclk", "m_src_axi_aclk", "m_axis_aclk";
    clocks = <0x2 0xf 0x2 0x10 0x14>;
    phandle = <0x17>;

    adi,channels {
    #size-cells = <0x0>;
    #address-cells = <0x1>;

    dma-channel@0 {
    reg = <0x0>;
    adi,source-bus-width = <0x40>;
    adi,source-bus-type = <0x0>;
    adi,destination-bus-width = <0x40>;
    adi,destination-bus-type = <0x2>;
    };
    };
    };

    dma@44A6000 {
    compatible = "adi,axi-dmac-1.00.a";
    reg = <0x44a60000 0x10000>;
    #dma-cells = <0x1>;
    interrupts = <0x0 0x36 0x4>;
    clock-names = "s_axi_aclk", "m_src_axi_aclk", "m_axis_aclk";
    clocks = <0x2 0xf 0x2 0x10 0x14>;
    phandle = <0x19>;

    adi,channels {
    #size-cells = <0x0>;
    #address-cells = <0x1>;

    dma-channel@0 {
    reg = <0x0>;
    adi,source-bus-width = <0x40>;
    adi,source-bus-type = <0x0>;
    adi,destination-bus-width = <0x40>;
    adi,destination-bus-type = <0x2>;
    };
    };
    };

    axi-adrv9002-rx-lpc@44A00000 {
    compatible = "adi,axi-adrv9002-rx-1.0";
    reg = <0x44a00000 0x6000>;
    clocks = <0x15 0x0>;
    dmas = <0x16 0x0>;
    dma-names = "rx";
    spibus-connected = <0x15>;
    };

    axi-adrv9002-tx-lpc@44A04000 {
    compatible = "adi,axi-adrv9002-tx-1.0";
    reg = <0x44a0a000 0x2000>;
    clocks = <0x15 0x1>;
    clock-names = "sampl_clk";
    dmas = <0x17 0x0>;
    dma-names = "tx";
    adi,axi-dds-default-scale = <0x800>;
    adi,axi-dds-default-frequency = <0x1e8480>;
    };

    axi-adrv9002-core-tdd1-lpc@44A0C800 {
    compatible = "adi,axi-tdd-1.00";
    reg = <0x44a0c800 0x400>;
    clocks = <0x2 0x10 0x15 0x2>;
    clock-names = "s_axi_aclk", "intf_clk";
    };

    axi-adrv9002-rx2-lpc@44A02000 {
    compatible = "adi,axi-adrv9002-rx2-1.0";
    reg = <0x44a09000 0x1000>;
    clocks = <0x15 0x3>;
    clock-names = "sampl_clk";
    dmas = <0x18 0x0>;
    dma-names = "rx";
    };

    axi-adrv9002-tx2-lpc@44A06000 {
    compatible = "adi,axi-adrv9002-tx-1.0";
    reg = <0x44a0c000 0x2000>;
    clocks = <0x15 0x4>;
    clock-names = "sampl_clk";
    dmas = <0x19 0x0>;
    dma-names = "tx";
    adi,axi-dds-default-scale = <0x800>;
    adi,axi-dds-default-frequency = <0x1e8480>;
    };

    axi-adrv9002-core-tdd2-lpc@44A0C800 {
    compatible = "adi,axi-tdd-1.00";
    reg = <0x44a0cc00 0x400>;
    clocks = <0x2 0x10 0x15 0x5>;
    clock-names = "s_axi_aclk", "intf_clk";
    };

    misc_clk_0 {
    #clock-cells = <0x0>;
    clock-frequency = <0x5f5e100>;
    compatible = "fixed-clock";
    phandle = <0x14>;
    };
    };

    audio_clock {
    compatible = "fixed-clock";
    #clock-cells = <0x0>;
    clock-frequency = <0xbb8000>;
    phandle = <0xf>;
    };

    adv7511_hdmi_snd {
    compatible = "simple-audio-card";
    simple-audio-card,name = "HDMI monitor";
    simple-audio-card,widgets = "Speaker", "Speaker";
    simple-audio-card,routing = "Speaker", "TX";

    simple-audio-card,dai-link@0 {
    format = "spdif";

    cpu {
    sound-dai = <0x1a>;
    };

    codec {
    sound-dai = <0x1b>;
    };
    };
    };

Reply
  • Hi,

    After checking at the FPGA / PL layer the address of the axi_adrv9001_tx/rx dma is 0x000000 (NULL), therefore the driver may collapse.

    but it no make sense since we based our FPGA reference design at Analog design for ZED 9001 board.

    Below are dts section of the FPGA_AXI:

    fpga-axi@0 {
    compatible = "simple-bus";
    #address-cells = <0x1>;
    #size-cells = <0x1>;
    ranges;

    i2c@41600000 {
    compatible = "xlnx,axi-iic-1.01.b", "xlnx,xps-iic-2.00.a";
    reg = <0x41600000 0x10000>;
    interrupt-parent = <0x1>;
    interrupts = <0x0 0x3a 0x4>;
    clocks = <0x2 0xf>;
    clock-names = "pclk";
    #size-cells = <0x0>;
    #address-cells = <0x1>;

    adv7511@39 {
    compatible = "adi,adv7511";
    reg = <0x39 0x3f>;
    reg-names = "primary", "edid";
    adi,input-depth = <0x8>;
    adi,input-colorspace = "yuv422";
    adi,input-clock = "1x";
    adi,input-style = <0x1>;
    adi,input-justification = "right";
    adi,clock-delay = <0x0>;
    #sound-dai-cells = <0x0>;
    phandle = <0x1b>;

    ports {
    #address-cells = <0x1>;
    #size-cells = <0x0>;

    port@0 {
    reg = <0x0>;

    endpoint {
    remote-endpoint = <0xe>;
    phandle = <0x12>;
    };
    };

    port@1 {
    reg = <0x1>;
    };
    };
    };

    adau1761@3b {
    compatible = "adi,adau1761";
    reg = <0x3b>;
    clocks = <0xf>;
    clock-names = "mclk";
    #sound-dai-cells = <0x0>;
    phandle = <0x1d>;
    };
    };

    dma@43000000 {
    compatible = "adi,axi-dmac-1.00.a";
    reg = <0x43000000 0x10000>;
    #dma-cells = <0x1>;
    interrupts = <0x0 0x3b 0x4>;
    clocks = <0x2 0x10>;
    phandle = <0x10>;

    adi,channels {
    #size-cells = <0x0>;
    #address-cells = <0x1>;

    dma-channel@0 {
    reg = <0x0>;
    adi,source-bus-width = <0x40>;
    adi,source-bus-type = <0x0>;
    adi,destination-bus-width = <0x40>;
    adi,destination-bus-type = <0x1>;
    };
    };
    };

    axi-clkgen@79000000 {
    compatible = "adi,axi-clkgen-2.00.a";
    reg = <0x79000000 0x10000>;
    #clock-cells = <0x0>;
    clocks = <0x2 0xf 0x2 0x10>;
    clock-names = "s_axi_aclk", "clkin1";
    phandle = <0x11>;
    };

    axi_hdmi@70e00000 {
    compatible = "adi,axi-hdmi-tx-1.00.a";
    reg = <0x70e00000 0x10000>;
    dmas = <0x10 0x0>;
    dma-names = "video";
    clocks = <0x11>;

    port {

    endpoint {
    remote-endpoint = <0x12>;
    phandle = <0xe>;
    };
    };
    };

    axi-spdif-tx@75c00000 {
    compatible = "adi,axi-spdif-tx-1.00.a";
    reg = <0x75c00000 0x1000>;
    dmas = <0x13 0x0>;
    dma-names = "tx";
    clocks = <0x2 0xf 0xf>;
    clock-names = "axi", "ref";
    #sound-dai-cells = <0x0>;
    phandle = <0x1a>;
    };

    axi-i2s@77600000 {
    compatible = "adi,axi-i2s-1.00.a";
    reg = <0x77600000 0x1000>;
    dmas = <0x13 0x1 0x13 0x2>;
    dma-names = "tx", "rx";
    clocks = <0x2 0xf 0xf>;
    clock-names = "axi", "ref";
    #sound-dai-cells = <0x0>;
    phandle = <0x1c>;
    };

    axi-sysid-0@45000000 {
    compatible = "adi,axi-sysid-1.00.a";
    reg = <0x45000000 0x10000>;
    };

    i2c@41620000 {
    #address-cells = <0x1>;
    #size-cells = <0x1>;
    clock-names = "s_axi_aclk";
    clocks = <0x2 0xf>;
    compatible = "xlnx,axi-iic-2.0", "xlnx,xps-iic-2.00.a";
    reg = <0x41620000 0x1000>;
    };

    dma@44A30000 {
    compatible = "adi,axi-dmac-1.00.a";
    reg = <0x44a30000 0x1000>;
    #dma-cells = <0x1>;
    interrupts = <0x0 0x39 0x4>;
    clock-names = "s_axi_aclk", "m_dest_axi_aclk", "fifo_wr_clk";
    clocks = <0x2 0xf 0x2 0x10 0x14>;
    phandle = <0x16>;

    adi,channels {
    #size-cells = <0x0>;
    #address-cells = <0x1>;

    dma-channel@0 {
    reg = <0x0>;
    adi,source-bus-width = <0x40>;
    adi,source-bus-type = <0x2>;
    adi,destination-bus-width = <0x40>;
    adi,destination-bus-type = <0x0>;
    };
    };
    };

    dma@44A40000 {
    compatible = "adi,axi-dmac-1.00.a";
    reg = <0x44a40000 0x10000>;
    #dma-cells = <0x1>;
    interrupts = <0x0 0x38 0x4>;
    clock-names = "s_axi_aclk", "m_dest_axi_aclk", "fifo_wr_clk";
    clocks = <0x2 0xf 0x2 0x10 0x14>;
    phandle = <0x18>;

    adi,channels {
    #size-cells = <0x0>;
    #address-cells = <0x1>;

    dma-channel@0 {
    reg = <0x0>;
    adi,source-bus-width = <0x40>;
    adi,source-bus-type = <0x2>;
    adi,destination-bus-width = <0x40>;
    adi,destination-bus-type = <0x0>;
    };
    };
    };

    dma@44A50000 {
    compatible = "adi,axi-dmac-1.00.a";
    reg = <0x44a50000 0x10000>;
    #dma-cells = <0x1>;
    interrupts = <0x0 0x37 0x4>;
    clock-names = "s_axi_aclk", "m_src_axi_aclk", "m_axis_aclk";
    clocks = <0x2 0xf 0x2 0x10 0x14>;
    phandle = <0x17>;

    adi,channels {
    #size-cells = <0x0>;
    #address-cells = <0x1>;

    dma-channel@0 {
    reg = <0x0>;
    adi,source-bus-width = <0x40>;
    adi,source-bus-type = <0x0>;
    adi,destination-bus-width = <0x40>;
    adi,destination-bus-type = <0x2>;
    };
    };
    };

    dma@44A6000 {
    compatible = "adi,axi-dmac-1.00.a";
    reg = <0x44a60000 0x10000>;
    #dma-cells = <0x1>;
    interrupts = <0x0 0x36 0x4>;
    clock-names = "s_axi_aclk", "m_src_axi_aclk", "m_axis_aclk";
    clocks = <0x2 0xf 0x2 0x10 0x14>;
    phandle = <0x19>;

    adi,channels {
    #size-cells = <0x0>;
    #address-cells = <0x1>;

    dma-channel@0 {
    reg = <0x0>;
    adi,source-bus-width = <0x40>;
    adi,source-bus-type = <0x0>;
    adi,destination-bus-width = <0x40>;
    adi,destination-bus-type = <0x2>;
    };
    };
    };

    axi-adrv9002-rx-lpc@44A00000 {
    compatible = "adi,axi-adrv9002-rx-1.0";
    reg = <0x44a00000 0x6000>;
    clocks = <0x15 0x0>;
    dmas = <0x16 0x0>;
    dma-names = "rx";
    spibus-connected = <0x15>;
    };

    axi-adrv9002-tx-lpc@44A04000 {
    compatible = "adi,axi-adrv9002-tx-1.0";
    reg = <0x44a0a000 0x2000>;
    clocks = <0x15 0x1>;
    clock-names = "sampl_clk";
    dmas = <0x17 0x0>;
    dma-names = "tx";
    adi,axi-dds-default-scale = <0x800>;
    adi,axi-dds-default-frequency = <0x1e8480>;
    };

    axi-adrv9002-core-tdd1-lpc@44A0C800 {
    compatible = "adi,axi-tdd-1.00";
    reg = <0x44a0c800 0x400>;
    clocks = <0x2 0x10 0x15 0x2>;
    clock-names = "s_axi_aclk", "intf_clk";
    };

    axi-adrv9002-rx2-lpc@44A02000 {
    compatible = "adi,axi-adrv9002-rx2-1.0";
    reg = <0x44a09000 0x1000>;
    clocks = <0x15 0x3>;
    clock-names = "sampl_clk";
    dmas = <0x18 0x0>;
    dma-names = "rx";
    };

    axi-adrv9002-tx2-lpc@44A06000 {
    compatible = "adi,axi-adrv9002-tx-1.0";
    reg = <0x44a0c000 0x2000>;
    clocks = <0x15 0x4>;
    clock-names = "sampl_clk";
    dmas = <0x19 0x0>;
    dma-names = "tx";
    adi,axi-dds-default-scale = <0x800>;
    adi,axi-dds-default-frequency = <0x1e8480>;
    };

    axi-adrv9002-core-tdd2-lpc@44A0C800 {
    compatible = "adi,axi-tdd-1.00";
    reg = <0x44a0cc00 0x400>;
    clocks = <0x2 0x10 0x15 0x5>;
    clock-names = "s_axi_aclk", "intf_clk";
    };

    misc_clk_0 {
    #clock-cells = <0x0>;
    clock-frequency = <0x5f5e100>;
    compatible = "fixed-clock";
    phandle = <0x14>;
    };
    };

    audio_clock {
    compatible = "fixed-clock";
    #clock-cells = <0x0>;
    clock-frequency = <0xbb8000>;
    phandle = <0xf>;
    };

    adv7511_hdmi_snd {
    compatible = "simple-audio-card";
    simple-audio-card,name = "HDMI monitor";
    simple-audio-card,widgets = "Speaker", "Speaker";
    simple-audio-card,routing = "Speaker", "TX";

    simple-audio-card,dai-link@0 {
    format = "spdif";

    cpu {
    sound-dai = <0x1a>;
    };

    codec {
    sound-dai = <0x1b>;
    };
    };
    };

Children
  • 0
    •  Analog Employees 
    on Jun 30, 2021 12:28 PM in reply to Roee Zi

    Hi,

    Are you doing any custom change to the meta-adi build? Did you properly selected your devicetree? From your boot log, it looks like the device nodes at least are there...

    I could not reproduce this on my side. I did both a manual and meta-ad builds. Both booted properly:

    [drm] Cannot find any crtc or sizes
    random: crng init done
    adrv9002 spi0.0: adrv9002-phy Rev 12.0, Firmware 0.16.3.8,  Stream 0.7.3.0,  API version: 48.8.7 successfully initialized
    cf_axi_adc 44a00000.axi-adrv9002-rx-lpc: ADI AIM (10.01.b) at 0x44A00000 mapped to 0x6ac620c4, probed ADC ADRV9002 as MASTER
    cf_axi_tdd 44a0c800.axi-adrv9002-core-tdd1-lpc: Analog Devices CF_AXI_TDD MASTER (1.00.a)
    cf_axi_tdd 44a0cc00.axi-adrv9002-core-tdd2-lpc: Analog Devices CF_AXI_TDD MASTER (1.00.a)
    cf_axi_dds 44a0a000.axi-adrv9002-tx-lpc: Analog Devices CF_AXI_DDS_DDS MASTER (9.01.b) at 0x44A0A000 mapped to 0x0fec952f, probed DDS ADRV9002
    cf_axi_dds 44a0c000.axi-adrv9002-tx2-lpc: Analog Devices CF_AXI_DDS_DDS MASTER (9.01.b) at 0x44A0C000 mapped to 0xe19d6e57, probed DDS ADRV9002
    asoc-simple-card adv7511_hdmi_snd: spdif-hifi <-> 75c00000.axi-spdif-tx mapping ok
    asoc-simple-card zed_sound: adau-hifi <-> 77600000.axi-i2s mapping ok
    hctosys: unable to open rtc device (rtc0)
    ALSA device list:
      #0: HDMI monitor
      #1: ZED ADAU1761
    Freeing unused kernel memory: 1024K
    Run /init as init process
    INIT: version 2.88 booting
    Starting udev
    udevd[1191]: starting version 3.2.5
    udevd[1192]: starting eudev-3.2.5
    EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null)
    FAT-fs (mmcblk0p1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.
    hwclock: can't open '/dev/misc/rtc': No such file or directory
    Wed Jun 30 08:45:46 UTC 2021
    hwclock: can't open '/dev/misc/rtc': No such file or directory
    Configuring packages on first boot....
     (This may take several minutes. Please do not power off the machine.)
    Running postinst /etc/rpm-postinsts/100-sysvinit-inittab...
    update-rc.d: /etc/init.d/run-postinsts exists during rc.d purge (continuing)
     Removing any system startup links for run-postinsts ...
      /etc/rcS.d/S99run-postinsts
    INIT: Entering runlevel: 5
    Configuring network interfaces... IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
    udhcpc: started, v1.29.2
    udhcpc: sending discover
    macb e000b000.ethernet eth0: link up (100/Full)
    IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
    udhcpc: sending discover
    udhcpc: sending select for 192.168.178.83
    udhcpc: lease of 192.168.178.83 obtained, lease time 864000
    /etc/udhcpc.d/50default: Adding DNS 192.168.178.1
    done.
    Starting system message bus: dbus.
    Starting Dropbear SSH server: Generating 2048 bit rsa key, this may take a while...
    
    
    PetaLinux 2019.1 adrv9001_zed /dev/ttyPS0
    
    adrv9001_zed login: root
    Password: 
    root@adrv9001_zed:~# 
    

    It might be some issue with the hdl version you have... How did you got your fpga hdf file? You should have a line similar (the dates won't match) to this one in your dmesg:

    "axi_sysid 45000000.axi-sysid-0: [adrv9001] on [zed] git <43c6ae1ca9faf268f30c7ef489f1428fc30a8b23> clean [2021-06-10 00:31:00] UTC"

    What do you have in your system?

    - Nuno Sá

  • Hi Nuno,

    in the dts we remove the lines of:

    /delete-node/ &axi_iic_main;
    /delete-node/ &axi_iic_fmc;

    since we don`t have I2C at our custom board and this is the only change that we do in the PS.

    Our board based is very close to the ZED board and include the AD9001 module.

    And as i wrote earlier on the FPGA side: the address of the RX DMA is cleared (Zero).

    we based our FPGA design at: hdl/projects/adrv9001/zed at master · analogdevicesinc/hdl · GitHub

    Please point us to GIT repo to be our FPGA reference design. 

    Many thanks,

  • 0
    •  Analog Employees 
    on Jun 30, 2021 1:04 PM in reply to Roee Zi

    Hi,

    As far as I understood, you're using the 2019_R2 meta-adi branch. That will use the 2019_R2 kernel tree so that you should be basing your hdl design with:

    github.com/.../zed

    The DMA address being 0 is definitely not good but I'm not sure how you get that... Maybe someone of the hdl team might give an hint here...

    - Nuno Sá

  • Hi,

    Just to test if it an issue regarding our custom board, Can you share somehow the Vivado project that you build from this GIT repo (even in such case it will cost), maybe in your project the signals define OK.

    Write now, it seems that we are stuck.

  • Hi NSA,

    we double check the sources for our reference design (both PS / PL layers). build even PetaLinux folder again from starch and basis and we still stuck with the same issues that come from your / Analog device drive.

    This situation stuck all our delivery times.

    Please update / tell us what else we can do (The only solution that we see right now is to use more stable products).