- 16 7月, 2014 4 次提交
-
-
由 Lars-Peter Clausen 提交于
The dmac_reset() callaback of the pl330_info struct is always set to NULL, so remove it. Signed-off-by: NLars-Peter Clausen <lars@metafoo.de> Signed-off-by: NVinod Koul <vinod.koul@intel.com>
-
由 Lars-Peter Clausen 提交于
The pl330_chanstatus struct is completely unused, so remove it. Signed-off-by: NLars-Peter Clausen <lars@metafoo.de> Signed-off-by: NVinod Koul <vinod.koul@intel.com>
-
由 Lars-Peter Clausen 提交于
The settings for destination and source cache control are exactly the same. This patch removes the duplicated enum and uses the same for both destination and source cache control. Signed-off-by: NLars-Peter Clausen <lars@metafoo.de> Signed-off-by: NVinod Koul <vinod.koul@intel.com>
-
由 Lars-Peter Clausen 提交于
The pl330 driver has the custom pl330_reqtype enum which has the same possible settings as the generic dma_transfer_direction enum. Switching over to the generic enum internally makes it possible to directly initialize it from the transfer request direction. Signed-off-by: NLars-Peter Clausen <lars@metafoo.de> Signed-off-by: NVinod Koul <vinod.koul@intel.com>
-
- 20 1月, 2014 2 次提交
-
-
由 Lars-Peter Clausen 提交于
Currently the driver uses dma_request_channel() with a custom filter function to find the requested channel. This will loop over all available channels until the one we want has been found, but we already know which channel we want to request, so we can dma_get_slave_channel(). This also makes the code a bit shorter cleaner. Signed-off-by: NLars-Peter Clausen <lars@metafoo.de> Signed-off-by: NVinod Koul <vinod.koul@intel.com>
-
由 Lars-Peter Clausen 提交于
The pl330 dmaengine driver currently does not differentiate between submitted and issued descriptors. It won't start transferring a newly submitted descriptor until issue_pending() is called, but only if it is idle. If it is active and a new descriptor is submitted before it goes idle it will happily start the newly submitted descriptor once all earlier submitted descriptors have been completed. This is not a 100% correct with regards to the dmaengine interface semantics. A descriptor is not supposed to be started until the next issue_pending() call after the descriptor has been submitted. This patch adds a second per channel list that keeps track of the submitted descriptors. Once issue_pending() is called the submitted descriptors are moved to the working list and only descriptors on the working list are started. Signed-off-by: NLars-Peter Clausen <lars@metafoo.de> Signed-off-by: NVinod Koul <vinod.koul@intel.com>
-
- 15 1月, 2014 1 次提交
-
-
由 Lars-Peter Clausen 提交于
The pl330 driver currently does not support residue reporting, so set the residue granularity to DMA_RESIDUE_GRANULARITY_DESCRIPTOR. Signed-off-by: NLars-Peter Clausen <lars@metafoo.de> Acked-by: NVinod Koul <vinod.koul@intel.com> Signed-off-by: NMark Brown <broonie@linaro.org>
-
- 19 12月, 2013 1 次提交
-
-
由 Will Deacon 提交于
I see the following splat with 3.13-rc1 when attempting to perform DMA: [ 253.004516] Alignment trap: not handling instruction e1902f9f at [<c0204b40>] [ 253.004583] Unhandled fault: alignment exception (0x221) at 0xdfdfdfd7 [ 253.004646] Internal error: : 221 [#1] PREEMPT SMP ARM [ 253.004691] Modules linked in: dmatest(+) [last unloaded: dmatest] [ 253.004798] CPU: 0 PID: 671 Comm: kthreadd Not tainted 3.13.0-rc1+ #2 [ 253.004864] task: df9b0900 ti: df03e000 task.ti: df03e000 [ 253.004937] PC is at dmaengine_unmap_put+0x14/0x34 [ 253.005010] LR is at pl330_tasklet+0x3c8/0x550 [ 253.005087] pc : [<c0204b44>] lr : [<c0207478>] psr: a00e0193 [ 253.005087] sp : df03fe48 ip : 00000000 fp : df03bf18 [ 253.005178] r10: bf00e108 r9 : 00000001 r8 : 00000000 [ 253.005245] r7 : df837040 r6 : dfb41800 r5 : df837048 r4 : df837000 [ 253.005316] r3 : dfdfdfcf r2 : dfb41f80 r1 : df837048 r0 : dfdfdfd7 [ 253.005384] Flags: NzCv IRQs off FIQs on Mode SVC_32 ISA ARM Segment kernel [ 253.005459] Control: 30c5387d Table: 9fb9ba80 DAC: fffffffd [ 253.005520] Process kthreadd (pid: 671, stack limit = 0xdf03e248) This is due to desc->txd.unmap containing garbage (uninitialised memory). Rather than add another dummy initialisation to _init_desc, instead ensure that the descriptors are zero-initialised during allocation and remove the dummy, per-field initialisation. Cc: Andriy Shevchenko <andriy.shevchenko@intel.com> Acked-by: NJassi Brar <jassisinghbrar@gmail.com> Signed-off-by: NWill Deacon <will.deacon@arm.com> Acked-by: NVinod Koul <vinod.koul@intel.com> Signed-off-by: NDan Williams <dan.j.williams@intel.com>
-
- 16 12月, 2013 1 次提交
-
-
由 Lars-Peter Clausen 提交于
In order to be able to set a maximum segment size for the device we need to allocate a dma_parameters struct for the device first. Signed-off-by: NLars-Peter Clausen <lars@metafoo.de> Signed-off-by: NVinod Koul <vinod.koul@intel.com>
-
- 14 11月, 2013 1 次提交
-
-
由 Dan Williams 提交于
Add a hook for a common dma unmap implementation to enable removal of the per driver custom unmap code. (A reworked version of Bartlomiej Zolnierkiewicz's patches to remove the custom callbacks and the size increase of dma_async_tx_descriptor for drivers that don't care about raid). Cc: Vinod Koul <vinod.koul@intel.com> Cc: Tomasz Figa <t.figa@samsung.com> Cc: Dave Jiang <dave.jiang@intel.com> [bzolnier: prepare pl330 driver for adding missing unmap while at it] Signed-off-by: NBartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com> Signed-off-by: NKyungmin Park <kyungmin.park@samsung.com> Signed-off-by: NDan Williams <dan.j.williams@intel.com>
-
- 13 11月, 2013 2 次提交
-
-
由 Dan Carpenter 提交于
On 64 bit systems GCC warns that: drivers/dma/pl330.c: In function ‘pl330_filter’: drivers/dma/pl330.c:2317:21: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast] It's harmless and I have casted it away. Signed-off-by: NDan Carpenter <dan.carpenter@oracle.com> Signed-off-by: NVinod Koul <vinod.koul@intel.com>
-
由 Dan Carpenter 提交于
There are only AMBA_NR_IRQS (2) elements in adev->irq[]. This code maybe works if the there is a zero directly after the array. Signed-off-by: NDan Carpenter <dan.carpenter@oracle.com> Signed-off-by: NVinod Koul <vinod.koul@intel.com>
-
- 31 10月, 2013 2 次提交
-
-
由 Russell King 提交于
The DMA API requires drivers to call the appropriate dma_set_mask() functions before doing any DMA mapping. Add this required call to the AMBA PL330 driver. Acked-by: NVinod Koul <vinod.koul@intel.com> Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
-
由 Michal Simek 提交于
Driver core clears the driver data to NULL after device_release or on probe failure, so just remove it from here. Driver core change: "device-core: Ensure drvdata = NULL when no driver is bound" (sha1: 0998d063) Signed-off-by: NMichal Simek <michal.simek@xilinx.com> Signed-off-by: NVinod Koul <vinod.koul@intel.com>
-
- 14 10月, 2013 1 次提交
-
-
由 Michal Simek 提交于
Some pl330 have per channel irq and it is necessary to allocate all of them. Loop over irq assigned for this device to support these pl330 IPs. For example this IP is available on Xilinx Zynq platform. Signed-off-by: NMichal Simek <michal.simek@xilinx.com> Tested-by: NLars-Peter Clausen <lars@metafoo.de> Signed-off-by: NVinod Koul <vinod.koul@intel.com>
-
- 07 10月, 2013 1 次提交
-
-
由 Michal Simek 提交于
Use devm_request_irq function. Signed-off-by: NMichal Simek <michal.simek@xilinx.com> Signed-off-by: NVinod Koul <vinod.koul@intel.com>
-
- 03 9月, 2013 1 次提交
-
-
由 Vinod Koul 提交于
Signed-off-by: NVinod Koul <vinod.koul@intel.com>
-
- 28 8月, 2013 1 次提交
-
-
由 Lars-Peter Clausen 提交于
The pl330 DMA driver is broken in regard to handling a terminate all request while it is processing the list of completed descriptors. This is most visible when calling dmaengine_terminate_all() from within the descriptors callback for cyclic transfers. In this case the TERMINATE_ALL transfer will clear the work_list and stop the transfer. But after all callbacks for all completed descriptors have been handled the descriptors will be re-enqueued into the (now empty) work_list. So the next time dma_async_issue_pending() is called for the channel these descriptors will be transferred again which will cause data corruption. Similar issues can occur if dmaengine_terminate_all() is not called from within the descriptor callback but runs on a different CPU at the same time as the completed descriptor list is processed. This patch introduces a new per channel list which will hold the completed descriptors. While processing the list the channel's lock will be held to avoid racing against dmaengine_terminate_all(). The lock will be released when calling the descriptors callback though. Since the list of completed descriptors might be modified (e.g. by calling dmaengine_terminate_all() from the callback) we can not use the normal list iterator macros. Instead we'll need to check for each loop iteration again if there are still items in the list. The drivers TERMINATE_ALL implementation is updated to move descriptors from both the work_list as well the new completed_list back to the descriptor pool. This makes sure that none of the descripts finds its way back into the work list and also that we do not call any futher complete callbacks after dmaengine_terminate_all() has been called. Signed-off-by: NLars-Peter Clausen <lars@metafoo.de> Signed-off-by: NVinod Koul <vinod.koul@intel.com>
-
- 13 8月, 2013 2 次提交
-
-
由 Chanho Park 提交于
This patch adds __pl330_giveback_descs which give back descriptors when fails allocating descriptors. It requires to eliminate duplication for pl330_prep_dma_sg which will be added later. Signed-off-by: NChanho Park <chanho61.park@samsung.com> Acked-by : Jassi Brar <jassisinghbrar@gmail.com> Signed-off-by: NKyungmin Park <kyungmin.park@samsung.com> Signed-off-by: NVinod Koul <vinod.koul@intel.com>
-
由 Jingoo Han 提交于
Use the wrapper function for retrieving the platform data instead of accessing dev->platform_data directly. Signed-off-by: NJingoo Han <jg1.han@samsung.com> Signed-off-by: NVinod Koul <vinod.koul@intel.com>
-
- 28 7月, 2013 1 次提交
-
-
由 Lars-Peter Clausen 提交于
Allocate a descriptor for each period of a cyclic transfer, not just the first. Also since the callback needs to be called for each finished period make sure to initialize the callback and callback_param fields of each descriptor in a cyclic transfer. Cc: stable@vger.kernel.org Signed-off-by: NLars-Peter Clausen <lars@metafoo.de> Signed-off-by: NVinod Koul <vinod.koul@intel.com>
-
- 16 7月, 2013 1 次提交
-
-
由 Lars-Peter Clausen 提交于
Implement the device_slave_caps() callback for the pl330 driver. This allows dmaengine users like the generic ALSA dmaengine PCM driver to query the capabilities of the driver. The PL330 supports all buswidths and both mem-to-dev as well as dev-to-mem transfers. In theory there is no limit on the number of segments that can be transferred (in practice you'll run out of memory eventually) and the number of bytes per segment is limited by the size of the PL330 program buffer. Due to the nature of the PL330 the maximum number of bytes per segment depends on the burstsize, the driver sets it to the value for a 1-byte burstsize, since it is the smallest. Signed-off-by: NLars-Peter Clausen <lars@metafoo.de> Signed-off-by: NVinod Koul <vinod.koul@intel.com>
-
- 05 7月, 2013 2 次提交
-
-
由 Will Deacon 提交于
The microcode bus address (pl330_dmac.mcode_bus) is currently a u32, which fails to compile when building on a system with 64-bit bus addresses. This patch uses dma_addr_t to represent the address instead. Cc: Jassi Brar <jaswinder.singh@linaro.org> Cc: Vinod Koul <vinod.koul@intel.com> Signed-off-by: NWill Deacon <will.deacon@arm.com> Acked-by: NJassi Brar <jaswinder.singh@linaro.org> Acked-by: NGrant Likely <grant.likely@linaro.org> Signed-off-by: NVinod Koul <vinod.koul@intel.com>
-
由 Will Deacon 提交于
The PL330 driver probes the peripheral and primecell IDs of the device to make sure that it is indeed an AMBA PL330. However, it does this by making byte accesses to a device mapping of the word-aligned ID registers, which is either UNPREDICTABLE or generates an alignment fault (depending on the presence of the virtualisation extensions). Rather than fix this code, we can actually rip most of it out and let the AMBA bus driver correctly do the probing for us. Cc: Jassi Brar <jaswinder.singh@linaro.org> Cc: Vinod Koul <vinod.koul@intel.com> Signed-off-by: NWill Deacon <will.deacon@arm.com> Acked-by: NJassi Brar <jaswinder.singh@linaro.org> Acked-by: NGrant Likely <grant.likely@linaro.org> Signed-off-by: NVinod Koul <vinod.koul@intel.com>
-
- 04 7月, 2013 1 次提交
-
-
tasklet_kill() may sleep so call it before taking pch->lock. Fixes following lockup: BUG: scheduling while atomic: cat/2383/0x00000002 Modules linked in: unwind_backtrace+0x0/0xfc __schedule_bug+0x4c/0x58 __schedule+0x690/0x6e0 sys_sched_yield+0x70/0x78 tasklet_kill+0x34/0x8c pl330_free_chan_resources+0x24/0x88 dma_chan_put+0x4c/0x50 [...] BUG: spinlock lockup suspected on CPU#0, swapper/0/0 lock: 0xe52aa04c, .magic: dead4ead, .owner: cat/2383, .owner_cpu: 1 unwind_backtrace+0x0/0xfc do_raw_spin_lock+0x194/0x204 _raw_spin_lock_irqsave+0x20/0x28 pl330_tasklet+0x2c/0x5a8 tasklet_action+0xfc/0x114 __do_softirq+0xe4/0x19c irq_exit+0x98/0x9c handle_IPI+0x124/0x16c gic_handle_irq+0x64/0x68 __irq_svc+0x40/0x70 cpuidle_wrap_enter+0x4c/0xa0 cpuidle_enter_state+0x18/0x68 cpuidle_idle_call+0xac/0xe0 cpu_idle+0xac/0xf0 Signed-off-by: NBartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com> Signed-off-by: NKyungmin Park <kyungmin.park@samsung.com> Acked-by: NJassi Brar <jassisinghbrar@gmail.com> Cc: Vinod Koul <vinod.koul@linux.intel.com> Cc: Tomasz Figa <t.figa@samsung.com> Cc: <stable@vger.kernel.org> Signed-off-by: NAndrew Morton <akpm@linux-foundation.org> Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
-
- 15 4月, 2013 2 次提交
-
-
由 Sachin Kamat 提交于
Use the newly introduced devm_ioremap_resource() instead of devm_request_and_ioremap() which provides more consistent error handling. Signed-off-by: NSachin Kamat <sachin.kamat@linaro.org> Reviewed-by: NThierry Reding <thierry.reding@avionic-design.de> Signed-off-by: NVinod Koul <vinod.koul@intel.com>
-
由 Jassi Brar 提交于
Fix the logic to allow mc programming of second transfer after first has been done, by removing immediate return upon success and iterating until we detect QFull or DMAC dying. Reported-by: NAlvaro Moran <dirac3000@gmail.com> Tested-by: NAlvaro Moran <dirac3000@gmail.com> Signed-off-by: NJassi Brar <jaswinder.singh@linaro.org> Signed-off-by: NVinod Koul <vinod.koul@intel.com>
-
- 03 4月, 2013 1 次提交
-
-
由 Padmavathi Venna 提交于
This patch register the dma controller with generic dma helpers only in DT case. This also adds some extra error handling in the driver. Signed-off-by: NPadmavathi Venna <padma.v@samsung.com> Reported-by: NSachin Kamat <sachin.kamat@linaro.org> Signed-off-by: NVinod Koul <vinod.koul@intel.com>
-
- 14 2月, 2013 3 次提交
-
-
由 Padmavathi Venna 提交于
This patch registers the pl330 dma controller driver with the generic device tree dma helper functions. Signed-off-by: NPadmavathi Venna <padma.v@samsung.com> Acked-by: NArnd Bergmann <arnd@arndb.de> Signed-off-by: NVinod Koul <vinod.koul@intel.com>
-
由 Padmavathi Venna 提交于
Add xlate to translate the device-tree binding information into the appropriate format. The filter function requires the dma controller device and dma channel number as filter_params. Signed-off-by: NPadmavathi Venna <padma.v@samsung.com> Acked-by: NArnd Bergmann <arnd@arndb.de> Signed-off-by: NVinod Koul <vinod.koul@intel.com>
-
由 Padmavathi Venna 提交于
This patch adds a new pl330_dt_filter for DT case to filter the required channel based on the new filter params and modifies the old filter only for non-DT case as suggested by Arnd Bergmann. Signed-off-by: NPadmavathi Venna <padma.v@samsung.com> Acked-by: NArnd Bergmann <arnd@arndb.de> Signed-off-by: NVinod Koul <vinod.koul@intel.com>
-
- 08 1月, 2013 1 次提交
-
-
由 Sachin Kamat 提交于
devm_* functions are device managed and make the code and error handling a bit simpler. Cc: Jassi Brar <jassisinghbrar@gmail.com> Signed-off-by: NSachin Kamat <sachin.kamat@linaro.org> Signed-off-by: NVinod Koul <vinod.koul@linux.intel.com>
-
- 04 1月, 2013 1 次提交
-
-
由 Greg Kroah-Hartman 提交于
CONFIG_HOTPLUG is going away as an option. As a result, the __dev* markings need to be removed. This change removes the use of __devinit, __devexit_p, __devinitconst, and __devexit from these drivers. Based on patches originally written by Bill Pemberton, but redone by me in order to handle some of the coding style issues better, by hand. Cc: Bill Pemberton <wfp5p@virginia.edu> Cc: Viresh Kumar <viresh.linux@gmail.com> Cc: Dan Williams <djbw@fb.com> Cc: Vinod Koul <vinod.koul@intel.com> Cc: Barry Song <baohua.song@csr.com> Cc: Jeff Kirsher <jeffrey.t.kirsher@intel.com> Cc: Alexander Duyck <alexander.h.duyck@intel.com> Cc: Russell King <rmk+kernel@arm.linux.org.uk> Cc: Linus Walleij <linus.walleij@linaro.org> Cc: Jassi Brar <jassisinghbrar@gmail.com> Cc: Dave Jiang <dave.jiang@intel.com> Cc: Bill Pemberton <wfp5p@virginia.edu> Cc: Guennadi Liakhovetski <g.liakhovetski@gmx.de> Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
-
- 29 11月, 2012 1 次提交
-
-
由 Bill Pemberton 提交于
CONFIG_HOTPLUG is going away as an option so __devinit is no longer needed. Signed-off-by: NBill Pemberton <wfp5p@virginia.edu> Cc: Li Yang <leoli@freescale.com> Cc: Zhang Wei <zw@zh-kernel.org> Cc: Barry Song <baohua.song@csr.com> Acked-by: NViresh Kumar <viresh.kumar@linaro.org> Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
-
- 22 9月, 2012 1 次提交
-
-
由 Peter Ujfalusi 提交于
Change the parameter list of device_prep_dma_cyclic() so the DMA drivers can receive the flags coming from clients. This feature can be used during audio operation to disable all audio related interrupts when the DMA_PREP_INTERRUPT is cleared from the flags. Signed-off-by: NPeter Ujfalusi <peter.ujfalusi@ti.com> Acked-by: NNicolas Ferre <nicolas.ferre@atmel.com> Acked-by: NShawn Guo <shawn.guo@linaro.org> Acked-by: NVinod Koul <vinod.koul@linux.intel.com> Signed-off-by: NMark Brown <broonie@opensource.wolfsonmicro.com>
-
- 18 9月, 2012 5 次提交
-
-
由 Sachin Kamat 提交于
kzalloc could return NULL. Hence add a check to avoid NULL pointer dereference. Signed-off-by: NSachin Kamat <sachin.kamat@linaro.org> Acked-by: NJassi Brar <jassisinghbrar@gmail.com> Cc: Stable <stable@vger.kernel.org> Signed-off-by: NVinod Koul <vinod.koul@linux.intel.com>
-
由 Sachin Kamat 提交于
'r->cfg' is being checked for NULL. However, it is dereferenced in the previous statements. Thus moving those statements within the check. Signed-off-by: NSachin Kamat <sachin.kamat@linaro.org> Acked-by: NJassi Brar <jassisinghbrar@gmail.com> Cc: Stable <stable@vger.kernel.org> Signed-off-by: NVinod Koul <vinod.koul@linux.intel.com>
-
由 Inderpal Singh 提交于
Since 0 is not considered as error at dmaengine level, return ENOMEM from pl330_alloc_chan_resources in case of failure. Signed-off-by: NInderpal Singh <inderpal.singh@linaro.org> Acked-by: NJassi Brar <jassisinghbrar@gmail.com> Acked-by: NKukjin Kim <kgene.kim@samsung.com> Signed-off-by: NVinod Koul <vinod.koul@linux.intel.com>
-
由 Inderpal Singh 提交于
The driver's runtime_suspend/resume functions just disable/enable the clock which is already being managed at AMBA bus level runtime_suspend/resume functions. Hence, remove the driver's runtime_suspend/resume functions. Signed-off-by: NInderpal Singh <inderpal.singh@linaro.org> Tested-by: NChander Kashyap <chander.kashyap@linaro.org> Signed-off-by: NVinod Koul <vinod.koul@linux.intel.com>
-
由 Inderpal Singh 提交于
The controller clock is being enabled/disabled in AMBA bus infrastructre in probe/remove functions. Hence, its not required at driver level probe/remove. Signed-off-by: NInderpal Singh <inderpal.singh@linaro.org> Tested-by: NChander Kashyap <chander.kashyap@linaro.org> Signed-off-by: NVinod Koul <vinod.koul@linux.intel.com>
-