<?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.MX6 ASRC audio support</title>
    <link>https://community.nxp.com/t5/i-MX-Processors/i-MX6-ASRC-audio-support/m-p/263599#M26992</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello again,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I got some status update. I've used the following clock setup:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;/P&gt;&lt;P&gt;&lt;EM style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; config.channel_num = 2;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; config.input_sample_rate = 48000;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; config.output_sample_rate = 48000;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="mce_paste_marker"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;EM style="font-family: inherit;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; config.inclk = INCLK_SSI2_RX;&lt;/EM&gt;&lt;BR /&gt;&lt;EM style="font-family: inherit;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; config.outclk = OUTCLK_NONE;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;Also I checked the ASRC input clock divider and prescaler, so the Fs_in = 48KHz. Then I tried to play 48KHz audio by using &lt;STRONG&gt;aplay&lt;/STRONG&gt; and I saw no error, but no data was observed at DAC side. But on the other hand I saw lots of SDMA interrupts in 'cat /proc/interrupts'. If I set &lt;EM&gt;outclk&lt;/EM&gt; to OUTCLK_SSI2_TX - the I/O problem will be seen.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;So, I'd like to add new question to the list, what do INCLK_NONE and OUTCLK_NONE clocks mean?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Alex&lt;/P&gt;&lt;P&gt;&lt;SPAN class="mce_paste_marker"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 30 May 2013 11:44:51 GMT</pubDate>
    <dc:creator>alexsmirnov</dc:creator>
    <dc:date>2013-05-30T11:44:51Z</dc:date>
    <item>
      <title>i.MX6 ASRC audio support</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/i-MX6-ASRC-audio-support/m-p/263598#M26991</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi folks,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;could anybody help me please with ASRC support for audio playback in i.MX6q-based board.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I use LTIB Linux kernel as a reference and wrote a driver for DAC, which is connected to SSI2. The code is derived from sgtl5000 and cs42888 drivers. I've added 2 dai links with names: "HiFi" and "HiFi_ASRC". The first link assumes to play the stream with sample rate it has, and the second - should use ASRC. "HiFi" configuration works, when I start the following command:&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;$ aplay -D "hw:0,0" my.wav&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;I see a data at oscilloscope and hear sound. But when I try to use "HiFi_ASRC":&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;$ aplay -D "hw:0,1" my.wav&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;I get an I/O error after some timeout. Moreover I see about 4-5 SDMA interrupts only in 'cat /proc/interrupts' after each execution, while for the first case there are about 100.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In my base driver implementation I used the following ASRC configuration:&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; config.input_word_width = get_asrc_input_width(params);&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; config.output_word_width = iprtd-&amp;gt;p2p-&amp;gt;p2p_width;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; config.pair = iprtd-&amp;gt;asrc_index;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; config.channel_num = channel;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; config.input_sample_rate = rate;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; config.output_sample_rate = iprtd-&amp;gt;p2p-&amp;gt;p2p_rate;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; config.inclk = INCLK_NONE;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; config.outclk = OUTCLK_SSI2_TX;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&lt;BR /&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;But also I tried to use different combinations of clocks for 'inclk' and 'outclk', but result was the same.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;So I have several question and any hints are highly appreciated:&lt;/P&gt;&lt;P&gt;1. How ASRC works, does it require both clocks: input and output? According to the RM, it uses input clock to process samples, but how the output clock is involved to this process?&lt;/P&gt;&lt;P&gt;2. How "asrc_clk" and "asrc_serial_clk" are used, should I set some magic rate for them?&lt;/P&gt;&lt;P&gt;3. Lets say I have an input stream with sample rate 44.1KHz and I want to play it over SSI2 at 48KHz rate. Which clocks should I use? Should I manually setup input clock rate to: F = 44100 * WORD_SIZE * CHANNELS Hz?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;With best regards,&lt;/P&gt;&lt;P&gt;Alex&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 29 May 2013 16:47:00 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/i-MX6-ASRC-audio-support/m-p/263598#M26991</guid>
      <dc:creator>alexandersmirno</dc:creator>
      <dc:date>2013-05-29T16:47:00Z</dc:date>
    </item>
    <item>
      <title>Re: i.MX6 ASRC audio support</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/i-MX6-ASRC-audio-support/m-p/263599#M26992</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello again,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I got some status update. I've used the following clock setup:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;/P&gt;&lt;P&gt;&lt;EM style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; config.channel_num = 2;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; config.input_sample_rate = 48000;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; config.output_sample_rate = 48000;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="mce_paste_marker"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;EM style="font-family: inherit;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; config.inclk = INCLK_SSI2_RX;&lt;/EM&gt;&lt;BR /&gt;&lt;EM style="font-family: inherit;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; config.outclk = OUTCLK_NONE;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;Also I checked the ASRC input clock divider and prescaler, so the Fs_in = 48KHz. Then I tried to play 48KHz audio by using &lt;STRONG&gt;aplay&lt;/STRONG&gt; and I saw no error, but no data was observed at DAC side. But on the other hand I saw lots of SDMA interrupts in 'cat /proc/interrupts'. If I set &lt;EM&gt;outclk&lt;/EM&gt; to OUTCLK_SSI2_TX - the I/O problem will be seen.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;So, I'd like to add new question to the list, what do INCLK_NONE and OUTCLK_NONE clocks mean?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Alex&lt;/P&gt;&lt;P&gt;&lt;SPAN class="mce_paste_marker"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 30 May 2013 11:44:51 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/i-MX6-ASRC-audio-support/m-p/263599#M26992</guid>
      <dc:creator>alexsmirnov</dc:creator>
      <dc:date>2013-05-30T11:44:51Z</dc:date>
    </item>
    <item>
      <title>Re: i.MX6 ASRC audio support</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/i-MX6-ASRC-audio-support/m-p/263600#M26993</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello again,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I'd like to share the results of my research, probably it will help somebody in future.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;i.MX6 ASRC implementation has 2 interfaces:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;User space package: fsl-asla-plugins&lt;/LI&gt;&lt;LI&gt;Kernel API&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;1. First interface doesn't require any kernel modifications. The only thing is required - add necessary line to ALSA config. All the information can be found in &lt;EM&gt;fsl-alsa-plugins-1.0.25.tar.gz &lt;/EM&gt;in file &lt;EM&gt;asrcrate.txt&lt;/EM&gt;. Below is example for 44100KHz:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;Write in your ~/.asoundrc or /etc/asound.conf, such as&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;defaults.pcm.rate_converter "asrcrate"&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;pcm.dmix_44100 {&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; type dmix&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ipc_key 5678293&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ipc_key_add_uid yes&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; slave{&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pcm "hw:0,0"&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; period_time 10000&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; format S16_LE&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rate 44100&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;}&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;pcm.asrc {&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; type plug&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; route_policy "average"&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; slave.pcm "dmix_44100"&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;}&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;But, as mentioned in the text file, there are limitations in convertion rates.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;2. Kernel API uses the same functions as the interface above, but calls them directly instead of using IOCTL. I used cs42888 codec as a reference code, so derived all ASRC parts and put them in my codec - but it didn't work due to problems mentioned in previous posts.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The first approach works and completely fits my requirements, so I stopped digging kernel part here.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Alex&lt;/P&gt;&lt;P&gt;&lt;SPAN class="mce_paste_marker"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 18 Jun 2013 09:05:05 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/i-MX6-ASRC-audio-support/m-p/263600#M26993</guid>
      <dc:creator>alexsmirnov</dc:creator>
      <dc:date>2013-06-18T09:05:05Z</dc:date>
    </item>
  </channel>
</rss>

