AnsweredAssumed Answered

ADI axi-i2s "No matching formats"

Question asked by niklas1337 on Jun 26, 2017
Latest reply on Jun 27, 2017 by larsc

Hey,

 

I'm trying to get the ADI i2s driver working on my zynq. The driver seems to be contained in the kernel (3.17), however, when I try to test the soundcard I get the following error:

 

root@localhost:~# speaker-test -c 2

 

speaker-test 1.0.25

 

Playback device is default
Stream parameters are 48000Hz, S16_LE, 2 channels
Using 16 octaves of pink noise
[ 2130.672660] ASoC: ak4554-hifi <-> 43c20000.i2s No matching formats
Playback open error: -22,Invalid argument

 

I used the kernel source from the xilinx repo (3.17 branch) and enabled all necessary options in the .config.

This is my devicetree config:


&amba {
    i2s_clk: i2s_clk {
         compatible = "fixed-clock";
     #clock-cells = <0>;
         clock-frequency = <12288000>;
         clock-output-names = "i2s_clk";
     };

 

   axi_i2s_adi_0: i2s@0x43C20000{
      #sound-dai-cells = <0>;
          compatible = "adi,axi-i2s-1.00.a";
          reg = <0x43C20000 0x10000>;
          clocks = <0x1 15>, <&i2s_clk>;
          clock-names = "axi", "ref";
          dmas = <&dmac_s 0 &dmac_s 1>;
          dma-names = "tx", "rx";
          interrupt-parent = <&intc>;
     };

 

     dummy_dai: ak4554 {
           #sound-dai-cells = <0>;
       compatible = "asahi-kasei,ak4554";
     };

 

     sound {
           compatible = "simple-audio-card";
           simple-audio-card,name = "Test-Sound-Card";
           simple-audio-card,format = "i2s";
           simple-audio-card,bitclock-master = <&dailink0_master>;
           simple-audio-card,frame-master = <&dailink0_master>;
           simple-audio-card,widgets =
             "Microphone", "Microphone Jack",
             "Headphone", "Headphone Jack",
             "Line", "Line In Jack";
           simple-audio-card,routing =
             "MICIN", "Microphone Jack",
             "Headphone Jack", "LHPOUT",
             "Headphone Jack", "RHPOUT",
             "LLINEIN", "Line In Jack",
             "RLINEIN", "Line In Jack";
       dailink0_master: simple-audio-card,cpu {
          clocks = <&i2s_clk>;
            sound-dai = <&axi_i2s_adi_0>;
         };

 

           simple-audio-card,codec {
                clocks = <&i2s_clk>;
                sound-dai = <&dummy_dai>;
           };
      };
};

 

I'm using the AK4554 codec for testing as this device doesn't require config via I2C or SPI:

 

root@localhost:~# aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: TestSoundCard [Test-Sound-Card], device 0: 43c20000.i2s-ak4554-hifi ak4554-hifi-0 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0

 

So, any idea why I can't use this card?

 

Thanks in advance!

Niklas

Outcomes