UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

cancel
Showing results for 
Search instead for 
Did you mean: 
Contributor
Contributor
7,440 Views
Registered: ‎06-09-2014

axi-i2s vs axi-i2s-adi?

Jump to solution

I am using PetaLinux 2014.4 to develop an ALSA soundcard driver for a picozed mounted on an in-house designed carrier card.  I am at a point where I'm trying to get the DAI links (I2S between the codecs and the Zynq) working.

 

The FPGA uses the axi-i2s-adi IP core from ADI, used in the zedboard.  The only AXI I2S driver I've found is axi_i2s.c, also from ADI, available in many linux source distributions.   The problem seems to be due to incompatibility between them.  The DTS that Vivado generates from the axi-i2s-adi core is:


     axi_i2s_adi_0: axi_i2s_adi@43c20000 {
        compatible = "xlnx,axi-i2s-adi-1.0";
        reg = <0x43c20000 0x10000>;
        xlnx,bclk-pol = <0x0>;
        xlnx,dma-type = <0x1>;
        xlnx,has-rx = <0x1>;
        xlnx,has-tx = <0x1>;
        xlnx,lrclk-pol = <0x1>;
        xlnx,num-ch = <0x4>;
        xlnx,slot-width = <0x18>;
    };

 

but the example DTS from the linux source Documentation/devicetree/bindings/sound/adi,axi-i2s.txt is:


    i2s: i2s@0x77600000 {
        compatible = "adi,axi-i2s-1.00.a";
        reg = <0x77600000 0x1000>;
        clocks = <&clk 15>, <&audio_clock>;
        clock-names = "axi", "ref";
        dmas = <&ps7_dma 0>, <&ps7_dma 1>;
        dma-names = "tx", "rx";
    };

 

It seems that there is a driver that goes with the axi-i2s-adi IP core that I can't find (compatible = "xlnx,axi-i2s-adi-1.0"), and an IP core that goes with the axi_i2s.c driver that I also can't find (compatible = "adi,axi-i2s-1.00.a").  Either that or I'm missing something.

 

Is anyone able to help here?

 

0 Kudos
1 Solution

Accepted Solutions
Contributor
Contributor
14,108 Views
Registered: ‎06-09-2014

Re: axi-i2s vs axi-i2s-adi?

Jump to solution

It turns out that the axi_i2s.c driver is the one that goes with the axi-i2s-adi IP core.  The DTS from the documentation is the one to use, after substituting the correct reg property and phandles.  Apart from the "reg = <0x43c20000 0x10000>;" line, the Vivado generated DTS is nonsense.

0 Kudos
1 Reply
Contributor
Contributor
14,109 Views
Registered: ‎06-09-2014

Re: axi-i2s vs axi-i2s-adi?

Jump to solution

It turns out that the axi_i2s.c driver is the one that goes with the axi-i2s-adi IP core.  The DTS from the documentation is the one to use, after substituting the correct reg property and phandles.  Apart from the "reg = <0x43c20000 0x10000>;" line, the Vivado generated DTS is nonsense.

0 Kudos