<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: WM8960 on audmux interafce in i.MX Processors</title>
    <link>https://community.nxp.com/t5/i-MX-Processors/WM8960-on-audmux-interafce/m-p/612643#M92500</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Igor,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;thanks for the reply and the pointer in the right direction. I am a bit further now but unfortunately I'm not there yet. The wm8960 seems to be written for a SAI context only. I have commented out the part where there is a check for an opened sai stream.&lt;/P&gt;&lt;BLOCKQUOTE class="jive_macro_quote jive-quote jive_text_macro"&gt;&lt;PRE style="background-color: #ffffff; color: #000000; font-family: 'DejaVu Sans Mono'; font-size: 9.0pt;"&gt;&lt;SPAN style="color: #000080; font-weight: bold;"&gt;static int &lt;/SPAN&gt;imx_hifi_startup(&lt;SPAN style="color: #000080; font-weight: bold;"&gt;struct &lt;/SPAN&gt;&lt;SPAN style="color: #008080;"&gt;snd_pcm_substream &lt;/SPAN&gt;*substream)
{
&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #000080; font-weight: bold;"&gt;struct &lt;/SPAN&gt;&lt;SPAN style="color: #008080;"&gt;snd_soc_pcm_runtime &lt;/SPAN&gt;*rtd = substream-&amp;gt;&lt;SPAN style="color: #660e7a; font-weight: bold; font-style: italic;"&gt;private_data&lt;/SPAN&gt;;
&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #000080; font-weight: bold;"&gt;struct &lt;/SPAN&gt;&lt;SPAN style="color: #008080;"&gt;snd_soc_dai &lt;/SPAN&gt;*cpu_dai = rtd-&amp;gt;&lt;SPAN style="color: #660e7a; font-weight: bold; font-style: italic;"&gt;cpu_dai&lt;/SPAN&gt;;
&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #000080; font-weight: bold;"&gt;struct &lt;/SPAN&gt;&lt;SPAN style="color: #008080;"&gt;snd_soc_card &lt;/SPAN&gt;*card = rtd-&amp;gt;&lt;SPAN style="color: #660e7a; font-weight: bold; font-style: italic;"&gt;card&lt;/SPAN&gt;;
&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #000080; font-weight: bold;"&gt;struct &lt;/SPAN&gt;&lt;SPAN style="color: #008080;"&gt;imx_wm8960_data &lt;/SPAN&gt;*data = snd_soc_card_get_drvdata(card);
&amp;nbsp;&amp;nbsp; bool tx = substream-&amp;gt;&lt;SPAN style="color: #660e7a; font-weight: bold; font-style: italic;"&gt;stream &lt;/SPAN&gt;== SNDRV_PCM_STREAM_PLAYBACK;
&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #000080; font-weight: bold;"&gt;struct &lt;/SPAN&gt;&lt;SPAN style="color: #008080;"&gt;fsl_sai &lt;/SPAN&gt;*sai = dev_get_drvdata(cpu_dai-&amp;gt;&lt;SPAN style="color: #660e7a; font-weight: bold; font-style: italic;"&gt;dev&lt;/SPAN&gt;);
&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #000080; font-weight: bold;"&gt;int &lt;/SPAN&gt;ret = &lt;SPAN style="color: #0000ff;"&gt;0&lt;/SPAN&gt;;

&lt;SPAN style="color: #808080; font-style: italic;"&gt;/*
&lt;/SPAN&gt;&lt;SPAN style="color: #808080; font-style: italic;"&gt;&amp;nbsp;&amp;nbsp; data-&amp;gt;is_stream_opened[tx] = true;
&lt;/SPAN&gt;&lt;SPAN style="color: #808080; font-style: italic;"&gt;&amp;nbsp;&amp;nbsp; if (data-&amp;gt;is_stream_opened[tx] != sai-&amp;gt;is_stream_opened[tx] ||
&lt;/SPAN&gt;&lt;SPAN style="color: #808080; font-style: italic;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; data-&amp;gt;is_stream_opened[!tx] != sai-&amp;gt;is_stream_opened[!tx]) {
&lt;/SPAN&gt;&lt;SPAN style="color: #808080; font-style: italic;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; data-&amp;gt;is_stream_opened[tx] = false;
&lt;/SPAN&gt;&lt;SPAN style="color: #808080; font-style: italic;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return -EBUSY;
&lt;/SPAN&gt;&lt;SPAN style="color: #808080; font-style: italic;"&gt;&amp;nbsp;&amp;nbsp; }*/&lt;/SPAN&gt;&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;I have also needed to&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;When I leave this in I'm getting busy (-16) errors for playback.&lt;/P&gt;&lt;P&gt;Now I'm still getting IO errors on the default PCM with aplay with this check commented out. It seems to me that there is something wrong with the SSI interafce but I haven't found out what.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I'm now looking at the following driver for an SSI&amp;nbsp; interface but it's quite hard to port to 4.1.15:&lt;/P&gt;&lt;P&gt;&lt;A href="https://community.nxp.com/docs/DOC-106295" rel="nofollow noopener noreferrer" target="_blank"&gt;https://community.nxp.com/docs/DOC-106295&lt;/A&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Any suggestions are still very welcome.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Best regards&lt;/P&gt;&lt;P&gt;Jeroen&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 24 Mar 2017 15:53:48 GMT</pubDate>
    <dc:creator>jeroenvanderlaa</dc:creator>
    <dc:date>2017-03-24T15:53:48Z</dc:date>
    <item>
      <title>WM8960 on audmux interafce</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/WM8960-on-audmux-interafce/m-p/612641#M92498</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I'm having trouble with the WM8960 on my board. It is connected to the AUDMUX of my imx6sx. My .dts file contains an entry for an audio codec defiend as follows:&lt;/P&gt;&lt;BLOCKQUOTE class="jive_macro_quote jive-quote jive_text_macro"&gt;&lt;PRE style="background-color: #ffffff; color: #000000; font-family: 'DejaVu Sans Mono'; font-size: 9.0pt;"&gt;sound {
&amp;nbsp;&amp;nbsp;&amp;nbsp; compatible = "fsl,imx-audio-wm8960";
&amp;nbsp;&amp;nbsp;&amp;nbsp; model = "wm8960-audio";
&amp;nbsp;&amp;nbsp;&amp;nbsp; cpu-dai = &amp;lt;&amp;amp;sai1&amp;gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp; audio-codec = &amp;lt;&amp;amp;wm8960&amp;gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ssi-controller = &amp;lt;&amp;amp;ssi1&amp;gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp; codec-master;
&amp;nbsp;&amp;nbsp;&amp;nbsp; audio-routing =
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "Headphone Jack", "HP_L",
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "Headphone Jack", "HP_R",
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "Ext Spk", "SPK_LP",
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "Ext Spk", "SPK_LN",
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "Ext Spk", "SPK_RP",
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "Ext Spk", "SPK_RN",
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "LINPUT1", "Main MIC",
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "Main MIC", "MICB";
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mux-int-port = &amp;lt;1&amp;gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mux-ext-port = &amp;lt;6&amp;gt;;
};

&amp;amp;i2c3 {
 clock-frequency = &amp;lt;100000&amp;gt;;
 pinctrl-names = "default";
 pinctrl-0 = &amp;lt;&amp;amp;pinctrl_i2c3&amp;gt;;
 status = "okay";

 wm8960:codec@1a {
 compatible = "wlf,wm8960";
 reg = &amp;lt;0x1a&amp;gt;;
 clocks = &amp;lt;&amp;amp;clks IMX6SX_CLK_SSI1_IPG&amp;gt;,
 &amp;lt;&amp;amp;clks IMX6SX_CLK_SSI1&amp;gt;;
 clock-names = "ipg", "mclk";
 wlf,shared-lrclk;
 };
};
&lt;PRE style="background-color: #ffffff; color: #000000; font-family: 'DejaVu Sans Mono'; font-size: 9.0pt;"&gt;&amp;amp;ssi1{
&amp;nbsp;&amp;nbsp;&amp;nbsp; fsl,mode = "i2s-slave";
&amp;nbsp;&amp;nbsp;&amp;nbsp; assigned-clocks = &amp;lt;&amp;amp;clks IMX6SX_CLK_SSI1_SEL&amp;gt;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&amp;amp;clks IMX6SX_CLK_SSI1&amp;gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp; assigned-clock-rates = &amp;lt;0&amp;gt;, &amp;lt;12288000&amp;gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp; status = "okay";


};

&amp;amp;sai1{
&amp;nbsp;&amp;nbsp;&amp;nbsp; pinctrl-names = "default";
&amp;nbsp;&amp;nbsp; format&amp;nbsp; = "i2s";
&amp;nbsp;&amp;nbsp; status = "okay";
};

&amp;amp;audmux{
&amp;nbsp;&amp;nbsp;&amp;nbsp; pinctrl-names = "default";
&amp;nbsp;&amp;nbsp;&amp;nbsp; pinctrl-0 = &amp;lt;&amp;amp;AUDIO&amp;gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp; status = "okay";
};&lt;/PRE&gt;&lt;PRE style="background-color: #ffffff; color: #000000; font-family: 'DejaVu Sans Mono'; font-size: 9.0pt;"&gt;&amp;nbsp;&amp;nbsp; AUDIO: AUDIOgrp {

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fsl,pins = &amp;lt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX6SX_PAD_ENET1_MDIO__AUDMUX_MCLK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x000010B0
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX6SX_PAD_SD2_CLK__AUDMUX_AUD6_RXFS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x000010B0
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX6SX_PAD_SD2_DATA0__AUDMUX_AUD6_RXD&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x000010B0
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX6SX_PAD_SD2_DATA1__AUDMUX_AUD6_TXC&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x000010B0
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX6SX_PAD_SD2_DATA2__AUDMUX_AUD6_TXFS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x000010B0
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX6SX_PAD_SD2_DATA3__AUDMUX_AUD6_TXD&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x000010B0
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;/PRE&gt;&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;ALSA sees the codec with this configuration and I can playback audio files, but there is no sound and there are PCM write errors. My main concern is that I don't know how to connect the SAI to the MUX. I think I've got the SAI in the right mode for the communication with the wm8960.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Can somebody give me pointers on how to continue?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Best regards Jeroen van der Laan&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 23 Mar 2017 16:26:37 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/WM8960-on-audmux-interafce/m-p/612641#M92498</guid>
      <dc:creator>jeroenvanderlaa</dc:creator>
      <dc:date>2017-03-23T16:26:37Z</dc:date>
    </item>
    <item>
      <title>Re: WM8960 on audmux interafce</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/WM8960-on-audmux-interafce/m-p/612642#M92499</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Jeroen&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;AUDMUX can be used (connected) only with SSI, not SAI,&lt;/P&gt;&lt;P&gt;so should be &lt;CODE&gt;cpu-dai = &amp;lt;&amp;amp;ssi&amp;gt;;&lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;Please check Figure 17-1. AUDMUX Block Diagram i.MX6SX ReferenceManual&lt;/P&gt;&lt;P&gt;&lt;A class="jive-link-external-small" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fcache.freescale.com%2Ffiles%2F32bit%2Fdoc%2Fref_manual%2FIMX6SXRM.pdf" rel="nofollow" target="_blank"&gt;http://cache.freescale.com/files/32bit/doc/ref_manual/IMX6SXRM.pdf&lt;/A&gt;&lt;/P&gt;&lt;P&gt;and use wm8962 dts example from imx6sx-sdb.dtsi&lt;/P&gt;&lt;P&gt;&lt;A class="link-titled" href="http://git.freescale.com/git/cgit.cgi/imx/linux-imx.git/tree/arch/arm/boot/dts/imx6sx-sdb.dtsi?h=imx_4.1.15_2.0.0_ga&amp;amp;id=rel_imx_4.1.15_2.0.0_ga" title="http://git.freescale.com/git/cgit.cgi/imx/linux-imx.git/tree/arch/arm/boot/dts/imx6sx-sdb.dtsi?h=imx_4.1.15_2.0.0_ga&amp;amp;id=rel_imx_4.1.15_2.0.0_ga"&gt;linux-imx.git - i.MX Linux Kernel&lt;/A&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Best regards&lt;BR /&gt;igor&lt;BR /&gt;-----------------------------------------------------------------------------------------------------------------------&lt;BR /&gt;Note: If this post answers your question, please click the Correct Answer button. Thank you!&lt;BR /&gt;-----------------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 23 Mar 2017 23:41:24 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/WM8960-on-audmux-interafce/m-p/612642#M92499</guid>
      <dc:creator>igorpadykov</dc:creator>
      <dc:date>2017-03-23T23:41:24Z</dc:date>
    </item>
    <item>
      <title>Re: WM8960 on audmux interafce</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/WM8960-on-audmux-interafce/m-p/612643#M92500</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Igor,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;thanks for the reply and the pointer in the right direction. I am a bit further now but unfortunately I'm not there yet. The wm8960 seems to be written for a SAI context only. I have commented out the part where there is a check for an opened sai stream.&lt;/P&gt;&lt;BLOCKQUOTE class="jive_macro_quote jive-quote jive_text_macro"&gt;&lt;PRE style="background-color: #ffffff; color: #000000; font-family: 'DejaVu Sans Mono'; font-size: 9.0pt;"&gt;&lt;SPAN style="color: #000080; font-weight: bold;"&gt;static int &lt;/SPAN&gt;imx_hifi_startup(&lt;SPAN style="color: #000080; font-weight: bold;"&gt;struct &lt;/SPAN&gt;&lt;SPAN style="color: #008080;"&gt;snd_pcm_substream &lt;/SPAN&gt;*substream)
{
&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #000080; font-weight: bold;"&gt;struct &lt;/SPAN&gt;&lt;SPAN style="color: #008080;"&gt;snd_soc_pcm_runtime &lt;/SPAN&gt;*rtd = substream-&amp;gt;&lt;SPAN style="color: #660e7a; font-weight: bold; font-style: italic;"&gt;private_data&lt;/SPAN&gt;;
&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #000080; font-weight: bold;"&gt;struct &lt;/SPAN&gt;&lt;SPAN style="color: #008080;"&gt;snd_soc_dai &lt;/SPAN&gt;*cpu_dai = rtd-&amp;gt;&lt;SPAN style="color: #660e7a; font-weight: bold; font-style: italic;"&gt;cpu_dai&lt;/SPAN&gt;;
&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #000080; font-weight: bold;"&gt;struct &lt;/SPAN&gt;&lt;SPAN style="color: #008080;"&gt;snd_soc_card &lt;/SPAN&gt;*card = rtd-&amp;gt;&lt;SPAN style="color: #660e7a; font-weight: bold; font-style: italic;"&gt;card&lt;/SPAN&gt;;
&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #000080; font-weight: bold;"&gt;struct &lt;/SPAN&gt;&lt;SPAN style="color: #008080;"&gt;imx_wm8960_data &lt;/SPAN&gt;*data = snd_soc_card_get_drvdata(card);
&amp;nbsp;&amp;nbsp; bool tx = substream-&amp;gt;&lt;SPAN style="color: #660e7a; font-weight: bold; font-style: italic;"&gt;stream &lt;/SPAN&gt;== SNDRV_PCM_STREAM_PLAYBACK;
&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #000080; font-weight: bold;"&gt;struct &lt;/SPAN&gt;&lt;SPAN style="color: #008080;"&gt;fsl_sai &lt;/SPAN&gt;*sai = dev_get_drvdata(cpu_dai-&amp;gt;&lt;SPAN style="color: #660e7a; font-weight: bold; font-style: italic;"&gt;dev&lt;/SPAN&gt;);
&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #000080; font-weight: bold;"&gt;int &lt;/SPAN&gt;ret = &lt;SPAN style="color: #0000ff;"&gt;0&lt;/SPAN&gt;;

&lt;SPAN style="color: #808080; font-style: italic;"&gt;/*
&lt;/SPAN&gt;&lt;SPAN style="color: #808080; font-style: italic;"&gt;&amp;nbsp;&amp;nbsp; data-&amp;gt;is_stream_opened[tx] = true;
&lt;/SPAN&gt;&lt;SPAN style="color: #808080; font-style: italic;"&gt;&amp;nbsp;&amp;nbsp; if (data-&amp;gt;is_stream_opened[tx] != sai-&amp;gt;is_stream_opened[tx] ||
&lt;/SPAN&gt;&lt;SPAN style="color: #808080; font-style: italic;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; data-&amp;gt;is_stream_opened[!tx] != sai-&amp;gt;is_stream_opened[!tx]) {
&lt;/SPAN&gt;&lt;SPAN style="color: #808080; font-style: italic;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; data-&amp;gt;is_stream_opened[tx] = false;
&lt;/SPAN&gt;&lt;SPAN style="color: #808080; font-style: italic;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return -EBUSY;
&lt;/SPAN&gt;&lt;SPAN style="color: #808080; font-style: italic;"&gt;&amp;nbsp;&amp;nbsp; }*/&lt;/SPAN&gt;&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;I have also needed to&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;When I leave this in I'm getting busy (-16) errors for playback.&lt;/P&gt;&lt;P&gt;Now I'm still getting IO errors on the default PCM with aplay with this check commented out. It seems to me that there is something wrong with the SSI interafce but I haven't found out what.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I'm now looking at the following driver for an SSI&amp;nbsp; interface but it's quite hard to port to 4.1.15:&lt;/P&gt;&lt;P&gt;&lt;A href="https://community.nxp.com/docs/DOC-106295" rel="nofollow noopener noreferrer" target="_blank"&gt;https://community.nxp.com/docs/DOC-106295&lt;/A&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Any suggestions are still very welcome.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Best regards&lt;/P&gt;&lt;P&gt;Jeroen&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 24 Mar 2017 15:53:48 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/WM8960-on-audmux-interafce/m-p/612643#M92500</guid>
      <dc:creator>jeroenvanderlaa</dc:creator>
      <dc:date>2017-03-24T15:53:48Z</dc:date>
    </item>
  </channel>
</rss>

