cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Highlighted
Contributor
Contributor
7,656 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
Highlighted
Contributor
Contributor
14,324 Views
Registered: ‎06-09-2014

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.

View solution in original post

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

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.

View solution in original post

0 Kudos