<?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: imx53 uda134x audio issue in i.MX Processors</title>
    <link>https://community.nxp.com/t5/i-MX-Processors/imx53-uda134x-audio-issue/m-p/393479#M57469</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi igor:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; i'm sorry for a period of time didn't respond. i can hear voice now. but it has big noise. i set the sysclk in board.c ,and i can measure the value as same as i set.&lt;/P&gt;&lt;P&gt;but i print ssi sysclk in imx_ssi.c file(in probe() or startup()),it always be 12M.and from the bclk and frame sync i can calculated the sysclk is 12M too. here is the init code in board.c&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ssi_ext1 = clk_get(NULL, "ssi_ext1_clk");&lt;/P&gt;&lt;P&gt;if (IS_ERR(ssi_ext1))&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; return -1;&lt;/P&gt;&lt;P&gt;rate = clk_round_rate(ssi_ext1, 12888000);&lt;/P&gt;&lt;P&gt;if (rate &amp;lt; 2000000 || rate &amp;gt; 24000000) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; printk(KERN_ERR "Error: UDA134x mclk freq %d out of range!\n",rate);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; clk_put(ssi_ext1);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; return -1;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;clk_set_rate(ssi_ext1, rate);&lt;/P&gt;&lt;P&gt;clk_enable(ssi_ext1);&lt;/P&gt;&lt;P&gt;uda134x_data.sysclk = rate;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;i can't see any place in machine driver to use the rate i set. so what shall i do&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 22 Jul 2015 08:01:03 GMT</pubDate>
    <dc:creator>Jacky_Song</dc:creator>
    <dc:date>2015-07-22T08:01:03Z</dc:date>
    <item>
      <title>imx53 uda134x audio issue</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/imx53-uda134x-audio-issue/m-p/393471#M57461</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; hi，everyone：&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; i have a problem with uda134x in imx53-loco.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; here is the kernel log:&lt;/P&gt;&lt;PRE __default_attr="c++" __jive_macro_name="code" class="jive_macro_code _jivemacro_uid_14363463083009639 jive_text_macro" data-renderedposition="71_8_1218_192" jivemacro_uid="_14363463083009639"&gt;&lt;P&gt;[&amp;nbsp;&amp;nbsp;&amp;nbsp; 1.837294] No device for DAI UDA134X&lt;/P&gt;&lt;P&gt;[&amp;nbsp;&amp;nbsp;&amp;nbsp; 1.841094] No device for DAI imx-ssi-1-0&lt;/P&gt;&lt;P&gt;[&amp;nbsp;&amp;nbsp;&amp;nbsp; 1.845128] No device for DAI imx-ssi-1-1&lt;/P&gt;&lt;P&gt;[&amp;nbsp;&amp;nbsp;&amp;nbsp; 1.849188] No device for DAI imx-ssi-2-0&lt;/P&gt;&lt;P&gt;[&amp;nbsp;&amp;nbsp;&amp;nbsp; 1.853223] No device for DAI imx-ssi-2-1&lt;/P&gt;&lt;P&gt;[&amp;nbsp;&amp;nbsp;&amp;nbsp; 1.868003] UDA134X SoC Audio Codec&lt;/P&gt;&lt;P&gt;[&amp;nbsp;&amp;nbsp;&amp;nbsp; 1.883014] DMA Sound Buffer Allocated: Playback UseIram=1 ext_ram=0 buf-&amp;gt;addr=f8002000 buf-&amp;gt;area=8e042000 size=24576&lt;/P&gt;&lt;P&gt;[&amp;nbsp;&amp;nbsp;&amp;nbsp; 1.893726] DMA Sound Buffer Allocated: Capture&amp;nbsp; UseIram=1 ext_ram=1 buf-&amp;gt;addr=7c298000 buf-&amp;gt;area=fa28c000 size=24576&lt;/P&gt;&lt;P&gt;[&amp;nbsp;&amp;nbsp;&amp;nbsp; 1.904353] asoc: UDA134X &amp;lt;-&amp;gt; imx-ssi-2-0 mapping ok&lt;/P&gt;&lt;P&gt;[&amp;nbsp;&amp;nbsp;&amp;nbsp; 1.909516] usb 2-1: new high speed USB device using fsl-ehci and address 2&lt;/P&gt;&lt;P&gt;[&amp;nbsp;&amp;nbsp;&amp;nbsp; 1.919852] ALSA device list:&lt;/P&gt;&lt;P&gt;[&amp;nbsp;&amp;nbsp;&amp;nbsp; 1.922901]&amp;nbsp;&amp;nbsp; #0: imx-3stack (UDA134X)&lt;/P&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; then i got error when use madplay or aplay ,and both no sound.&lt;/P&gt;&lt;PRE __default_attr="c++" __jive_macro_name="code" class="jive_macro_code jive_text_macro _jivemacro_uid_14363464305969171" data-renderedposition="284_8_1218_288" jivemacro_uid="_14363464305969171" modifiedtitle="true"&gt;&lt;P&gt;[root@freescale: /mnt/mtdblock4]# ./madplay &lt;SPAN style="color: #e23d39;"&gt;begin.wav&lt;/SPAN&gt; &lt;/P&gt;&lt;P&gt;MPEG Audio Decoder 0.15.2 (beta) - Copyright (C) 2000-2004 Robert Leslie et al.&lt;/P&gt;&lt;P&gt;error: frame 0: lost synchronization&lt;/P&gt;&lt;P&gt;error: frame 1: lost synchronization&lt;/P&gt;&lt;P&gt;error: frame 2: forbidden bit allocation value&lt;/P&gt;&lt;P&gt;error: frame 3: lost synchronization&lt;/P&gt;&lt;P&gt;error: frame 4: forbidden bit allocation value&lt;/P&gt;&lt;P&gt;error: frame 5: forbidden bit allocation value&lt;/P&gt;&lt;P&gt;error: frame 6: forbidden bit allocation value&lt;/P&gt;&lt;P&gt;error: frame 7: CRC check failed&lt;/P&gt;&lt;P&gt;error: frame 8: forbidden bit allocation value&lt;/P&gt;&lt;P&gt;error: frame 9: forbidden bit allocation value&lt;/P&gt;&lt;P&gt;...&lt;/P&gt;&lt;P&gt;...&lt;/P&gt;&lt;P&gt;[root@freescale: /mnt/mtdblock4]# ./madplay &lt;SPAN style="color: #e23d39;"&gt;laodifang.&lt;/SPAN&gt;&lt;SPAN style="color: #e23d39;"&gt;mp3&lt;/SPAN&gt; &lt;/P&gt;&lt;P&gt;MPEG Audio Decoder 0.15.2 (beta) - Copyright (C) 2000-2004 Robert Leslie et al.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Track: 1/1&lt;/P&gt;&lt;P&gt;output: write: Input/output error&lt;/P&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; i got diffrent error when play .mp3 and .wav files.&lt;/P&gt;&lt;PRE __default_attr="c++" __jive_macro_name="code" class="jive_macro_code jive_text_macro _jivemacro_uid_14363464627165451" data-renderedposition="593_8_1218_80" jivemacro_uid="_14363464627165451" modifiedtitle="true"&gt;&lt;P&gt;[root@freescale: /mnt/mtdblock4]# ./aplay begin.wav &lt;/P&gt;&lt;P&gt;[aplay] AuHeader = 24&lt;/P&gt;&lt;P&gt;[aplay] VocHeader = 26&lt;/P&gt;&lt;P&gt;[1aplay] WAVE-header = 0&lt;/P&gt;&lt;P&gt;Playing WAVE 'begin.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo&lt;/P&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; aplay has no error but it finished as soon as i start it.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;Is anyone can help me?&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;Best wishes!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 08 Jul 2015 09:17:56 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/imx53-uda134x-audio-issue/m-p/393471#M57461</guid>
      <dc:creator>Jacky_Song</dc:creator>
      <dc:date>2015-07-08T09:17:56Z</dc:date>
    </item>
    <item>
      <title>Re: imx53 uda134x audio issue</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/imx53-uda134x-audio-issue/m-p/393472#M57462</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Jacky&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;one can check if this codec chip driver is correctly written using&lt;/P&gt;&lt;P&gt;&lt;A href="http://cache.freescale.com/files/32bit/doc/user_guide/MX53UG.pdf?fasp=1&amp;amp;WT_TYPE=Users%20Guides&amp;amp;WT_VENDOR=FREESCALE&amp;amp;WT_FILE_FORMAT=pdf&amp;amp;WT_ASSET=Documentation&amp;amp;fileExt=.pdf"&gt;MX53UG&lt;/A&gt;&amp;nbsp; Chapter 21 Porting Audio Codecs to a Custom Board&lt;/P&gt;&lt;P&gt;Also it may be recommended to check codec hardware connections&lt;/P&gt;&lt;P&gt;with OBDS audio test&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=i.MX535&amp;amp;fpsp=1&amp;amp;tab=Design_Tools_Tab"&gt;On-Board Diagnostic Suit for the i.MX53 Quick Start Board&lt;/A&gt;&amp;nbsp; :&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Best regards&lt;/P&gt;&lt;P&gt;igor&lt;/P&gt;&lt;P&gt;-----------------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;P&gt;Note: If this post answers your question, please click the Correct Answer button. Thank you!&lt;/P&gt;&lt;P&gt;-----------------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 08 Jul 2015 12:32:23 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/imx53-uda134x-audio-issue/m-p/393472#M57462</guid>
      <dc:creator>igorpadykov</dc:creator>
      <dc:date>2015-07-08T12:32:23Z</dc:date>
    </item>
    <item>
      <title>Re: imx53 uda134x audio issue</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/imx53-uda134x-audio-issue/m-p/393473#M57463</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi igor,tks for your reply.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;i have compared mx53_loco.c with the MX53UG, i think it s&lt;SPAN style="color: #000000; font-family: arial, sans-serif; font-size: 12px; background-color: #fafafa;"&gt;hould be no problem. &lt;SPAN style="color: #000000; font-family: arial, sans-serif; font-size: 12px; background-color: #fafafa;"&gt;finally&lt;/SPAN&gt; i found the i2s lines have no signals when i play sound, and i can hear some noisy when i have a short circuit with i2s lines. so why the i2s do not work? i have config them in the loco.c file&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;MX53_PAD_KEY_COL0__AUDMUX_AUD5_TXC,&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;MX53_PAD_KEY_ROW0__AUDMUX_AUD5_TXD,&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;MX53_PAD_KEY_COL1__AUDMUX_AUD5_TXFS,&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;MX53_PAD_KEY_ROW1__AUDMUX_AUD5_RXD,&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;MX53_PAD_GPIO_0__CCM_SSI_EXT1_CLK, /* Audio CLK*/&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;MX53_PAD_GPIO_18__GPIO7_13,&amp;nbsp; /* DAT&amp;nbsp; */&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;MX53_PAD_GPIO_17__GPIO7_12,&amp;nbsp; /* CLK&amp;nbsp; */&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;MX53_PAD_GPIO_16__GPIO7_11,&amp;nbsp; /* MODE */&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 09 Jul 2015 02:42:30 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/imx53-uda134x-audio-issue/m-p/393473#M57463</guid>
      <dc:creator>Jacky_Song</dc:creator>
      <dc:date>2015-07-09T02:42:30Z</dc:date>
    </item>
    <item>
      <title>Re: imx53 uda134x audio issue</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/imx53-uda134x-audio-issue/m-p/393474#M57464</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Jacky&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;if you have not i2s signals, then one&lt;/P&gt;&lt;P&gt;can check SSI and uda134x clocks. Probably hardware&lt;/P&gt;&lt;P&gt;has errors, this can be found with obds.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;~igor&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 09 Jul 2015 07:29:06 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/imx53-uda134x-audio-issue/m-p/393474#M57464</guid>
      <dc:creator>igorpadykov</dc:creator>
      <dc:date>2015-07-09T07:29:06Z</dc:date>
    </item>
    <item>
      <title>Re: imx53 uda134x audio issue</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/imx53-uda134x-audio-issue/m-p/393475#M57465</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi igor&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;i have build the obds for mx53,but i dont kown how to use it. i cant see any use guide file to show it. &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 10 Jul 2015 03:10:17 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/imx53-uda134x-audio-issue/m-p/393475#M57465</guid>
      <dc:creator>Jacky_Song</dc:creator>
      <dc:date>2015-07-10T03:10:17Z</dc:date>
    </item>
    <item>
      <title>Re: imx53 uda134x audio issue</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/imx53-uda134x-audio-issue/m-p/393476#M57466</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Jacky&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;one can look at User_Guide_for_imx28_obds_v1_0.pdf&lt;/P&gt;&lt;P&gt;from &lt;A href="http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=MCIMX28EVKJ&amp;amp;fpsp=1&amp;amp;tab=Design_Tools_Tab"&gt;IMX_OBDS&lt;/A&gt;&amp;nbsp; : On-Board Diagnostic Suit for the i.MX28&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;~igor&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 10 Jul 2015 04:05:51 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/imx53-uda134x-audio-issue/m-p/393476#M57466</guid>
      <dc:creator>igorpadykov</dc:creator>
      <dc:date>2015-07-10T04:05:51Z</dc:date>
    </item>
    <item>
      <title>Re: imx53 uda134x audio issue</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/imx53-uda134x-audio-issue/m-p/393477#M57467</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi igor&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;i have test with obds, and the result shows &lt;SPAN style="color: #51626f; font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif;"&gt;hardware&lt;/SPAN&gt; is ok.&lt;/P&gt;&lt;P&gt;i worked on my own driver, i have L3 and SSi_clk signals,but still no i2s data signals. then i found when i play .mp3 file with madplay, it seems like stop at the decode part,and i can see messages &lt;STRONG&gt;5686 frames decoded (0:02:16.4),+0.5 dB peak amplitude, 23 clip ped samples&lt;/STRONG&gt;, what makes the decode take so long?&lt;/P&gt;&lt;P&gt;i enclose my driver,and i hope you can take a little time to read it. thanks very mach.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*&lt;/P&gt;&lt;P&gt; * imx-3stack-uda134x.c&amp;nbsp; --&amp;nbsp; i.MX 3Stack Driver for UDA1341 Codec&lt;/P&gt;&lt;P&gt; *&lt;/P&gt;&lt;P&gt; * Copyright (C) 2011-2012 Edan Inc. All Rights Reserved.&lt;/P&gt;&lt;P&gt; *&lt;/P&gt;&lt;P&gt; *&lt;/P&gt;&lt;P&gt; *&amp;nbsp; Revision history&lt;/P&gt;&lt;P&gt; *&amp;nbsp;&amp;nbsp;&amp;nbsp; 5-30-2011&amp;nbsp;&amp;nbsp; Xiaaijun&lt;/P&gt;&lt;P&gt; *&lt;/P&gt;&lt;P&gt; */&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/module.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/moduleparam.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/init.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/delay.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/pm.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/bitops.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/platform_device.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/err.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/irq.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/io.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/fsl_devices.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;linux/slab.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;sound/core.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;sound/pcm.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;sound/pcm_params.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;sound/soc.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;sound/soc-dapm.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;sound/initval.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;sound/uda134x.h&amp;gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;mach/dma.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;mach/clock.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;mach/gpio.h&amp;gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#include "../codecs/uda134x.h"&lt;/P&gt;&lt;P&gt;#include "imx-ssi.h"&lt;/P&gt;&lt;P&gt;#include "imx-pcm.h"&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define UDA134X_SYSCLK 0&lt;/P&gt;&lt;P&gt;#define SYSCLK_RATE (512*8000)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;struct imx_3stack_priv {&lt;/P&gt;&lt;P&gt;&amp;nbsp; int sysclk;&lt;/P&gt;&lt;P&gt;&amp;nbsp; int hw;&lt;/P&gt;&lt;P&gt;&amp;nbsp; struct platform_device *pdev;&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct imx_3stack_priv card_priv;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static int imx_3stack_audio_hw_params(struct snd_pcm_substream *substream,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; struct snd_pcm_hw_params *params)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; struct snd_soc_pcm_runtime *rtd = substream-&amp;gt;private_data;&lt;/P&gt;&lt;P&gt;&amp;nbsp; struct snd_soc_dai_link *machine = rtd-&amp;gt;dai;&lt;/P&gt;&lt;P&gt;&amp;nbsp; struct snd_soc_dai *cpu_dai = machine-&amp;gt;cpu_dai;&lt;/P&gt;&lt;P&gt;&amp;nbsp; struct snd_soc_dai *codec_dai = machine-&amp;gt;codec_dai;&lt;/P&gt;&lt;P&gt;// struct imx_3stack_priv *priv = &amp;amp;card_priv;&lt;/P&gt;&lt;P&gt;&amp;nbsp; unsigned int rate = params_rate(params);&lt;/P&gt;&lt;P&gt;&amp;nbsp; struct imx_ssi *ssi_mode = (struct imx_ssi *)cpu_dai-&amp;gt;private_data;&lt;/P&gt;&lt;P&gt;&amp;nbsp; int ret = 0;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; u32 dai_format;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; int bits;&lt;/P&gt;&lt;P&gt;&amp;nbsp; int channels = params_channels(params);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; switch (params_format(params)) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; case SNDRV_PCM_FORMAT_S8:&lt;/P&gt;&lt;P&gt;&amp;nbsp; bits = 8;&lt;/P&gt;&lt;P&gt;&amp;nbsp; break;&lt;/P&gt;&lt;P&gt;&amp;nbsp; case SNDRV_PCM_FORMAT_S16_LE:&lt;/P&gt;&lt;P&gt;&amp;nbsp; bits = 16;&lt;/P&gt;&lt;P&gt;&amp;nbsp; break;&lt;/P&gt;&lt;P&gt;&amp;nbsp; case SNDRV_PCM_FORMAT_S24_LE:&lt;/P&gt;&lt;P&gt;&amp;nbsp; bits = 24;&lt;/P&gt;&lt;P&gt;&amp;nbsp; break;&lt;/P&gt;&lt;P&gt;&amp;nbsp; case SNDRV_PCM_FORMAT_S32_LE:&lt;/P&gt;&lt;P&gt;&amp;nbsp; bits = 32;&lt;/P&gt;&lt;P&gt;&amp;nbsp; break;&lt;/P&gt;&lt;P&gt;&amp;nbsp; default:&lt;/P&gt;&lt;P&gt;&amp;nbsp; return -EINVAL;&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#if 0&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* only need to do this once as capture and playback are sync */&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (priv-&amp;gt;hw)&lt;/P&gt;&lt;P&gt;&amp;nbsp; return 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp; priv-&amp;gt;hw = 1;&lt;/P&gt;&lt;P&gt;#endif&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; dai_format = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF |&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SND_SOC_DAIFMT_CBS_CFS;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; ssi_mode-&amp;gt;sync_mode = 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (channels == 1)&lt;/P&gt;&lt;P&gt;&amp;nbsp; ssi_mode-&amp;gt;network_mode = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp; else&lt;/P&gt;&lt;P&gt;&amp;nbsp; ssi_mode-&amp;gt;network_mode = 1;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* set cpu DAI configuration */&lt;/P&gt;&lt;P&gt;&amp;nbsp; ret = snd_soc_dai_set_fmt(cpu_dai, dai_format);&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (ret &amp;lt; 0)&lt;/P&gt;&lt;P&gt;&amp;nbsp; return ret;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* set i.MX active slot mask */&lt;/P&gt;&lt;P&gt;&amp;nbsp; snd_soc_dai_set_tdm_slot(cpu_dai,&lt;/P&gt;&lt;P&gt;&amp;nbsp; channels == 1 ? 0xfffffffe : 0xfffffffc,&lt;/P&gt;&lt;P&gt;&amp;nbsp; channels == 1 ? 0xfffffffe : 0xfffffffc,&lt;/P&gt;&lt;P&gt;&amp;nbsp; 2, 32);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* set the SSI clock div&amp;nbsp; */&lt;/P&gt;&lt;P&gt;&amp;nbsp; snd_soc_dai_set_clkdiv(cpu_dai, IMX_SSI_TX_DIV_2, 0);&lt;/P&gt;&lt;P&gt;&amp;nbsp; snd_soc_dai_set_clkdiv(cpu_dai, IMX_SSI_TX_DIV_PSR, 0);&lt;/P&gt;&lt;P&gt;&amp;nbsp; snd_soc_dai_set_clkdiv(cpu_dai, IMX_SSI_TX_DIV_PM, 23);&lt;/P&gt;&lt;P&gt;// snd_soc_dai_set_clkdiv(cpu_dai, IMX_SSI_RX_DIV_2, 0);&lt;/P&gt;&lt;P&gt;// snd_soc_dai_set_clkdiv(cpu_dai, IMX_SSI_RX_DIV_PSR, 0);&lt;/P&gt;&lt;P&gt;// snd_soc_dai_set_clkdiv(cpu_dai, IMX_SSI_RX_DIV_PM, 11);&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* set the SSI system clock as output&amp;nbsp; */&lt;/P&gt;&lt;P&gt;&amp;nbsp; snd_soc_dai_set_sysclk(cpu_dai, IMX_SSP_SYS_CLK, 0, SND_SOC_CLOCK_OUT);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* set codec DAI configuration */&lt;/P&gt;&lt;P&gt;&amp;nbsp; snd_soc_dai_set_fmt(codec_dai, dai_format);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Set codec clock*/&lt;/P&gt;&lt;P&gt;&amp;nbsp; snd_soc_dai_set_sysclk(codec_dai, UDA134X_SYSCLK,512*rate, SND_SOC_CLOCK_OUT);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; return 0;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static int imx_3stack_startup(struct snd_pcm_substream *substream)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; return 0;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static void imx_3stack_shutdown(struct snd_pcm_substream *substream)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; struct imx_3stack_priv *priv = &amp;amp;card_priv;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; priv-&amp;gt;hw = 0;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*&lt;/P&gt;&lt;P&gt; * imx_3stack UDA134X audio DAI opserations.&lt;/P&gt;&lt;P&gt; */&lt;/P&gt;&lt;P&gt;static struct snd_soc_ops imx_3stack_ops = {&lt;/P&gt;&lt;P&gt;&amp;nbsp; .startup = imx_3stack_startup,&lt;/P&gt;&lt;P&gt;&amp;nbsp; .shutdown = imx_3stack_shutdown,&lt;/P&gt;&lt;P&gt;&amp;nbsp; .hw_params = imx_3stack_audio_hw_params,&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static void imx_3stack_init_dam(int ssi_port, int dai_port)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; unsigned int ssi_ptcr = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp; unsigned int dai_ptcr = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp; unsigned int ssi_pdcr = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp; unsigned int dai_pdcr = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* UDA134X uses SSI1 via AUDMUX port dai_port for audio */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* reset port ssi_port &amp;amp; dai_port */&lt;/P&gt;&lt;P&gt;&amp;nbsp; __raw_writel(0, DAM_PTCR(ssi_port));&lt;/P&gt;&lt;P&gt;&amp;nbsp; __raw_writel(0, DAM_PTCR(dai_port));&lt;/P&gt;&lt;P&gt;&amp;nbsp; __raw_writel(0, DAM_PDCR(ssi_port));&lt;/P&gt;&lt;P&gt;&amp;nbsp; __raw_writel(0, DAM_PDCR(dai_port));&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* set to synchronous */&lt;/P&gt;&lt;P&gt;&amp;nbsp; ssi_ptcr |= AUDMUX_PTCR_SYN;&lt;/P&gt;&lt;P&gt;&amp;nbsp; dai_ptcr |= AUDMUX_PTCR_SYN;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* set Rx sources ssi_port &amp;lt;--&amp;gt; dai_port */&lt;/P&gt;&lt;P&gt;&amp;nbsp; ssi_pdcr |= AUDMUX_PDCR_RXDSEL(dai_port);&lt;/P&gt;&lt;P&gt;&amp;nbsp; dai_pdcr |= AUDMUX_PDCR_RXDSEL(ssi_port);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* set Tx frame direction and source&amp;nbsp; ssi_port --&amp;gt; dai_port output */&lt;/P&gt;&lt;P&gt;&amp;nbsp; dai_ptcr |= AUDMUX_PTCR_TFSDIR;&lt;/P&gt;&lt;P&gt;&amp;nbsp; dai_ptcr |= AUDMUX_PTCR_TFSSEL(AUDMUX_FROM_TXFS, ssi_port);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* set Tx Clock direction and source ssi_port--&amp;gt; dai_port output */&lt;/P&gt;&lt;P&gt;&amp;nbsp; dai_ptcr |= AUDMUX_PTCR_TCLKDIR;&lt;/P&gt;&lt;P&gt;&amp;nbsp; dai_ptcr |= AUDMUX_PTCR_TCSEL(AUDMUX_FROM_TXFS, ssi_port);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; __raw_writel(ssi_ptcr, DAM_PTCR(ssi_port));&lt;/P&gt;&lt;P&gt;&amp;nbsp; __raw_writel(dai_ptcr, DAM_PTCR(dai_port));&lt;/P&gt;&lt;P&gt;&amp;nbsp; __raw_writel(ssi_pdcr, DAM_PDCR(ssi_port));&lt;/P&gt;&lt;P&gt;&amp;nbsp; __raw_writel(dai_pdcr, DAM_PDCR(dai_port));&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static int imx_3stack_uda134x_init(struct snd_soc_codec *codec)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; return 0;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* imx_3stack digital audio interface glue - connects codec &amp;lt;--&amp;gt; CPU */&lt;/P&gt;&lt;P&gt;static struct snd_soc_dai_link imx_3stack_dai = {&lt;/P&gt;&lt;P&gt;&amp;nbsp; .name = "UDA134X",&lt;/P&gt;&lt;P&gt;&amp;nbsp; .stream_name = "UDA134X",&lt;/P&gt;&lt;P&gt;&amp;nbsp; .codec_dai = &amp;amp;uda134x_dai,&lt;/P&gt;&lt;P&gt;// .cpu_dai = &amp;amp;imx_ssi_dai[2],&lt;/P&gt;&lt;P&gt;&amp;nbsp; .init = imx_3stack_uda134x_init,&lt;/P&gt;&lt;P&gt;&amp;nbsp; .ops = &amp;amp;imx_3stack_ops,&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static int imx_3stack_card_remove(struct platform_device *pdev)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; struct imx_3stack_priv *priv = &amp;amp;card_priv;&lt;/P&gt;&lt;P&gt;&amp;nbsp; struct mxc_audio_platform_data *plat;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (priv-&amp;gt;pdev) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; plat = priv-&amp;gt;pdev-&amp;gt;dev.platform_data;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (plat-&amp;gt;finit)&lt;/P&gt;&lt;P&gt;&amp;nbsp; plat-&amp;gt;finit();&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; return 0;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct snd_soc_card snd_soc_card_imx_3stack = {&lt;/P&gt;&lt;P&gt;&amp;nbsp; .name = "imx-3stack",&lt;/P&gt;&lt;P&gt;&amp;nbsp; .platform = &amp;amp;imx_soc_platform,&lt;/P&gt;&lt;P&gt;&amp;nbsp; .dai_link = &amp;amp;imx_3stack_dai,&lt;/P&gt;&lt;P&gt;&amp;nbsp; .num_links = 1,&lt;/P&gt;&lt;P&gt;&amp;nbsp; .remove = imx_3stack_card_remove,&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*&amp;nbsp; L3 support */&lt;/P&gt;&lt;P&gt;&lt;SPAN style="line-height: 1.5;"&gt;#define L3_DAT&amp;nbsp;&amp;nbsp; (6*32 + 13) /* GPIO_7_13 */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;#define L3_CLK&amp;nbsp;&amp;nbsp; (6*32 + 12) /* GPIO_7_12 */&lt;/P&gt;&lt;P&gt;#define L3_MODE (6*32 + 11) /* GPIO_7_11 */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static void l3_pin_configure(void)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; /*&amp;nbsp; Configure L3 pins */&lt;/P&gt;&lt;P&gt;&amp;nbsp; gpio_request(L3_DAT, "L3_DAT");&lt;/P&gt;&lt;P&gt;&amp;nbsp; gpio_direction_output(L3_DAT, 0);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; gpio_request(L3_CLK, "L3_CLK");&lt;/P&gt;&lt;P&gt;&amp;nbsp; gpio_direction_output(L3_CLK, 0);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; gpio_request(L3_MODE, "L3_MODE");&lt;/P&gt;&lt;P&gt;&amp;nbsp; gpio_direction_output(L3_MODE, 0);&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static void l3_setdat(int v)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; gpio_set_value(L3_DAT, v&amp;gt;0);&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static void l3_setclk(int v)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; gpio_set_value(L3_CLK, v&amp;gt;0);&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static void l3_setmode(int v)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; gpio_set_value(L3_MODE, v&amp;gt;0);&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct uda134x_platform_data imx_3stack_uda134x = {&lt;/P&gt;&lt;P&gt;&amp;nbsp; .l3 = {&lt;/P&gt;&lt;P&gt;&amp;nbsp; .setdat = l3_setdat,&lt;/P&gt;&lt;P&gt;&amp;nbsp; .setclk = l3_setclk,&lt;/P&gt;&lt;P&gt;&amp;nbsp; .setmode = l3_setmode,&lt;/P&gt;&lt;P&gt;&amp;nbsp; .data_hold = 1,&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; .data_setup = 1,&lt;/P&gt;&lt;P&gt;&amp;nbsp; .clock_high = 1, &lt;/P&gt;&lt;P&gt;&amp;nbsp; .mode_hold = 1, &lt;/P&gt;&lt;P&gt;&amp;nbsp; .mode = 1, &lt;/P&gt;&lt;P&gt;&amp;nbsp; .mode_setup = 1, &lt;/P&gt;&lt;P&gt;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;&amp;nbsp; .model = UDA134X_UDA1341,&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct snd_soc_device imx_3stack_snd_devdata = {&lt;/P&gt;&lt;P&gt;&amp;nbsp; .card = &amp;amp;snd_soc_card_imx_3stack,&lt;/P&gt;&lt;P&gt;&amp;nbsp; .codec_dev = &amp;amp;soc_codec_dev_uda134x,&lt;/P&gt;&lt;P&gt;&amp;nbsp; .codec_data = &amp;amp;imx_3stack_uda134x,&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static int __devinit imx_3stack_uda134x_probe(struct platform_device *pdev)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; struct mxc_audio_platform_data *plat = pdev-&amp;gt;dev.platform_data;&lt;/P&gt;&lt;P&gt;&amp;nbsp; struct imx_3stack_priv *priv = &amp;amp;card_priv;&lt;/P&gt;&lt;P&gt;&amp;nbsp; struct snd_soc_dai *uda134x_cpu_dai = 0;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; int ret = 0;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; priv-&amp;gt;pdev = pdev;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; gpio_activate_audio_ports();&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; l3_pin_configure();&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; imx_3stack_init_dam(plat-&amp;gt;src_port, plat-&amp;gt;ext_port);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (plat-&amp;gt;src_port == 2)&lt;/P&gt;&lt;P&gt;&amp;nbsp; uda134x_cpu_dai = imx_ssi_dai[2];&lt;/P&gt;&lt;P&gt;&amp;nbsp; else if (plat-&amp;gt;src_port == 1)&lt;/P&gt;&lt;P&gt;&amp;nbsp; uda134x_cpu_dai = imx_ssi_dai[0];&lt;/P&gt;&lt;P&gt;&amp;nbsp; else if (plat-&amp;gt;src_port == 7)&lt;/P&gt;&lt;P&gt;&amp;nbsp; uda134x_cpu_dai = imx_ssi_dai[4];&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; imx_3stack_dai.cpu_dai = uda134x_cpu_dai;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* get mxc_audio_platform_data for pcm */&lt;/P&gt;&lt;P&gt;&amp;nbsp; imx_3stack_dai.cpu_dai-&amp;gt;dev = &amp;amp;pdev-&amp;gt;dev;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; ret = -EINVAL;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (plat-&amp;gt;init &amp;amp;&amp;amp; plat-&amp;gt;init())&lt;/P&gt;&lt;P&gt;&amp;nbsp; goto err_plat_init;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; priv-&amp;gt;sysclk = plat-&amp;gt;sysclk;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;// printk("cpu_dai = %d,sysclk = %d\n",plat-&amp;gt;src_port,plat-&amp;gt;sysclk);&lt;/P&gt;&lt;P&gt;&amp;nbsp; return 0;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;err_plat_init:&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (plat-&amp;gt;finit)&lt;/P&gt;&lt;P&gt;&amp;nbsp; plat-&amp;gt;finit();&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; return ret;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static int imx_3stack_uda134x_remove(struct platform_device *pdev)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; struct mxc_audio_platform_data *plat = pdev-&amp;gt;dev.platform_data;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (plat-&amp;gt;finit)&lt;/P&gt;&lt;P&gt;&amp;nbsp; plat-&amp;gt;finit();&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; gpio_free(L3_DAT);&lt;/P&gt;&lt;P&gt;&amp;nbsp; gpio_free(L3_CLK);&lt;/P&gt;&lt;P&gt;&amp;nbsp; gpio_free(L3_MODE);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; return 0;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct platform_driver imx_3stack_uda134x_audio_driver = {&lt;/P&gt;&lt;P&gt;&amp;nbsp; .probe = imx_3stack_uda134x_probe,&lt;/P&gt;&lt;P&gt;&amp;nbsp; .remove = imx_3stack_uda134x_remove,&lt;/P&gt;&lt;P&gt;&amp;nbsp; .driver = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .name = "imx-3stack-uda134x",&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct platform_device *imx_3stack_snd_device;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static int __init imx_3stack_init(void)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; int ret;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; ret = platform_driver_register(&amp;amp;imx_3stack_uda134x_audio_driver);&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (ret)&lt;/P&gt;&lt;P&gt;&amp;nbsp; return -ENOMEM;&lt;/P&gt;&lt;P&gt;&amp;nbsp; imx_3stack_snd_device = platform_device_alloc("soc-audio", -1);&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (!imx_3stack_snd_device)&lt;/P&gt;&lt;P&gt;&amp;nbsp; return -ENOMEM;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; platform_set_drvdata(imx_3stack_snd_device, &amp;amp;imx_3stack_snd_devdata);&lt;/P&gt;&lt;P&gt;&amp;nbsp; imx_3stack_snd_devdata.dev = &amp;amp;imx_3stack_snd_device-&amp;gt;dev;&lt;/P&gt;&lt;P&gt;&amp;nbsp; ret = platform_device_add(imx_3stack_snd_device);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (ret)&lt;/P&gt;&lt;P&gt;&amp;nbsp; platform_device_put(imx_3stack_snd_device);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; return ret;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static void __exit imx_3stack_exit(void)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; platform_driver_unregister(&amp;amp;imx_3stack_uda134x_audio_driver);&lt;/P&gt;&lt;P&gt;&amp;nbsp; platform_device_unregister(imx_3stack_snd_device);&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;module_init(imx_3stack_init);&lt;/P&gt;&lt;P&gt;module_exit(imx_3stack_exit);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MODULE_DESCRIPTION("UDA134X Driver for i.MX 3STACK");&lt;/P&gt;&lt;P&gt;MODULE_LICENSE("GPL");&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 13 Jul 2015 09:55:08 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/imx53-uda134x-audio-issue/m-p/393477#M57467</guid>
      <dc:creator>Jacky_Song</dc:creator>
      <dc:date>2015-07-13T09:55:08Z</dc:date>
    </item>
    <item>
      <title>Re: imx53 uda134x audio issue</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/imx53-uda134x-audio-issue/m-p/393478#M57468</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Jacky&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;if hardware is OK, then you can printf correct obds SSI/AUDMUX&lt;/P&gt;&lt;P&gt;registers and compare them with linux settings, just printf them.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;~igor&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 13 Jul 2015 12:52:46 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/imx53-uda134x-audio-issue/m-p/393478#M57468</guid>
      <dc:creator>igorpadykov</dc:creator>
      <dc:date>2015-07-13T12:52:46Z</dc:date>
    </item>
    <item>
      <title>Re: imx53 uda134x audio issue</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/imx53-uda134x-audio-issue/m-p/393479#M57469</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi igor:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; i'm sorry for a period of time didn't respond. i can hear voice now. but it has big noise. i set the sysclk in board.c ,and i can measure the value as same as i set.&lt;/P&gt;&lt;P&gt;but i print ssi sysclk in imx_ssi.c file(in probe() or startup()),it always be 12M.and from the bclk and frame sync i can calculated the sysclk is 12M too. here is the init code in board.c&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ssi_ext1 = clk_get(NULL, "ssi_ext1_clk");&lt;/P&gt;&lt;P&gt;if (IS_ERR(ssi_ext1))&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; return -1;&lt;/P&gt;&lt;P&gt;rate = clk_round_rate(ssi_ext1, 12888000);&lt;/P&gt;&lt;P&gt;if (rate &amp;lt; 2000000 || rate &amp;gt; 24000000) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; printk(KERN_ERR "Error: UDA134x mclk freq %d out of range!\n",rate);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; clk_put(ssi_ext1);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; return -1;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;clk_set_rate(ssi_ext1, rate);&lt;/P&gt;&lt;P&gt;clk_enable(ssi_ext1);&lt;/P&gt;&lt;P&gt;uda134x_data.sysclk = rate;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;i can't see any place in machine driver to use the rate i set. so what shall i do&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 22 Jul 2015 08:01:03 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/imx53-uda134x-audio-issue/m-p/393479#M57469</guid>
      <dc:creator>Jacky_Song</dc:creator>
      <dc:date>2015-07-22T08:01:03Z</dc:date>
    </item>
    <item>
      <title>Re: imx53 uda134x audio issue</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/imx53-uda134x-audio-issue/m-p/393480#M57470</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;thanks,the audio is ok now.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 23 Jul 2015 07:27:38 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/imx53-uda134x-audio-issue/m-p/393480#M57470</guid>
      <dc:creator>Jacky_Song</dc:creator>
      <dc:date>2015-07-23T07:27:38Z</dc:date>
    </item>
  </channel>
</rss>

