I'm using a custom i.mx6sl board running Linux 4.1.15 and trying to get bluetooth working. I'm using the following DTS settings:
The problem I have is about configuring AUD_RXFS as UART3_RX and AUD_RXC as UART3_TX. The problem lies with IOMUXC_UART3_UART_RX_DATA_SELECT_INPUT. The datasheet says:
Route RX_DATA signal to pad when UART is in DCE mode. Route TX_DATA signal to pad when UART is
in DTE mode.
000 AUD_RXC_ALT2 — Selecting ALT2 mode of pad AUD_RXC for UART3_TX_DATA.
001 AUD_RXFS_ALT2 — Selecting ALT2 mode of pad AUD_RXFS for UART3_RX_DATA.
Does that mean I can't actually use AUD_RXFS as UART3_RX and at the same time have AUD_RXC as UART3_TX?
In testing, I'm seeing that I can't actually transmit anything on UART3 (ttymxc2).
root@imx6slevk:~# cat /proc/tty/driver/IMX-uart
serinfo:1.0 driver revision:
0: uart:IMX mmio:0x02020000 irq:21 tx:31181 rx:1126 RTS|DTR|DSR|CD
2: uart:IMX mmio:0x02034000 irq:23 tx:0 rx:0 DSR|CD
3: uart:IMX mmio:0x02038000 irq:24 tx:3 rx:0 DSR|CD
I checked that physically the pinmux has been configured correctly except for the confusion around IOMUXC_UART3_UART_RX_DATA_SELECT_INPUT
a) check rx pin
# check IOMUXC_SW_MUX_CTL_PAD_AUD_RXFS is set to 2 ALT2 UART3_RX_DATA.
/unit_tests/memtool -32 0x020E0058 1
# check (IOMUXC_UART3_UART_RX_DATA_SELECT_INPUT) is set to 1 AUD_RXFS_ALT2 — Selecting ALT2 mode of pad AUD_RXFS for UART3_RX_DATA
/unit_tests/memtool -32 0x20E080C 1
b) check tx pin
# check IOMUXC_SW_MUX_CTL_PAD_AUD_RXC is set to 2 UART3_TX_DATA.
/unit_tests/memtool -32 0x020E0050 1
But IOMUXC_UART3_UART_RX_DATA_SELECT_INPUT can't be set to 0 since it needs to be set to 1 so that RXFS is UART3_RX.
I think this means that I made a design mistake when selecting AUD_RXFS and AUD_RXC as the pads for UART3_RX and TX on this board and that means I won't be able to get this to work unless I find new pads that can carry UART3_RX and TX without conflict.
I would appreciate confirmation or advice/suggestions on this.