<?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: Using MIPI MCLK for audio codec clock in i.MX Processors</title>
    <link>https://community.nxp.com/t5/i-MX-Processors/Using-MIPI-MCLK-for-audio-codec-clock/m-p/1813313#M220286</link>
    <description>&lt;P&gt;Hi &lt;a href="https://community.nxp.com/t5/user/viewprofilepage/user-id/1422"&gt;@jimmychan&lt;/a&gt;&amp;nbsp;,&lt;/P&gt;&lt;P&gt;Thank you for the response.&amp;nbsp; Yes, I am aware that this pin is meant for a camera, but it was an oversight by our hardware team.&amp;nbsp; According to the PCM3168A datasheet, any clock will do and it can be an external clock.&amp;nbsp; So basically, I would like to re-purpose the MIPI MCLK pin as a clock with a specific frequency.&amp;nbsp; I searched for examples on how to do this, but so far I have not found any.&amp;nbsp; Is there a way to do this?&lt;/P&gt;</description>
    <pubDate>Thu, 22 Feb 2024 02:46:25 GMT</pubDate>
    <dc:creator>jsmith8831</dc:creator>
    <dc:date>2024-02-22T02:46:25Z</dc:date>
    <item>
      <title>Using MIPI MCLK for audio codec clock</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/Using-MIPI-MCLK-for-audio-codec-clock/m-p/1811136#M220100</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;We have a custom i.MX8QM board, and the MCLK input pin on the PCM3168A audio codec is routed to the MIPI_CSI0_MCLK_OUT pin on the iMX8QM.&lt;/P&gt;&lt;P&gt;I have tried adding &lt;STRONG&gt;&amp;amp;csi0_core_lpcg&lt;/STRONG&gt; to the clocks section in the device tree instead of &lt;STRONG&gt;&amp;amp;mclkout0_lpcg&lt;/STRONG&gt;, but I'm getting errors when try to play an audio file.&lt;/P&gt;&lt;P&gt;How do I enable the MIPI MCLK and set the frequency so that the audio codec can function?&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;// I2C
pcm3168a: audio-codec@44 {
	compatible = "ti,pcm3168a";
	reg = &amp;lt;0x44&amp;gt;;
	reset-gpios = &amp;lt;&amp;amp;lsio_gpio4 24 GPIO_ACTIVE_LOW&amp;gt;;
	clocks = &amp;lt;&amp;amp;csi0_core_lpcg 0&amp;gt;;
	clock-names = "scki";
	assigned-clocks = &amp;lt;&amp;amp;clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_PLL&amp;gt;,
	&amp;lt;&amp;amp;clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_SLV_BUS&amp;gt;,
	&amp;lt;&amp;amp;clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_MST_BUS&amp;gt;,
	&amp;lt;&amp;amp;csi0_core_lpcg 0&amp;gt;;
	assigned-clock-rates = &amp;lt;36864000&amp;gt;, &amp;lt;24576000&amp;gt;, &amp;lt;12288000&amp;gt;, &amp;lt;12288000&amp;gt;;
	#sound-dai-cells = &amp;lt;0&amp;gt;;
	VDD1-supply = &amp;lt;&amp;amp;reg_3v3&amp;gt;;
	VDD2-supply = &amp;lt;&amp;amp;reg_3v3&amp;gt;;
	VCCAD1-supply = &amp;lt;&amp;amp;reg_5v0&amp;gt;;
	VCCAD2-supply = &amp;lt;&amp;amp;reg_5v0&amp;gt;;
	VCCDA1-supply = &amp;lt;&amp;amp;reg_5v0&amp;gt;;
	VCCDA2-supply = &amp;lt;&amp;amp;reg_5v0&amp;gt;;
	pinctrl-names = "default";
	pinctrl-0 = &amp;lt;&amp;amp;pinctrl_audio_reset &amp;amp;pinctrl_codec_clk&amp;gt;;
};

// IOMUX
pinctrl_codec_clk: codec_clk {
	fsl,pins = &amp;lt;
		IMX8QM_MIPI_CSI0_MCLK_OUT_MIPI_CSI0_ACM_MCLK_OUT 0xc0000020
	&amp;gt;;
};&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;# aplay some_audio.wav
[   59.878902] pcm3168a 4-0044: unsupported sysclk ratio
[   59.884023] pcm3168a 4-0044: ASoC: error at snd_soc_dai_hw_params on pcm3168a-dac: -22
[   59.892294]  59040000.sai-pcm3168a-dac: ASoC: soc_pcm_hw_params() failed (-22)
ALSA lib ../../../alsa-lib-1.2.6.1/src/pcm/pcm_direct.c:1305:(snd1_pcm_direct_initialize_slave) unable to
 install hw params
ALSA lib ../../../alsa-lib-1.2.6.1/src/pcm/pcm_dmix.c:1013:(snd_pcm_dmix_open) unable to initialize slave
aplay: main:831: audio open error: Invalid argument&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 19 Feb 2024 18:05:27 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/Using-MIPI-MCLK-for-audio-codec-clock/m-p/1811136#M220100</guid>
      <dc:creator>jsmith8831</dc:creator>
      <dc:date>2024-02-19T18:05:27Z</dc:date>
    </item>
    <item>
      <title>Re: Using MIPI MCLK for audio codec clock</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/Using-MIPI-MCLK-for-audio-codec-clock/m-p/1813306#M220283</link>
      <description>&lt;P&gt;&lt;SPAN class="test-id__field-value slds-form-element__static slds-grow word-break-ie11"&gt;MIPI_CSI0_MCLK_OUT&lt;/SPAN&gt; is for camera used, not for audio codec.&lt;/P&gt;</description>
      <pubDate>Thu, 22 Feb 2024 02:36:32 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/Using-MIPI-MCLK-for-audio-codec-clock/m-p/1813306#M220283</guid>
      <dc:creator>jimmychan</dc:creator>
      <dc:date>2024-02-22T02:36:32Z</dc:date>
    </item>
    <item>
      <title>Re: Using MIPI MCLK for audio codec clock</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/Using-MIPI-MCLK-for-audio-codec-clock/m-p/1813313#M220286</link>
      <description>&lt;P&gt;Hi &lt;a href="https://community.nxp.com/t5/user/viewprofilepage/user-id/1422"&gt;@jimmychan&lt;/a&gt;&amp;nbsp;,&lt;/P&gt;&lt;P&gt;Thank you for the response.&amp;nbsp; Yes, I am aware that this pin is meant for a camera, but it was an oversight by our hardware team.&amp;nbsp; According to the PCM3168A datasheet, any clock will do and it can be an external clock.&amp;nbsp; So basically, I would like to re-purpose the MIPI MCLK pin as a clock with a specific frequency.&amp;nbsp; I searched for examples on how to do this, but so far I have not found any.&amp;nbsp; Is there a way to do this?&lt;/P&gt;</description>
      <pubDate>Thu, 22 Feb 2024 02:46:25 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/Using-MIPI-MCLK-for-audio-codec-clock/m-p/1813313#M220286</guid>
      <dc:creator>jsmith8831</dc:creator>
      <dc:date>2024-02-22T02:46:25Z</dc:date>
    </item>
    <item>
      <title>Re: Using MIPI MCLK for audio codec clock</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/Using-MIPI-MCLK-for-audio-codec-clock/m-p/1840817#M222128</link>
      <description>&lt;P&gt;I ended up resolving this by adding an external clock for now.&amp;nbsp; My device tree now looks like this:&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;	codec_osc: fixed-22579200 {
		compatible = "fixed-clock";
		#clock-cells = &amp;lt;0&amp;gt;;
		clock-frequency = &amp;lt;22579200&amp;gt;;
		clock-accuracy = &amp;lt;20000&amp;gt;;
	};

	sound_card: sound-card {
		compatible = "simple-audio-card";
		simple-audio-card,name = "PCM3168A";
		simple-audio-card,widgets =
				"Speaker", "Channel1out",
				"Speaker", "Channel2out",
				"Speaker", "Channel3out",
				"Speaker", "Channel4out",
				"Speaker", "Channel5out",
				"Speaker", "Channel6out",
				"Speaker", "Channel7out",
				"Speaker", "Channel8out",
				"Microphone", "Channel1in",
				"Microphone", "Channel2in",
				"Line", "Channel3in",
				"Line", "Channel4in";
		simple-audio-card,routing =
				"Channel1out", "AOUT1L",
				"Channel2out", "AOUT1R",
				"Channel3out", "AOUT2L",
				"Channel4out", "AOUT2R",
				"Channel5out", "AOUT3L",
				"Channel6out", "AOUT3R",
				"Channel7out", "AOUT4L",
				"Channel8out", "AOUT4R",
				"AIN1L", "Channel1in",
				"AIN1R", "Channel2in",
				"AIN2L", "Channel3in",
				"AIN2R", "Channel4in";

		simple-audio-card,dai-link@0 {
				format = "left_j";
				bitclock-master = &amp;lt;&amp;amp;pcm3168_dac&amp;gt;;
				frame-master = &amp;lt;&amp;amp;pcm3168_dac&amp;gt;;
				mclk-fs = &amp;lt;512&amp;gt;;

				cpu {
						sound-dai = &amp;lt;&amp;amp;sai0&amp;gt;;
						dai-tdm-slot-num = &amp;lt;8&amp;gt;;
						dai-tdm-slot-width = &amp;lt;32&amp;gt;;
				};

				pcm3168_dac: codec {
						sound-dai = &amp;lt;&amp;amp;pcm3168a 0&amp;gt;;
						clocks = &amp;lt;&amp;amp;codec_osc&amp;gt;;
						dai-tdm-slot-num = &amp;lt;8&amp;gt;;
						dai-tdm-slot-width = &amp;lt;32&amp;gt;;
				};
		};

		simple-audio-card,dai-link@1 {
				format = "left_j";
				bitclock-master = &amp;lt;&amp;amp;pcm3168_adc&amp;gt;;
				frame-master = &amp;lt;&amp;amp;pcm3168_adc&amp;gt;;

				cpu {
						sound-dai = &amp;lt;&amp;amp;sai0&amp;gt;;
						dai-tdm-slot-num = &amp;lt;8&amp;gt;;
						dai-tdm-slot-width = &amp;lt;32&amp;gt;;
				};

				pcm3168_adc: codec {
						sound-dai = &amp;lt;&amp;amp;pcm3168a 1&amp;gt;;
						clocks = &amp;lt;&amp;amp;codec_osc&amp;gt;;
						dai-tdm-slot-num = &amp;lt;8&amp;gt;;
						dai-tdm-slot-width = &amp;lt;32&amp;gt;;
				};
		};
	};

	pcm3168a: audio-codec@44 {
		compatible = "ti,pcm3168a";
		reg = &amp;lt;0x44&amp;gt;;
		reset-gpios = &amp;lt;&amp;amp;lsio_gpio4 24 GPIO_ACTIVE_LOW&amp;gt;;
		clocks = &amp;lt;&amp;amp;codec_osc&amp;gt;;
		clock-names = "scki";
		clock-frequency = &amp;lt;22579200&amp;gt;;
		#sound-dai-cells = &amp;lt;1&amp;gt;;
		VDD1-supply = &amp;lt;&amp;amp;reg_3v3&amp;gt;;
		VDD2-supply = &amp;lt;&amp;amp;reg_3v3&amp;gt;;
		VCCAD1-supply = &amp;lt;&amp;amp;reg_5v0&amp;gt;;
		VCCAD2-supply = &amp;lt;&amp;amp;reg_5v0&amp;gt;;
		VCCDA1-supply = &amp;lt;&amp;amp;reg_5v0&amp;gt;;
		VCCDA2-supply = &amp;lt;&amp;amp;reg_5v0&amp;gt;;
		pinctrl-names = "default";
		pinctrl-0 = &amp;lt;&amp;amp;pinctrl_audio_reset&amp;gt;;
	};&lt;/LI-CODE&gt;</description>
      <pubDate>Thu, 04 Apr 2024 14:12:54 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/Using-MIPI-MCLK-for-audio-codec-clock/m-p/1840817#M222128</guid>
      <dc:creator>jsmith8831</dc:creator>
      <dc:date>2024-04-04T14:12:54Z</dc:date>
    </item>
  </channel>
</rss>

