<?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: RTS/CTS handshake confusion in i.MX Processors</title>
    <link>https://community.nxp.com/t5/i-MX-Processors/RTS-CTS-handshake-confusion/m-p/237059#M19002</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I was also confused the description. but apparently Freescale i.MX5 and i.MX6 defines CTS as output (de-activated when RX FIFO exceeds the threshold) and RTS as input (stop transmission if deactivated), regardless to the DTE/DCE mode configuration.&lt;/P&gt;&lt;P&gt;It is furthermore complicated (and make it confused) that IOMUX register has selection to configure a GPIO pin to either TXD or RXD, or RTS or CTS. For example, linux-3.0.15/arch/arm/plat-mxc/include/mach/iomux-mx6q.h defines _MX6Q_PAD_KEY_ROW1__UART5_TXD and _MX6Q_PAD_KEY_ROW1__UART5_RXD, then _MX6Q_PAD_KEY_COL4__UART5_CTS and _MX6Q_PAD_KEY_COL4__UART5_RTS.&lt;/P&gt;&lt;P&gt;It almost seems like KEY_ROW1 pin can be configured to either TXD or RTX, KEY_COL4 pin can be configured either CTS or RTS. IT IS NOT!!&lt;/P&gt;&lt;P&gt;The function of IOMUX "DAISY" register is to select a signal source to a certain input function of the SOC. If you configure KEY_ROW1 as RXD then select TXD for IOMUX, it essentially make internal TXD-RXD loopback, NEVER to make KEY_ROW1 as TXD output. So as CTS and RTS (be careful again; CTS is output, RTS is input).&lt;/P&gt;&lt;P&gt;It is VERY confusing indeed, and there are lots of misleading descriptions either in the dataseet or Linux source code ;-(&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 04 Feb 2013 22:45:07 GMT</pubDate>
    <dc:creator>YS</dc:creator>
    <dc:date>2013-02-04T22:45:07Z</dc:date>
    <item>
      <title>RTS/CTS handshake confusion</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/RTS-CTS-handshake-confusion/m-p/237057#M19000</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;In the datasheet for the i.MX6 it states that the CTS is always output and RTS input regardless of DCE/DTE mode selected. Then how can it work in DTE mode then, when the RTS would be a signal going out to the connected device/modem and CTS should be a response from the connected device/modem..?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In the datasheet of the i.MX53 (assuming the UART function block would be similar) there's a table in chapter 76.1.3 that states opposite (and what I would assume correct) direction for these signals, changing direction according to DTE/DCE mode. But then later in chapter 76.2.1.2.1 it states for instance that CTS is always _output_... as in the i.MX6 documentation.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Ok, I'm confused, or missing something obvious in the documentation in what should be pretty basic...&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 25 Jan 2013 10:40:17 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/RTS-CTS-handshake-confusion/m-p/237057#M19000</guid>
      <dc:creator>ThomasG1z</dc:creator>
      <dc:date>2013-01-25T10:40:17Z</dc:date>
    </item>
    <item>
      <title>Re: RTS/CTS handshake confusion</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/RTS-CTS-handshake-confusion/m-p/237058#M19001</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;As for i.MX53, the datasheet is referring to the UART + additional signal multiplexing &lt;/P&gt;&lt;P&gt;occurring between the UART peripheral and the IC pad (at the IOMUX), while the &lt;/P&gt;&lt;P&gt;Reference Manual describes only the peripheral boundary (internal signals).&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>Fri, 25 Jan 2013 11:20:30 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/RTS-CTS-handshake-confusion/m-p/237058#M19001</guid>
      <dc:creator>Yuri</dc:creator>
      <dc:date>2013-01-25T11:20:30Z</dc:date>
    </item>
    <item>
      <title>Re: RTS/CTS handshake confusion</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/RTS-CTS-handshake-confusion/m-p/237059#M19002</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I was also confused the description. but apparently Freescale i.MX5 and i.MX6 defines CTS as output (de-activated when RX FIFO exceeds the threshold) and RTS as input (stop transmission if deactivated), regardless to the DTE/DCE mode configuration.&lt;/P&gt;&lt;P&gt;It is furthermore complicated (and make it confused) that IOMUX register has selection to configure a GPIO pin to either TXD or RXD, or RTS or CTS. For example, linux-3.0.15/arch/arm/plat-mxc/include/mach/iomux-mx6q.h defines _MX6Q_PAD_KEY_ROW1__UART5_TXD and _MX6Q_PAD_KEY_ROW1__UART5_RXD, then _MX6Q_PAD_KEY_COL4__UART5_CTS and _MX6Q_PAD_KEY_COL4__UART5_RTS.&lt;/P&gt;&lt;P&gt;It almost seems like KEY_ROW1 pin can be configured to either TXD or RTX, KEY_COL4 pin can be configured either CTS or RTS. IT IS NOT!!&lt;/P&gt;&lt;P&gt;The function of IOMUX "DAISY" register is to select a signal source to a certain input function of the SOC. If you configure KEY_ROW1 as RXD then select TXD for IOMUX, it essentially make internal TXD-RXD loopback, NEVER to make KEY_ROW1 as TXD output. So as CTS and RTS (be careful again; CTS is output, RTS is input).&lt;/P&gt;&lt;P&gt;It is VERY confusing indeed, and there are lots of misleading descriptions either in the dataseet or Linux source code ;-(&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 04 Feb 2013 22:45:07 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/RTS-CTS-handshake-confusion/m-p/237059#M19002</guid>
      <dc:creator>YS</dc:creator>
      <dc:date>2013-02-04T22:45:07Z</dc:date>
    </item>
    <item>
      <title>Re: RTS/CTS handshake confusion</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/RTS-CTS-handshake-confusion/m-p/237060#M19003</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;I found this thread while searching for answer to my question: "why the hardware flow-control does not work for UART3?".&lt;/P&gt;&lt;P&gt;I use kernel linux-3.0.35 release, where I want to use UART3 and its RTS/CTS flow-control. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;So, I configured (added) the pins as follows to mx6q_common_pads structure:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static iomux_v3_cfg_t MX6NAME(common_pads)[] = {&lt;/P&gt;&lt;P&gt;/*.....*/&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* UART3&amp;nbsp; */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX6PAD(EIM_D24__UART3_TXD),&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX6PAD(EIM_D25__UART3_RXD),&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX6PAD(EIM_D31__UART3_RTS),&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MX6PAD(EIM_D23__UART3_CTS),&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;then, in the board code, I set flag for my uart and initialized it: &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static const struct imxuart_platform_data uart2_data __initconst = {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .flags&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = IMXUART_HAVE_RTSCTS,&lt;BR /&gt;};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;imx6q_add_imx_uart(2, &amp;amp;uart2_data);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Unfortunately, the RTS/CTS flow-control does not seem to work. &lt;/P&gt;&lt;P&gt;When I set 'crtscts' option to ttymxc2 via stty command, I cannot transfer anything. On the other hand if I use '-crtscts' the transmission works fine.&lt;/P&gt;&lt;P&gt;Am I missing something in pin configuration?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Best regards,&lt;/P&gt;&lt;P&gt;Rafal&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 03 Sep 2013 16:07:31 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/RTS-CTS-handshake-confusion/m-p/237060#M19003</guid>
      <dc:creator>rafalfabich</dc:creator>
      <dc:date>2013-09-03T16:07:31Z</dc:date>
    </item>
    <item>
      <title>Re: RTS/CTS handshake confusion</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/RTS-CTS-handshake-confusion/m-p/237061#M19004</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi again,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;sorry for answering to myself, but I found solution to my problem.&lt;/P&gt;&lt;P&gt;I needed to set IOMUXC_UART3_UART_RTS_B_SELECT_INPUT in the following way:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* we are selecting ALT4 mode of pad EIM_D31 for UART3_RTS_B.*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* reference: i.MX6 Ref.Man. p. 2683: 36.4.582 Select Input Register (IOMUXC_UART3_UART_RTS_B_SELECT_INPUT) */&lt;/P&gt;&lt;P&gt;#define SELECT_EIM_D31_FOR_UART3_RTS 3&lt;/P&gt;&lt;P&gt;#define IOMUXC_UART3_UART_RTS_B_SELECT_INPUT_OFFSET 0x92c&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&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; __iomem void *base;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;TD&gt; int reg;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&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; base = ioremap(MX6Q_IOMUXC_BASE_ADDR, SZ_4K);&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;TD&gt; reg = __raw_readl(base + IOMUXC_UART3_UART_RTS_B_SELECT_INPUT_OFFSET);&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;TD&gt; reg |= SELECT_EIM_D31_FOR_UART3_RTS;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;TD&gt; __raw_writel(reg, base + IOMUXC_UART3_UART_RTS_B_SELECT_INPUT_OFFSET);&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;TD&gt; iounmap(base);&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;Regards,&lt;/P&gt;&lt;P&gt;Rafal&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 04 Sep 2013 14:20:03 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/RTS-CTS-handshake-confusion/m-p/237061#M19004</guid>
      <dc:creator>rafalfabich</dc:creator>
      <dc:date>2013-09-04T14:20:03Z</dc:date>
    </item>
  </channel>
</rss>

