1. 22 11月, 2012 1 次提交
  2. 16 11月, 2012 10 次提交
  3. 15 10月, 2012 1 次提交
  4. 01 8月, 2012 1 次提交
  5. 13 7月, 2012 1 次提交
  6. 13 6月, 2012 4 次提交
  7. 18 5月, 2012 1 次提交
    • P
      serial: sh-sci: Fix for port types without BRI interrupts. · 0e8963de
      Paul Mundt 提交于
      In doing the evt2irq() + muxed vector conversion for various port types
      it became apparent that some of the legacy port types will presently
      error out due to the irq requesting logic attempting to acquire the
      non-existent BRI IRQ. This adds some sanity checks to the request/free
      path to ensure that non-existence of a source in itself is not an error.
      
      This should restore functionality for legacy PORT_SCI ports.
      Signed-off-by: NPaul Mundt <lethal@linux-sh.org>
      0e8963de
  8. 12 4月, 2012 1 次提交
  9. 09 4月, 2012 1 次提交
  10. 30 3月, 2012 1 次提交
  11. 28 3月, 2012 1 次提交
    • Y
      serial: sh-sci: fix a race of DMA submit_tx on transfer · 49d4bcad
      Yoshii Takashi 提交于
      When DMA is enabled, sh-sci transfer begins with
       uart_start()
        sci_start_tx()
          if (cookie_tx < 0) schedule_work()
      Then, starts DMA when wq scheduled, -- (A)
       process_one_work()
        work_fn_rx()
         cookie_tx = desc->submit_tx()
      And finishes when DMA transfer ends, -- (B)
       sci_dma_tx_complete()
        async_tx_ack()
        cookie_tx = -EINVAL
        (possible another schedule_work())
      
      This A to B sequence is not reentrant, since controlling variables
      (for example, cookie_tx above) are not queues nor lists. So, they
      must be invoked as A B A B..., otherwise results in kernel crash.
      
      To ensure the sequence, sci_start_tx() seems to test if cookie_tx < 0
      (represents "not used") to call schedule_work().
      But cookie_tx will not be set (to a cookie, also means "used") until
      in the middle of work queue scheduled function work_fn_tx().
      
      This gap between the test and set allows the breakage of the sequence
      under the very frequently call of uart_start().
      Another gap between async_tx_ack() and another schedule_work() results
      in the same issue, too.
      
      This patch introduces a new condition "cookie_tx == 0" just to mark
      it is "busy" and assign it within spin-locked region to fill the gaps.
      Signed-off-by: NTakashi Yoshii <takashi.yoshii.zj@renesas.com>
      Reviewed-by: NGuennadi Liakhovetski <g.liakhovetski@gmx.de>
      Cc: stable@vger.kernel.org
      Signed-off-by: NPaul Mundt <lethal@linux-sh.org>
      49d4bcad
  12. 21 3月, 2012 1 次提交
  13. 09 3月, 2012 1 次提交
    • R
      sh-sci / PM: Avoid deadlocking runtime PM · 048be431
      Rafael J. Wysocki 提交于
      The runtime PM of sh-sci devices is enabled when sci_probe() returns,
      so the pm_runtime_put_sync() executed by driver_probe_device()
      attempts to suspend the device.  Then, in some situations, a
      diagnostic message is printed to the console by one of the runtime
      suspend routines handling the sh-sci device, which causes synchronous
      runtime resume to be started from the device's own runtime suspend
      callback.  This causes rpm_resume() to be run eventually, which sees
      the RPM_SUSPENDING status set by rpm_suspend() and waits for it to
      change.  However, the device's runtime PM status cannot change at
      that point, because the routine that has set it waits for the
      rpm_suspend() to return.  A deadlock occurs as a result.
      
      To avoid that make sci_init_single() increment the device's
      runtime PM usage counter, so that it cannot be suspended by
      driver_probe_device().  That counter has to be decremented
      eventually, so make sci_startup() do that before starting to
      actually use the device and make sci_shutdown() increment it
      again before returning to balance the incrementation carried out by
      sci_startup().
      Signed-off-by: NRafael J. Wysocki <rjw@sisk.pl>
      Tested-by: NKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
      Signed-off-by: NPaul Mundt <lethal@linux-sh.org>
      048be431
  14. 02 12月, 2011 3 次提交
    • P
      serial: sh-sci: Handle GPIO function requests. · 50f0959a
      Paul Mundt 提交于
      This adds initial support for requesting the various GPIO functions
      necessary for certain ports. This just plugs in dumb request/free logic,
      but serves as a building block for migrating off of the ->init_pins mess
      to a wholly gpiolib backed solution (primarily parts with external
      RTS/CTS pins, but will also allow us to clean up RXD pin testing).
      Signed-off-by: NPaul Mundt <lethal@linux-sh.org>
      50f0959a
    • P
      serial: sh-sci: Avoid FIFO clear for MCE toggle. · 73c3d53f
      Paul Mundt 提交于
      When toggling the MCE support we don't want to concern ourselves with the
      FIFO state, so ensure that the clearing bits are masked out when updating
      the MCE state.
      Signed-off-by: NPaul Mundt <lethal@linux-sh.org>
      73c3d53f
    • P
      serial: sh-sci: per-port modem control. · faf02f8f
      Paul Mundt 提交于
      The bulk of the ports do not support any sort of modem control, so
      blindly twiddling the MCE bit doesn't accomplish much. We now require
      ports to manually specify which line supports modem control signals.
      
      While at it, tidy up the RTS/CTSIO handling in SCSPTR parts so it's a bit
      more obvious what's going on (and without clobbering other configurations
      in the process).
      Signed-off-by: NPaul Mundt <lethal@linux-sh.org>
      faf02f8f
  15. 24 11月, 2011 5 次提交
  16. 04 11月, 2011 1 次提交
  17. 31 10月, 2011 1 次提交
  18. 23 9月, 2011 1 次提交
  19. 19 9月, 2011 1 次提交
  20. 29 8月, 2011 1 次提交
    • Y
      serial: sh-sci: report CTS as active for get_mctrl · 4480a688
      Yoshii Takashi 提交于
      sh-sci.c sets hardware up and then let the HW do all flow controls.
      There is no software code, nor needs to get/set real CTS signal.
      
      But, when turning CRTSCTS on through termios, uart_set_termios() in
      serial_core.c checks CTS, and stops TX if it is inactive at the moment.
      
      Because sci_get_mctrl() returns a fixed value DTR|RTS|DSR but CTS,
      the sequence
        open -> set CRTSCTS -> write
      hit the case and stop working, no more outputs.
      
      This patch makes sci_get_mctrl() report CTS in addition.
      Signed-off-by: NTakashi YOSHII <takashi.yoshii.zj@renesas.com>
      Signed-off-by: NPaul Mundt <lethal@linux-sh.org>
      4480a688
  21. 25 8月, 2011 1 次提交
  22. 08 8月, 2011 1 次提交