<?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: MX6 i2C linux driver in i.MX Processors</title>
    <link>https://community.nxp.com/t5/i-MX-Processors/MX6-i2C-linux-driver/m-p/280793#M32232</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Klein&lt;/P&gt;&lt;P&gt;This discussion is closed since no activity. If you still need help, please feel free to reply with an update to this discussion, or create another discussion.&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;Yixing&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 27 Feb 2014 05:54:57 GMT</pubDate>
    <dc:creator>YixingKong</dc:creator>
    <dc:date>2014-02-27T05:54:57Z</dc:date>
    <item>
      <title>MX6 i2C linux driver</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/MX6-i2C-linux-driver/m-p/280790#M32229</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi all,&lt;/P&gt;&lt;P&gt;I currently work with the MCIMMX6Q-SDB board from Freescale. The kernel is taken from Yocto/Dylan core-image-base as it is, without change in config.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I tried to write a small userspace-application which uses the accelerator MMA8451 via I2C.&lt;/P&gt;&lt;P&gt;I figured out how the MMA is connected to the CPU and tried to do the following:&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;dev = open ("/dev/i2c-0", O_RDWR);&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (dev &amp;lt; 0) {&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;TD&gt; err = errno;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;TD&gt; perror("==&amp;gt; ERROR&amp;nbsp; open:");&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;TD&gt; printf("errno = %d\n", err);&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;TD&gt; close(dev);&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;TD&gt; exit (1);&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (ioctl(dev, I2C_SLAVE, I2C_DEV_ADR_MMA8451) &amp;lt; 0) {&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;TD&gt; err = errno;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;TD&gt; perror("==&amp;gt; Error ioctl:");&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;TD&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;TD&gt; printf("errno = %d\n", err);&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;TD&gt; close(dev);&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;TD&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;TD&gt; exit (1);&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The syscall ioclt comes up with the following error;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;==&amp;gt; Error ioctl:: Device or resource busy&lt;/P&gt;&lt;P&gt;errno = 16&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If I use&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;if (ioctl(dev, I2C_SLAVE_FORCE, I2C_DEV_ADR_MMA8451) &amp;lt; 0) {&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;instead, the I2C basicly works.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;After some search, I found the following:&lt;/P&gt;&lt;P&gt;root@imx6qsabresd:/sys/devices/virtual/input/input3# cat name&lt;/P&gt;&lt;P&gt;mma845x&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;So this makes me thinking, that there is a virtual device driver in the system which uses the i2c-driver as well.&lt;/P&gt;&lt;P&gt;But I cant find any informations about this.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Does anyone have experience on that ?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Best regards&lt;/P&gt;&lt;P&gt;Karsten&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 15 Nov 2013 07:47:00 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/MX6-i2C-linux-driver/m-p/280790#M32229</guid>
      <dc:creator>karstenklein</dc:creator>
      <dc:date>2013-11-15T07:47:00Z</dc:date>
    </item>
    <item>
      <title>Re: MX6 i2C linux driver</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/MX6-i2C-linux-driver/m-p/280791#M32230</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;If your register i2c device with same address in board init,userland /dev/i2c-x access will report device busy.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;See details in drivers/i2c/i2c-dev.c&lt;/P&gt;&lt;P&gt;/* NOTE:&amp;nbsp; devices set up to work with "new style" drivers&lt;/P&gt;&lt;P&gt;&amp;nbsp; * can't use I2C_SLAVE, even when the device node is not&lt;/P&gt;&lt;P&gt;&amp;nbsp; * bound to a driver.&amp;nbsp; Only I2C_SLAVE_FORCE will work.&lt;/P&gt;&lt;P&gt;&amp;nbsp; *&lt;/P&gt;&lt;P&gt;&amp;nbsp; * Setting the PEC flag here won't affect kernel drivers,&lt;/P&gt;&lt;P&gt;&amp;nbsp; * which will be using the i2c_client node registered with&lt;/P&gt;&lt;P&gt;&amp;nbsp; * the driver model core.&amp;nbsp; Likewise, when that client has&lt;/P&gt;&lt;P&gt;&amp;nbsp; * the PEC flag already set, the i2c-dev driver won't see&lt;/P&gt;&lt;P&gt;&amp;nbsp; * (or use) this setting.&lt;/P&gt;&lt;P&gt;&amp;nbsp; */&lt;/P&gt;&lt;P&gt;&amp;nbsp; if ((arg &amp;gt; 0x3ff) ||&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (((client-&amp;gt;flags &amp;amp; I2C_M_TEN) == 0) &amp;amp;&amp;amp; arg &amp;gt; 0x7f))&lt;/P&gt;&lt;P&gt;&amp;nbsp; return -EINVAL;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;STRONG&gt;if (cmd == I2C_SLAVE &amp;amp;&amp;amp; i2cdev_check_addr(client-&amp;gt;adapter, arg))&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp; return -EBUSY;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* REVISIT: address could become busy later */&lt;/P&gt;&lt;P&gt;&amp;nbsp; client-&amp;gt;addr = arg;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 15 Nov 2013 09:12:09 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/MX6-i2C-linux-driver/m-p/280791#M32230</guid>
      <dc:creator>raymondwang</dc:creator>
      <dc:date>2013-11-15T09:12:09Z</dc:date>
    </item>
    <item>
      <title>Re: MX6 i2C linux driver</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/MX6-i2C-linux-driver/m-p/280792#M32231</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Klein&lt;/P&gt;&lt;P&gt;Had your issue got resolved? If yes, we are going to close the discussion in 3 days. If you still need help, please feel &lt;/P&gt;&lt;P&gt;free to reply with an update to this discussion.&lt;/P&gt;&lt;P&gt;Thanks,&lt;BR /&gt;Yixing&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 21 Feb 2014 09:01:52 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/MX6-i2C-linux-driver/m-p/280792#M32231</guid>
      <dc:creator>YixingKong</dc:creator>
      <dc:date>2014-02-21T09:01:52Z</dc:date>
    </item>
    <item>
      <title>Re: MX6 i2C linux driver</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/MX6-i2C-linux-driver/m-p/280793#M32232</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Klein&lt;/P&gt;&lt;P&gt;This discussion is closed since no activity. If you still need help, please feel free to reply with an update to this discussion, or create another discussion.&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;Yixing&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 27 Feb 2014 05:54:57 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/MX6-i2C-linux-driver/m-p/280793#M32232</guid>
      <dc:creator>YixingKong</dc:creator>
      <dc:date>2014-02-27T05:54:57Z</dc:date>
    </item>
  </channel>
</rss>

