26 Jul, 2011

1 commit

  • The pl330 needs platform data for describing peripheral connections, but
    some platforms may only support memory to memory dma channels. In this
    case, we can probe for how many channels there are and don't need the
    platform data.

    As memcpy requests don't need channel private data to hold peripheral
    info, allow private data to be NULL in this case.

    Signed-off-by: Rob Herring
    Cc: Jassi Brar
    Cc: Vinod Koul
    Cc: Dan Williams
    Acked-by: Jassi Brar
    Signed-off-by: Vinod Koul

    Rob Herring
     

25 Jul, 2011

2 commits

  • Signed-off-by: Axel Lin
    Acked-by: Sascha Hauer
    Signed-off-by: Vinod Koul

    Axel Lin
     
  • Currently, Mode-Control register is accessed by read-modify-write.

    According to DMA hardware specifications datasheet, prohibits this method.
    Because this register resets to 0 by DMA HW after DMA transfer completes.
    Thus, current read-modify-write processing can cause unexpected behavior.

    The datasheet says in case of writing Mode-Control register, set the value for only target channel, the others must set '11b'.
    e.g. Set DMA0=01b DMA11=10b
    CTL0=33333331h
    CTL2=00002333h

    NOTE:
    CTL0 includes DMA0~7 Mode-Control register.
    CTL2 includes DMA8~11 Mode-Control register.

    This patch modifies the issue.

    Signed-off-by: Tomoya MORINAGA
    Signed-off-by: Vinod Koul

    Tomoya MORINAGA
     

14 Jul, 2011

10 commits

  • In general, the mxs-dma users get separate irq for each channel,
    but gpmi is special one which has only one irq shared by all gpmi
    channels. It causes mxs_dma channel allocation function fail for
    all other gpmi channels except the first one calling into the
    function.

    The patch gets request_irq call skipped for NO_IRQ case, and leaves
    this gpmi specific quirk to gpmi driver to sort out. It will fix
    above problem if gpmi driver sets chan_irq as gpmi irq for only one
    channel and NO_IRQ for all the rest channels.

    Signed-off-by: Shawn Guo
    Cc: Vinod Koul
    Signed-off-by: Vinod Koul

    Shawn Guo
     
  • While testing Per Forlins MMC speed improvements I noticed a
    semantic bug in the COH901318 driver: it will write to channel
    registers in the prep_slave_sg() function, instead of deferring
    it to later, breaking the assumption from the drivers to be able
    to queue up new jobs while another job is running. Fix this by
    storing up the initial register writes in the job descriptors
    and write them to hardware when we process the descriptor
    instead. Now the stress tests work.

    Acked-by: Per Forlin
    Signed-off-by: Linus Walleij
    Signed-off-by: Vinod Koul

    Linus Walleij
     
  • Currently the runtime config implementation forces the memory side
    parameters to be the same as the peripheral side. Allow these to be
    different, and check for misconfiguration.

    Signed-off-by: Rabin Vincent
    Reviewed-by: Ulf HANSSON
    Tested-by: Stefan Nilsson
    Reviewed-by: Per Forlin
    Reviewed-by: Srinidhi Kasagar
    Cc: Robert Marklund
    Signed-off-by: Linus Walleij
    Signed-off-by: Vinod Koul

    Rabin Vincent
     
  • The DMA40 is not a PrimeCell from ARM, but it still use the same
    ID registers. So let's utilize the existing macros in the
    PrimeCell header to identify manufacturer and revision of the IP
    block instead of reinventing the wheel.

    Cc: Robert Marklund
    Cc: Per Forlin
    Cc: Rabin Vincent
    Signed-off-by: Linus Walleij
    Signed-off-by: Vinod Koul

    Linus Walleij
     
  • This function may be initiated from IRQ context, so the allocation
    must allocate NOWAIT memory.

    Signed-off-by: Robert Marklund
    Reviewed-by: Rabin Vincent
    Reviewed-by: Philippe Langlais
    Signed-off-by: Linus Walleij
    Signed-off-by: Vinod Koul

    Robert Marklund
     
  • Missing documentation creates kernel-doc warnings, so add
    the documenation.

    Signed-off-by: Om Prakash
    Reviewed-by: Rabin Vincent
    Reviewed-by: Jonas Aberg
    Reviewed-by: Srinidhi Kasagar
    Signed-off-by: Linus Walleij
    Signed-off-by: Vinod Koul

    om prakash
     
  • ste_dma40 now implements issue_pending according to documentation.
    Submit adds descriptos to a pending queue with are flushed down to the DMAC
    at issue_pending.

    Signed-off-by: Per Forlin
    Signed-off-by: Vinod Koul

    Per Forlin
     
  • tx_submit will add descriptors to the pending queue. Issue pending
    will then move the pending descriptors to the transfer queue.

    Signed-off-by: Per Forlin
    Signed-off-by: Vinod Koul

    Per Forlin
     
  • Fix for the following INFO message

    =================================
    [ INFO: inconsistent lock state ]
    2.6.39+ #89
    ---------------------------------
    inconsistent {HARDIRQ-ON-W} -> {IN-HARDIRQ-W} usage.
    rs232/822 [HC1[1]:SC0[0]:HE0:SE1] takes:
    (&(&pd_chan->lock)->rlock){?.....}, at: [] pdc_desc_get+0x16/0xab
    {HARDIRQ-ON-W} state was registered at:
    [] mark_irqflags+0xbd/0x11a
    [] __lock_acquire+0x501/0x6bb
    [] lock_acquire+0x63/0x7b
    [] _raw_spin_lock_bh+0x43/0x51
    [] pd_alloc_chan_resources+0x92/0x11e
    [] dma_chan_get+0x9b/0x107
    [] __dma_request_channel+0x61/0xdc
    [] pch_request_dma+0x61/0x19e
    [] pch_uart_startup+0x16a/0x1a2
    [] uart_startup+0x87/0x147
    [] uart_open+0x117/0x13e
    [] tty_open+0x23c/0x34c
    [] chrdev_open+0x140/0x15f
    [] __dentry_open.clone.14+0x14a/0x22b
    [] nameidata_to_filp+0x36/0x40
    [] do_last+0x513/0x635
    [] path_openat+0x9c/0x2aa
    [] do_filp_open+0x27/0x69
    [] do_sys_open+0xfd/0x184
    [] sys_open+0x24/0x2a
    [] sysenter_do_call+0x12/0x32
    irq event stamp: 2522
    hardirqs last enabled at (2521): [] _raw_spin_unlock_irqrestore+0x36/0x52
    hardirqs last disabled at (2522): [] common_interrupt+0x27/0x34
    softirqs last enabled at (2354): [] __do_softirq+0x10a/0x11a
    softirqs last disabled at (2299): [] do_softirq+0x57/0xa4

    other info that might help us debug this:
    2 locks held by rs232/822:
    #0: (&tty->atomic_write_lock){+.+.+.}, at: [] tty_write_lock+0x14/0x3c
    #1: (&port_lock_key){-.....}, at: [] pch_uart_interrupt+0x17/0x1e9

    stack backtrace:
    Pid: 822, comm: rs232 Not tainted 2.6.39+ #89
    Call Trace:
    [] ? printk+0x19/0x1b
    [] print_usage_bug+0x184/0x18f
    [] ? print_irq_inversion_bug+0x10e/0x10e
    [] mark_lock_irq+0xa5/0x1f6
    [] mark_lock+0x208/0x2d7
    [] mark_irqflags+0x55/0x11a
    [] __lock_acquire+0x501/0x6bb
    [] ? dump_trace+0x92/0xb6
    [] lock_acquire+0x63/0x7b
    [] ? pdc_desc_get+0x16/0xab
    [] _raw_spin_lock+0x3e/0x4c
    [] ? pdc_desc_get+0x16/0xab
    [] pdc_desc_get+0x16/0xab
    [] ? __lock_acquire+0x653/0x6bb
    [] pd_prep_slave_sg+0x7c/0x1cb
    [] ? nommu_map_sg+0x6e/0x81
    [] dma_handle_tx+0x2cf/0x344
    [] ? pch_uart_interrupt+0x17/0x1e9
    [] pch_uart_interrupt+0x160/0x1e9
    [] handle_irq_event_percpu+0x25/0x127
    [] handle_irq_event+0x2c/0x43
    [] ? handle_fasteoi_irq+0x84/0x84
    [] handle_edge_irq+0xac/0xce
    [] ? do_IRQ+0x38/0x9d
    [] ? common_interrupt+0x2e/0x34
    [] ? __lock_acquire+0x1f6/0x6bb
    [] ? _raw_spin_unlock_irqrestore+0x38/0x52
    [] ? uart_start+0x2d/0x32
    [] ? uart_flush_chars+0x8/0xa
    [] ? n_tty_write+0x12c/0x1c6
    [] ? try_to_wake_up+0x251/0x251
    [] ? tty_write+0x169/0x1dc
    [] ? n_tty_ioctl+0xb7/0xb7
    [] ? vfs_write+0x91/0x10d
    [] ? tty_write_lock+0x3c/0x3c
    [] ? sys_write+0x3e/0x63
    [] ? sysenter_do_call+0x12/0x32

    Signed-off-by: Alexander Stein
    Tested-by: Tomoya MORINAGA
    Signed-off-by: Vinod Koul

    Alexander Stein
     
  • Signed-off-by: H Hartley Sweeten
    Cc: Dan Williams (supporter:ASYNCHRONOUS TRAN...)
    Cc: Vinod Koul (supporter:DMA GENERIC OFFLO...)
    Signed-off-by: Vinod Koul

    H Hartley Sweeten
     

24 Jun, 2011

1 commit

  • There exist systems with multiple DMA controllers with different
    capabilities. For example, on some sh-mobile / rmobile systems there are
    DMA controllers, whose channels can be configured to be used with
    SD- and MMC-host controllers, serial ports etc. Besides there are also
    DMA controllers, that can only be used for one special function, e.g.,
    for USB. In such cases the DMA client filter function can just choose
    to specify to the DMA driver, which channel it needs. Then the
    .device_alloc_chan_resources() method of the DMA driver will check,
    whether it can provide that dunction. If not, it will fail and the loop
    in __dma_request_channel() will continue to the next DMA device, until
    it finds a suitable one. This works fine with just one minor glitch:
    the kernel logs error messages like

    dmaengine: failed to get : (-)

    after each such non-critical failure. This patch lowers priority of
    this message to the debug level.

    Reported-by: Kuninori Morimoto
    Signed-off-by: Guennadi Liakhovetski
    Tested-by: Kuninori Morimoto
    Tested-by: Magnus Damm
    Signed-off-by: Vinod Koul

    Guennadi Liakhovetski
     

16 Jun, 2011

1 commit


10 Jun, 2011

1 commit


09 Jun, 2011

7 commits

  • This patch adds DMA support for the EP93xx SPI driver. By default the DMA is
    not enabled but it can be enabled by setting ep93xx_spi_info.use_dma to true
    in board configuration file.

    Note that the SPI driver still uses PIO for small transfers (
    Acked-by: H Hartley Sweeten
    Acked-by: Vinod Koul
    Signed-off-by: Grant Likely

    Mika Westerberg
     
  • Since we have converted all existing users of the old DMA API to use the DMA
    engine API the old code can be dropped.

    Signed-off-by: Mika Westerberg
    Acked-by: Ryan Mallon
    Acked-by: H Hartley Sweeten
    Acked-by: Vinod Koul
    Signed-off-by: Grant Likely

    Mika Westerberg
     
  • Now that we have the EP93xx DMA engine driver in place, we convert the ASoC
    drivers (I2S, AC97 and PCM) to take advantage of this new API. There are no
    functional changes.

    Signed-off-by: Mika Westerberg
    Acked-by: H Hartley Sweeten
    Acked-by: Liam Girdwood
    Acked-by: Mark Brown
    Acked-by: Vinod Koul
    Signed-off-by: Grant Likely

    Mika Westerberg
     
  • Add platform support code for the new EP93xx dmaengine driver.

    Signed-off-by: Mika Westerberg
    Signed-off-by: Ryan Mallon
    Acked-by: H Hartley Sweeten
    Acked-by: Vinod Koul
    Signed-off-by: Grant Likely

    Mika Westerberg
     
  • The ep93xx DMA controller has 10 independent memory to peripheral (M2P)
    channels, and 2 dedicated memory to memory (M2M) channels. M2M channels can
    also be used by SPI and IDE to perform DMA transfers to/from their memory
    mapped FIFOs.

    This driver supports both M2P and M2M channels with DMA_SLAVE, DMA_CYCLIC and
    DMA_MEMCPY (M2M only) capabilities.

    Signed-off-by: Mika Westerberg
    Signed-off-by: Ryan Mallon
    Acked-by: H Hartley Sweeten
    Acked-by: Vinod Koul
    Signed-off-by: Grant Likely

    Mika Westerberg
     
  • Grant Likely
     
  • One new offender detected by the recently increased type checking in
    platform_get_drvdata():

    drivers/rtc/rtc-m41t93.c: In function ‘m41t93_remove’:
    drivers/rtc/rtc-m41t93.c:192: warning: passing argument 1 of ‘platform_get_drvdata’ from incompatible pointer type

    Use spi_get_drvdata() instead of platform_get_drvdata(), cfr. commit
    42fea15d6dc410e62dac6a764142045280624a5b ("spi/rtc-{ds1390,ds3234,m41t94}:
    Use spi_get_drvdata() for SPI devices")

    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Grant Likely

    Geert Uytterhoeven
     

06 Jun, 2011

12 commits


05 Jun, 2011

4 commits

  • * 'for-linus' of git://android.git.kernel.org/kernel/tegra:
    ARM: Tegra: Harmony: Fix conflicting GPIO numbering

    Linus Torvalds
     
  • Currently, both the WM8903 and TPS6586x chips attempt to register with
    gpiolib using the same GPIO numbers. This causes the audio driver to
    fail to initialize.

    To solve this, add a define to board-harmony.h for the TPS6586x, and make
    board-harmony-power.c use this define, instead of directly referencing
    TEGRA_NR_GPIOS.

    This fixes a regression introduced by commit
    6f168f2fa60f87e85e0df25e87e2372f22f5eb7c.
    ARM: tegra: harmony: initialize the TPS65862 PMIC

    Signed-off-by: Stephen Warren
    Signed-off-by: Colin Cross

    Stephen Warren
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable: (25 commits)
    btrfs: fix uninitialized variable warning
    btrfs: add helper for fs_info->closing
    Btrfs: add mount -o inode_cache
    btrfs: scrub: add explicit plugging
    btrfs: use btrfs_ino to access inode number
    Btrfs: don't save the inode cache if we are deleting this root
    btrfs: false BUG_ON when degraded
    Btrfs: don't save the inode cache in non-FS roots
    Btrfs: make sure we don't overflow the free space cache crc page
    Btrfs: fix uninit variable in the delayed inode code
    btrfs: scrub: don't reuse bios and pages
    Btrfs: leave spinning on lookup and map the leaf
    Btrfs: check for duplicate entries in the free space cache
    Btrfs: don't try to allocate from a block group that doesn't have enough space
    Btrfs: don't always do readahead
    Btrfs: try not to sleep as much when doing slow caching
    Btrfs: kill BTRFS_I(inode)->block_group
    Btrfs: don't look at the extent buffer level 3 times in a row
    Btrfs: map the node block when looking for readahead targets
    Btrfs: set range_start to the right start in count_range_bits
    ...

    Linus Torvalds
     
  • Improve detection of MAX6642 by reading non existing registers (0x04, 0x06
    and 0xff). Reading those registers returns the previously read value.

    Signed-off-by: Per Dalen
    [guenter.roeck@ericsson.com: added second set of register reads]
    Signed-off-by: Guenter Roeck

    Per Dalén
     

04 Jun, 2011

1 commit