Merge tag 'tty-3.19-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty
authorLinus Torvalds <torvalds@linux-foundation.org>
Sun, 14 Dec 2014 23:23:32 +0000 (15:23 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sun, 14 Dec 2014 23:23:32 +0000 (15:23 -0800)
Pull tty/serial driver updates from Greg KH:
 "Here's the big tty/serial driver update for 3.19-rc1.

  There are a number of TTY core changes/fixes in here from Peter Hurley
  that have all been teted in linux-next for a long time now.  There are
  also the normal serial driver updates as well, full details in the
  changelog below"

* tag 'tty-3.19-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty: (219 commits)
  serial: pxa: hold port.lock when reporting modem line changes
  tty-hvsi_lib: Deletion of an unnecessary check before the function call "tty_kref_put"
  tty: Deletion of unnecessary checks before two function calls
  n_tty: Fix read_buf race condition, increment read_head after pushing data
  serial: of-serial: add PM suspend/resume support
  Revert "serial: of-serial: add PM suspend/resume support"
  Revert "serial: of-serial: fix up PM ops on no_console_suspend and port type"
  serial: 8250: don't attempt a trylock if in sysrq
  serial: core: Add big-endian iotype
  serial: samsung: use port->fifosize instead of hardcoded values
  serial: samsung: prefer to use fifosize from driver data
  serial: samsung: fix style problems
  serial: samsung: wait for transfer completion before clock disable
  serial: icom: fix error return code
  serial: tegra: clean up tty-flag assignments
  serial: Fix io address assign flow with Fintek PCI-to-UART Product
  serial: mxs-auart: fix tx_empty against shift register
  serial: mxs-auart: fix gpio change detection on interrupt
  serial: mxs-auart: Fix mxs_auart_set_ldisc()
  serial: 8250_dw: Use 64-bit access for OCTEON.
  ...

1  2 
Documentation/devicetree/bindings/serial/pl011.txt
MAINTAINERS
drivers/tty/n_tty.c
drivers/tty/serial/Kconfig
include/linux/kernel.h
kernel/exit.c

index 52464918cfe231e96c862e612c746bfb4a6ff684,0e05340055e1efce63cde4bea5f1fe1a74ed954b..ba3ecb8cb5a1855465d69e42ea812fc7e28518fb
@@@ -6,34 -6,17 +6,46 @@@ Required properties
  - interrupts: exactly one interrupt specifier
  
  Optional properties:
- - pinctrl: When present, must have one state named "default",
 -- pinctrl:            When present, must have one state named "sleep"
 -                      and one state named "default"
 -- clocks:             When present, must refer to exactly one clock named
 -                      "apb_pclk"
 -- dmas:                       When present, may have one or two dma channels.
 -                      The first one must be named "rx", the second one
 -                      must be named "tx".
 -- auto-poll:          Enables polling when using RX DMA.
 -- poll-rate-ms:               Rate at which poll occurs when auto-poll is set,
 -                      default 100ms.
 -- poll-timeout-ms:    Poll timeout when auto-poll is set, default
 -                      3000ms.
++- pinctrl:
++         When present, must have one state named "default",
 +         and may contain a second name named "sleep". The former
 +         state sets up pins for ordinary operation whereas
 +         the latter state will put the associated pins to sleep
 +         when the UART is unused
- - clocks:  When present, the first clock listed must correspond to
++- clocks:
++         When present, the first clock listed must correspond to
 +         the clock named UARTCLK on the IP block, i.e. the clock
 +         to the external serial line, whereas the second clock
 +         must correspond to the PCLK clocking the internal logic
 +         of the block. Just listing one clock (the first one) is
 +         deprecated.
- - clocks-names: When present, the first clock listed must be named
++- clocks-names:
++         When present, the first clock listed must be named
 +         "uartclk" and the second clock listed must be named
 +         "apb_pclk"
- - dmas:          When present, may have one or two dma channels.
++- dmas:       
++         When present, may have one or two dma channels.
 +         The first one must be named "rx", the second one
 +         must be named "tx".
++- auto-poll:
++         Enables polling when using RX DMA.
++- poll-rate-ms:
++         Rate at which poll occurs when auto-poll is set,
++         default 100ms.
++- poll-timeout-ms:
++         Poll timeout when auto-poll is set, default
++         3000ms.
  
  See also bindings/arm/primecell.txt
 +
 +Example:
 +
 +uart@80120000 {
 +      compatible = "arm,pl011", "arm,primecell";
 +      reg = <0x80120000 0x1000>;
 +      interrupts = <0 11 IRQ_TYPE_LEVEL_HIGH>;
 +      dmas = <&dma 13 0 0x2>, <&dma 13 0 0x0>;
 +      dma-names = "rx", "tx";
 +      clocks = <&foo_clk>, <&bar_clk>;
 +      clock-names = "uartclk", "apb_pclk";
 +};
diff --cc MAINTAINERS
Simple merge
index 26f097f60b104630ae49304abc6cb95d92fa1e22,9e3b21624c8242cfc9353cd9a6916a8ca87c3cae..d2b496750d590c1e06d755b0b563f40c30f8d165
@@@ -2193,46 -2198,30 +2193,30 @@@ static ssize_t n_tty_read(struct tty_st
  
                if (!input_available_p(tty, 0)) {
                        if (test_bit(TTY_OTHER_CLOSED, &tty->flags)) {
-                               up_read(&tty->termios_rwsem);
-                               tty_flush_to_ldisc(tty);
-                               down_read(&tty->termios_rwsem);
-                               if (!input_available_p(tty, 0)) {
-                                       retval = -EIO;
-                                       break;
-                               }
-                       } else {
-                               if (tty_hung_up_p(file))
-                                       break;
-                               if (!timeout)
-                                       break;
-                               if (file->f_flags & O_NONBLOCK) {
-                                       retval = -EAGAIN;
-                                       break;
-                               }
-                               if (signal_pending(current)) {
-                                       retval = -ERESTARTSYS;
-                                       break;
-                               }
-                               n_tty_set_room(tty);
-                               up_read(&tty->termios_rwsem);
-                               timeout = wait_woken(&wait, TASK_INTERRUPTIBLE,
-                                                    timeout);
-                               down_read(&tty->termios_rwsem);
-                               continue;
+                               retval = -EIO;
+                               break;
                        }
-               }
-               /* Deal with packet mode. */
-               if (packet && b == buf) {
-                       if (tty_put_user(tty, TIOCPKT_DATA, b++)) {
-                               retval = -EFAULT;
-                               b--;
+                       if (tty_hung_up_p(file))
+                               break;
+                       if (!timeout)
+                               break;
+                       if (file->f_flags & O_NONBLOCK) {
+                               retval = -EAGAIN;
                                break;
                        }
-                       nr--;
+                       if (signal_pending(current)) {
+                               retval = -ERESTARTSYS;
+                               break;
+                       }
+                       n_tty_set_room(tty);
+                       up_read(&tty->termios_rwsem);
 -                      timeout = schedule_timeout(timeout);
++                      timeout = wait_woken(&wait, TASK_INTERRUPTIBLE,
++                                           timeout);
+                       down_read(&tty->termios_rwsem);
+                       continue;
                }
 -              __set_current_state(TASK_RUNNING);
  
                if (ldata->icanon && !L_EXTPROC(tty)) {
                        retval = canon_copy_from_read_buf(tty, &b, &nr);
Simple merge
Simple merge
diff --cc kernel/exit.c
Simple merge