Merge 4.14-rc4 into tty-next
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 9 Oct 2017 07:05:05 +0000 (09:05 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 9 Oct 2017 07:05:05 +0000 (09:05 +0200)
We want the tty/serial fixes in here as well.

Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1  2 
arch/arm/boot/dts/stm32f429.dtsi
drivers/tty/mxser.c
drivers/tty/serial/fsl_lpuart.c

Simple merge
Simple merge
index eac35d4aa4c7534a42de868c67cd68b0e78db758,f0252184291ed4a3ab49ab03ce634e7be8588bf4..73d6a7c3874e6fe54d0581319cf3169b8647e6ab
@@@ -2211,35 -2195,23 +2194,41 @@@ static int lpuart_probe(struct platform
  
        platform_set_drvdata(pdev, &sport->port);
  
-       if (lpuart_is_32(sport))
+       if (lpuart_is_32(sport)) {
                lpuart_reg.cons = LPUART32_CONSOLE;
-       else
+               ret = devm_request_irq(&pdev->dev, sport->port.irq, lpuart32_int, 0,
+                                       DRIVER_NAME, sport);
+       } else {
                lpuart_reg.cons = LPUART_CONSOLE;
+               ret = devm_request_irq(&pdev->dev, sport->port.irq, lpuart_int, 0,
+                                       DRIVER_NAME, sport);
+       }
+       if (ret)
+               goto failed_irq_request;
  
        ret = uart_add_one_port(&lpuart_reg, &sport->port);
-       if (ret) {
-               clk_disable_unprepare(sport->clk);
-               return ret;
-       }
+       if (ret)
+               goto failed_attach_port;
  
 +      of_get_rs485_mode(np, &sport->port.rs485);
 +
 +      if (sport->port.rs485.flags & SER_RS485_RX_DURING_TX) {
 +              dev_err(&pdev->dev, "driver doesn't support RX during TX\n");
 +              return -ENOSYS;
 +      }
 +
 +      if (sport->port.rs485.delay_rts_before_send ||
 +          sport->port.rs485.delay_rts_after_send) {
 +              dev_err(&pdev->dev, "driver doesn't support RTS delays\n");
 +              return -ENOSYS;
 +      }
 +
 +      if (sport->port.rs485.flags & SER_RS485_ENABLED) {
 +              sport->port.rs485.flags |= SER_RS485_RTS_ON_SEND;
 +              writeb(UARTMODEM_TXRTSE, sport->port.membase + UARTMODEM);
 +      }
 +
        sport->dma_tx_chan = dma_request_slave_channel(sport->port.dev, "tx");
        if (!sport->dma_tx_chan)
                dev_info(sport->port.dev, "DMA tx channel request failed, "
                dev_info(sport->port.dev, "DMA rx channel request failed, "
                                "operating without rx DMA\n");
  
 -      if (of_property_read_bool(np, "linux,rs485-enabled-at-boot-time")) {
 -              sport->port.rs485.flags |= SER_RS485_ENABLED;
 -              sport->port.rs485.flags |= SER_RS485_RTS_ON_SEND;
 -              writeb(UARTMODEM_TXRTSE, sport->port.membase + UARTMODEM);
 -      }
 -
        return 0;
+ failed_attach_port:
+ failed_irq_request:
+       clk_disable_unprepare(sport->clk);
+       return ret;
  }
  
  static int lpuart_remove(struct platform_device *pdev)