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
25 Jul, 2011
2 commits
-
Signed-off-by: Axel Lin
Acked-by: Sascha Hauer
Signed-off-by: Vinod Koul -
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=00002333hNOTE:
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
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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/0xa4other 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/0x1e9stack 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/0x32Signed-off-by: Alexander Stein
Tested-by: Tomoya MORINAGA
Signed-off-by: Vinod Koul -
Signed-off-by: H Hartley Sweeten
Cc: Dan Williams (supporter:ASYNCHRONOUS TRAN...)
Cc: Vinod Koul (supporter:DMA GENERIC OFFLO...)
Signed-off-by: Vinod Koul
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 likedmaengine: 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
16 Jun, 2011
1 commit
-
The symbol 'ep93xx_dma_prep_dma_memcpy' is only used in this driver
and should be marked static.Signed-off-by: H Hartley Sweeten
Cc: Mika Westerberg
Cc: Dan Williams
Cc: Vinod Koul
Acked-by: Mika Westerberg
Signed-off-by: Vinod Koul
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 -
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 -
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 -
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 -
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 -
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 typeUse 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
06 Jun, 2011
12 commits
-
Al Viro observes that in the hugetlb case, handle_mm_fault() may return
a value of the kind ENOSPC when its caller is expecting a value of the
kind VM_FAULT_SIGBUS: fix alloc_huge_page()'s failure returns.Signed-off-by: Hugh Dickins
Acked-by: Al Viro
Cc: stable@kernel.org
Signed-off-by: Linus Torvalds -
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6:
ALSA: usb - turn off de-emphasis in s/pdif for cm6206
ALSA: asihpi: Use angle brackets for system includes
ALSA: fm801: add error handling if auto-detect fails
ALSA: hda - Check pin support EAPD in ad198x_power_eapd_write
ALSA: hda - Fix HP and Front pins of ad1988/ad1989 in ad198x_power_eapd()
ALSA: 6fire: Don't leak firmware in error path
ASoC: Fix wm_hubs input PGA ZC bits
ASoC: Fix dapm_is_shared_kcontrol so everything isn't shared -
* 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/staging:
hwmon: (max6642): Better chip detection schema
hwmon: (coretemp) Further relax temperature range checks
hwmon: (coretemp) Fix TjMax detection for older CPUs
hwmon: (coretemp) Relax target temperature range check
hwmon: (max6642) Rename temp_fault sysfs attribute to temp2_fault -
Signed-off-by: H Hartley Sweeten
Cc: Dan Williams
Cc: Vinod Koul
Signed-off-by: Vinod Koul -
Signed-off-by: H Hartley Sweeten
Cc: Dan Williams
Cc: Vinod Koul
Cc: Guennadi Liakhovetski
Cc: Anatolij Gustschin
Signed-off-by: Vinod Koul -
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
Cc: Grant Likely
Acked-by: Grant Likely
Signed-off-by: Vinod Koul -
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
Signed-off-by: Vinod Koul -
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
Signed-off-by: Vinod Koul -
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
Signed-off-by: Vinod Koul -
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
Cc: Dan Williams
Signed-off-by: Vinod Koul
05 Jun, 2011
4 commits
-
* 'for-linus' of git://android.git.kernel.org/kernel/tegra:
ARM: Tegra: Harmony: Fix conflicting GPIO numbering -
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 PMICSigned-off-by: Stephen Warren
Signed-off-by: Colin Cross -
* '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
... -
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
04 Jun, 2011
1 commit
-
* git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6:
[SCSI] Fix oops caused by queue refcounting failure