1. 24 2月, 2011 3 次提交
  2. 17 1月, 2011 1 次提交
  3. 15 1月, 2011 1 次提交
    • D
      ARM: PL08x: fix a warning · 96a608a4
      Dan Williams 提交于
      drivers/dma/amba-pl08x.c: In function 'pl08x_start_txd':
      drivers/dma/amba-pl08x.c:205: warning: dereferencing 'void *' pointer
      
      We never dereference llis_va aside from assigning it to a struct
      pl08x_lli pointer or calculating the address of array element 0.
      Signed-off-by: NDan Williams <dan.j.williams@intel.com>
      96a608a4
  4. 06 1月, 2011 2 次提交
    • R
      ARM: PL011: add DMA burst threshold support for ST variants · 38d62436
      Russell King 提交于
      ST Micro variants has some specific dma burst threshold compensation,
      which allows them to make better use of a DMA controller.  Add support
      to set this up.
      
      Based on a patch from Linus Walleij.
      Acked-by: NLinus Walleij <linus.walleij@stericsson.com>
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      38d62436
    • R
      ARM: PL011: Add support for transmit DMA · 68b65f73
      Russell King 提交于
      Add DMA engine support for transmit to the PL011 driver.  Based on a
      patch from Linus Walliej, with the following changes:
      
      - remove RX DMA support.  As PL011 doesn't give us receive timeout
        interrupts, we only get notified of received data when the RX DMA
        has completed.  This rather sucks for interactive use of the TTY.
      
      - remove abuse of completions.  Completions are supposed to be for
        events, not to tell what condition buffers are in.  Replace it with
        a simple 'queued' bool.
      
      - fix locking - it is only safe to access the circular buffer with the
        port lock held.
      
      - only map the DMA buffer when required - if we're ever behind an IOMMU
        this helps keep IOMMU usage down, and also ensures that we're legal
        when we change the scatterlist entry length.
      
      - fix XON/XOFF sending - we must send XON/XOFF characters out as soon
        as possible - waiting for up to 4095 characters in the DMA buffer
        to be sent first is not acceptable.
      
      - fix XON/XOFF receive handling - we need to stop DMA when instructed
        to by the TTY layer, and restart it again when instructed to.  There
        is a subtle problem here: we must not completely empty the circular
        buffer with DMA, otherwise we will not be notified of XON.
      
      - change the 'enable_dma' flag into a 'using DMA' flag, and track
        whether we can use TX DMA by whether the channel pointer is non-NULL.
        This gives us more control over whether we use DMA in the driver.
      
      - we don't need to have the TX DMA buffer continually allocated for
        each port - instead, allocate it when the port starts up, and free
        it when it's shut down.  Update the 'using DMA' flag if we get
        the buffer, and adjust the TTY FIFO size appropriately.
      
      - if we're going to use PIO to send characters, use the existing IRQ
        based functionality rather than reimplementing it.  This also ensures
        we call uart_write_wakeup() at the appropriate time, otherwise we'll
        stall.
      
      - use DMA engine helper functions for type safety.
      
      - fix init when built as a module - we can't have to initcall functions,
        so we must settle on one.  This means we can eliminate the deferred
        DMA initialization.
      
      - there is no need to terminate transfers on a failed prep_slave_sg()
        call - nothing has been setup, so nothing needs to be terminated.
        This avoids a potential deadlock in the DMA engine code
        (tasklet->callback->failed prepare->terminate->tasklet_disable
         which then ends up waiting for the tasklet to finish running.)
      
      - Dan says that the submission callback should not return an error:
        | dma_submit_error() is something I should have removed after commit
        | a0587bcf "ioat1: move descriptor allocation from submit to prep" all
        | errors should be notified by prep failing to return a descriptor
        | handle.  Negative dma_cookie_t values are only returned by the
        | dma_async_memcpy* calls which translate a prep failure into -ENOMEM.
        So remove the error handling at that point.  This also solves the
        potential deadlock mentioned in the previous comment.
      Acked-by: NLinus Walleij <linus.walleij@stericsson.com>
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      68b65f73
  5. 05 1月, 2011 11 次提交
  6. 26 11月, 2010 1 次提交
    • L
      ARM: 6467/1: amba: optional PrimeCell core voltage switch · 65500fa9
      Linus Walleij 提交于
      On some contemporary sub-micron SoCs, peripherals on the chip have
      power domain switches, i.e. the voltage to the core may be turned
      off to conserve power. In the Ux500 we have this for out PrimeCell
      derivates.
      
      This patch makes it possible to specify an (optional) regulator to
      handle the voltage domain switch on AMBA PrimeCells, modeled very
      similar to how block clocks are handled.
      
      Additional amba_vcore_[enable|disable] calls are supplied to make
      it possible introduce optional powering off of the core voltage.
      Using this will require code to spool/unspool any core HW state.
      
      Cc: Rabin Vincent <rabin.vincent@stericsson.com>
      Cc: Bengt Jonsson <bengt.g.jonsson@stericsson.com>
      Cc: Jonas Aaberg <jonas.aberg@stericsson.com>
      Signed-off-by: NLinus Walleij <linus.walleij@stericsson.com>
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      65500fa9
  7. 13 10月, 2010 3 次提交
  8. 12 10月, 2010 1 次提交
  9. 08 10月, 2010 1 次提交
  10. 30 9月, 2010 1 次提交
    • L
      dmaengine: driver for the ARM PL080/PL081 PrimeCells v5 · e8689e63
      Linus Walleij 提交于
      This creates a DMAengine driver for the ARM PL080/PL081 PrimeCells
      based on the implementation earlier submitted by Peter Pearse.
      This is working like a charm for memcpy and slave DMA to the PL011
      PrimeCell on the PB11MPCore.
      
      This DMA controller is used in mostly unmodified form in the ARM
      RealView and Versatile platforms, in the ST-Ericsson Nomadik, and
      in the ST SPEAr platform.
      
      It has been converted to use the header from the Samsung PL080
      derivate instead of its own defintions. The Samsungs have a custom
      driver in their mach-* folders though, atleast we can share the
      register definitions.
      
      Cc: Peter Pearse <peter.pearse@arm.com>
      Cc: Ben Dooks <ben-linux@fluff.org>
      Cc: Kukjin Kim <kgene.kim@samsung.com>
      Cc: Alessandro Rubini <rubini@unipv.it>
      Acked-by: NViresh Kumar <viresh.kumar@st.com>
      Signed-off-by: NLinus Walleij <linus.walleij@stericsson.com>
      [GFP_KERNEL to GFP_NOWAIT in pl08x_prep_dma_memcpy]
      Signed-off-by: NDan Williams <dan.j.williams@intel.com>
      e8689e63
  11. 27 8月, 2010 1 次提交
  12. 18 8月, 2010 1 次提交
  13. 31 7月, 2010 1 次提交
    • R
      ARM: AMBA: Add pclk support to AMBA bus infrastructure · 7cfe2494
      Russell King 提交于
      Some platforms gate the pclk (APB - the bus - clock) to the peripherals
      for power saving, along with the functional clock.  When devices are
      accessed without pclk enabled, the kernel will oops.
      
      This gives them two options:
      
      1. Leave all clocks on all the time.
      2. Attempt to gate pclk along with the functional clock.
      
      (With some hardware, pclk and the functional clock are gated by a single
      bit in a register.)
      
      (1) has the disadvantage that it causes increased power usage, which is
      bad news for battery operated devices.  (2) can lead to kernel oops if
      registers are accessed without the functional clock being enabled.
      
      So, introduce the apb_pclk signal in such a way existing drivers don't
      need to be updated.  Essentially, this means we guarantee that:
      
      1. pclk will be enabled whenever the driver is bound to a device -
         from probe() to remove() time.
      2. pclk will also be enabled when reading the primecell IDs from the device.
      
      In order to allow drivers to be incrementally updated to achieve greater
      power savings, we provide two additional calls to allow drivers to
      manage the pclk - amba_pclk_enable()/amba_pclk_disable().
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      7cfe2494
  14. 29 7月, 2010 1 次提交
  15. 27 7月, 2010 2 次提交
  16. 25 5月, 2010 2 次提交
  17. 24 5月, 2010 1 次提交
  18. 14 4月, 2010 1 次提交
  19. 30 3月, 2010 2 次提交
  20. 15 3月, 2010 1 次提交
    • R
      Video: ARM CLCD: Better fix for swapped IENB and CNTL registers · 3f17522c
      Russell King 提交于
      On PL111, as found on Realview and other platforms, these registers are
      always arranged as CNTL then IENB.  On PL110, these registers are IENB
      then CNTL, except on Versatile platforms.
      
      Re-arrange the handling of these register swaps so that PL111 always
      gets it right without resorting to ifdefs, leaving the only case needing
      special handling being PL110 on Versatile.
      
      Fill out amba/clcd.h with the PL110/PL111 register definition
      differences in case someone tries to use the PL110 specific definitions
      on PL111.
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      3f17522c
  21. 20 2月, 2010 1 次提交
  22. 23 9月, 2009 1 次提交