<?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>i.MX ProcessorsのトピックRe: i.MX8QXP: SAI MCLK frequency</title>
    <link>https://community.nxp.com/t5/i-MX-Processors/i-MX8QXP-SAI-MCLK-frequency/m-p/1097082#M160626</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;refer to the dts file, current bsp use WM8960 with sai1, if you use sai0, did you set register like SAI1?&lt;/P&gt;&lt;PRE&gt;&lt;PRE&gt;pinctrl_sai1: sai1grp {    fsl,pins = &amp;lt;     SC_P_SAI1_RXD_ADMA_SAI1_RXD 0x06000040     SC_P_SAI1_RXC_ADMA_SAI1_TXC 0x06000040     SC_P_SAI1_RXFS_ADMA_SAI1_TXFS 0x06000040     SC_P_SPI0_CS1_ADMA_SAI1_TXD 0x06000060     SC_P_SPI2_CS0_LSIO_GPIO1_IO00 0x06000040    &amp;gt;;&lt;/PRE&gt;
and refer to the dts file,the clock rate is：
&lt;PRE&gt;&lt;PRE&gt;&lt;PRE&gt;&lt;PRE&gt;&lt;PRE&gt;&lt;PRE&gt;&amp;amp;sai1 {  assigned-clocks = &amp;lt;&amp;amp;clk IMX8QXP_AUD_PLL0_DIV&amp;gt;,    &amp;lt;&amp;amp;clk IMX8QXP_AUD_ACM_AUD_PLL_CLK0_DIV&amp;gt;,    &amp;lt;&amp;amp;clk IMX8QXP_AUD_ACM_AUD_REC_CLK0_DIV&amp;gt;,    &amp;lt;&amp;amp;clk IMX8QXP_AUD_SAI_1_MCLK&amp;gt;;  assigned-clock-rates = &amp;lt;786432000&amp;gt;, &amp;lt;49152000&amp;gt;, &amp;lt;12288000&amp;gt;, &amp;lt;49152000&amp;gt;;  pinctrl-names = "default";  pinctrl-0 = &amp;lt;&amp;amp;pinctrl_sai1&amp;gt;;  status = "okay"; };&lt;/PRE&gt;
maybe you can refer to it&lt;/PRE&gt;&lt;/PRE&gt;&lt;/PRE&gt;

&lt;/PRE&gt;&lt;/PRE&gt;&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 20 May 2020 01:43:07 GMT</pubDate>
    <dc:creator>joanxie</dc:creator>
    <dc:date>2020-05-20T01:43:07Z</dc:date>
    <item>
      <title>i.MX8QXP: SAI MCLK frequency</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/i-MX8QXP-SAI-MCLK-frequency/m-p/1097081#M160625</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;I'm working on a custom i.MX8QXP board with&amp;nbsp;TLV320AIC3105 audio codec connected to SAI0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I'm trying to use the codec simple-audio-card but I've run into some issues.&lt;/P&gt;&lt;P&gt;When booting Linux, I get this:&lt;/P&gt;&lt;BLOCKQUOTE class="jive_macro_quote jive-quote jive_text_macro"&gt;&lt;P&gt;[ 2.678025] tlv320aic31xx-codec 16-0018: aic31xx_set_dai_sysclk: Unsupported frequency 12288000&lt;BR /&gt;[ 2.686769] tlv320aic31xx-codec 16-0018: simple-card: set_sysclk error&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;How can I change the frequency from 12.288MHz to say 19.2 MHz?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have the following setup in my device tree:&lt;/P&gt;&lt;PRE class="language-c line-numbers"&gt;&lt;CODE&gt;sound &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
   compatible &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"simple-audio-card"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
   simple&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;audio&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;card&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;name &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"TLV320AIC3105"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
   simple&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;audio&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;card&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;format &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"i2s"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
   simple&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;audio&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;card&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;bitclock&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;master &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt;dailink_master&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
   simple&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;audio&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;card&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;frame&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;master &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt;dailink_master&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
   simple&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;audio&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;card&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;widgets &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; 
      &lt;SPAN class="string token"&gt;"Line"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"Line In"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;
      &lt;SPAN class="string token"&gt;"Line"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"Line Out"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;

   simple&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;audio&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;card&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;routing &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; 
      &lt;SPAN class="string token"&gt;"Line Out"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"HPL"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;
      &lt;SPAN class="string token"&gt;"Line Out"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"HPR"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;
      &lt;SPAN class="string token"&gt;"Line In"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"MIC1LP"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;
      &lt;SPAN class="string token"&gt;"Line In"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"MIC1RP"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;

   simple&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;audio&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;card&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;cpu &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
      sound&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;dai &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt;sai0&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
   &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;

   dailink_master&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; simple&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;audio&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;card&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;codec &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
      sound&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;dai &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt;tlv320aic31xx&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
   &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;



tlv320aic31xx&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; tlv320aic31xx@&lt;SPAN class="number token"&gt;18&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
   compatible &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"ti,tlv320aic310x"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
   reg &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;0x18&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
   reset&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;gpios &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt;lsio_gpio1 &lt;SPAN class="number token"&gt;12&lt;/SPAN&gt; GPIO_ACTIVE_LOW&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;

   power&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;domains &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt;pd IMX_SC_R_MCLK_OUT_0&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
   clocks &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt;mclkout0_lpcg &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
   assigned&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;clocks &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt;clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_PLL&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;
      &lt;SPAN class="operator token"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt;clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_SLV_BUS&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;
      &lt;SPAN class="operator token"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt;clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_MST_BUS&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;
      &lt;SPAN class="operator token"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt;mclkout0_lpcg &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
   assigned&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;clock&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;rates &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;786432000&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;49152000&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;12288000&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;19200000&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;   &lt;SPAN class="comment token"&gt;// Last element here was originally 1228800, my change made no difference&lt;/SPAN&gt;
   HPVDD&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;supply &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt;reg_audio_3v3&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
   SPRVDD&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;supply &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt;reg_audio_3v3&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
   SPLVDD&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;supply &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt;reg_audio_3v3&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
   AVDD&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;supply &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt;reg_audio_3v3&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
   IOVDD&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;supply &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt;reg_audio_1v8&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
   DVDD&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;supply &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt;reg_audio_1v8&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;



&lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt;sai0 &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
   assigned&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;clocks &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt;clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_PLL&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;
   &lt;SPAN class="operator token"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt;clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_SLV_BUS&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;
   &lt;SPAN class="operator token"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt;clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_MST_BUS&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;
   &lt;SPAN class="operator token"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt;sai0_lpcg &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
   assigned&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;clock&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;rates &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;786432000&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;49152000&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;12288000&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;19200000&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;// Last element here was originally 1228800, my change made no difference&lt;/SPAN&gt;
   pinctrl&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;names &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"default"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
   pinctrl&lt;SPAN class="number token"&gt;-0&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;amp;&lt;/SPAN&gt;pinctrl_sai0&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
   &lt;SPAN class="property macro token"&gt;#sound-dai-cells = &amp;lt;0&amp;gt;;&lt;/SPAN&gt;

   status &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"okay"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 19 May 2020 07:51:29 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/i-MX8QXP-SAI-MCLK-frequency/m-p/1097081#M160625</guid>
      <dc:creator>jran</dc:creator>
      <dc:date>2020-05-19T07:51:29Z</dc:date>
    </item>
    <item>
      <title>Re: i.MX8QXP: SAI MCLK frequency</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/i-MX8QXP-SAI-MCLK-frequency/m-p/1097082#M160626</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;refer to the dts file, current bsp use WM8960 with sai1, if you use sai0, did you set register like SAI1?&lt;/P&gt;&lt;PRE&gt;&lt;PRE&gt;pinctrl_sai1: sai1grp {    fsl,pins = &amp;lt;     SC_P_SAI1_RXD_ADMA_SAI1_RXD 0x06000040     SC_P_SAI1_RXC_ADMA_SAI1_TXC 0x06000040     SC_P_SAI1_RXFS_ADMA_SAI1_TXFS 0x06000040     SC_P_SPI0_CS1_ADMA_SAI1_TXD 0x06000060     SC_P_SPI2_CS0_LSIO_GPIO1_IO00 0x06000040    &amp;gt;;&lt;/PRE&gt;
and refer to the dts file,the clock rate is：
&lt;PRE&gt;&lt;PRE&gt;&lt;PRE&gt;&lt;PRE&gt;&lt;PRE&gt;&lt;PRE&gt;&amp;amp;sai1 {  assigned-clocks = &amp;lt;&amp;amp;clk IMX8QXP_AUD_PLL0_DIV&amp;gt;,    &amp;lt;&amp;amp;clk IMX8QXP_AUD_ACM_AUD_PLL_CLK0_DIV&amp;gt;,    &amp;lt;&amp;amp;clk IMX8QXP_AUD_ACM_AUD_REC_CLK0_DIV&amp;gt;,    &amp;lt;&amp;amp;clk IMX8QXP_AUD_SAI_1_MCLK&amp;gt;;  assigned-clock-rates = &amp;lt;786432000&amp;gt;, &amp;lt;49152000&amp;gt;, &amp;lt;12288000&amp;gt;, &amp;lt;49152000&amp;gt;;  pinctrl-names = "default";  pinctrl-0 = &amp;lt;&amp;amp;pinctrl_sai1&amp;gt;;  status = "okay"; };&lt;/PRE&gt;
maybe you can refer to it&lt;/PRE&gt;&lt;/PRE&gt;&lt;/PRE&gt;

&lt;/PRE&gt;&lt;/PRE&gt;&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 20 May 2020 01:43:07 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/i-MX8QXP-SAI-MCLK-frequency/m-p/1097082#M160626</guid>
      <dc:creator>joanxie</dc:creator>
      <dc:date>2020-05-20T01:43:07Z</dc:date>
    </item>
    <item>
      <title>Re: i.MX8QXP: SAI MCLK frequency</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/i-MX8QXP-SAI-MCLK-frequency/m-p/1097083#M160627</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I have setup the pins for SAI0:&lt;/P&gt;&lt;PRE class="language-c line-numbers"&gt;&lt;CODE&gt;pinctrl_sai0&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; sai0grp &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
 fsl&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;pins &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;lt;&lt;/SPAN&gt;
  IMX8QXP_SPI0_CS0_ADMA_SAI0_RXD  &lt;SPAN class="number token"&gt;0x06000040&lt;/SPAN&gt;
  IMX8QXP_SPI0_SCK_ADMA_SAI0_TXC  &lt;SPAN class="number token"&gt;0x06000040&lt;/SPAN&gt;
  IMX8QXP_SPI0_SDI_ADMA_SAI0_TXD  &lt;SPAN class="number token"&gt;0x06000040&lt;/SPAN&gt;
  IMX8QXP_SPI0_SDO_ADMA_SAI0_TXFS  &lt;SPAN class="number token"&gt;0x06000040&lt;/SPAN&gt;
  IMX8QXP_ADC_IN2_LSIO_GPIO1_IO12  &lt;SPAN class="number token"&gt;0xc600004c&lt;/SPAN&gt;
 &lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I managed to change the clock rate&amp;nbsp;to 12 MHz by also changing the third "assigned-clock-rates":&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE class="language-c line-numbers"&gt;&lt;CODE&gt;assigned&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;clock&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;rates &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;786432000&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;49152000&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;12000000&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;12000000&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;Now there are no errors written out during boot and the codec is registered as an ALSA device, that's a good start..&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;But there is no clock outputted on ADMA_ACM_MCLK_OUT0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I don't quite understand where the MCLK is actually enabled in the BSP?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 20 May 2020 05:33:27 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/i-MX8QXP-SAI-MCLK-frequency/m-p/1097083#M160627</guid>
      <dc:creator>jran</dc:creator>
      <dc:date>2020-05-20T05:33:27Z</dc:date>
    </item>
    <item>
      <title>Re: i.MX8QXP: SAI MCLK frequency</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/i-MX8QXP-SAI-MCLK-frequency/m-p/1097084#M160628</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Finally got this all working.&lt;/P&gt;&lt;P&gt;For anyone else finding this thread;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Turns out, the MCLK&amp;nbsp;is enabled from W8960 codec driver:&lt;/P&gt;&lt;PRE class="language-c line-numbers"&gt;&lt;CODE&gt;   &lt;SPAN class="keyword token"&gt;if&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;!&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;IS_ERR&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;wm8960&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;mclk&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
    ret &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;clk_prepare_enable&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;wm8960&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;mclk&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
    &lt;SPAN class="keyword token"&gt;if&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;ret&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
     &lt;SPAN class="token function"&gt;dev_err&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;component&lt;SPAN class="operator token"&gt;-&amp;gt;&lt;/SPAN&gt;dev&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;
      &lt;SPAN class="string token"&gt;"Failed to enable MCLK: %d\n"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;
      ret&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
     &lt;SPAN class="keyword token"&gt;return&lt;/SPAN&gt; ret&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
    &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
   &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I'm sure the "right"&amp;nbsp;place for doing such things would be in the ASoC driver but anyways. I didn't bother writing my own ASoC driver (using simple-card) so I just patched the TI driver instead, adding the above code (plus code for extracting mclk from device tree etc, also found in w8960.c).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Then the next major issue for me was that I tried using the tlv320aic31xx driver for tlv320aic3105 (one would think this is right based on&amp;nbsp;its&amp;nbsp;name...) but turns out this was incorrect. Tlv320aic31xx does not support 3105, there are major differences between 3105 and 3100, 3101, 3110 etc that is supported by 31xx driver.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The best driver to use for tlv320aic3105 is &lt;STRONG&gt;tlv320aic3x&lt;/STRONG&gt;!&lt;/P&gt;&lt;P&gt;Although, the 3x driver needed some patch work in order to fully support the 3105 as well. But it was way closer, and did at least bring the 3105 codec into some action.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 28 May 2020 06:13:51 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/i-MX8QXP-SAI-MCLK-frequency/m-p/1097084#M160628</guid>
      <dc:creator>jran</dc:creator>
      <dc:date>2020-05-28T06:13:51Z</dc:date>
    </item>
  </channel>
</rss>

