<?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 want to control chipselect for my spidevice from user space. i am using imax25 board.</title>
    <link>https://community.nxp.com/t5/i-MX-Processors/I-want-to-control-chipselect-for-my-spidevice-from-user-space-i/m-p/180100#M7506</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;SPI_IOC_MESSAGE can execute multiple read/write operations in single ioctl() request.&lt;/P&gt;
&lt;P&gt;struct spi_ioc_transfer have member cs_change, which specifies if you want to deactivate CS between request or keep activated.&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned char&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cmd_buf[4];&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned char&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; data_buf[8];&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; struct spi_ioc_transfer xfer[2];&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* You must set command sequence on cmd_buf */&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xfer[0].tx_buf = (__u64) cmd_buf;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xfer[0].len = 4; /* Length of&amp;nbsp; command to write*/&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xfer[0].cs_change = 0; /* Keep CS activated */&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xfer[1].rx_buf = (__u64) data_buf;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xfer[1].len = 8; /* Length of Data to read */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xfer[1].cs_change = 0;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ioctl(fd, SPI_IOC_MESSAGE(2), xfer);&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;
&lt;P&gt;It worked on iMX28 at least.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 09 Aug 2012 20:52:30 GMT</pubDate>
    <dc:creator>YS</dc:creator>
    <dc:date>2012-08-09T20:52:30Z</dc:date>
    <item>
      <title>I want to control chipselect for my spidevice from user space. i am using imax25 board.</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/I-want-to-control-chipselect-for-my-spidevice-from-user-space-i/m-p/180099#M7505</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I have a requirement for control&amp;nbsp;chipselect for my spidevice.&lt;/P&gt;
&lt;P&gt;The requirement is between two writes or reads my device should remain selected from contoller.&lt;/P&gt;
&lt;P&gt;For example the sequence is&amp;nbsp; like :&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Write opreation&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;1)chip select&lt;/P&gt;
&lt;P&gt;2)send some data ( i am using ioctl(SPI_IOC_MESSAGE(1) )&lt;/P&gt;
&lt;P&gt;3)send some more data ( means sending one more time ioctl command).&lt;/P&gt;
&lt;P&gt;4)chip deselect&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Now after Write operation i need to read the data.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Read Operation&lt;/P&gt;
&lt;P&gt;1)chip select&lt;/P&gt;
&lt;P&gt;2)Read data ( i am using ioctl(SPI_IOC_MESSAGE(1) )&lt;/P&gt;
&lt;P&gt;3)Read more data ( means sending one more time ioctl command).&lt;/P&gt;
&lt;P&gt;4)chip deselect&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;but as per my understanding whenever we call ioctl(SPI_IOC_MESSAGE(1)) the control finally goes to mxc_spi.c (which is controller driver) and for each write/read it selects the chip -&amp;gt; enables the clock -&amp;gt; write/read data then deselects the chip.&lt;/P&gt;
&lt;P&gt;Note : i saw it wrtites to the control register which actually has the value for chip select and all.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Is there any way i can meet the above requirement?&lt;/P&gt;
&lt;P&gt;i am really stuck.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 08 Aug 2012 07:39:34 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/I-want-to-control-chipselect-for-my-spidevice-from-user-space-i/m-p/180099#M7505</guid>
      <dc:creator>priti1z</dc:creator>
      <dc:date>2012-08-08T07:39:34Z</dc:date>
    </item>
    <item>
      <title>Re: I want to control chipselect for my spidevice from user space. i am using imax25 board.</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/I-want-to-control-chipselect-for-my-spidevice-from-user-space-i/m-p/180100#M7506</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;SPI_IOC_MESSAGE can execute multiple read/write operations in single ioctl() request.&lt;/P&gt;
&lt;P&gt;struct spi_ioc_transfer have member cs_change, which specifies if you want to deactivate CS between request or keep activated.&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned char&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cmd_buf[4];&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned char&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; data_buf[8];&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; struct spi_ioc_transfer xfer[2];&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* You must set command sequence on cmd_buf */&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xfer[0].tx_buf = (__u64) cmd_buf;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xfer[0].len = 4; /* Length of&amp;nbsp; command to write*/&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xfer[0].cs_change = 0; /* Keep CS activated */&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xfer[1].rx_buf = (__u64) data_buf;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xfer[1].len = 8; /* Length of Data to read */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xfer[1].cs_change = 0;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ioctl(fd, SPI_IOC_MESSAGE(2), xfer);&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;
&lt;P&gt;It worked on iMX28 at least.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 09 Aug 2012 20:52:30 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/I-want-to-control-chipselect-for-my-spidevice-from-user-space-i/m-p/180100#M7506</guid>
      <dc:creator>YS</dc:creator>
      <dc:date>2012-08-09T20:52:30Z</dc:date>
    </item>
  </channel>
</rss>

