mirror of
https://github.com/Dasharo/linux.git
synced 2026-03-06 15:25:10 -08:00
Merge tag 'dmaengine-5.19-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/vkoul/dmaengine
Pull dmaengine updates from Vinod Koul: "Nothing special, this includes a couple of new device support and new driver support and bunch of driver updates. New support: - Tegra gpcdma driver support - Qualcomm SM8350, Sm8450 and SC7280 device support - Renesas RZN1 dma and platform support Updates: - stm32 device pause/resume support and updates - DMA memset ops Documentation and usage clarification - deprecate '#dma-channels' & '#dma-requests' bindings - driver updates for stm32, ptdma idsx etc" * tag 'dmaengine-5.19-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/vkoul/dmaengine: (87 commits) dmaengine: idxd: make idxd_wq_enable() return 0 if wq is already enabled dmaengine: sun6i: Add support for the D1 variant dmaengine: sun6i: Add support for 34-bit physical addresses dmaengine: sun6i: Do not use virt_to_phys dt-bindings: dma: sun50i-a64: Add compatible for D1 dmaengine: tegra: Remove unused switch case dmaengine: tegra: Fix uninitialized variable usage dmaengine: stm32-dma: add device_pause/device_resume support dmaengine: stm32-dma: rename pm ops before dma pause/resume introduction dmaengine: stm32-dma: pass DMA_SxSCR value to stm32_dma_handle_chan_done() dmaengine: stm32-dma: introduce stm32_dma_sg_inc to manage chan->next_sg dmaengine: stm32-dmamux: avoid reset of dmamux if used by coprocessor dmaengine: qcom: gpi: Add support for sc7280 dt-bindings: dma: pl330: Add power-domains dmaengine: stm32-mdma: use dev_dbg on non-busy channel spurious it dmaengine: stm32-mdma: fix chan initialization in stm32_mdma_irq_handler() dmaengine: stm32-mdma: remove GISR1 register dmaengine: ti: deprecate '#dma-channels' dmaengine: mmp: deprecate '#dma-channels' dmaengine: pxa: deprecate '#dma-channels' and '#dma-requests' ...
This commit is contained in:
@@ -39,6 +39,17 @@ properties:
|
||||
'#power-domain-cells':
|
||||
const: 0
|
||||
|
||||
'#address-cells':
|
||||
const: 1
|
||||
|
||||
'#size-cells':
|
||||
const: 1
|
||||
|
||||
patternProperties:
|
||||
"^dma-router@[a-f0-9]+$":
|
||||
type: object
|
||||
$ref: "../dma/renesas,rzn1-dmamux.yaml#"
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
|
||||
@@ -20,9 +20,11 @@ properties:
|
||||
|
||||
compatible:
|
||||
oneOf:
|
||||
- const: allwinner,sun50i-a64-dma
|
||||
- const: allwinner,sun50i-a100-dma
|
||||
- const: allwinner,sun50i-h6-dma
|
||||
- enum:
|
||||
- allwinner,sun20i-d1-dma
|
||||
- allwinner,sun50i-a64-dma
|
||||
- allwinner,sun50i-a100-dma
|
||||
- allwinner,sun50i-h6-dma
|
||||
- items:
|
||||
- const: allwinner,sun8i-r40-dma
|
||||
- const: allwinner,sun50i-a64-dma
|
||||
@@ -58,6 +60,7 @@ if:
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- allwinner,sun20i-d1-dma
|
||||
- allwinner,sun50i-a100-dma
|
||||
- allwinner,sun50i-h6-dma
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
title: Altera mSGDMA IP core
|
||||
|
||||
maintainers:
|
||||
- Olivier Dautricourt <olivier.dautricourt@orolia.com>
|
||||
- Olivier Dautricourt <olivierdautricourt@gmail.com>
|
||||
|
||||
description: |
|
||||
Altera / Intel modular Scatter-Gather Direct Memory Access (mSGDMA)
|
||||
|
||||
@@ -55,6 +55,9 @@ properties:
|
||||
|
||||
dma-coherent: true
|
||||
|
||||
power-domains:
|
||||
maxItems: 1
|
||||
|
||||
resets:
|
||||
minItems: 1
|
||||
maxItems: 2
|
||||
|
||||
@@ -10,10 +10,12 @@ Required properties:
|
||||
or one irq for pdma device
|
||||
|
||||
Optional properties:
|
||||
- #dma-channels: Number of DMA channels supported by the controller (defaults
|
||||
- dma-channels: Number of DMA channels supported by the controller (defaults
|
||||
to 32 when not specified)
|
||||
- #dma-requests: Number of DMA requestor lines supported by the controller
|
||||
- #dma-channels: deprecated
|
||||
- dma-requests: Number of DMA requestor lines supported by the controller
|
||||
(defaults to 32 when not specified)
|
||||
- #dma-requests: deprecated
|
||||
|
||||
"marvell,pdma-1.0"
|
||||
Used platforms: pxa25x, pxa27x, pxa3xx, pxa93x, pxa168, pxa910, pxa688.
|
||||
@@ -33,7 +35,7 @@ pdma: dma-controller@d4000000 {
|
||||
reg = <0xd4000000 0x10000>;
|
||||
interrupts = <0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15>;
|
||||
interrupt-parent = <&intcmux32>;
|
||||
#dma-channels = <16>;
|
||||
dma-channels = <16>;
|
||||
};
|
||||
|
||||
/*
|
||||
@@ -45,7 +47,7 @@ pdma: dma-controller@d4000000 {
|
||||
compatible = "marvell,pdma-1.0";
|
||||
reg = <0xd4000000 0x10000>;
|
||||
interrupts = <47>;
|
||||
#dma-channels = <16>;
|
||||
dma-channels = <16>;
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,110 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/dma/nvidia,tegra186-gpc-dma.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: NVIDIA Tegra GPC DMA Controller Device Tree Bindings
|
||||
|
||||
description: |
|
||||
The Tegra General Purpose Central (GPC) DMA controller is used for faster
|
||||
data transfers between memory to memory, memory to device and device to
|
||||
memory.
|
||||
|
||||
maintainers:
|
||||
- Jon Hunter <jonathanh@nvidia.com>
|
||||
- Rajesh Gumasta <rgumasta@nvidia.com>
|
||||
|
||||
allOf:
|
||||
- $ref: "dma-controller.yaml#"
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
oneOf:
|
||||
- const: nvidia,tegra186-gpcdma
|
||||
- items:
|
||||
- const: nvidia,tegra194-gpcdma
|
||||
- const: nvidia,tegra186-gpcdma
|
||||
|
||||
"#dma-cells":
|
||||
const: 1
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
interrupts:
|
||||
description:
|
||||
Should contain all of the per-channel DMA interrupts in
|
||||
ascending order with respect to the DMA channel index.
|
||||
minItems: 1
|
||||
maxItems: 31
|
||||
|
||||
resets:
|
||||
maxItems: 1
|
||||
|
||||
reset-names:
|
||||
const: gpcdma
|
||||
|
||||
iommus:
|
||||
maxItems: 1
|
||||
|
||||
dma-coherent: true
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- interrupts
|
||||
- resets
|
||||
- reset-names
|
||||
- "#dma-cells"
|
||||
- iommus
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
#include <dt-bindings/memory/tegra186-mc.h>
|
||||
#include <dt-bindings/reset/tegra186-reset.h>
|
||||
|
||||
dma-controller@2600000 {
|
||||
compatible = "nvidia,tegra186-gpcdma";
|
||||
reg = <0x2600000 0x210000>;
|
||||
resets = <&bpmp TEGRA186_RESET_GPCDMA>;
|
||||
reset-names = "gpcdma";
|
||||
interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 79 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 104 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>;
|
||||
#dma-cells = <1>;
|
||||
iommus = <&smmu TEGRA186_SID_GPCDMA_0>;
|
||||
dma-coherent;
|
||||
};
|
||||
...
|
||||
@@ -19,9 +19,12 @@ allOf:
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- qcom,sc7280-gpi-dma
|
||||
- qcom,sdm845-gpi-dma
|
||||
- qcom,sm8150-gpi-dma
|
||||
- qcom,sm8250-gpi-dma
|
||||
- qcom,sm8350-gpi-dma
|
||||
- qcom,sm8450-gpi-dma
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
@@ -42,11 +42,10 @@ properties:
|
||||
- const: renesas,rcar-dmac
|
||||
|
||||
- items:
|
||||
- const: renesas,dmac-r8a779a0 # R-Car V3U
|
||||
|
||||
- items:
|
||||
- const: renesas,dmac-r8a779f0 # R-Car S4-8
|
||||
- const: renesas,rcar-gen4-dmac
|
||||
- enum:
|
||||
- renesas,dmac-r8a779a0 # R-Car V3U
|
||||
- renesas,dmac-r8a779f0 # R-Car S4-8
|
||||
- const: renesas,rcar-gen4-dmac # R-Car Gen4
|
||||
|
||||
reg: true
|
||||
|
||||
@@ -121,7 +120,6 @@ if:
|
||||
compatible:
|
||||
contains:
|
||||
enum:
|
||||
- renesas,dmac-r8a779a0
|
||||
- renesas,rcar-gen4-dmac
|
||||
then:
|
||||
properties:
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/dma/renesas,rzn1-dmamux.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Renesas RZ/N1 DMA mux
|
||||
|
||||
maintainers:
|
||||
- Miquel Raynal <miquel.raynal@bootlin.com>
|
||||
|
||||
allOf:
|
||||
- $ref: "dma-router.yaml#"
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: renesas,rzn1-dmamux
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
description: DMA mux first register offset within the system control parent.
|
||||
|
||||
'#dma-cells':
|
||||
const: 6
|
||||
description:
|
||||
The first four cells are dedicated to the master DMA controller. The fifth
|
||||
cell gives the DMA mux bit index that must be set starting from 0. The
|
||||
sixth cell gives the binary value that must be written there, ie. 0 or 1.
|
||||
|
||||
dma-masters:
|
||||
minItems: 1
|
||||
maxItems: 2
|
||||
|
||||
dma-requests:
|
||||
const: 32
|
||||
|
||||
required:
|
||||
- reg
|
||||
- dma-requests
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
dma-router@a0 {
|
||||
compatible = "renesas,rzn1-dmamux";
|
||||
reg = <0xa0 4>;
|
||||
#dma-cells = <6>;
|
||||
dma-masters = <&dma0 &dma1>;
|
||||
dma-requests = <32>;
|
||||
};
|
||||
@@ -28,7 +28,15 @@ allOf:
|
||||
properties:
|
||||
compatible:
|
||||
items:
|
||||
- const: sifive,fu540-c000-pdma
|
||||
- enum:
|
||||
- sifive,fu540-c000-pdma
|
||||
- const: sifive,pdma0
|
||||
description:
|
||||
Should be "sifive,<chip>-pdma" and "sifive,pdma<version>".
|
||||
Supported compatible strings are -
|
||||
"sifive,fu540-c000-pdma" for the SiFive PDMA v0 as integrated onto the
|
||||
SiFive FU540 chip resp and "sifive,pdma0" for the SiFive PDMA v0 IP block
|
||||
with no chip integration tweaks.
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
@@ -37,6 +45,12 @@ properties:
|
||||
minItems: 1
|
||||
maxItems: 8
|
||||
|
||||
dma-channels:
|
||||
description: For backwards-compatibility, the default value is 4
|
||||
minimum: 1
|
||||
maximum: 4
|
||||
default: 4
|
||||
|
||||
'#dma-cells':
|
||||
const: 1
|
||||
|
||||
@@ -50,8 +64,9 @@ unevaluatedProperties: false
|
||||
examples:
|
||||
- |
|
||||
dma-controller@3000000 {
|
||||
compatible = "sifive,fu540-c000-pdma";
|
||||
compatible = "sifive,fu540-c000-pdma", "sifive,pdma0";
|
||||
reg = <0x3000000 0x8000>;
|
||||
dma-channels = <4>;
|
||||
interrupts = <23>, <24>, <25>, <26>, <27>, <28>, <29>, <30>;
|
||||
#dma-cells = <1>;
|
||||
};
|
||||
|
||||
@@ -15,7 +15,13 @@ allOf:
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: snps,dma-spear1340
|
||||
oneOf:
|
||||
- const: snps,dma-spear1340
|
||||
- items:
|
||||
- enum:
|
||||
- renesas,r9a06g032-dma
|
||||
- const: renesas,rzn1-dma
|
||||
|
||||
|
||||
"#dma-cells":
|
||||
minimum: 3
|
||||
|
||||
@@ -8,10 +8,13 @@ Required properties:
|
||||
- interrupts: Should contain one interrupt shared by all channel.
|
||||
- #dma-cells: must be <1>. Used to represent the number of integer
|
||||
cells in the dmas property of client device.
|
||||
- #dma-channels : Number of DMA channels supported. Should be 32.
|
||||
- dma-channels : Number of DMA channels supported. Should be 32.
|
||||
- clock-names: Should contain the clock of the DMA controller.
|
||||
- clocks: Should contain a clock specifier for each entry in clock-names.
|
||||
|
||||
Deprecated properties:
|
||||
- #dma-channels : Number of DMA channels supported. Should be 32.
|
||||
|
||||
Example:
|
||||
|
||||
Controller:
|
||||
@@ -20,7 +23,7 @@ apdma: dma-controller@20100000 {
|
||||
reg = <0x20100000 0x4000>;
|
||||
interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
|
||||
#dma-cells = <1>;
|
||||
#dma-channels = <32>;
|
||||
dma-channels = <32>;
|
||||
clock-names = "enable";
|
||||
clocks = <&clk_ap_ahb_gates 5>;
|
||||
};
|
||||
|
||||
@@ -110,7 +110,11 @@ axi_vdma_0: axivdma@40030000 {
|
||||
Required properties:
|
||||
- dmas: a list of <[Video DMA device phandle] [Channel ID]> pairs,
|
||||
where Channel ID is '0' for write/tx and '1' for read/rx
|
||||
channel.
|
||||
channel. For MCMDA, MM2S channel(write/tx) ID start from
|
||||
'0' and is in [0-15] range. S2MM channel(read/rx) ID start
|
||||
from '16' and is in [16-31] range. These channels ID are
|
||||
fixed irrespective of IP configuration.
|
||||
|
||||
- dma-names: a list of DMA channel names, one per "dmas" entry
|
||||
|
||||
Example:
|
||||
|
||||
@@ -206,6 +206,12 @@ Currently, the types available are:
|
||||
- The device is able to perform parity check using RAID6 P+Q
|
||||
algorithm against a memory buffer.
|
||||
|
||||
- DMA_MEMSET
|
||||
|
||||
- The device is able to fill memory with the provided pattern
|
||||
|
||||
- The pattern is treated as a single byte signed value.
|
||||
|
||||
- DMA_INTERRUPT
|
||||
|
||||
- The device is able to trigger a dummy transfer that will
|
||||
@@ -457,7 +463,7 @@ supported.
|
||||
- Should use dma_set_residue to report it
|
||||
|
||||
- In the case of a cyclic transfer, it should only take into
|
||||
account the current period.
|
||||
account the total size of the cyclic buffer.
|
||||
|
||||
- Should return DMA_OUT_OF_ORDER if the device does not support in order
|
||||
completion and is completing the operation out of order.
|
||||
|
||||
@@ -820,7 +820,7 @@ S: Maintained
|
||||
F: drivers/mailbox/mailbox-altera.c
|
||||
|
||||
ALTERA MSGDMA IP CORE DRIVER
|
||||
M: Olivier Dautricourt <olivier.dautricourt@orolia.com>
|
||||
M: Olivier Dautricourt <olivierdautricourt@gmail.com>
|
||||
R: Stefan Roese <sr@denx.de>
|
||||
L: dmaengine@vger.kernel.org
|
||||
S: Odd Fixes
|
||||
@@ -19202,6 +19202,7 @@ SYNOPSYS DESIGNWARE DMAC DRIVER
|
||||
M: Viresh Kumar <vireshk@kernel.org>
|
||||
R: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
|
||||
S: Maintained
|
||||
F: Documentation/devicetree/bindings/dma/renesas,rzn1-dmamux.yaml
|
||||
F: Documentation/devicetree/bindings/dma/snps,dma-spear1340.yaml
|
||||
F: drivers/dma/dw/
|
||||
F: include/dt-bindings/dma/dw-dmac.h
|
||||
|
||||
@@ -16,13 +16,17 @@
|
||||
#include <linux/math64.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/of_address.h>
|
||||
#include <linux/of_platform.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/pm_clock.h>
|
||||
#include <linux/pm_domain.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/soc/renesas/r9a06g032-sysctrl.h>
|
||||
#include <linux/spinlock.h>
|
||||
#include <dt-bindings/clock/r9a06g032-sysctrl.h>
|
||||
|
||||
#define R9A06G032_SYSCTRL_DMAMUX 0xA0
|
||||
|
||||
struct r9a06g032_gate {
|
||||
u16 gate, reset, ready, midle,
|
||||
scon, mirack, mistat;
|
||||
@@ -315,6 +319,30 @@ struct r9a06g032_priv {
|
||||
void __iomem *reg;
|
||||
};
|
||||
|
||||
static struct r9a06g032_priv *sysctrl_priv;
|
||||
|
||||
/* Exported helper to access the DMAMUX register */
|
||||
int r9a06g032_sysctrl_set_dmamux(u32 mask, u32 val)
|
||||
{
|
||||
unsigned long flags;
|
||||
u32 dmamux;
|
||||
|
||||
if (!sysctrl_priv)
|
||||
return -EPROBE_DEFER;
|
||||
|
||||
spin_lock_irqsave(&sysctrl_priv->lock, flags);
|
||||
|
||||
dmamux = readl(sysctrl_priv->reg + R9A06G032_SYSCTRL_DMAMUX);
|
||||
dmamux &= ~mask;
|
||||
dmamux |= val & mask;
|
||||
writel(dmamux, sysctrl_priv->reg + R9A06G032_SYSCTRL_DMAMUX);
|
||||
|
||||
spin_unlock_irqrestore(&sysctrl_priv->lock, flags);
|
||||
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(r9a06g032_sysctrl_set_dmamux);
|
||||
|
||||
/* register/bit pairs are encoded as an uint16_t */
|
||||
static void
|
||||
clk_rdesc_set(struct r9a06g032_priv *clocks,
|
||||
@@ -963,7 +991,17 @@ static int __init r9a06g032_clocks_probe(struct platform_device *pdev)
|
||||
if (error)
|
||||
return error;
|
||||
|
||||
return r9a06g032_add_clk_domain(dev);
|
||||
error = r9a06g032_add_clk_domain(dev);
|
||||
if (error)
|
||||
return error;
|
||||
|
||||
sysctrl_priv = clocks;
|
||||
|
||||
error = of_platform_populate(np, NULL, NULL, dev);
|
||||
if (error)
|
||||
dev_err(dev, "Failed to populate children (%d)\n", error);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const struct of_device_id r9a06g032_match[] = {
|
||||
|
||||
@@ -163,7 +163,7 @@ config DMA_SUN4I
|
||||
|
||||
config DMA_SUN6I
|
||||
tristate "Allwinner A31 SoCs DMA support"
|
||||
depends on MACH_SUN6I || MACH_SUN8I || (ARM64 && ARCH_SUNXI) || COMPILE_TEST
|
||||
depends on ARCH_SUNXI || COMPILE_TEST
|
||||
depends on RESET_CONTROLLER
|
||||
select DMA_ENGINE
|
||||
select DMA_VIRTUAL_CHANNELS
|
||||
@@ -629,6 +629,18 @@ config TXX9_DMAC
|
||||
Support the TXx9 SoC internal DMA controller. This can be
|
||||
integrated in chips such as the Toshiba TX4927/38/39.
|
||||
|
||||
config TEGRA186_GPC_DMA
|
||||
tristate "NVIDIA Tegra GPC DMA support"
|
||||
depends on (ARCH_TEGRA || COMPILE_TEST) && ARCH_DMA_ADDR_T_64BIT
|
||||
depends on IOMMU_API
|
||||
select DMA_ENGINE
|
||||
help
|
||||
Support for the NVIDIA Tegra General Purpose Central DMA controller.
|
||||
The DMA controller has multiple DMA channels which can be configured
|
||||
for different peripherals like UART, SPI, etc which are on APB bus.
|
||||
This DMA controller transfers data from memory to peripheral FIFO
|
||||
or vice versa. It also supports memory to memory data transfer.
|
||||
|
||||
config TEGRA20_APB_DMA
|
||||
tristate "NVIDIA Tegra20 APB DMA support"
|
||||
depends on ARCH_TEGRA || COMPILE_TEST
|
||||
|
||||
@@ -72,6 +72,7 @@ obj-$(CONFIG_STM32_MDMA) += stm32-mdma.o
|
||||
obj-$(CONFIG_SPRD_DMA) += sprd-dma.o
|
||||
obj-$(CONFIG_S3C24XX_DMAC) += s3c24xx-dma.o
|
||||
obj-$(CONFIG_TXX9_DMAC) += txx9dmac.o
|
||||
obj-$(CONFIG_TEGRA186_GPC_DMA) += tegra186-gpc-dma.o
|
||||
obj-$(CONFIG_TEGRA20_APB_DMA) += tegra20-apb-dma.o
|
||||
obj-$(CONFIG_TEGRA210_ADMA) += tegra210-adma.o
|
||||
obj-$(CONFIG_TIMB_DMA) += timb_dma.o
|
||||
|
||||
@@ -1535,14 +1535,6 @@ static void pl08x_free_chan_resources(struct dma_chan *chan)
|
||||
vchan_free_chan_resources(to_virt_chan(chan));
|
||||
}
|
||||
|
||||
static struct dma_async_tx_descriptor *pl08x_prep_dma_interrupt(
|
||||
struct dma_chan *chan, unsigned long flags)
|
||||
{
|
||||
struct dma_async_tx_descriptor *retval = NULL;
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
/*
|
||||
* Code accessing dma_async_is_complete() in a tight loop may give problems.
|
||||
* If slaves are relying on interrupts to signal completion this function
|
||||
@@ -2760,7 +2752,6 @@ static int pl08x_probe(struct amba_device *adev, const struct amba_id *id)
|
||||
pl08x->memcpy.dev = &adev->dev;
|
||||
pl08x->memcpy.device_free_chan_resources = pl08x_free_chan_resources;
|
||||
pl08x->memcpy.device_prep_dma_memcpy = pl08x_prep_dma_memcpy;
|
||||
pl08x->memcpy.device_prep_dma_interrupt = pl08x_prep_dma_interrupt;
|
||||
pl08x->memcpy.device_tx_status = pl08x_dma_tx_status;
|
||||
pl08x->memcpy.device_issue_pending = pl08x_issue_pending;
|
||||
pl08x->memcpy.device_config = pl08x_config;
|
||||
@@ -2787,8 +2778,6 @@ static int pl08x_probe(struct amba_device *adev, const struct amba_id *id)
|
||||
pl08x->slave.dev = &adev->dev;
|
||||
pl08x->slave.device_free_chan_resources =
|
||||
pl08x_free_chan_resources;
|
||||
pl08x->slave.device_prep_dma_interrupt =
|
||||
pl08x_prep_dma_interrupt;
|
||||
pl08x->slave.device_tx_status = pl08x_dma_tx_status;
|
||||
pl08x->slave.device_issue_pending = pl08x_issue_pending;
|
||||
pl08x->slave.device_prep_slave_sg = pl08x_prep_slave_sg;
|
||||
|
||||
@@ -942,6 +942,7 @@ atc_prep_dma_memset(struct dma_chan *chan, dma_addr_t dest, int value,
|
||||
struct at_desc *desc;
|
||||
void __iomem *vaddr;
|
||||
dma_addr_t paddr;
|
||||
char fill_pattern;
|
||||
|
||||
dev_vdbg(chan2dev(chan), "%s: d%pad v0x%x l0x%zx f0x%lx\n", __func__,
|
||||
&dest, value, len, flags);
|
||||
@@ -963,7 +964,14 @@ atc_prep_dma_memset(struct dma_chan *chan, dma_addr_t dest, int value,
|
||||
__func__);
|
||||
return NULL;
|
||||
}
|
||||
*(u32*)vaddr = value;
|
||||
|
||||
/* Only the first byte of value is to be used according to dmaengine */
|
||||
fill_pattern = (char)value;
|
||||
|
||||
*(u32*)vaddr = (fill_pattern << 24) |
|
||||
(fill_pattern << 16) |
|
||||
(fill_pattern << 8) |
|
||||
fill_pattern;
|
||||
|
||||
desc = atc_create_memset_desc(chan, paddr, dest, len);
|
||||
if (!desc) {
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user