1. 03 5月, 2012 5 次提交
  2. 02 5月, 2012 1 次提交
    • C
      8250.c: less than 2400 baud fix. · f9a9111b
      Christian Melki 提交于
      We noticed that we were loosing data at speed less than 2400 baud.
      It turned out our (TI16750 compatible) uart with 64 byte outgoing fifo
      was truncated to 16 byte (bit 5 sets fifo len) when modifying the fcr
      reg.
      The input code still fills the buffer with 64 bytes if I remember
      correctly and thus data is lost.
      Our fix was to remove whiping of the fcr content and just add the
      TRIGGER_1 which we want for latency.
      I can't see why this would not work on less than 2400 always, for all
      uarts ...
      Otherwise one would have to make sure the filling of the fifo re-checks
      the current state of available fifo size (urrk).
      Signed-off-by: NChristian Melki <christian.melki@ericsson.se>
      Cc: stable <stable@vger.kernel.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      f9a9111b
  3. 19 4月, 2012 2 次提交
  4. 10 4月, 2012 2 次提交
  5. 10 3月, 2012 6 次提交
  6. 11 2月, 2012 1 次提交
  7. 04 2月, 2012 1 次提交
    • C
      tty: fix a build failure on sparc · e7c9bba7
      Cong Wang 提交于
      On sparc, there is a build failure:
      
      drivers/tty/serial/8250/8250.c:48:21: error: suncore.h: No such file or directory
      drivers/tty/serial/8250/8250.c:3275: error: implicit declaration of function 'sunserial_register_minors'
      drivers/tty/serial/8250/8250.c:3305: error: implicit declaration of function 'sunserial_unregister_minors'
      
      this is due to commit 9bef3d41
      (serial: group all the 8250 related code together) moved these files
      into 8250/ subdirectory, but forgot to change the reference
      to drivers/tty/serial/suncore.h.
      
      Cc: Paul Gortmaker <paul.gortmaker@windriver.com>
      Signed-off-by: NWANG Cong <xiyou.wangcong@gmail.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      e7c9bba7
  8. 25 1月, 2012 1 次提交
  9. 10 12月, 2011 6 次提交
  10. 27 11月, 2011 1 次提交
  11. 16 11月, 2011 2 次提交
    • G
      Revert "tty/serial: Prevent drop of DCD on suspend for Tegra UARTs" · 6edf0c9b
      Greg Kroah-Hartman 提交于
      This reverts commit 9636b755.
      
      It wasn't supposed to be applied, thanks to Doug for letting me know.
      
      Cc: Doug Anderson <dianders@chromium.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      6edf0c9b
    • D
      tty/serial: Prevent drop of DCD on suspend for Tegra UARTs · 9636b755
      Doug Anderson 提交于
      On Tegra UARTs (except UART1), the DTR / DCD / DSR lines are not
      externally accessible.  Instead, the DTR line internally appears to be
      looped back to be the input to the DCD and DSR lines.  The net effect
      of this is that when we drop DTR (like when we suspend), we'll see DCD
      drop too.  ...and when we see DCD drop, we treat that as a hangup.
      
      In order to prevent this hangup from occurring at every sleep, we need
      to force DTR to remain high on Tegra UARTs.
      
      This patch uses the mcr_mask / mcr_force fields, which were originally
      added for the kludge ALPHA_KLUDGE_MCR.  Using these fields does not
      prevent us from removing ALPHA_KLUDGE_MCR--we can just remove the "if"
      tests I have added and always init mcr_mask / mcr_force from the
      serial8250_config.
      
      NOTE: If we have people that are using UARTA on a Tegra and need to
      control DTR, we'll need to either add a separate port type for UARTA
      or we'll need to add some tegra-specific code to detect whether the
      DTR needs to be left high.
      Signed-off-by: NDoug Anderson <dianders@chromium.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      9636b755
  12. 27 9月, 2011 1 次提交
  13. 23 9月, 2011 1 次提交
  14. 20 9月, 2011 1 次提交
  15. 27 8月, 2011 1 次提交
  16. 24 8月, 2011 3 次提交
    • J
      tty: serial8250: remove UPIO_DWAPB{,32} · 4834d028
      Jamie Iles 提交于
      Now that platforms can override the port IRQ handler and the only user
      of these UPIO modes has been converted over, kill off UPIO_DWAPB and
      UPIO_DWAPB32.
      Acked-by: NAlan Cox <alan@linux.intel.com>
      Signed-off-by: NJamie Iles <jamie@jamieiles.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      4834d028
    • J
      tty: serial8250: allow platforms to override irq handler · 583d28e9
      Jamie Iles 提交于
      Some ports (e.g. Synopsys DesignWare 8250) have special requirements for
      handling the interrupts.  Allow these platforms to specify their own
      interrupt handler that will override the default.
      serial8250_handle_irq() is provided so that platforms can extend the IRQ
      handler rather than completely replacing it.
      Signed-off-by: NJamie Iles <jamie@jamieiles.com>
      Acked-by: NAlan Cox <alan@linux.intel.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      583d28e9
    • A
      8250: Fix race condition in serial8250_backup_timeout(). · dbb3b1ca
      Al Cooper 提交于
      This is to fix an issue where output will suddenly become very slow.
      The problem occurs on 8250 UARTS with the hardware bug UART_BUG_THRE.
      
      BACKGROUND
      For normal UARTs (without UART_BUG_THRE): When the serial core layer
      gets new transmit data and the transmitter is idle, it buffers the
      data and calls the 8250s' serial8250_start_tx() routine which will
      simply enable the TX interrupt in the IER register and return. This
      should immediately fire a THRE interrupt and begin transmitting the
      data.
      For buggy UARTs (with UART_BUG_THRE): merely enabling the TX interrupt
      in IER does not necessarily generate a new THRE interrupt.
      Therefore, a background timer periodically checks to see if there is
      pending data, and starts transmission if that is the case.
      
      The bug happens on SMP systems when the system has nothing to transmit,
      the transmit interrupt is disabled and the following sequence occurs:
      - CPU0: The background timer routine serial8250_backup_timeout()
        starts and saves the state of the interrupt enable register (IER)
        and then disables all interrupts in IER. NOTE: The transmit interrupt
        (TI) bit is saved as disabled.
      - CPU1: The serial core gets data to transmit, grabs the port lock and
        calls serial8250_start_tx() which enables the TI in IER.
      - CPU0: serial8250_backup_timeout() waits for the port lock.
      - CPU1: finishes (with TI enabled) and releases the port lock.
      - CPU0: serial8250_backup_timeout() calls the interrupt routine which
        will transmit the next fifo's worth of data and then restores the
        IER from the previously saved value (TI disabled).
      At this point, as long as the serial core has more transmit data
      buffered, it will not call serial8250_start_tx() again and the
      background timer routine will slowly transmit the data.
      
      The fix is to have serial8250_start_tx() get the port lock before
      it saves the IER state and release it after restoring IER. This will
      prevent serial8250_start_tx() from running in parallel.
      Signed-off-by: NAl Cooper <alcooperx@gmail.com>
      Cc: stable <stable@kernel.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      dbb3b1ca
  17. 02 7月, 2011 1 次提交
  18. 08 6月, 2011 2 次提交
  19. 20 5月, 2011 2 次提交