<?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: [imx8mp-evk] About micfil(PDM mic) clock algorithm &amp;amp; settings</title>
    <link>https://community.nxp.com/t5/i-MX-Processors/imx8mp-evk-About-micfil-PDM-mic-clock-algorithm-amp-settings/m-p/1435318#M188720</link>
    <description>&lt;P&gt;First of all, thank you for the detail information. &lt;LI-EMOJI id="lia_slightly-smiling-face" title=":slightly_smiling_face:"&gt;&lt;/LI-EMOJI&gt;&lt;/P&gt;&lt;P&gt;I have one more question.&lt;/P&gt;&lt;P&gt;=============================================================&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;So, translated to the nomenclature on RM for the output rate = 48KHz example:&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;MICFIL_CLK_ROOT = mclk_rate = = 24576000&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;PDM_CLK = mclk_rate/ clk_div = 6144000&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&amp;nbsp;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;So actual clk on the pdm microphone will be 6.1 MHz for &lt;FONT color="#0000FF"&gt;High Quality&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;=============================================================&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;When I check "&lt;/SPAN&gt;&lt;SPAN&gt;amixer -c 1 c&lt;/SPAN&gt;&lt;SPAN&gt;g&lt;/SPAN&gt;&lt;SPAN&gt;et name='MICFIL Quality Select'"&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ESK_0-1648539219709.png" style="width: 544px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/175114iEC3BDDC258132BD4/image-dimensions/544x169?v=v2" width="544" height="169" role="button" title="ESK_0-1648539219709.png" alt="ESK_0-1648539219709.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;I already know, the Mic-fil set 'High Quality' using register set.&lt;/P&gt;&lt;P&gt;But amixer set values=6 'VLow0' as a default. Is it need to modify?&lt;/P&gt;&lt;P class=""&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Tue, 29 Mar 2022 07:38:56 GMT</pubDate>
    <dc:creator>ESK</dc:creator>
    <dc:date>2022-03-29T07:38:56Z</dc:date>
    <item>
      <title>[imx8mp-evk] About micfil(PDM mic) clock algorithm &amp; settings</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/imx8mp-evk-About-micfil-PDM-mic-clock-algorithm-amp-settings/m-p/1422707#M187759</link>
      <description>&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Dear NXP team,&lt;/P&gt;&lt;P&gt;Please check below,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; imx8mp-evk + PDM mic(SPG08P4HM4H-1 * 2ea)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; 1. When I check other case of PDM mic on NXP community &amp;amp; NXP's mic board, PDM_CLK 1MHz is ok.&amp;nbsp;But 'SPG08P4HM4H' needs minimum 1.2MHz.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ESK_0-1646311245806.png" style="width: 566px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/172401i0AE34383140BD823/image-dimensions/566x220?v=v2" width="566" height="220" role="button" title="ESK_0-1646311245806.png" alt="ESK_0-1646311245806.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; So, I want to change PDM_CLK, But I can't understand the algorithm of&amp;nbsp;assigned-clock-rates = &amp;lt;196608000&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ESK_1-1646311599616.png" style="width: 492px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/172404iBA5818DBBFC242F4/image-dimensions/492x150?v=v2" width="492" height="150" role="button" title="ESK_1-1646311599616.png" alt="ESK_1-1646311599616.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; Could you explain the calculate algorithm using example real-use-case?&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;196608000 means?&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;MICFIL_CLK_ROOT = ? (code location)&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;PDM_CLK = ? (code location)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; 2. When I use memtool for reading PDM register, I does not work. (bus error? sorry, I have no captures now)&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; command : memtool -32 0x30ca0000 1&amp;nbsp;&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; How I read the PDM register in this case?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Environment)&lt;/P&gt;&lt;P&gt;HW :&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ESK_2-1646312584282.png" style="width: 610px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/172410i60BBBD708FA24ACA/image-dimensions/610x182?v=v2" width="610" height="182" role="button" title="ESK_2-1646312584282.png" alt="ESK_2-1646312584282.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;SW : using&amp;nbsp;imx8mp-evk.dts (imx_5.10.72-2.2.0)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;BR,&lt;/P&gt;&lt;P&gt;Thanks.&lt;/P&gt;</description>
      <pubDate>Thu, 03 Mar 2022 23:16:05 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/imx8mp-evk-About-micfil-PDM-mic-clock-algorithm-amp-settings/m-p/1422707#M187759</guid>
      <dc:creator>ESK</dc:creator>
      <dc:date>2022-03-03T23:16:05Z</dc:date>
    </item>
    <item>
      <title>Re: [imx8mp-evk] About micfil(PDM mic) clock algorithm &amp; settings</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/imx8mp-evk-About-micfil-PDM-mic-clock-algorithm-amp-settings/m-p/1435288#M188716</link>
      <description>&lt;DIV id="bodyDisplay_0" class="lia-message-body lia-component-message-view-widget-body lia-component-body-signature-highlight-escalation lia-component-message-view-widget-body-signature-highlight-escalation"&gt;
&lt;DIV class="lia-message-body-content"&gt;
&lt;P class="md-end-block md-p md-focus"&gt;&lt;SPAN class="md-plain"&gt;The assigned-clocks -rate property on the mifcil node set the initial rate of the corresponding clk under the assigned-clocks. This is the IMX8MM_CLK_PDM is set to 196608000Hz at boot up.&lt;/SPAN&gt;&lt;/P&gt;
&lt;PRE class="md-fences md-end-block ty-contain-cm modeLoaded" lang="" spellcheck="false"&gt;&lt;SPAN&gt;&amp;amp;micfil {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;  pinctrl-names = "default";&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;  pinctrl-0 = &amp;lt;&amp;amp;pinctrl_pdm&amp;gt;;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;  &lt;STRONG&gt;assigned-clocks = &amp;lt;&amp;amp;clk IMX8MM_CLK_PDM&amp;gt;;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;  assigned-clock-parents = &amp;lt;&amp;amp;clk IMX8MM_AUDIO_PLL1_OUT&amp;gt;;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;STRONG&gt; assigned-clock-rates = &amp;lt;196608000&amp;gt;;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;  status = "okay";&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;};&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;P class="md-end-block md-p"&gt;&lt;SPAN class="md-plain"&gt;If you dump the clk_summary just after booting linux &lt;/SPAN&gt;&lt;/P&gt;
&lt;PRE class="md-fences md-end-block ty-contain-cm modeLoaded" lang="" spellcheck="false"&gt;&lt;SPAN&gt;cat /sys/kernel/debug/clk/clk_summary&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;PRE class="md-fences md-end-block ty-contain-cm modeLoaded" lang="" spellcheck="false"&gt;&lt;SPAN&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;nbsp; &amp;nbsp; enable  prepare  protect &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  duty &amp;nbsp; &amp;nbsp; &amp;nbsp;  clock &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; count &amp;nbsp;  count &amp;nbsp;  count &amp;nbsp;  rate &amp;nbsp; accuracy phase  cycle&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;----------------------------------------------------------------------------------------&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;audio_pll1_ref_sel &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  0 &amp;nbsp; &amp;nbsp; &amp;nbsp; 0 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  0 &amp;nbsp;  24000000 &amp;nbsp; 0 &amp;nbsp; &amp;nbsp; 0 &amp;nbsp; &amp;nbsp; 50000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &amp;nbsp; audio_pll1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0 &amp;nbsp; &amp;nbsp; &amp;nbsp; 0 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  0 &amp;nbsp; 393216000 &amp;nbsp; 0 &amp;nbsp; &amp;nbsp; 0 &amp;nbsp; &amp;nbsp; 50000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &amp;nbsp; &amp;nbsp;  audio_pll1_bypass &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0 &amp;nbsp; &amp;nbsp; &amp;nbsp; 0 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  0 &amp;nbsp; 393216000 &amp;nbsp; 0 &amp;nbsp; &amp;nbsp; 0 &amp;nbsp; &amp;nbsp; 50000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; audio_pll1_out &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0 &amp;nbsp; &amp;nbsp; &amp;nbsp; 0 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  0 &amp;nbsp; 393216000 &amp;nbsp; 0 &amp;nbsp; &amp;nbsp; 0 &amp;nbsp; &amp;nbsp; 50000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  pdm &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0 &amp;nbsp; &amp;nbsp; &amp;nbsp; 0 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  0 &amp;nbsp; 196608000 &amp;nbsp; 0 &amp;nbsp; &amp;nbsp; 0 &amp;nbsp; &amp;nbsp; 50000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; pdm_root &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0 &amp;nbsp; &amp;nbsp; &amp;nbsp; 0 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  0 &amp;nbsp; 196608000 &amp;nbsp; 0 &amp;nbsp; &amp;nbsp; 0 &amp;nbsp; &amp;nbsp; 50000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  pdm_sel &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0 &amp;nbsp; &amp;nbsp; &amp;nbsp; 0 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  0 &amp;nbsp; 196608000 &amp;nbsp; 0 &amp;nbsp; &amp;nbsp; 0 &amp;nbsp; &amp;nbsp; 50000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;STRONG&gt;pdm_root_clk&lt;/STRONG&gt; 0 &amp;nbsp; &amp;nbsp; &amp;nbsp; 0 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  0 &amp;nbsp; &lt;STRONG&gt;196608000&lt;/STRONG&gt; &amp;nbsp; 0 &amp;nbsp; &amp;nbsp; 0 &amp;nbsp; &amp;nbsp; 50000&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;P class="md-end-block md-p"&gt;&lt;SPAN class="md-plain"&gt;As you can see the pdm_root_clk (IMX8MM_CLK_PDM) is set at 196608000Hz&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class="md-end-block md-p"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="md-end-block md-p"&gt;&lt;SPAN class="md-plain"&gt;However, once you record something using arecord (The micfil driver is exercised)&lt;/SPAN&gt;&lt;/P&gt;
&lt;PRE class="md-fences md-end-block ty-contain-cm modeLoaded" lang="" spellcheck="false"&gt;&lt;SPAN&gt;arecord -Dhw:1,0 -fS32_LE -r48000 -c4 test.wav &lt;/SPAN&gt;&lt;/PRE&gt;
&lt;P class="md-end-block md-p"&gt;&lt;SPAN class="md-plain"&gt;You will notice the pdm_root_clk changes its value to &lt;STRONG&gt;24576000 Hz&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;PRE class="md-fences md-end-block ty-contain-cm modeLoaded" lang="" spellcheck="false"&gt;&lt;SPAN&gt;cat /sys/kernel/debug/clk/clk_summary&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;PRE class="md-fences md-end-block ty-contain-cm modeLoaded" lang="" spellcheck="false"&gt;&lt;SPAN&gt;audio_pll1_ref_sel &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1 &amp;nbsp; &amp;nbsp;  1 &amp;nbsp; &amp;nbsp; &amp;nbsp;  0 &amp;nbsp;  24000000 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  0 &amp;nbsp; &amp;nbsp; 0  50000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &amp;nbsp;  audio_pll1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1 &amp;nbsp; &amp;nbsp;  1 &amp;nbsp; &amp;nbsp; &amp;nbsp;  0 &amp;nbsp; 393216000 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  0 &amp;nbsp; &amp;nbsp; 0  50000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; audio_pll1_bypass &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1 &amp;nbsp; &amp;nbsp;  1 &amp;nbsp; &amp;nbsp; &amp;nbsp;  0 &amp;nbsp; 393216000 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  0 &amp;nbsp; &amp;nbsp; 0  50000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  audio_pll1_out &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1 &amp;nbsp; &amp;nbsp;  1 &amp;nbsp; &amp;nbsp; &amp;nbsp;  0 &amp;nbsp; 393216000 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  0 &amp;nbsp; &amp;nbsp; 0  50000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; pdm &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1 &amp;nbsp; &amp;nbsp;  1 &amp;nbsp; &amp;nbsp; &amp;nbsp;  0 &amp;nbsp;  24576000 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  0 &amp;nbsp; &amp;nbsp; 0  50000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; pdm_root &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  1 &amp;nbsp; &amp;nbsp;  1 &amp;nbsp; &amp;nbsp; &amp;nbsp;  0 &amp;nbsp;  24576000 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  0 &amp;nbsp; &amp;nbsp; 0  50000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  pdm_sel &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  1 &amp;nbsp; &amp;nbsp;  1 &amp;nbsp; &amp;nbsp; &amp;nbsp;  0 &amp;nbsp;  24576000 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  0 &amp;nbsp; &amp;nbsp; 0  50000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;STRONG&gt;pdm_root_clk&lt;/STRONG&gt; &amp;nbsp;  1 &amp;nbsp; &amp;nbsp;  1 &amp;nbsp; &amp;nbsp; &amp;nbsp;  0 &amp;nbsp;  &lt;STRONG&gt;24576000&lt;/STRONG&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  0 &amp;nbsp; &amp;nbsp; 0  50000&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;P class="md-end-block md-p"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="md-end-block md-p"&gt;&lt;SPAN class="md-plain"&gt;This is because the output rate 48KHz is requested by the application. The fsl_micfil_set_mclk_rate function at the kernel driver will be called with parameter freq = 48000 and the mclk (pdm_root_clk) will be set the accordingly&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class="md-end-block md-p"&gt;&lt;SPAN class="md-plain"&gt;If freq is interger multiple of 8K then &lt;STRONG&gt;pdm_root_clk = 24576000&lt;/STRONG&gt; (CLK_8K_FREQ)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class="md-end-block md-p"&gt;&lt;SPAN class="md-plain"&gt;if freq NOT integer multiple of 8K then use 22579200 (CLK_11K_FREQ)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class="md-end-block md-p"&gt;&lt;SPAN class="md-plain"&gt;For the freq = 48Khz &lt;/SPAN&gt;&lt;SPAN class=""&gt;&lt;STRONG&gt;&lt;SPAN class="md-plain"&gt;mclk = 24576000&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class="md-end-block md-p"&gt;&lt;SPAN class="md-plain"&gt;This can be seen at the &lt;STRONG&gt;sound/soc/fsl/fsl_micfil.c file &lt;/STRONG&gt;on kernel driver&lt;/SPAN&gt;&lt;/P&gt;
&lt;PRE class="md-fences md-end-block ty-contain-cm modeLoaded" lang="c" spellcheck="false"&gt;&lt;SPAN&gt;&lt;SPAN class="cm-meta"&gt;#define &lt;STRONG&gt;CLK_8K_FREQ &amp;nbsp;  24576000&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&lt;SPAN class="cm-meta"&gt;#define CLK_11K_FREQ &amp;nbsp; 22579200&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;​&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&lt;SPAN class="cm-keyword"&gt;static&lt;/SPAN&gt; &lt;SPAN class="cm-variable-3"&gt;int&lt;/SPAN&gt; &lt;SPAN class="cm-def"&gt;fsl_micfil_set_mclk_rate&lt;/SPAN&gt;(&lt;SPAN class="cm-keyword"&gt;struct&lt;/SPAN&gt; &lt;SPAN class="cm-def"&gt;fsl_micfil&lt;/SPAN&gt; &lt;SPAN class="cm-operator"&gt;*&lt;/SPAN&gt;&lt;SPAN class="cm-variable"&gt;micfil&lt;/SPAN&gt;, &lt;SPAN class="cm-variable-3"&gt;int&lt;/SPAN&gt; &lt;SPAN class="cm-variable"&gt;clk_id&lt;/SPAN&gt;,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&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;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;SPAN class="cm-variable-3"&gt;unsigned&lt;/SPAN&gt; &lt;SPAN class="cm-variable-3"&gt;int&lt;/SPAN&gt; &lt;SPAN class="cm-variable"&gt;freq&lt;/SPAN&gt;)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;  . . .&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;SPAN class="cm-variable"&gt;clk_disable_unprepare&lt;/SPAN&gt;&lt;STRONG&gt;(&lt;SPAN class="cm-variable"&gt;micfil&lt;/SPAN&gt;&lt;SPAN class="cm-operator"&gt;-&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="cm-variable"&gt;mclk&lt;/SPAN&gt;);&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;  . . .​&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;STRONG&gt;&lt;SPAN class="cm-variable"&gt;clk_rate&lt;/SPAN&gt; &lt;SPAN class="cm-operator"&gt;=&lt;/SPAN&gt; &lt;SPAN class="cm-variable"&gt;freq&lt;/SPAN&gt; &lt;SPAN class="cm-operator"&gt;%&lt;/SPAN&gt; &lt;SPAN class="cm-number"&gt;8000&lt;/SPAN&gt; &lt;SPAN class="cm-operator"&gt;==&lt;/SPAN&gt; &lt;SPAN class="cm-number"&gt;0&lt;/SPAN&gt; &lt;SPAN class="cm-operator"&gt;?&lt;/SPAN&gt; &lt;SPAN class="cm-variable"&gt;CLK_8K_FREQ&lt;/SPAN&gt; : &lt;SPAN class="cm-variable"&gt;CLK_11K_FREQ&lt;/SPAN&gt;;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;SPAN class="cm-variable"&gt;ret&lt;/SPAN&gt; &lt;SPAN class="cm-operator"&gt;=&lt;/SPAN&gt; &lt;STRONG&gt;&lt;SPAN class="cm-variable"&gt;clk_set_rate&lt;/SPAN&gt;(&lt;SPAN class="cm-variable"&gt;micfil&lt;/SPAN&gt;&lt;SPAN class="cm-operator"&gt;-&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="cm-variable"&gt;mclk&lt;/SPAN&gt;, &lt;SPAN class="cm-variable"&gt;clk_rate&lt;/SPAN&gt;);&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &amp;nbsp;. . . &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;SPAN class="cm-variable"&gt;clk_prepare_enable&lt;/SPAN&gt;(&lt;SPAN class="cm-variable"&gt;micfil&lt;/SPAN&gt;&lt;SPAN class="cm-operator"&gt;-&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="cm-variable"&gt;mclk&lt;/SPAN&gt;);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &amp;nbsp;. . .&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &amp;nbsp;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;  }&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;P class="md-end-block md-p"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="md-end-block md-p"&gt;&lt;SPAN class="md-plain"&gt;The mclk is not the actual bitclk. This is computed based from the following table on the RM&lt;/SPAN&gt;&lt;/P&gt;
&lt;DIV id="tinyMceEditorjuangutierrez_0" class="mceNonEditable lia-copypaste-placeholder"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jimmychan_0-1648538031886.png" style="width: 400px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/175109i650E8D76430042E9/image-size/medium?v=v2&amp;amp;px=400" role="button" title="jimmychan_0-1648538031886.png" alt="jimmychan_0-1648538031886.png" /&gt;&lt;/span&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="md-end-block md-p"&gt;&lt;SPAN class="md-plain"&gt;which correspond to the calculations on the get_pdm_clk function (plus the k factor)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class="md-end-block md-p"&gt;&lt;SPAN class="md-plain"&gt;where rate = output rate 48KHz and cicosr = osr =16&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class="md-end-block md-p"&gt;&lt;SPAN class="md-plain"&gt;For High quality -&amp;gt; &lt;/SPAN&gt;&lt;SPAN class=""&gt;&lt;STRONG&gt;&lt;SPAN class="md-plain"&gt;bclk&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN class="md-plain"&gt; = 48KHz * 8 * 16 /2 = &lt;/SPAN&gt;&lt;SPAN class=""&gt;&lt;STRONG&gt;&lt;SPAN class="md-plain"&gt;3072000 Hz&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;PRE class="md-fences md-end-block ty-contain-cm modeLoaded" lang="c" spellcheck="false"&gt;&lt;SPAN&gt;&lt;SPAN class="cm-keyword"&gt;static&lt;/SPAN&gt; &lt;SPAN class="cm-variable"&gt;inline&lt;/SPAN&gt; &lt;SPAN class="cm-variable-3"&gt;int&lt;/SPAN&gt; &lt;SPAN class="cm-def"&gt;get_pdm_clk&lt;/SPAN&gt;(&lt;SPAN class="cm-keyword"&gt;struct&lt;/SPAN&gt; &lt;SPAN class="cm-def"&gt;fsl_micfil&lt;/SPAN&gt; &lt;SPAN class="cm-operator"&gt;*&lt;/SPAN&gt;&lt;SPAN class="cm-variable"&gt;micfil&lt;/SPAN&gt;,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&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;nbsp; &amp;nbsp;&lt;SPAN class="cm-variable-3"&gt;unsigned&lt;/SPAN&gt; &lt;SPAN class="cm-variable-3"&gt;int&lt;/SPAN&gt; &lt;SPAN class="cm-variable"&gt;rate&lt;/SPAN&gt;)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &amp;nbsp; . . .&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;​&lt;/SPAN&gt;&lt;SPAN&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;SPAN class="cm-keyword"&gt;switch&lt;/SPAN&gt; (&lt;SPAN class="cm-variable"&gt;qsel&lt;/SPAN&gt;) {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;SPAN class="cm-keyword"&gt;case&lt;/SPAN&gt; &lt;SPAN class="cm-variable"&gt;MICFIL_HIGH_QUALITY&lt;/SPAN&gt;:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;SPAN class="cm-variable"&gt;bclk&lt;/SPAN&gt; &lt;SPAN class="cm-operator"&gt;=&lt;/SPAN&gt; &lt;SPAN class="cm-variable"&gt;rate&lt;/SPAN&gt; &lt;SPAN class="cm-operator"&gt;*&lt;/SPAN&gt; &lt;SPAN class="cm-number"&gt;8&lt;/SPAN&gt; &lt;SPAN class="cm-operator"&gt;*&lt;/SPAN&gt; &lt;SPAN class="cm-variable"&gt;osr&lt;/SPAN&gt; &lt;SPAN class="cm-operator"&gt;/&lt;/SPAN&gt; &lt;SPAN class="cm-number"&gt;2&lt;/SPAN&gt;; &lt;SPAN class="cm-comment"&gt;/* kfactor = 0.5 */&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;SPAN class="cm-keyword"&gt;break&lt;/SPAN&gt;;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;SPAN class="cm-keyword"&gt;case&lt;/SPAN&gt; &lt;SPAN class="cm-variable"&gt;MICFIL_MEDIUM_QUALITY&lt;/SPAN&gt;:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;SPAN class="cm-keyword"&gt;case&lt;/SPAN&gt; &lt;SPAN class="cm-variable"&gt;MICFIL_VLOW0_QUALITY&lt;/SPAN&gt;:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;SPAN class="cm-variable"&gt;bclk&lt;/SPAN&gt; &lt;SPAN class="cm-operator"&gt;=&lt;/SPAN&gt; &lt;SPAN class="cm-variable"&gt;rate&lt;/SPAN&gt; &lt;SPAN class="cm-operator"&gt;*&lt;/SPAN&gt; &lt;SPAN class="cm-number"&gt;4&lt;/SPAN&gt; &lt;SPAN class="cm-operator"&gt;*&lt;/SPAN&gt; &lt;SPAN class="cm-variable"&gt;osr&lt;/SPAN&gt; &lt;SPAN class="cm-operator"&gt;*&lt;/SPAN&gt; &lt;SPAN class="cm-number"&gt;1&lt;/SPAN&gt;; &lt;SPAN class="cm-comment"&gt;/* kfactor = 1 */&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;SPAN class="cm-keyword"&gt;break&lt;/SPAN&gt;;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;SPAN class="cm-keyword"&gt;case&lt;/SPAN&gt; &lt;SPAN class="cm-variable"&gt;MICFIL_LOW_QUALITY&lt;/SPAN&gt;:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;SPAN class="cm-keyword"&gt;case&lt;/SPAN&gt; &lt;SPAN class="cm-variable"&gt;MICFIL_VLOW1_QUALITY&lt;/SPAN&gt;:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;SPAN class="cm-variable"&gt;bclk&lt;/SPAN&gt; &lt;SPAN class="cm-operator"&gt;=&lt;/SPAN&gt; &lt;SPAN class="cm-variable"&gt;rate&lt;/SPAN&gt; &lt;SPAN class="cm-operator"&gt;*&lt;/SPAN&gt; &lt;SPAN class="cm-number"&gt;2&lt;/SPAN&gt; &lt;SPAN class="cm-operator"&gt;*&lt;/SPAN&gt; &lt;SPAN class="cm-variable"&gt;osr&lt;/SPAN&gt; &lt;SPAN class="cm-operator"&gt;*&lt;/SPAN&gt; &lt;SPAN class="cm-number"&gt;2&lt;/SPAN&gt;; &lt;SPAN class="cm-comment"&gt;/* kfactor = 2 */&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;SPAN class="cm-keyword"&gt;break&lt;/SPAN&gt;;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;SPAN class="cm-keyword"&gt;case&lt;/SPAN&gt; &lt;SPAN class="cm-variable"&gt;MICFIL_VLOW2_QUALITY&lt;/SPAN&gt;:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;SPAN class="cm-variable"&gt;bclk&lt;/SPAN&gt; &lt;SPAN class="cm-operator"&gt;=&lt;/SPAN&gt; &lt;SPAN class="cm-variable"&gt;rate&lt;/SPAN&gt; &lt;SPAN class="cm-operator"&gt;*&lt;/SPAN&gt; &lt;SPAN class="cm-variable"&gt;osr&lt;/SPAN&gt; &lt;SPAN class="cm-operator"&gt;*&lt;/SPAN&gt; &lt;SPAN class="cm-number"&gt;4&lt;/SPAN&gt;; &lt;SPAN class="cm-comment"&gt;/* kfactor = 4 */&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;SPAN class="cm-keyword"&gt;break&lt;/SPAN&gt;;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;  . . .&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;P class="md-end-block md-p"&gt;&lt;SPAN class="md-plain"&gt;The OSR is always set to the default value of MICFIL_CTRL2_OSR_DEFAULT (0) hence cicosr = 16&lt;/SPAN&gt;&lt;/P&gt;
&lt;PRE class="md-fences md-end-block ty-contain-cm modeLoaded" lang="c" spellcheck="false"&gt;&lt;SPAN&gt;&lt;SPAN class="cm-keyword"&gt;static&lt;/SPAN&gt; &lt;SPAN class="cm-variable-3"&gt;int&lt;/SPAN&gt; &lt;SPAN class="cm-def"&gt;fsl_set_clock_params&lt;/SPAN&gt;(&lt;SPAN class="cm-keyword"&gt;struct&lt;/SPAN&gt; &lt;SPAN class="cm-def"&gt;device&lt;/SPAN&gt; &lt;SPAN class="cm-operator"&gt;*&lt;/SPAN&gt;&lt;SPAN class="cm-variable"&gt;dev&lt;/SPAN&gt;, &lt;SPAN class="cm-variable-3"&gt;unsigned&lt;/SPAN&gt; &lt;SPAN class="cm-variable-3"&gt;int&lt;/SPAN&gt; &lt;SPAN class="cm-variable"&gt;rate&lt;/SPAN&gt;)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; .. .&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;SPAN class="cm-comment"&gt;/* set CICOSR */&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;SPAN class="cm-variable"&gt;ret&lt;/SPAN&gt; &lt;SPAN class="cm-operator"&gt;|=&lt;/SPAN&gt; &lt;SPAN class="cm-variable"&gt;regmap_update_bits&lt;/SPAN&gt;(&lt;SPAN class="cm-variable"&gt;micfil&lt;/SPAN&gt;&lt;SPAN class="cm-operator"&gt;-&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="cm-variable"&gt;regmap&lt;/SPAN&gt;, &lt;SPAN class="cm-variable"&gt;REG_MICFIL_CTRL2&lt;/SPAN&gt;,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&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;nbsp; &amp;nbsp; &amp;nbsp; &lt;SPAN class="cm-variable"&gt;MICFIL_CTRL2_CICOSR_MASK&lt;/SPAN&gt;,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&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;nbsp; &amp;nbsp; &amp;nbsp; &lt;STRONG&gt;&lt;SPAN class="cm-variable"&gt;MICFIL_CTRL2_OSR_DEFAULT&lt;/SPAN&gt;&lt;/STRONG&gt;);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; . . .&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;P class="md-end-block md-p"&gt;&lt;SPAN class="md-plain"&gt;Finally the clk_div is computed as follows&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class="md-end-block md-p"&gt;&lt;SPAN class="md-plain"&gt;clk_div = mclk / (pdm_clk *2) &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class="md-end-block md-p"&gt;&lt;SPAN class="md-plain"&gt;clkdiv = 24576000/(3072000 * 2) = 4&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class="md-end-block md-p"&gt;&lt;SPAN class="md-plain"&gt;clk__div = 4&lt;/SPAN&gt;&lt;/P&gt;
&lt;PRE class="md-fences md-end-block ty-contain-cm modeLoaded" lang="" spellcheck="false"&gt;&lt;SPAN&gt;static inline int get_clk_div(struct fsl_micfil *micfil,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&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;nbsp;  unsigned int rate)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &amp;nbsp; . . .&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;  mclk_rate = clk_get_rate(micfil-&amp;gt;mclk);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;​&lt;/SPAN&gt;&lt;SPAN&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;  clk_div = mclk_rate / (get_pdm_clk(micfil, rate) * 2);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;  . . . &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;P class="md-end-block md-p"&gt;&lt;SPAN class="md-plain"&gt;So, translated to the nomenclature on RM for the output rate = 48KHz example:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class="md-end-block md-p"&gt;&lt;SPAN class="md-plain"&gt;MICFIL_CLK_ROOT = mclk_rate = = 24576000&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class="md-end-block md-p"&gt;&lt;SPAN class="md-plain"&gt;PDM_CLK = mclk_rate/ clk_div = 6144000&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class="md-end-block md-p"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="md-end-block md-p"&gt;&lt;SPAN class="md-plain md-expand"&gt;So actual clk on the pdm microphone will be 6.1 MHz for High Quality&lt;/SPAN&gt;&lt;/P&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 29 Mar 2022 07:14:08 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/imx8mp-evk-About-micfil-PDM-mic-clock-algorithm-amp-settings/m-p/1435288#M188716</guid>
      <dc:creator>jimmychan</dc:creator>
      <dc:date>2022-03-29T07:14:08Z</dc:date>
    </item>
    <item>
      <title>Re: [imx8mp-evk] About micfil(PDM mic) clock algorithm &amp; settings</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/imx8mp-evk-About-micfil-PDM-mic-clock-algorithm-amp-settings/m-p/1435289#M188717</link>
      <description>&lt;P class="md-end-block md-p"&gt;&lt;SPAN class="md-plain"&gt;Regarding the access with memtool the bus error it is caused because the MICFIL module is not clocked until you exercise it. You can first check which is the card assigned to the imxaudiomicfil&lt;/SPAN&gt;&lt;/P&gt;
&lt;PRE class="md-fences md-end-block ty-contain-cm modeLoaded" lang="" spellcheck="false"&gt;&lt;SPAN&gt;root@imx8mp-lpddr4-evk:/unit_tests# arecord -l&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;**** List of CAPTURE Hardware Devices ****&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;...&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;card 1: imxaudiomicfil [imx-audio-micfil], device 0: micfil hifi snd-soc-dummy-dai-0 [micfil hifi snd-soc-dummy-dai-0]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Subdevices: 1/1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Subdevice #0: subdevice #0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;...&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;P class="md-end-block md-p"&gt;&lt;SPAN class="md-plain md-expand"&gt;Do a record on the background and now the MICFIL registers should be accesible&lt;/SPAN&gt;&lt;/P&gt;
&lt;PRE class="md-fences md-end-block ty-contain-cm modeLoaded" lang="" spellcheck="false"&gt;&lt;SPAN&gt;root@imx8mp-lpddr4-evk:/unit_tests# arecord -Dhw:1,0 -fS32_LE -r48000 -c4 test.wav &amp;amp;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Recording WAVE 'test.wav' : Signed 32 bit Little Endian, Rate 48000 Hz, Channels 4&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;root@imx8mp-lpddr4-evk:/unit_tests# ./memtool -32 0x30ca0000 1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Reading 0x1 count starting at address 0x30CA0000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;0x30CA0000: 2100000F&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;​&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;root@imx8mp-lpddr4-evk:/unit_tests# pkill arecord&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;P class="md-end-block md-p"&gt;Dont forget to kill the arecord application.&lt;/P&gt;</description>
      <pubDate>Tue, 29 Mar 2022 07:15:20 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/imx8mp-evk-About-micfil-PDM-mic-clock-algorithm-amp-settings/m-p/1435289#M188717</guid>
      <dc:creator>jimmychan</dc:creator>
      <dc:date>2022-03-29T07:15:20Z</dc:date>
    </item>
    <item>
      <title>Re: [imx8mp-evk] About micfil(PDM mic) clock algorithm &amp; settings</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/imx8mp-evk-About-micfil-PDM-mic-clock-algorithm-amp-settings/m-p/1435318#M188720</link>
      <description>&lt;P&gt;First of all, thank you for the detail information. &lt;LI-EMOJI id="lia_slightly-smiling-face" title=":slightly_smiling_face:"&gt;&lt;/LI-EMOJI&gt;&lt;/P&gt;&lt;P&gt;I have one more question.&lt;/P&gt;&lt;P&gt;=============================================================&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;So, translated to the nomenclature on RM for the output rate = 48KHz example:&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;MICFIL_CLK_ROOT = mclk_rate = = 24576000&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;PDM_CLK = mclk_rate/ clk_div = 6144000&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&amp;nbsp;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;So actual clk on the pdm microphone will be 6.1 MHz for &lt;FONT color="#0000FF"&gt;High Quality&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;=============================================================&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;When I check "&lt;/SPAN&gt;&lt;SPAN&gt;amixer -c 1 c&lt;/SPAN&gt;&lt;SPAN&gt;g&lt;/SPAN&gt;&lt;SPAN&gt;et name='MICFIL Quality Select'"&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ESK_0-1648539219709.png" style="width: 544px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/175114iEC3BDDC258132BD4/image-dimensions/544x169?v=v2" width="544" height="169" role="button" title="ESK_0-1648539219709.png" alt="ESK_0-1648539219709.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;I already know, the Mic-fil set 'High Quality' using register set.&lt;/P&gt;&lt;P&gt;But amixer set values=6 'VLow0' as a default. Is it need to modify?&lt;/P&gt;&lt;P class=""&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 29 Mar 2022 07:38:56 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/imx8mp-evk-About-micfil-PDM-mic-clock-algorithm-amp-settings/m-p/1435318#M188720</guid>
      <dc:creator>ESK</dc:creator>
      <dc:date>2022-03-29T07:38:56Z</dc:date>
    </item>
    <item>
      <title>Re: [imx8mp-evk] About micfil(PDM mic) clock algorithm &amp; settings</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/imx8mp-evk-About-micfil-PDM-mic-clock-algorithm-amp-settings/m-p/1435358#M188724</link>
      <description>&lt;P&gt;Yes, need.&lt;/P&gt;</description>
      <pubDate>Tue, 29 Mar 2022 08:15:27 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/imx8mp-evk-About-micfil-PDM-mic-clock-algorithm-amp-settings/m-p/1435358#M188724</guid>
      <dc:creator>jimmychan</dc:creator>
      <dc:date>2022-03-29T08:15:27Z</dc:date>
    </item>
    <item>
      <title>Re: [imx8mp-evk] About micfil(PDM mic) clock algorithm &amp; settings</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/imx8mp-evk-About-micfil-PDM-mic-clock-algorithm-amp-settings/m-p/1435390#M188726</link>
      <description>&lt;P&gt;When I change that using "&lt;SPAN&gt;amixer -c 1 c&lt;/SPAN&gt;&lt;SPAN&gt;s&lt;/SPAN&gt;&lt;SPAN&gt;et name='MICFIL Quality Select'&lt;/SPAN&gt;&lt;SPAN&gt; 1" for test,&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;PDM mic does not work......&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;How do I fix it?&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Tue, 29 Mar 2022 08:35:33 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/imx8mp-evk-About-micfil-PDM-mic-clock-algorithm-amp-settings/m-p/1435390#M188726</guid>
      <dc:creator>ESK</dc:creator>
      <dc:date>2022-03-29T08:35:33Z</dc:date>
    </item>
    <item>
      <title>Re: [imx8mp-evk] About micfil(PDM mic) clock algorithm &amp; settings</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/imx8mp-evk-About-micfil-PDM-mic-clock-algorithm-amp-settings/m-p/1436851#M188803</link>
      <description>&lt;P&gt;Does it work well for the other values? Or it only fail with value=1?&lt;/P&gt;
&lt;P&gt;What is the failure? Does it throw you an error?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;We did a test and it is working on all the levels on our side.&lt;/P&gt;
&lt;P&gt;How are you recording, which command are you using to record?&lt;/P&gt;</description>
      <pubDate>Thu, 31 Mar 2022 08:07:37 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/imx8mp-evk-About-micfil-PDM-mic-clock-algorithm-amp-settings/m-p/1436851#M188803</guid>
      <dc:creator>jimmychan</dc:creator>
      <dc:date>2022-03-31T08:07:37Z</dc:date>
    </item>
    <item>
      <title>Re: [imx8mp-evk] About micfil(PDM mic) clock algorithm &amp; settings</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/imx8mp-evk-About-micfil-PDM-mic-clock-algorithm-amp-settings/m-p/1437025#M188823</link>
      <description>&lt;P&gt;&lt;SPAN&gt;Dear NXP team,&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;Sorry, I can't attach files because of our security program.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;working invironment : imx8mp-evk + PDM mic(SPG08P4HM4H-1 * 2ea)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;test command :&amp;nbsp;&lt;SPAN&gt;arecord -f S&lt;/SPAN&gt;&lt;SPAN&gt;16&lt;/SPAN&gt;&lt;SPAN&gt;_LE -D plughw:1,0 -t wav -r &lt;/SPAN&gt;&lt;SPAN&gt;48000&lt;/SPAN&gt;&lt;SPAN&gt; -c 2 -d 10 -vvv ./sample.wav&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;case1) "MICFIL Quality Select" "VLow0"(default) : working good (no noise)&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ESK_0-1648723861221.png" style="width: 400px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/175493i6E6FBC9DE72EAED1/image-size/medium?v=v2&amp;amp;px=400" role="button" title="ESK_0-1648723861221.png" alt="ESK_0-1648723861221.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ESK_1-1648724026107.png" style="width: 999px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/175494iE8BAB03822E81563/image-size/large?v=v2&amp;amp;px=999" role="button" title="ESK_1-1648724026107.png" alt="ESK_1-1648724026107.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ESK_2-1648724075144.png" style="width: 999px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/175495i38C2C1CCFEB02BA0/image-size/large?v=v2&amp;amp;px=999" role="button" title="ESK_2-1648724075144.png" alt="ESK_2-1648724075144.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;case2) set "MICFIL Quality Select" to "HIGH" : NG (high noise)&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ESK_3-1648724275776.png" style="width: 400px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/175496iACF8EE8B0FF36786/image-size/medium?v=v2&amp;amp;px=400" role="button" title="ESK_3-1648724275776.png" alt="ESK_3-1648724275776.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ESK_4-1648724953579.png" style="width: 999px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/175499i5484B992DCFF8023/image-size/large?v=v2&amp;amp;px=999" role="button" title="ESK_4-1648724953579.png" alt="ESK_4-1648724953579.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ESK_5-1648724998401.png" style="width: 999px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/175500iA92EB2090CA47526/image-size/large?v=v2&amp;amp;px=999" role="button" title="ESK_5-1648724998401.png" alt="ESK_5-1648724998401.png" /&gt;&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 31 Mar 2022 11:23:59 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/imx8mp-evk-About-micfil-PDM-mic-clock-algorithm-amp-settings/m-p/1437025#M188823</guid>
      <dc:creator>ESK</dc:creator>
      <dc:date>2022-03-31T11:23:59Z</dc:date>
    </item>
    <item>
      <title>Re: [imx8mp-evk] About micfil(PDM mic) clock algorithm &amp; settings</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/imx8mp-evk-About-micfil-PDM-mic-clock-algorithm-amp-settings/m-p/1439701#M189016</link>
      <description>&lt;P&gt;Hello,&lt;BR /&gt;&lt;BR /&gt;We see this same issue on i.MX8MN SoC. Setting quality "High" introduces tons of more noise.&lt;BR /&gt;&lt;BR /&gt;Br&lt;BR /&gt;August&lt;/P&gt;</description>
      <pubDate>Wed, 06 Apr 2022 12:15:43 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/imx8mp-evk-About-micfil-PDM-mic-clock-algorithm-amp-settings/m-p/1439701#M189016</guid>
      <dc:creator>augustl</dc:creator>
      <dc:date>2022-04-06T12:15:43Z</dc:date>
    </item>
    <item>
      <title>Re: [imx8mp-evk] About micfil(PDM mic) clock algorithm &amp; settings</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/imx8mp-evk-About-micfil-PDM-mic-clock-algorithm-amp-settings/m-p/1440355#M189041</link>
      <description>&lt;P&gt;I got the expert AE reply:&lt;/P&gt;
&lt;P&gt;===============&lt;/P&gt;
&lt;P&gt;I tried on 8Mplus but not able to reproduce the noise issue. Noticed you are using format S16_LE, micfil on 8Mplus outputs S32_LE, so maybe try to do the arecord bypassing the plug element on your pipeline. The plug element will perform format convertion from S16_LE to S32_LE and this extra process might be adding some artifacts, maybe not as severe as the noise you are observing but I will advise to try without the plug.&lt;/P&gt;
&lt;P&gt;Try something like:&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;arecord &lt;STRONG&gt;-f S32&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;STRONG&gt;_LE&lt;/STRONG&gt; -D &lt;STRONG&gt;hw&lt;/STRONG&gt;:1,0 -t wav -r&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;48000&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;-c 2 -d 10 -vvv&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;===============&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Best regards,&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Jimmy&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 07 Apr 2022 08:02:51 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/imx8mp-evk-About-micfil-PDM-mic-clock-algorithm-amp-settings/m-p/1440355#M189041</guid>
      <dc:creator>jimmychan</dc:creator>
      <dc:date>2022-04-07T08:02:51Z</dc:date>
    </item>
  </channel>
</rss>

