<?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: Machine driver for adau1701 in i.MX Processors</title>
    <link>https://community.nxp.com/t5/i-MX-Processors/Machine-driver-for-adau1701/m-p/345892#M47757</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Anil&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;one can look at audio driver initialization at Linux Porting Guides&lt;/P&gt;&lt;P&gt;included in &lt;A href="https://www.freescale.com/webapp/Download?colCode=L3.0.35_4.1.0_LINUX_DOCS&amp;amp;location=null&amp;amp;fasp=1&amp;amp;WT_TYPE=Supporting%20Information&amp;amp;WT_VENDOR=FREESCALE&amp;amp;WT_FILE_FORMAT=gz&amp;amp;WT_ASSET=Documentation&amp;amp;fileExt=.gz"&gt;L3.0.35_4.1.0_LINUX_DOCS&lt;/A&gt;, &lt;A href="https://www.freescale.com/webapp/Download?colCode=L3.10.17_1.0.0_LINUX_DOCS&amp;amp;appType=license&amp;amp;location=null&amp;amp;fasp=1&amp;amp;WT_TYPE=Supporting%20Information&amp;amp;WT_VENDOR=FREESCALE&amp;amp;WT_FILE_FORMAT=gz&amp;amp;WT_ASSET=Documentation&amp;amp;fileExt=.gz"&gt;L3.10.17_1.0.0_LINUX_DOCS&lt;/A&gt;,&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; and link below&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="https://community.nxp.com/thread/323017"&gt;How to enable TLV320 on IMX6Q?&lt;/A&gt;&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;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 16 Jan 2015 01:06:05 GMT</pubDate>
    <dc:creator>igorpadykov</dc:creator>
    <dc:date>2015-01-16T01:06:05Z</dc:date>
    <item>
      <title>Machine driver for adau1701</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/Machine-driver-for-adau1701/m-p/345891#M47756</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;We are trying to build the existing adau1701 driver, insert it as independent module and test the codec functionality using ALSA utils.&lt;/P&gt;&lt;P&gt;So, we took the following files from the kernel source(for SD card image(trusty) for iMX6Q) and build the .ko file.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; adaua701.c/h&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sigmadsp.c/h&lt;/P&gt;&lt;P&gt;We are able to insert this module. Then, we built the machine driver as .ko file and able to insert that as module using insmod.&lt;/P&gt;&lt;P&gt;But, Probe functions of these modules are not getting called and there is no card in /proc/asound/cards.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;When does the probe functions of these module gets invoked? &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Below is the my machine driver code.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks in Advance,&lt;/P&gt;&lt;P&gt;Anil Patel&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/device.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/soc.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 "adau1701.h"&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static const struct snd_soc_dapm_widget imx_adau1701_dapm_widgets[] = {&lt;/P&gt;&lt;P&gt;&amp;nbsp; SND_SOC_DAPM_SPK("Speaker", NULL),&lt;/P&gt;&lt;P&gt;&amp;nbsp; SND_SOC_DAPM_LINE("Line Out", NULL),&lt;/P&gt;&lt;P&gt;&amp;nbsp; SND_SOC_DAPM_LINE("Line In", NULL),&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static const struct snd_soc_dapm_route imx_adau1701_dapm_routes[] = {&lt;/P&gt;&lt;P&gt;&amp;nbsp; { "Speaker", NULL, "OUT0" },&lt;/P&gt;&lt;P&gt;&amp;nbsp; { "Speaker", NULL, "OUT1" },&lt;/P&gt;&lt;P&gt;&amp;nbsp; { "Line Out", NULL, "OUT2" },&lt;/P&gt;&lt;P&gt;&amp;nbsp; { "Line Out", NULL, "OUT3" },&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; { "IN0", NULL, "Line In" },&lt;/P&gt;&lt;P&gt;&amp;nbsp; { "IN1", NULL, "Line In" },&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static int imx_adau1701_hw_params(struct snd_pcm_substream *substream,&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 *codec_dai = rtd-&amp;gt;codec_dai;&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 = snd_soc_dai_set_sysclk(codec_dai, ADAU1701_CLK_SRC_OSC, 12288000,&amp;nbsp; SND_SOC_CLOCK_IN);&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;&lt;/P&gt;&lt;P&gt;static struct snd_soc_ops imx_adau1701_ops = {&lt;/P&gt;&lt;P&gt;&amp;nbsp; .hw_params = imx_adau1701_hw_params,&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define IMX_ADAU1701_DAI_FMT (SND_SOC_DAIFMT_I2S | &lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBM_CFM)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct snd_soc_dai_link imx_adau1701_dai[] = {&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; .name = "adau1701",&lt;/P&gt;&lt;P&gt;&amp;nbsp; .stream_name = "adau1701",&lt;/P&gt;&lt;P&gt;&amp;nbsp; .cpu_dai_name = "imx-i2s.0",&lt;/P&gt;&lt;P&gt;&amp;nbsp; .codec_dai_name = "adau1701",&lt;/P&gt;&lt;P&gt;&amp;nbsp; .platform_name = "imx-i2s-pcm-audio",&lt;/P&gt;&lt;P&gt;&amp;nbsp; .codec_name = "adau1701.0-0034",&lt;/P&gt;&lt;P&gt;&amp;nbsp; .ops = &amp;amp;imx_adau1701_ops,&lt;/P&gt;&lt;P&gt;&amp;nbsp; .dai_fmt = IMX_ADAU1701_DAI_FMT,&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct snd_soc_card imx_adau1701 = {&lt;/P&gt;&lt;P&gt;&amp;nbsp; .name = "imx-adau1701",&lt;/P&gt;&lt;P&gt;&amp;nbsp; .owner = THIS_MODULE,&lt;/P&gt;&lt;P&gt;&amp;nbsp; .dai_link = &amp;amp;imx_adau1701_dai,&lt;/P&gt;&lt;P&gt;&amp;nbsp; .num_links = 1,&lt;/P&gt;&lt;P&gt;&amp;nbsp; .dapm_widgets = imx_adau1701_dapm_widgets,&lt;/P&gt;&lt;P&gt;&amp;nbsp; .num_dapm_widgets = ARRAY_SIZE(imx_adau1701_dapm_widgets),&lt;/P&gt;&lt;P&gt;&amp;nbsp; .dapm_routes = imx_adau1701_dapm_routes,&lt;/P&gt;&lt;P&gt;&amp;nbsp; .num_dapm_routes = ARRAY_SIZE(imx_adau1701_dapm_routes),&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static int imx_adau1701_probe(struct platform_device *pdev)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; struct snd_soc_card *card = &amp;amp;imx_adau1701;&lt;/P&gt;&lt;P&gt;&amp;nbsp; card-&amp;gt;dev = &amp;amp;pdev-&amp;gt;dev;&lt;/P&gt;&lt;P&gt;&amp;nbsp; return snd_soc_register_card(&amp;amp;imx_adau1701);&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static int imx_adau1701_remove(struct platform_device *pdev)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; struct snd_soc_card *card = platform_get_drvdata(pdev);&lt;/P&gt;&lt;P&gt;&amp;nbsp; snd_soc_unregister_card(card);&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;&lt;/P&gt;&lt;P&gt;static struct platform_driver imx_adau1701_driver = {&lt;/P&gt;&lt;P&gt;&amp;nbsp; .driver = {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .name = "imx-adau1701",&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .owner = THIS_MODULE,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .pm = &amp;amp;snd_soc_pm_ops,&lt;/P&gt;&lt;P&gt;&amp;nbsp; },&lt;/P&gt;&lt;P&gt;&amp;nbsp; .probe = imx_adau1701_probe,&lt;/P&gt;&lt;P&gt;&amp;nbsp; .remove = imx_adau1701_remove,&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;module_platform_driver(imx_adau1701_driver);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MODULE_AUTHOR("xyz");&lt;/P&gt;&lt;P&gt;MODULE_DESCRIPTION("ALSA SoC imx6q ADAU1701 driver");&lt;/P&gt;&lt;P&gt;MODULE_LICENSE("GPL");&lt;/P&gt;&lt;P&gt;MODULE_ALIAS("platform:imx-adau1701");&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 15 Jan 2015 06:36:36 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/Machine-driver-for-adau1701/m-p/345891#M47756</guid>
      <dc:creator>anilghadiya</dc:creator>
      <dc:date>2015-01-15T06:36:36Z</dc:date>
    </item>
    <item>
      <title>Re: Machine driver for adau1701</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/Machine-driver-for-adau1701/m-p/345892#M47757</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Anil&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;one can look at audio driver initialization at Linux Porting Guides&lt;/P&gt;&lt;P&gt;included in &lt;A href="https://www.freescale.com/webapp/Download?colCode=L3.0.35_4.1.0_LINUX_DOCS&amp;amp;location=null&amp;amp;fasp=1&amp;amp;WT_TYPE=Supporting%20Information&amp;amp;WT_VENDOR=FREESCALE&amp;amp;WT_FILE_FORMAT=gz&amp;amp;WT_ASSET=Documentation&amp;amp;fileExt=.gz"&gt;L3.0.35_4.1.0_LINUX_DOCS&lt;/A&gt;, &lt;A href="https://www.freescale.com/webapp/Download?colCode=L3.10.17_1.0.0_LINUX_DOCS&amp;amp;appType=license&amp;amp;location=null&amp;amp;fasp=1&amp;amp;WT_TYPE=Supporting%20Information&amp;amp;WT_VENDOR=FREESCALE&amp;amp;WT_FILE_FORMAT=gz&amp;amp;WT_ASSET=Documentation&amp;amp;fileExt=.gz"&gt;L3.10.17_1.0.0_LINUX_DOCS&lt;/A&gt;,&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; and link below&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="https://community.nxp.com/thread/323017"&gt;How to enable TLV320 on IMX6Q?&lt;/A&gt;&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;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 16 Jan 2015 01:06:05 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/Machine-driver-for-adau1701/m-p/345892#M47757</guid>
      <dc:creator>igorpadykov</dc:creator>
      <dc:date>2015-01-16T01:06:05Z</dc:date>
    </item>
    <item>
      <title>Re: Machine driver for adau1701</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/Machine-driver-for-adau1701/m-p/345893#M47758</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;Thanks for the reply. I followed the same code as in sgtl5000.c and imx-sgtl5000.c files to generate the codec and machine driver for adau1701 codec on imx platform. I build the two adau1701 files as separate modules and load using 'insmod' over kernel image 3.10. But I do not see any of the probe functions (adau1701_probe and &lt;SPAN style="color: #3d3d3d; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 12.7272720336914px;"&gt;imx_adau1701_probe()) being called. I put printk log messages in the start of both probe functions for debug. Is there anything else I need to take care if I want to load modules using insmod instead of building along with the kernel? Appreciate your help here.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #3d3d3d; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 12.7272720336914px;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #3d3d3d; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 12.7272720336914px;"&gt;Regards,&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #3d3d3d; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 12.7272720336914px;"&gt;Anil&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 16 Jan 2015 11:54:36 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/Machine-driver-for-adau1701/m-p/345893#M47758</guid>
      <dc:creator>anilghadiya</dc:creator>
      <dc:date>2015-01-16T11:54:36Z</dc:date>
    </item>
    <item>
      <title>Re: Machine driver for adau1701</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/Machine-driver-for-adau1701/m-p/345894#M47759</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Anil&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I would suggest to add printf to probe function&lt;/P&gt;&lt;P&gt;to verify if it is called by kernel.&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;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 16 Jan 2015 12:31:23 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/Machine-driver-for-adau1701/m-p/345894#M47759</guid>
      <dc:creator>igorpadykov</dc:creator>
      <dc:date>2015-01-16T12:31:23Z</dc:date>
    </item>
    <item>
      <title>Re: Machine driver for adau1701</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/Machine-driver-for-adau1701/m-p/345895#M47760</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 checked as you said. It seems like probe itself is not getting called by the kernel.&lt;/P&gt;&lt;P&gt;Do you have any idea why?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks and Regards,&lt;/P&gt;&lt;P&gt;Anil Ghadiya&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 16 Jan 2015 12:37:47 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/Machine-driver-for-adau1701/m-p/345895#M47760</guid>
      <dc:creator>anilghadiya</dc:creator>
      <dc:date>2015-01-16T12:37:47Z</dc:date>
    </item>
  </channel>
</rss>

