I'm aware that setting fsl,dte-mode in the device tree definition of the UART will set bit 6 of the UFCR register for UART (UART3 for ttymxc2), this bit should have the effect of crossing over the TX/RX and CTS/RTS external pins in the IOMUX such that tx becomes rx and cts becomes rts, DTE mode also has the effect of turning the DCE output Ring Indicator (RI) into an INPUT (for DTE) which should generate an interrupt.
All of this is great, however, DTE mode just simply doesn't work, the only time I've seen it work is when setting the TEST mode bits to internally loopback the pins and then you see tx data sent out receive on the rx pin because prior to the IOMUX DTE isn't broken, introduce the IOMUX to the external pins and what I and other engineers see is a broken DTE-mode.
I've seen posts :-
And many of them have a response that suggests that the person writing the question doesn't understand that both TX/RX AND CTS/RTS are swapped. However, I believe that many of these cases along with my own do understand this and its just that there is an issue with DTE mode. When either physically looping the external TX/RX I should see Data arrive when sent to ttymxc2 but I'm not, both CTS and RTS are active low so essentially nothing is telling them in this case that you should wait so they should be ok. And when connected to a modem I see data being sent from the tx pin, correct handshaking over CTS/RTS and data arriving at the RX pin but no actual signs of data in the UARTS registers at all. I need DTE mode as I'd like to add a wakeup upon RI input being set (its an output in DCE).
Please can someone say whether they have configured UART3 ttymxc2 for dte-mode and with ctsrts enabled and that they've actually had it working in this mode with a DCE modem? From what I see ( and double checked with another engineer) this seems broken? NXP, please confirm?
Hello Carl Sherratt,
The DTE/DCE modes on the i.MX6 UART follow a logic that may differ from what would be considered the standard.
There is a table made by Martin Schad on the following thread that show the i.MX6 implementation.
You may see the configuration of both modes on the attached figure, which is a corrected version of the figure in section 64.2 of the i.MX6Q Reference Manual. This correction has been submitted and may be available on the next release of the Reference Manual.
I hope this helps!