]> git.baikalelectronics.ru Git - uboot.git/commitdiff
colibri imx6: disable ri and dcd irq in uarts
authorMax Krummenacher <max.krummenacher@toradex.com>
Fri, 8 Feb 2019 17:42:21 +0000 (18:42 +0100)
committerStefano Babic <sbabic@denx.de>
Sat, 13 Apr 2019 18:30:09 +0000 (20:30 +0200)
If the UART is used in DTE mode the RI and DCD bits in UCR3 become
irq enable bits. Both are set to enabled after reset and both likely
are pending.

Disable the bits also on UARTs not used in the boot loader to prevent
an interrupt storm when Linux enables the UART interrupts.

Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com>
Acked-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>
board/toradex/colibri_imx6/colibri_imx6.c

index 84251891420238d7e8af81a376e5d2612d87bccb..efb6b925afacac7bacc1b7194f2d93c93e5a6acc 100644 (file)
@@ -271,14 +271,21 @@ iomux_v3_cfg_t const usb_pads[] = {
  * UARTs are used in DTE mode, switch the mode on all UARTs before
  * any pinmuxing connects a (DCE) output to a transceiver output.
  */
+#define UCR3           0x88    /* FIFO Control Register */
+#define UCR3_RI                BIT(8)  /* RIDELT DTE mode */
+#define UCR3_DCD       BIT(9)  /* DCDDELT DTE mode */
 #define UFCR           0x90    /* FIFO Control Register */
-#define UFCR_DCEDTE    (1<<6)  /* DCE=0 */
+#define UFCR_DCEDTE    BIT(6)  /* DCE=0 */
 
 static void setup_dtemode_uart(void)
 {
        setbits_le32((u32 *)(UART1_BASE + UFCR), UFCR_DCEDTE);
        setbits_le32((u32 *)(UART2_BASE + UFCR), UFCR_DCEDTE);
        setbits_le32((u32 *)(UART3_BASE + UFCR), UFCR_DCEDTE);
+
+       clrbits_le32((u32 *)(UART1_BASE + UCR3), UCR3_DCD | UCR3_RI);
+       clrbits_le32((u32 *)(UART2_BASE + UCR3), UCR3_DCD | UCR3_RI);
+       clrbits_le32((u32 *)(UART3_BASE + UCR3), UCR3_DCD | UCR3_RI);
 }
 
 static void setup_iomux_uart(void)