AnsweredAssumed Answered

iMX6 - non-console UARTs cause kernel to freeze

Question asked by M G on Jul 22, 2014
Latest reply on Jul 28, 2014 by M G

Hello,

I have a custom board using iMX6S; the board's design is based on the Sabre SD reference board.

I have ported over U-boot and kernel (V 3.0.35) successfully.

But I'm having trouble with the non-console UARTs (ttymxc1 through ttymxc4).

The console UART (ttymxc0) works fine and I can see all the debug outputs on the console.

 

As a background, I have all 5 UARTs enabled on the chip.

The UART registration with the kernel seems to be fine too; here is the dmesg output:

imx-uart.2: ttymxc2 at MMIO 0x21ec000 (irq = 60) is a IMX

imx-uart.0: ttymxc0 at MMIO 0x2020000 (irq = 58) is a IMX

console [ttymxc0] enabled, bootconsole disabled

imx-uart.1: ttymxc1 at MMIO 0x21e8000 (irq = 59) is a IMX

imx-uart.3: ttymxc3 at MMIO 0x21f0000 (irq = 61) is a IMX

imx-uart.4: ttymxc4 at MMIO 0x21f4000 (irq = 62) is a IMX

 

The function calls for initialization are:

imx6q_add_imx_uart(2, NULL);

imx6q_add_imx_uart(0, NULL);

imx6q_add_imx_uart(1, NULL);

imx6q_add_imx_uart(3, NULL);

imx6q_add_imx_uart(4, NULL);

 

The pads are setup as follows:

....

// UART 1

MX6DL_PAD_EIM_D19__UART1_CTS,

MX6DL_PAD_EIM_D20__UART1_RTS,

MX6DL_PAD_CSI0_DAT11__UART1_RXD,

MX6DL_PAD_CSI0_DAT10__UART1_TXD,

 

// UART 2

MX6DL_PAD_EIM_D27__UART2_RXD,

MX6DL_PAD_EIM_D26__UART2_TXD,

 

// UART 3

MX6DL_PAD_EIM_D25__UART3_RXD,

MX6DL_PAD_EIM_D24__UART3_TXD,

 

// UART 4

MX6DL_PAD_CSI0_DAT13__UART4_RXD,

MX6DL_PAD_CSI0_DAT12__UART4_TXD,

 

// UART 5

MX6DL_PAD_CSI0_DAT19__UART5_CTS,

MX6DL_PAD_CSI0_DAT18__UART5_RTS,

MX6DL_PAD_CSI0_DAT15__UART5_RXD,

MX6DL_PAD_CSI0_DAT14__UART5_TXD,

...

 

If I echo something on ttymxc0, it echos it correctly.

But if echo on the other ports, the kernel freezes.

 

I have already tried this fix: ENGR00283795: MX6: UART 1 hangs the system on SARBESD ..., but it did not help.

 

Please let me know what I might be missing.

 

Thanks,

MG.

Outcomes